楼主: shenlanyan
2646 2

matlab求解方程 [推广有奖]

  • 0关注
  • 0粉丝

学前班

60%

还不是VIP/贵宾

-

威望
0
论坛币
27 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
56 点
帖子
6
精华
0
在线时间
4 小时
注册时间
2009-8-9
最后登录
2009-10-6

楼主
shenlanyan 发表于 2009-8-9 15:27:48 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我有个问题想问大家一下,解方程

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

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

二维码

扫码加我 拉你入群

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

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

关键词:MATLAB matla atlab Mat Atl MATLAB 方程 求解

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

藤椅
twomantou 发表于 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函数要进行向量运算。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 06:00