實驗報告二一元非線性方程的解法

2022-05-11 03:01:50 字數 4623 閱讀 5709

浙江大學城市學院實驗報告

課程名稱科學計算

實驗專案名稱一元非線性方程的解法

實驗成績指導老師(簽名日期 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...