24小时热门版块排行榜    

查看: 676  |  回复: 2

后会有期wq

新虫 (初入文坛)

[求助] matlab求解超越方程 已有1人参与

程序如下:
p=0:0.01:100;ni=4e15*p;
% 超越方程 nf/ni=1+6.94e25/ni*log(nf/ni)
for i=1:length(ni);
     nf=fsolve(@(x)x/ni-1-6.94e25/ni*log(x/ni),1.63e27);
end;

我想要得出nf和ni之间的关系,画出他们之间的曲线
用fsolve求解的话,总报错说我初值写的不对。
Objective function is returning undefined values at initial point. FSOLVE cannot continue.
不知道该怎么改了。求大神帮忙!
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Sibewolf

木虫 (小有名气)

ni已经定义成数组了,函数表达式里直接写ni会有问题吧

发自小木虫Android客户端
2楼2016-05-28 09:31:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
CODE:
clear all;clc
format long

p=0.01:1:100;nni=4e15*p;
% 超越方程 nf/ni=1+6.94e25/ni*log(nf/ni)
for i=1:length(nni);
     ni=nni(i);
     [nf(i) fval(i)]=fsolve(@(x)x/ni-1-6.94e25/ni*log(x/ni),ni);
end;
[4e15*p ; nf ]'
fval'

figure(1)
plot(4e15*p,nf)

两个问题:
其一,如果 p=0:0.01:100;ni=4e15*p; 可知,第一个ni=0,在方程中有两处ni作分母,会出现 x/0 的情况,所以报错“Objective function is returning undefined values at initial point. FSOLVE cannot continue.”

其二,我给出代码可以运行,但实际上通过简单的分析,就会发现 nf=ni 就是原方程的解,即nf和ni的关系是y=x的直线关系,写代码已经没有意义。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
3楼2016-05-28 09:59:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 后会有期wq 的主题更新
信息提示
请填处理意见