今天數值計算上機做了乙個驗證二分法計算非線性方程的實驗。以前沒有想過這個問題,今天作業一下感覺這個方法確實不錯,隨記下來。
首先給出要計算的方程:f(x)=x^2=m
然後編寫演算法:
matlab code:
%其中a,b表示查詢根存在的範圍,m表示要求解函式的值
function y=f2(a,b,m)
k=0;
eps=0.0000001
while b-a>eps
x=(a+b)/2;
%檢查是否大於值
if f(x)>m
b=xelse
a=xend
k=k+1
end這樣就可以很方便的計算方程的根,對於這樣的二次方程或許通過手動還可以計算,那如果說給你乙個八次的或是n次的有解的方程呢?我想沒人願意手算。
如果程式設計那麼通過遍歷的方式來找呢?這樣的話效率會很低。如果用二分法來算的話,你可以自己計算一下假如有乙個數100萬,要查詢其中的某個指定的數,其時間複雜度不會超過50,也就是2的50次方(值為:1125899906842624)。
因此有乙個好的方法是很重要的。
(檢視新部落格)
二分法 MATLAB實現
matlab中eps是乙個函式,可以返回某乙個數n的最小浮點數精度,形式例如eps n 一般直接用eps即可。eps eps 1 2.2204e 16 1 1 eps false 1 1 eps 0.51 false 1 1 eps 0.5 true 0.5 時為true 自定義函式的途徑 m檔案函...
原始碼 二分法的matlab實現
本篇是在課程學習中自己程式設計實現的二分法計算非線性方程或者超越方程近似根的演算法,寫一下,後邊便於複習和期末課程設計引用。二分法求根的matlab演算法 function x0,n dichotomy a,b,err,f x 輸入引數a為根的區間左端點 輸入引數b為根的區間右端點 輸入引數err為...
二分法的使用
在看二分查詢之前,需要先強調一下,陣列和函式等價,即f x 等價於num x 都是對映關係,根據乙個x值可以得到唯一乙個函式值。這裡的函式不僅指數學函式,也值自定義的表現為y f x 的函式。二分查詢通常用來處理函式值單調,且容易判斷的問題。例如在有序陣列中查詢值。無論什麼形式的二分,整體思想都是將...