班級: 學號: 姓名: 成績:
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...