24小时热门版块排行榜    

查看: 1568  |  回复: 5
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

bobo1314

银虫 (小有名气)

[求助] fsolve求解非线性方程组 已有1人参与

我的程序,总有这样那样的问题,最终还是会出现错误
M文件:
function F=myfunfsolve(x)
Iph=x(1);
I0=x(2);
Rs=x(3);
Rp=x(4);
Vt=x(5);
Voc=44.6/72;
Vm=35.4/72;
Isc=5.43;
Im=4.95;
Ns=1;
Np=1;
q=1.602E-19;
K=1.381E-23;
Alpha=0.0008;
beita=-0.145;
T0=298.15;
T01=323.15;
Eg0=1.16-7.02e-4*T0^2/(T0-1108);
Eg01=1.16-7.02e-4*T01^2/(T01-1108);
I01bi=T01^3/T0^3*exp(q*Eg0/(Vt)-q*T0*Eg01/(Vt));
F=[Np*Iph-Np*I0*(exp(Voc/Ns/Vt)-1)-Np/Ns*Voc/Rp;
Np*Iph-Np*I0*(exp(Isc*Rs/Np/Vt)-1)-Isc*Rs/Rp-Isc;
Np*Iph-Np*I0*(exp((Vm/Ns+Im/Np*Rs)/Vt)-1)-Np*(Vm/Ns+Im/Np*Rs)/Rp-Im;
(Np/Ns/Vt*I0*exp((Vm+Im*Ns/Np*Rs)/Ns/Vt)+1/(Ns/Np*Rp))/(1+Rs/Vt*I0*exp((Vm+Im*Ns/Np*Rs)/Ns/Vt)+Rs/Rp)-Im/Vm;
(-Np/Ns/Vt*I0*exp(Isc*Ns*Rs/Np/Ns/Vt)-1/(Ns/Np*Rp))/(1+Rs/Vt*I0*exp(Isc*Ns*Rs/Np/Ns/Vt)+Rs/Rp)+1/Rp;
Np*Iph*(1+(T01-T0)*Alpha/Isc)-Np*I0*I01bi*(exp(Voc*(1+(T01-T0)*beita/Voc)/Ns/Vt*T0/T01)-1)-Np/Ns*Voc*(1+(T01-T0)*beita/Voc)/Rp];
命令行输入:
clear;
x0 = [5.4 2e-9 0.02 2 0.05];  % Make a starting guess at the solution
options=optimset('Display','iter','TolFun',1e-3,'TolX',1e-100,'Algorithm','levenberg-marquardt', 'MaxIter',1e4,'MaxFunEvals',1e5,'Diagnostics','on'); %option to display output
[x,fval] = fsolve(@myfunfsolve5,x0,options); % Call solver

出现下列提示:
No solution found.
fsolve stopped because the problem appears regular as measured by the gradient,
but the vector of function values is not near zero as measured by the
selected value of the function tolerance.


我就不知道该如何处理了,如何才能得到解,顺便说一声,这个应该有前人的正确解,[5.449 1.2e-9 0.092 2.725 0.028]
回复此楼
一个矛盾无知的人
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bobo1314

银虫 (小有名气)

方程已经过了无数次的检查,而且将前人迭代的正确解反带入原档程,几乎每个式子都在0附近

发自小木虫Android客户端
一个矛盾无知的人
3楼2017-12-02 21:02:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

儒雅圣士

新虫 (正式写手)

得到的解是【-0.076195037566324  -0.000000573386969  -2.251437071748727   2.440695364463143   0.046798441863606】  请查看方程并确认是否写正确了,估计是你写错了方程

» 本帖已获得的红花(最新10朵)

一起努力
2楼2017-12-02 18:28:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bobo1314

银虫 (小有名气)

送红花一朵
引用回帖:
2楼: Originally posted by 儒雅圣士 at 2017-12-02 18:28:52
得到的解是【-0.076195037566324  -0.000000573386969  -2.251437071748727   2.440695364463143   0.046798441863606】  请查看方程并确认是否写正确了,估计是你写错了方程

方程已经过了无数次的检查,而且将前人迭代的正确解反带入原档程,几乎每个式子都在0附近

发自小木虫Android客户端
一个矛盾无知的人
4楼2017-12-02 21:03:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
6个方程5个未知数,本身就不存在精确解吧。
而且,所谓的“这个应该有前人的正确解,[5.449 1.2e-9 0.092 2.725 0.028]”,带回原方程验证,误差是非常之大,下面随便一组近似解都要比这个“正解”好的多:

iph: -2.44512940626882E-8
i0: 234876089.693707
rs: 2.65964117382912E15
rp: 2.01138445074181E24
vt: -6.24686104906122E23
5楼2017-12-03 13:16:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见