請教,Matlab的fsolve函式怎麼用

2022-07-24 10:30:34 字數 1351 閱讀 4966

1樓:翦廣英繩鵑

fsolve是採用最小二乘法來求解非線性方程。它的一般求解方式為:

x=fsolve(fun,x0,options)

其中,fun是要求解的非線性方程,x0是變數初值,options由optimset函式產生的結構體,用於對優化引數的設定,可以省略(採用預設值)。

fsolve可以求解簡單的一維非線性方程,如:x=

fsolve(@myfun,[0.5

24],optimset('display','iter'));

%求解在初值分別為0.5,2和4時方程的解

其中,函式myfun的定義為:

functionf=

myfun(x)f=

sin(x);

fsolve還可以求解大型的非線性方程組,如x0=

[51.6;rand;unifrnd(-1,1);rand];

h=optimset;

h.maxfunevals=20000;

h.maxiter=5000;

h.display='off';

[p,fval]

=fsolve(@f,x0,options);

此時,方程組可以寫成矩陣形式:

function

f=f(x)

f=[x(1)+x(2)*(1-exp(-(x(3)*(0)^x(4))))-51.61;

x(1)+x(2)*(1-exp(-(x(3)*(9.78)^x(4))))-51.91;

x(1)+x(2)*(1-exp(-(x(3)*(30.68)^x(4))))-53.27;

x(1)+x(2)*(1-exp(-(x(3)*(59.7)^x(4))))-59.68;];

2樓:褒翠花虎儀

fsolve函式的常用格式:

[x,fval]

=fsolve(fun,x0)

例如:%自定義方程組檔案

root2d.m

functionf=

root2d(x)

f(1)

=exp(-exp(-(x(1)+x(2))))-x(2)*(1+x(1)^2);

f(2)

=x(1)*cos(x(2))

+x(2)*sin(x(1))

-0.5;

>>fun

=@root2d;

>>x0

=[0,0];

>>[x,fval]=

fsolve(fun,x0)

執行結果x=

0.3532

0.6061

fval

=-2.4069e-07

-3.8255e-08

菜鳥請教關於matlab定義M函式的問題

你在新建一個函式檔案,具體過程如下 1 你開啟matlab程式,左上角file new function 2 將你上 回面的 複製上答去 要有輸入 輸出引數 3 檔名為lu fenjie 4 使用時在命令視窗輸入lu fenjie 括號裡面的按需要填寫。function y lufenjie a,b...

請教 如何在matlab中把曲線之間的部分填充為別的顏色

x linspace 0,10 y1 sin x 1 y2 sin x fill x,fliplr x y1,fliplr y2 r t 0 0.01 2 pi y sin t y2 y 2 plot t,y,t,y2,r hold on 如果 bait的維 du數較zhi小,dao可以回 加細答n...

matlab的教材,matlab的推薦教材

北航張志湧老師的書。內容詳實,有深度,有較多例題。他的書,有兩本,回一本是 matlab教程 2010 答,內容比較基礎 也包括基本繪圖 gui simulink等 適合入門。此書每年更新一次。另一本是 精通matlab6.5 內容很豐富,可做案頭參考書。雖然matlab的版本較老,不過,6.5的m...