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...