浙江大學城市學院實驗報告
課程名稱科學計算
實驗專案名稱一元非線性方程的解法
實驗成績指導老師(簽名日期 2013/10/10
一. 實驗目的和要求
1. 用matlab軟體掌握求解非線性方程的二分法、迭代法和牛頓法,並對結果作初步分析;
2. 通過例項練習用非線性方程求解實際問題。
二. 實驗內容和原理
分析應用題2-1,2-2,2-3,2-4,2-5要求將問題的分析過程、matlab源程式和執行結果和結果的解釋、演算法的分析寫在實驗報告上。
2-1 程式注釋
對用二分法、迭代法和牛頓法求一元非線性方程數值解的matlab程式的每一句添上注釋。
二分法: [x,n]=bisectionmethod(a,b,epsi,nmax)
迭代法: [x,n]=iterationmethod(x0,epsi,nmax)
newton法: [x,n]=newtonmethod(x0,epsi,nmax)
2-2 分析應用題
用二分法求方程和根的近似值,使誤差不超過,輸出每次二分之後解的近似結果以及二分的次數,其中的根只需求最接近原點的那個根。
2-3 分析應用題
已知方程有以下三種迭代格式,分析三種迭代格式的收斂性,求出迭代精度為的數值結果,並比較迭代序列的收斂速度。
1) 2) 3
2-4 分析應用題
用下列方法求方程的近似根,要求誤差不超過,並比較計算量。
1)在區間[0, 1]上用二分法;
2)取初值,並用迭代過程;
3)取初值用牛頓法求解。
2-5 分析應用題
以定期儲存為基礎的儲蓄帳戶的累積值可由定期年金方程確定
在這個方程中,是帳戶中的數額,是定期儲存的數額,是個儲存期間的每期利率。乙個工程師想在20年後退休時儲蓄帳戶上的數額達到750000美元,而為了達到這個目標,他每個月能存1500美元。為實現他的儲值目標,最小利率應是多少?
假定利息是月複利的。
三. 操作方法與實驗步驟(包括實驗資料記錄和處理)
2-1 分析應用題
對用二分法、迭代法和牛頓法求一元非線性方程數值解的matlab程式的每一句添上注釋。
二分法: [x,n]=bisectionmethod(a,b,epsi,nmax)
function[c,err,yc]=erfen(f,a,b,delta)
ya=feval(f,a);
yb=feval(f,b);
if ya*yb>0,break,end
maxl=1+round((log(b-a)-log(delta))/log(2));
for k=1:max1
c=(a+b)/2;
yc=feval(f,c);
if yc = 0
a=c;
b=c;
elseif yb*yc>0
b=c;
yb=yc;
else
a= c;
ya=yb;
endif b-aend
c=(a+b)/2;
err= abs(b-a);
yc = feval(f,c);
(1) 輸入:a,b值及精確控制量ε;
(2) if f(a)*f(b)>0 then 返回第一步,重新輸入a,b值else轉第三步;
(3) while|a-b|>ε 時做
1. x=1/2(a+b),計算f(x);if f(x)=0 then 輸出x,停機。
2. if f(a)*f(x)<0 then [a,b]替換為[a,x] else [a,b]替換為[x,b]
endwhile;
(4) 輸出x=1/2(a+b).
迭代法: [x,n]=iterationmethod(x0,epsi,nmax)
設f(x)=0,改寫為
x=ψ(x)
取方程初始近似值x0,作迭代過程
xn+1=ψ(xn)(n=1,2,3……)
若產生的序列收斂於x*,即x*即為方程的根。
newton法: [x,n]=newtonmethod(x0,epsi,nmax)
function[p0,err,k,y]=newton(f,df,p0,delta,epsilon,max1)
for k=1:mak1
p1=p0-feval(f,p0)/feval(df,p0);
err=abs(p1-p0);
relerr =2*err/(abs(p1)+delta);
pp(k)=p1;
p0=p1;
y=feval(f,p0);
if(errend
pp(1) 輸入:x0,ε;
(2) f0=f(x0),f(1)=f』(x0);
(3) while|f0|>ε做
3.轉(2)
endwhile
(4)輸出:x1.
2-2fun = @(x)sin(x)-x^2/4;
a=0;
b=4;
fa=fun(a);
fb=fun(b);
c=(a+b)/2;
fc=fun(c);
if fa*fb>0
return;
endwhile abs(fc)>0.01
c=(a+b)/2;
fc=fun(c);
if fb*fc>0
b=c;
fb=fc;
else
a=c;
fa=fc;
endendfx=fc
x=c -0.0050
x = 1.9375
2-3 分析應用題
第一種x(1)=3-exp(1);
x(2)=sqrt(exp(x(1))/3);
i=1;
while abs(x(i+1)-x(i))>0.000001
x(i+2)=sqrt(exp(x(i+1))/3);
i=i+1;
endxf=x(i+1)
xf =
0.9100
>>第二種clc;
x(1)=3-exp(1);
x(2)=2*log(x(1))+log(3);
i=1;
while abs(x(i+1)-x(i))>0.000001
x(i+2)=2*log(x(i+1))+log(3);
i=i+1;
endxf=x(i+1)
xf =
3.7331 + 0.0000i
>>第三種x(1)=3-exp(1);
x(2)=x(1)-(3*x(1)-exp(x(1)))/(6*x(1)-exp(x(1)));
i=1;
while abs(x(i+1)-x(i))>0.000001
x(i+2)=x(i)-(3*x(i)-exp(x(i)))/(6*x(i)-exp(x(i)));
i=i+1;
endxf=x(i+1)
xf =
1.5978
>>2-4 分析應用題
1)在區間[0, 1]上用二分法;
fun = @(x)exp(x)-2+10*x;
a=0;
b=1;
fa=fun(a);
fb=fun(b);
c=(a+b)/2;
fc=fun(c);
if fa*fb>0
return;
endwhile abs(fc)>1/2*10e-3
c=(a+b)/2;
fc=fun(c);
if fb*fc>0
b=c;
fb=fc;
else
a=c;
fa=fc;
endendx=c
x = 0.0908
>>2)取初值,並用迭代過程;
x(1)=1/10;
x(2)=(2-exp(x(1)))/10;
i=1;
while x(i+1)-x(i)>1/2*10e-3
x(i+2)=(2-exp(x(i+1)))/10;
i=i+1;
endx=x(i+1)
x =0.0895
3)取初值用牛頓法求解。
f=@(x)exp(x)+10*x-2;
df=@(x)exp(x)+10;
x0=0;
f0=-1;
f1=11;
while abs(f0)>0.005
x1=x0- f0/f1;
x0=x1;
f0=f(x0);
f1=df(x0);
endx1
x1 =
0.0909
2-5 分析應用題
[p0,err,k,y]=newton('f','df',1,0.0005,5*10^-6,100000)
p0 =
0.005555938110707
err =
1.374794598648418e-004
k =168y =0.002070961751574
最小利率
p0 =
0.005555938110707
四. 實驗結果與分析
非線性方程解法二分法實驗報告
第七章非線性方程解法 二分法 考察有根區間 a,b 取中點x0 b a 2 將它分為兩半,假設中點x0不是f x 的零點,然後進行根的搜尋,即查詢f x0 與f a 是否同號,如果確係同號,說明所求的根x在x0的右側,這是令a1 x0,b1 b 否則x必在x0的左側,這是令a1 a,b1 x0,不管...
關於非線性方程組Newton解法的研究綜述
作者 謝玉倩王培 一 研究現狀 非線性代數方程組求解是乙個基本而又重要的問題,這是因為在工作實踐 經濟學 資訊保安和動力學等方面有大量的實際問題最終轉化為代數方程組。這 一類問題,我們不可能找到他們的解析解,數值解是目前主要的研究方向。數值 解法較為成熟,速度快,但其往往只能求出部分解,而且通常只能...
一元線性回歸模型實驗報告
以中國1985 2009年財政收入y和國內生產總值 gdp 為例以gdp為橫軸,y為縱軸的散點圖 以gdp為解釋變數,y為被解釋變數,建立一元線性回歸方程 yi 0 1 gdpi 圖3 回歸分析結果 可得出0 3225.757 1 0.197398財政收入隨國內生產總值變化的一元線性回歸方程為 32...