MATLAB求解非線性方程組fsolve源程式程式碼
阿新 • • 發佈:2021-02-03
function equation() global sigma mu T lambda sigma=5; %定義sigma的值 mu=0.4; %定義mu的值 T=1.7; %定義T的值 N=1; for lambda=0:0.05:1 %lambda從0到1,隔0.05計算一個點 x0=[0.5000 0.5000 1.1817 1.1817 1.0000 1.0000 0.9354 0.9354]*1; %定義迭代初值 x=fsolve(@myfun,x0); %採用fsolve函式解對應lambda下的方程組,結果儲存在x裡 value(N)=x(7)-x(8); %求出對應lambda下的omega1-omega2的值,儲存在value裡 N=N+1; end lambda=0:0.05:1; plot(lambda,value) %繪圖 title(['T=',num2str(T)]) %給出圖的標題 msgbox('MATLAB程式設計答疑,請加QQ: 1530497909','MATLAB答疑','help') web http://url.cn/TKcdXk -browser end function F=myfun(x) global sigma mu T lambda %x(1)~x(8)分別對應8個未知數 Y1=x(1); Y2=x(2); G1=x(3); G2=x(4); w1=x(5); w2=x(6); omega1=x(7); omega2=x(8); %定義8個方程 eq1=Y1-mu*lambda*w1-(1-mu)/2; eq2=Y2-mu*(1-lambda)*w2-(1-mu)/2; eq3=G1-(lambda*w1^(1-sigma)+(1-lambda)*(w2*T)^(1-sigma))^(1/(1-sigma)); eq4=G2-(lambda*(w1*T)^(1-sigma)+(1-lambda)*w2^(1-sigma))^(1/(1-sigma)); eq5=w1-(Y1*G1^(sigma-1)+Y2*(G2^(sigma-1))*T^(1-sigma))^(1/sigma); eq6=w2-(Y1*(G1^(sigma-1))*T^(1-sigma)+Y2*G2^(sigma-1))^(1/sigma); eq7=omega1-w1*G1^(-mu); eq8=omega2-w2*G2^(-mu); %返回方程組 F=[eq1;eq2;eq3;eq4;eq5;eq6;eq7;eq8]; end