Matlab 數值計算方法作業

2021-10-11 10:23:13 字數 3476 閱讀 5866

(2)簡單迭代法

(3)牛頓迭代法

結果分析

%二分法計算函式的零點

%輸入求根區間a,b和求根精度abtol

%函式輸出根的近似值,和迭代次數

function dichotomy()

a=input

('請輸入求根的下限,a=');

b=input

('請輸入求根的上限,b=');

abtol=

input

('請輸入求根的精度,abtol=');

iterations=0;

ya=fun

(a);yb=

fun(b)

;%程式中呼叫的fun.m為函式

if ya*yb>

0fprintf

('注意:ya*yb>0,請重新調整區間端點a和b.'),

return

else

[iter,y]

=dichotomyroot

(a,b,abtol,iterations)

;disp

('root='),

disp

(y);

enddisp

('迭代次數='),

disp

(iter)

;end

%可以只執行某乙個小函式(內層函式)

%使用二分法計算函式的零點

%引數a,b為根的大概區間,abtol為精度

('解題結束'

)disp

('簡單迭代法所求根為'

)disp

(x1)

disp

('迭代次數為'

%開始迭代最初的x

eps =

input

('eps=');

%定義所要求解的精度

syms x1;

%定義兩xk+

1和xk的差,一次來限制精度的要求

x1=100

;syms xa;

xa=x;

k =1

;syms xb;

while x1>eps

xb = xa;

xa =

newton1

(xb)

; x1 =

abs(xa-xb)

;%得到▲x

k = k+1;

enddisp

('該函式符合規定精度的解是:');

double

(xa)

disp

('迭代次數為:');

disp

(k)%xa即為所求的值

function y =

newton

(x)y =

exp(x)+10

*x-2

;%任意函式

end%function的自定義函式用來儲存咱們要進行牛頓迭代的函式

function y =

newton1

(x)syms a;

f = a -

(newton

(a).

/diff

(newton

(a)));

y =subs

(f,x)

;%牛頓迭代公式

end%如果直接用y和x來實現的話,在掉用原函式的時候就算出了具體數值,公式中的求導就會變為0,

%無法求解,所以先用f,a來代替y和x,最後再進行替換,實現牛頓迭代公式。

二分法:結果為0.090332031250000,迭代次數為10

簡單迭代法:結果為0.090517340106995,迭代次數為4

牛頓迭代法:結果為0.090525101308676,迭代次數為4

二分法誤差為:4.882812500000000e-04

​簡單迭代法誤差為:7.865348014562956e-05

牛頓迭代法誤差為:5.367023481598562e-06

可見牛頓迭代法的誤差最小,而二分法的誤差最大。

數值計算方法

數值計算方法知識面涉及微積分,線性代數 運用程式設計的方法來解決關於數值計算的問題,其中重點討論如何最小化誤差,一些方程的數值解法,以及插值和擬合問題。其中的知識可以作為資料探勘的基礎。執行 5.1 5 0.1和 1.5 1 0.5,給出執行結果,並簡要分析一下產生現象的原因 x1 5.1 5 0....

數值計算方法實驗

1.給定下述演算法框圖,用逐步掃瞄法和二分法求方程x5 3x 1 0的最小正根,要求準確到1 2 10 2。要求 1 取步長h 1,先用逐步掃瞄法程式設計搜尋乙個隔根區間,將搜尋到的隔根區間列印輸出 2 然後對該區間使用二分法求方程的滿足精度要求的根,每二分一次,用新生成區間長度的一半作為是否二分結...

數值計算方法程式庫

sparse bundle adjustment即稀疏集束調整,現在廣泛應用於計算機視覺領域,基本成為最後優化的標準演算法,就是在已經得到的初始攝像機引數和三維點資料的基礎針對投影誤差進行優化,得到使得均方投影誤差最小意義下的motion和structure。其演算法的核心是利用levenberg ...