全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
2577 2
2009-08-09
我有个问题想问大家一下,解方程

0.7672=1+4/a*(1/a*(int(t/(exp(t)-1),0,a)-1)

求出里面的a,我用matlab编程时,里面出现了polylog(2,exp(a)),对于polylog函数,查了一下资料,还是不懂怎样使用他,恳请大家帮我看看上述方程怎样用matlab编程求解,非常感谢!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2009-8-9 23:54:39
我怎么查不到polylog函数啊。。。
我没试过,但我觉得fsolve也可以啊。。。
还有,对于这种解方程问题,最简单的是用图解法。画出右边函数的曲线,然后找到和直线y=0.7672的交点,就是方程的解了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-8-10 02:21:50
shenlanyan 发表于 2009-8-9 15:27
我有个问题想问大家一下,解方程

0.7672=1+4/a*(1/a*(int(t/(exp(t)-1),0,a)-1)

求出里面的a,我用matlab编程时,里面出现了polylog(2,exp(a)),对于polylog函数,查了一下资料,还是不懂怎样使用他,恳请大家帮我看看上述方程怎样用matlab编程求解,非常感谢!

你个int是定积分的意思吧?如果是的话,我算出来的解是1.2442,没有碰到你说的这个问题啊?思路是按照二楼的建议,先画图看看解大概在哪里,然后fsolve.中间的定积分部分用的是quad函数进行数值积分。注意不要直接用这个解,我没怎么检查代码,不敢保证没有录入错误什么的;尤其是积分哪部分用到了点乘点除,至少你拿其他的数值积分办法验证一下我那个数值积分是对的,比如trapz.还有你给的那个函数里面多了个左括号,我给删了,也不知道删的对不对。自己看代码吧。

代码分两部分,主程序画图、求解,pinggu.m定义你的那个方程:

主程序:

clear;
clc;
% 以下部分是画图
n=100;
xmin=0.6;
xmax=2; % 花完图看到解大概在0.6-2之间,所以把这部分图专门画出来
x=xmin:(xmax-xmin)/(n-1):xmax;
y=zeros(1,100);
for i=1:n
    y(i)=pinggu(x(i)); % pinggu(.)就是你的那个函数,下面有定义
end
plot(x, y, 'DisplayName', 'y vs x', 'XDataSource', 'x', 'YDataSource', 'y'); figure(gcf);

%求解
fsolve(@pinggu,1)

pinggu.m:

function y=pinggu(a)
integ=@(t) t./(exp(t)-1); %定义被积函数。注意用的是点除而不是除法
y=1+4/a*1/a.*(quad(integ,0,a)-1)-0.7672; % 同样注意用的是点乘而不是乘法,主要是因为quad函数要进行向量运算。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群