Re: [問題] 急問!三個複雜方程式三個未知數求解已回收
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章