MATLAB计算方法迭代法牛顿法二分法实验报告要点(20200629085932)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

姓名 _______________ 实验报告成绩 __________________________ 评语:

指导教师(签名)

说明:指导教师评分后,实验报告交院(系)办公室保存

实验一方程求根

一、实验目的

用各种方法求任意实函数方程f(X)=0在自变量区间[a,b]上,或某一点附近的实根。并比较方法的优劣。

二、实验原理

(1)、二分法

b - a

—----- 对方程f(x)=0在[a,b]内求根。将所给区间二分,在分点2判

b - a

断是否f(x)=0;若是,则有根-2。否则,继续判断是否f(a)・f(x) :::°, 若是,则令b二x,否则令a=x。否则令a = x。重复此过程直至求出方程f(x)=0在[a,b]中的近似根为止。

(2)、迭代法

将方程f(x)=0等价变换为x = ® ( x )形式,并建立相应的迭代公式

X k 1 5 ( x ) o

(3)、牛顿法

若已知方程的一个近似根X。,则函数在点X。附近可用一阶泰勒多项式

5(口^(冷厂f'(X0)(x-X0)来近似,因此方程f(x)=0可近似表示为 f (人)

f(x

0厂f'(X

0)(x-

X) =0设fgF,则x=X0- f'(X0)。取X作为原方程新的近

f (X k)

似根X1,然后将X1作为x

0代入上式。迭代公式为:X ki=X0- f'

(x

k)。

三、实验设备:MATLAB 7.0软件

四、结果预测

(1) 心=0.09033 (2) x5=0.09052 (3) x2=0,09052

五、实验内容

(1)、在区间[0,1]上用二分法求方程e x+10x — 2 = 0的近似根,要求误差不超

过°5 10'。

f (X k)

(2)、取初值x°=0,用迭代公式f'(X k),求方程e X+10x-2 = 0的近似根。要求误差不超过°5 10。

(3)、取初值X o=0,用牛顿迭代法求方程e x+10x-2=0的近似根。要求误差不超0.5 10"。

六、实验步骤与实验程序

(1)二分法

第一步:在MATLAB 7.0软件,建立一个实现二分法的MATLAB函数文

件agui_bisect.m 女口下:

fun cti on x=agui_bisect(fname,a,b,e)

%fname为函数名,a,b为区间端点,e为精度

fa=feval(fname,a); % 把a端点代入函数,求fa

fb=feval(fname,b); % 把b端点代入函数,求fb

if fa*fb>0 error(' 两端函数值为同号');

end

%如果fa*fb>0,则输出两端函数值为同号

k=0

x=(a+b)/2

while(b-a)>(2*e) % 循环条件的限制

fx二feval(fname,x);% 把x代入代入函数,求fx

if fa*fx<0% 如果fa与fx同号,则把x赋给b,把fx赋给fb

b=x;

fb=fx;

else

%如果fa与fx异号,则把x赋给a,把fx赋给fa

a=x;

fa=fx;

end

k=k+1

%计算二分了多少次

x=(a+b)/2 %当满足了一定精度后,跳出循环,每次二分,都得新的

区间断点a和b,则近似解为x=(a+b)/2

end

第二步:在MATLAB^令窗口求解方程f(x)=e A x+10x-2=0 ,即输入如下>>fu n=inlin e('exp(x)+10*x-2')

>> x=agui_bisect(fu 门,0,1,0.5*10八-3)

第三步:得到计算结果,且计算结果为

k =

Command Window

fun =

Inline function: fun(x) = exp(x)+10*x-2

» x=agui_bisect (fun, 0,1,0.5*10*3)

x =

0.06250000000000

0.09375000000000

Command Window

2

x =

0.12500000000000

0.50000000000000

0.25000000000000

x =

0. D9082031250000

k =

10

m 二

0.09033203125000

0. 08984375000000 (2) 迭代法

x =

0. 09033203125000

第一步:第一步:在MATLAB.0软件,建立一个实现迭代法的 函数文件 agui_main.m 女口下:

fun cti on x=agui_ma in( fname,xO,e)

%fname 为函数名dfname 的函数fname 的导数,x0为迭代初值 %点为精度,N 为最大迭代次数(默认为100) N=100;

x=x0; %把x0赋给x ,再算x+2*e 赋给x0 x0=x+2*e; k=0;

Command Window X =

0. 09179S875000G0

0.07812500000000

0. 08593750000000 MATLAB

相关文档
最新文档