MATLAB用fsolve解方程?
[x,fval,exitflag]=fsolve(fun,x0)
你可以利用fsolve函數(shù)多返回兩個信息
一個是返回的x對應(yīng)的函數(shù)值fval,一個是函數(shù)返回狀態(tài)exitflag
fsolve也不是萬能的,不是對所有的函數(shù)都能找到解
特別是你的初值選取離正確解很遠(yuǎn)的時候
或者是函數(shù)比較多奇異點,不連續(xù)點
又或者選取的精度不合理
很可能找不到正確解的解,得到的x不是正確的
又或者問題太復(fù)雜,在經(jīng)過設(shè)定的最大計算步數(shù)后,還沒收斂到正確解
這個時候你可以利用fval和exitflag判斷返回的解是否正確有效
fval對應(yīng)的是返回的x值是,原來函數(shù)的值
如果x是正確解,那么得到的fval應(yīng)該都滿足誤差要求,是很接近零的值
而exitflag是更直接地獲得返回信息的標(biāo)志
當(dāng)返回的exitflag等于1時,是最后的情況,表明找到了符合精度要求的解
如果exitflag不等于1,就表明有一定的問題,解x不太可信,或者根本即使錯誤的
以下是exitflag返回值對應(yīng)的所有意義
你可以多讓fsolve返回這兩個信息,然后根據(jù)它們判斷時候得到正確解
如果得不到正確解
那么可以嘗試更換初值
更改誤差要求或者最大計算步數(shù)