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