我試圖解決兩個耦合代數方程求解耦合在MATLAB非線性方程而不重新縮放
f1(x,y) = 0;
f2(x,y) = 0;
的功能f1
和f2
是10^42
大小的典型順序。我跑了matlab代碼,但它說沒有找到解決方案。我認爲這個問題是因爲涉及的規模非常高。重新調整整個方程是非常繁瑣的。我想在delta(f)/f < epsilon(say 1e-6)
時停止根查找功能(fsolve)
。這個條件如何在matlab中實現?任何替代解決方案的擴展問題也是受歡迎的。
我試圖解決兩個耦合代數方程求解耦合在MATLAB非線性方程而不重新縮放
f1(x,y) = 0;
f2(x,y) = 0;
的功能f1
和f2
是10^42
大小的典型順序。我跑了matlab代碼,但它說沒有找到解決方案。我認爲這個問題是因爲涉及的規模非常高。重新調整整個方程是非常繁瑣的。我想在delta(f)/f < epsilon(say 1e-6)
時停止根查找功能(fsolve)
。這個條件如何在matlab中實現?任何替代解決方案的擴展問題也是受歡迎的。
RTFM(友好的課程),https://de.mathworks.com/help/optim/ug/fsolve.html
的選項,你可以提供給求解器包含有默認值1e-6
是對函數值的絕對公差參數TolFun
。顯然沒有相對公差的規定,所以您需要從初始點或更多全局考慮來計算函數值範圍,以設置TolFun = scale * epsilon
。
我試過了。如果函數具有不同的比例,它將無法工作?例如f1〜10^32和f2〜10^14。 – 2015-04-06 16:37:08
雙精度浮點數可以取值10^42。 – 2015-04-05 14:59:19