matlab fsolve 函式的使用

2021-08-14 01:27:07 字數 2785 閱讀 6889

fsolve()函式通常用於數值求方程或方程組的解,更常用於求解非線性方程組。其基本結構如下:(可以在matlab命令頁面輸入help fsolve查詢)

fsolve()解決的方程形式為f(x)=0;

用法為:

x = fsolve(fun,x0,options)
或者寫為

[x,fval,exitflag]=fsolve(fun,x0,options)
其中fun是方程,x0是初值,需要提前設定,options是一些設定要求,可以用optimset函式來實現;exitflag用以描述出口條件(exit condition)其值如下:

1  fsolve converged to a root.

2  change in x too small.

3  change in residual norm too small.

4  computed search direction too small.

0  too many function evaluations or iterations.

-1  stopped by output/plot function.

-2  converged to a point that is not a root.

-3  trust region radius too small (trust-region-dogleg).

從上面看,當exitflag是1的時候是最理想的結果,2,3也可接受,負數則偏差太大或直接錯誤

舉例如下:

1.求解sin(x)-0.5=0

1)直接求解,**如下:

x=fsolve(@(x)sin(x)-0.5,[1 3])%此處採用匿名函式法@(x)
其中1和3分別是設定的兩個初值,一般設定在解附近,若不知道

解,也可隨意設定,如果解不知最優,會有一定影響.options不填則預設。其中@(x)sin(x)-0.5也可以寫為'sin(x)-0.5'

結果如下:

x =

0.5236 2.6180%可見結果盡量給出初值上最近的值,前後倆個分別對應初值1和3

2)建立m函式(對於函式比較長或者比較複雜的情況)

a)建立m檔案

function f=myfun(x)

f=sin(x)-0.5

end       

%end可以不寫

儲存為以myfun.m為名的m函式

b)呼叫函式

x=fsolve(@myfun,[1 3])

結果為:

x =

0.5236 2.6180

如果用以下**:

[x,fval,exitflag]=fsolve(@myfun,[1 3 8 9])%設定了四個初值,其中@myfun也可以用'myfun'
則會給出偏差值fval,以及exitflag的值,結果如下:

x =

0.5236 2.6180 8.9012 8.9012

fval =

1.0e-09 *

-0.1387 -0.0000 -0.0000 -0.0000

exitflag =

1>> x=fsolve(@(x)sin(x)-0.5,[1 3])

其中fval為真實值與擬合值之間的差,從結果來看是非常理想的。

2.匿名函式可有多個參量,如求解方程:

1)建立m檔案

function f = myfun(x,c)

f = [ 2*x(1) - x(2) - exp(c*x(1))-x(1) + 2*x(2) - exp(c*x(2))];

2)設定引數並執行       

c = -1; % define parameter first

x = fsolve(@(x) myfun(x,c),[-5;-5])   %x1和x2的初值都定為-5

結果如下

x 

=0.5671

0.5671

fval =-

1.0640e-08

exitflag =1

分析如下:x1=0.5671,x2=0.5671,差值在-8個數量級,結果理想。

求解方程:

functionf =

myfun(x

,c)f

=[16*

x(1)+

c*x(

2)];

c =-

1;%define parameter first[x

,fval

,exitflag]=

fsolve

(@(x

)myfun(x

,c),[-5;-

5])結果如下:

x =

-0.3307

-5.2918

fval =

-4.4409e-15

exitflag =

1

函式的用法 Excel函式TREND函式的用法

trend函式是乙個線性趨勢的 函式,在已知y值 x值的條件下,x對應的y值 trend共有4個引數,三個必選引數,乙個可選引數 同樣的一組資料第四引數不同,結果也是有區別的 灰色曲線是由第四引數為false時得到的結果生成的曲線。通過斜率與截距函式我們計算出這兩條曲線的斜率與截距,可以看出,第四引...

main函式的入口函式

作業系統裝載程式之後,首先執行的 並不是main的第一行,而是某些別的 這些 負責準備好main函式執行所需要的環境,並且負責呼叫main函式,執行這些 的函式稱為入口函式或入口點 entry point 視平台的不同而有不同的名字。程式的入口點實際上是乙個程式的初始化和結束部分,它往往是執行庫的一...

返回函式的函式

廖雪峰python課程裡的 作業的兩種實現方法 1.def createcounter a 0 def counter nonlocal a nonlocal 函式是 引用外部函式 的函式 a 1 a 1等同於a a 1 return a return counter countera create...