当前位置:编程学习 > Matlab >>

关于使用MATLAB求解非线性方程组的问题。如何编程,格式等等

问题是这样的,4个未知数,我打算用牛顿法来做循环,因为其中一个数字肯定非常小,于是初始设置为0,如果不满足条件就+0.001直到满足条件。 初始数值为下, Vmpp=51.4, Impp=0.96, Rs=0, Rp=223.478, Iph=1.19, Pmaxe=49.344, a=1.08, Ios=1.15,Vt=0.02789, Is=1.19, Vo=84.768 判定如果Pmax于49.344之间的误差大于0.01,然后Rs=Rs+0.0001 Pmax=Vmpp*(Iph-Ios*(exp((Vmpp+Rs*Impp)/(a*Vt*72))-1)-(Vmpp+Rs*Impp)/Rp); 接着算以下三个数值, Rp=(Vmpp*(Vmpp+Rs*Impp))/(Vmpp*Iph-Vmpp*Ios((Vmpp+Rs*Impp)/(a*Vt*72))+Vmpp*Ios-Pmaxe); Iph=Ios*(exp(Vo/(a*Vt))-1)-V0/Rp; Ios=Is*(exp(Vo/(a*Vt))-1); 做一个循环直到Pmax和Pmaxe之间的误差小于0.01. 我看了下因为是非线性方程组可能要用fsolve,请高人解答下了,如果能稍稍帮我编一下或者指点下方程组的编写格式就不胜感激了。麻烦各位真的很急,全分悬赏。
补充:上面的表达式没错,重新放一组初值,
初始数值为下, Vmpp=36.8, Impp=4.8, Rs=0, Rp=223.478, Iph=5.06, Pmaxe=176.64, a=1.08, Ios=0,Vt=0.02789, Is=5.06, Vo=44.7 

希望有高手能帮忙写一下代码,因为解方程组的格式我实在是没弄明白,感激
答案:若只有Rs变化的话,后面就根本不是求解非线性方程组了:
 
exp((Vmpp+Rs*Impp)/(a*Vt*72))-1)的值偏大,超过10的11次方
 
请检查初值或表达式是否正确

上一个:反应扩散方程Matlab编程
下一个:matlab编程问题,与运动学相关联的实际问题,求高手帮忙

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,