計算方法第二章方程求根上機報告

2022-04-18 07:02:17 字數 1928 閱讀 5032

班級: 學號: 姓名: 成績:

1)通過對二分法與牛頓迭代法作程式設計練習與上級運算,進一步體會二分法與牛頓迭代法的不同特點。

2)編寫割線迭代法的程式,求非線性迭代法的解,並與牛頓迭代法。

用牛頓法和割線法求下列方程的根

x^2-e^x=0;

x*e^x-1=0;

lgx+x-2=0;

1) 根據二分法和牛頓迭代法,割線法的演算法編寫相應的求根函式;

2) 將題中所給引數帶入二分法函式,確定大致區間;

3) 用牛頓迭代法和割線法分別對方程進行求解;

牛頓迭代法x0=1.0;

n=100;

k=0;

eps=5e-6;

delta=1e-6;

while(1)

x1=x0-fc1(x0)/fc2(x0);

k=k+1;

if k>n

disp('newmethod failed')

break

endif(abs(x1-x0) break;

endx0=x1; %·abs(x1-x0)°

endfprintf('%f',x0)

fprintf(' %f ', abs(fc1(x1)) )

割線法function cutline(x0,x1)

n=100;

k=0;

delta=5e-8;

while(1)

while(abs(x1-x0)>=delta)

c=x1;

x1=cutnext(x0,x1);

x0=cx0 x1x1 x2 ±x0 x1

endk=k+1;

if k>n

disp('cutline method failed')

break;

endif(abs(x1-x0) break;

endendfprintf('%.10f\n',x1);

function y=cutnext(a,b)

y=b-fc(b)/(fc(b)-fc(a))*(b-a);

1) 原函式

function fc1=fc1(x)

fc1=x^2-exp(x);

end導函式

function fc2=fc2(x)

fc2=2*x-exp(x);

end2)原函式

function fc1=fc1(x)

fc1=x*exp(x)-1;

end導數

function fc2=fc2(x)

fc2=(x+1)*exp(x);

end3)原函式

function fc1=fc1(x)

fc1=log10(x)+x-2;

end導函式

function fc2=fc2(x)

fc2=1/x/log(10)+1;

end1)牛頓法結果

-0.7034722378

割線法結果

-0.7034674225

2)牛頓法結果

0.5671435302

割線法結果

0.5671432904

3)牛頓法結果

1.7553985566

割線法結果

1.7555794993

牛頓迭代法由於設定delta=1e-6,所以算出的誤差e<1.0*10^-5;

割線法由於設定delta=5e-8,所以誤差e<1.0*10^-7;

程式設計時由於將迭代的**x0=x1放在

if(abs(x1-x0) break;

end之前導致程式沒有執行就跳出,通過debug發現了問題,將x0=x1;放到了迴圈體內部的最後一行,程式得以成功的執行。

1)《計算方法與實習》(袁慰平孫志忠吳巨集偉聞震初)

計算方法第二章作業答案參考

習題二1.用二分法求方程在區間 0.3,0.4 內的根,要求誤差不超過。include include define f x x x x x 3 x 1 main else if f mid 0 else break printf 因此,x f n mid 3.方程在1.5附近有根,把方程寫成4種不...

計算方法實驗一方程求根

實驗一方程求根 1 二分法 1 實驗程式 實現二分法的matlab函式檔案agui 2.在matlab命令視窗輸入及實驗結果及操作介面 2 迭代法 1 實驗程式 實現二分法的matlab函式檔案agui 2 在matlab命令視窗輸入及實驗結果及操作介面 3 牛頓法 1 實驗程式 實現二分法的mat...

數值計算方法上機報告

電氣化0805 張瑩 200801000529 一 牛頓法求解非線性方程 演算法原理 迭代公式 牛頓迭代法是將非線性方程組進行泰勒展開,逐步線性化,從而將非線性方程組近似的轉化為線性方程得到迭代序列的方法。程式框圖 變數說明 分別表示每次迭代的初值和終值,為精度控制量,為最大迭代次數。具體算例 求x...