Re: [問題] 急問!三個複雜方程式三個未知數求解已回收

看板MATLAB作者 (幫解MATLAB難題囧)時間16年前 (2008/10/11 14:30), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《maplefog (楓霧)》之銘言: : 有爬過文用fsolve解,但是Matlab說不能解 : 只能用高斯和牛頓法解 : 下面這是方程式,快吐血了... : f(1)=(Isc-(Voc-Isc.*x(2)./x(3))).*exp(-(Voc./(Ns.*x(1).*Vt))); : f(2)=Imp-((Vmp.*(Ns.*x(1).*Vt+(x(3).*f(1).*exp((Vmp+Imp.*x(2))./(Ns.*x(1).*Vt)))))./ ... : ((Ns.*x(1).*Vt).*(x(2).*x(3))+x(2).*x(3).*f(1).*exp((Vmp+Imp.*x(2))./(Ns.*x(1).*Vt)))); : f(3)=1./x(3)-((Ns.*x(1).*Vt+x(3).*f(1).*exp((Isc.*x(2))./(Ns.*x(1).*Vt)))./((Ns.*x(1).*Vt).* ... : (x(2).*x(3))+x(2).*x(3).*f(1).*exp((Isc.*x(2))./(Ns.*x(1).*Vt)))); : f(4)=-Imp-((Vmp+Imp.*x(2))./(x(3)))+(Voc./x(3))+f(1).*exp((Voc)./(Ns.*x(1).*Vt))-f(1).* ... : exp((Vmp+Imp.*x(2))./(x(3))); : x(1)初值 1,收斂值大約1.3xxx : x(2)初值 0.03,收斂值大約0.03xxx : x(3)初值 60,收斂值大約 50~1700 : Vmp = 25.1; : Imp = 6.9; : Voc = 32.2; : Isc = 7.5; : k = 1.38065e-23; : q = 1.602e-19; : T = 273.15+25; : Vt=k*T/q; : Ns=54; : 爬文的方程式都沒比這個複雜的...,求大大幫忙了! 你確定用 fsolve 不能解? ------------------------------------------------- function pttex114 clc format short g x0 = [1;0.03;60]; x = fsolve(@verylong,x0) function f = verylong(x) f = zeros(4,1); Vmp = 25.1; Imp = 6.9; Voc = 32.2; Isc = 7.5; k = 1.38065e-23; q = 1.602e-19; T = 273.15+25; Vt=k*T/q; Ns=54; h = (Isc-(Voc-Isc.*x(2)./x(3))).*exp(-(Voc./(Ns.*x(1).*Vt))); f(1)= h ; f(2)=Imp-((Vmp.*(Ns.*x(1).*Vt+(x(3).*h.*exp((Vmp+Imp.*x(2))... ./(Ns.*x(1).*Vt)))))./((Ns.*x(1).*Vt).*(x(2).*x(3))+x(2)... .*x(3).*h.*exp((Vmp+Imp.*x(2))./(Ns.*x(1).*Vt)))); f(3)=1./x(3)-((Ns.*x(1).*Vt+x(3).*h.*exp((Isc.*x(2))./... (Ns.*x(1).*Vt)))./((Ns.*x(1).*Vt).* (x(2).*x(3))+x(2).*x(3)... .*h.*exp((Isc.*x(2))./(Ns.*x(1).*Vt)))); f(4)=-Imp-((Vmp+Imp.*x(2))./(x(3)))+(Voc./x(3))+h.*exp((Voc)./... (Ns.*x(1).*Vt))-h.*exp((Vmp+Imp.*x(2))./(x(3))); ---------------------------------------------------------------------- Warning: Default trust-region dogleg method of FSOLVE cannot handle non-square systems; using Gauss-Newton method instead. > In fsolve at 248 In pttex114 at 5 Optimizer appears to be converging to a minimum that is not a root: Sum of squares of the function values is > sqrt(options.TolFun). Try again with a new starting point. x = 68.15 7.8706 -9.2138e+005 結果不同可能是以下兩個原因吧 1.式子有錯 2.初始值部份要調整 我個人認為是你式子的排版有待加強.我蠻擔心有錯誤的 勉強將式子排版.你看看結果在回板上吧 -- 1.MATLAB programming 2.ASPEN process simulation package 3.FORTRN programming 4.Advance Engineering Mathematics 5.Process Control Theory 6.Chemical Engineering Basic Theory(Kinetic.thermodynamics.transport) 7.Numerical Method and Analysis 8.MATLAB Toolbox.Simulink system basic design -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.9.130.116
文章代碼(AID): #18y4WQKn (MATLAB)
文章代碼(AID): #18y4WQKn (MATLAB)