数值分析上机实验报告

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

数值分析上机实验报告

《数值分析》上机实验报告

1.用Newton 法求方程 X 7-X 4+14=0

在(0.1,1.9)中的近似根(初始近似值取为区间端点,迭代6次或误差小于0.00001)。 1.1 理论依据:

设函数在有限区间[a ,b]上二阶导数存在,且满足条件

{}αϕ上的惟一解在区间平方收敛于方程所生的迭代序列

迭代过程由则对任意初始近似值达到的一个中使是其中上不变号

在区间],[0)(3,2,1,0,)

(')

()(],,[x |))(),((|,|,)(||)(|.4;0)(.3],[)(.20

)()(.110......b a x f x k x f x f x x x Newton b a b f a f mir b a c x f a

b c f x f b a x f b f x f k k k k k k ==-

==∈≤-≠>+

)9.1()9.1(0)8(4233642)(0)16(71127)(0)9.1(,0)1.0(,1428)(3

2

2

5

333647>⋅''<-=-=''<-=-='<>+-=f f x x x x x f x x x x x f f f x x x f

故以1.9为起点

⎪⎩

⎪⎨

='-

=+9.1)()(01x x f x f x x k k k k 如此一次一次的迭代,逼近x 的真实根。当前后两个的差<=ε时,就认为求出了近似的根。本程序用Newton 法求代数方程(最高次数不大于10)在(a,b )区间的根。

1.2 C语言程序原代码:

#include

#include

main()

{double x2,f,f1;

double x1=1.9; //取初值为1.9

do

{x2=x1;

f=pow(x2,7)-28*pow(x2,4)+14;

f1=7*pow(x2,6)-4*28*pow(x2,3);

x1=x2-f/f1;}

while(fabs(x1-x2)>=0.00001||x1<0.1); //限制循环次数printf("计算结果:x=%f\n",x1);}

1.3 运行结果:

1.4 MATLAB上机程序

function y=Newton(f,df,x0,eps,M)

d=0;

for k=1:M

if feval(df,x0)==0

d=2;break

else

x1=x0-feval(f,x0)/feval(df,x0);

end

e=abs(x1-x0);

x0=x1;

if e<=eps&&abs(feval(f,x1))<=eps

d=1;break

end

end

if d==1

y=x1;

elseif d==0

y='迭代M次失败';

else

y= '奇异'

end

function y=df(x)

y=7*x^6-28*4*x^3;

End

function y=f(x)

y=x^7-28*x^4+14;

End

>> x0=1.9;

>> eps=0.00001;

>> M=100;

>> x=Newton('f','df',x0,eps,M);

>> vpa(x,7)

1.5 问题讨论:

1.使用此方法求方解,用误差来控制循环迭代次数,可以在误差允许的范围内得到比较理想的计算结果。此程序的不足之处是,所要求解的方程必须满足上述定理的四个条件,但是第二和第四个条件在计算机上比较难以实现。

2.Newton迭代法是一个二阶收敛迭代式,他的几何意义Xi+1是Xi的切线与x轴的交点,故也称为切线法。它是平方收敛的,但它是局部收敛的,即要求初始值与方程的根充分接近,所以在计算过程中需要先确定初始值。

3.本题在理论依据部分,讨论了区间(0.1,1.9)两端点是否能作为Newton迭代的初值,结果发现0.1不满足条件,而1.9满足,能作为初值。另外,该程序简单,只有一个循环,且为顺序结构,故采用do-while循环。当然也可以选择for 和while循环。

2.已知函数值如下表:

试用三次样条插值求f(4.563)及f ’(4.563)的近似值。 2.1 理论依据

33

2211

111

111

1

11

()()()()()()()

6666j j j j j j j j

j j j j j j j j x x x x h x x h x x S x M M y M y M h h h h ---------------=++-+-这里11j j j h x x --=- ,所以只要求出j M ,就能得出插值函数S (x )。

求j M 的方法为:001111

221

12

12

2

21

2N N N N M d M d M d μλμλμλ--⎡⎤⎡⎤⎡⎤

⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢

⎥⎢⎥⎢⎥=⎢

⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥

⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣

⎦⎣⎦⎣⎦

这里1000

00

11111

111

116()6()(1,2,,1)

61[()]

1j j j j j

j j j j N N N N N N j j

j j j j j j j y y d y h h

y y y y d j N h h h h d y y y h h h h h h h h μλμ+----------⎧

'=-⎪⎪⎪--=-=-⎪+⎪

⎪'=--⎪⎪

⎪==-=⎪++⎩

最终归结为求解一个三对角阵的解。

相关文档
最新文档