数值分析作业

发布 2022-08-22 08:10:28 阅读 7157

实验2.2算法设计与比较。

实验目的:编制不同方法的matlab程序,**这些方法的计算效果和特点。

问题提出:非线性方程的数值解法很多,不同的方法效果如何,要靠计算的实践来分析、比较。

实验内容:考虑下列算法:(1)牛顿法(2)弦割法(3)抛物线法。

分别编写它们的matlab程序。

牛顿法程序:

function [r,k]=newton(f,x0,eps) %牛顿迭代程序初始解:x0;解的精度:eps,可以不输入,默认1.

0e-9;迭代步数:k;if nargin==2eps=1.0e-9;end

fx1=subs(f,'x',x0);gx=diff(f,'x');

gx1=subs(gx,'x',x0);r=x0-fx1/gx1;k=0;disp('k r');tol=1;

while tol>eps

disp([num2str(knum2str(r)])x0=r; k=k+1;

fx1=subs(f,'x',x0);gx1=subs(gx,'x',x0);r=x0-fx1/gx1;tol=abs(r-x0);if(k>10000)

disp('迭代步数太多,可能不收敛!')return;endend

disp([num2str(knum2str(r)])

弦割法程序。

function [r,k]=xiange(f,x0,x1,eps) %弦割法程序初始解:x0,x1;解的精度:eps,可以不输入,默认1.0e-9;迭代步数:k;

if nargin==3eps=1.0e-9;end

fx1=subs(f,'x',x1);fx0=subs(f,'x',x0);r=x1-fx1*(x1-x0)/(fx1-fx0);k=0;

disp('k r');tol=1;

while tol>eps;

disp([num2str(knum2str(r)])x0=x1;x1=r;k=k+1;fx1=subs(f,'x',x1);fx0=subs(f,'x',x0);

r=x1-fx1*(x1-x0)/(fx1-fx0);tol=abs(r-x1);if(k>10000)

disp('迭代步数太多,可能不收敛!')break;endend

disp([num2str(knum2str(r)])

抛物线法程序。

function [r,k]=paowuxian(f,x0,x1,x2) %抛物线法程序初始解:x0,x1,x2;解的精度:eps,可以不输入,默认1.

0e-9;迭代步数:k;if nargin==4eps=1.0e-9;endk=0;

disp('k r');

l3=(x2-x1)/(x1-x0);d3=1+l3;

a=subs(f,'x',x0)*l3^2-subs(f,'x',x1)*l3*d3+subs(f,'x',x2)*l3;b=subs(f,'x',x0)*l3^2-subs(f,'x',x1)*d3^2+subs(f,'x',x2)*(l3+d3);c=subs(f,'x',x2)*d3;

l4=(-2)*c/(b+sign(b)*(b^2-4*a*c)^(1/2));r=x2+l4*(x2-x1);tol=1;

while tol>eps;

disp([num2str(knum2str(r)])x0=x1;x1=x2;x2=r;k=k+1;l3=(x2-x1)/(x1-x0);d3=1+l3;

a=subs(f,'x',x0)*l3^2-subs(f,'x',x1)*l3*d3+subs(f,'x',x2)*l3;b=subs(f,'x',x0)*l3^2-subs(f,'x',x1)*d3^2+subs(f,'x',x2)*(l3+d3);c=subs(f,'x',x2)*d3;

l4=(-2)*c/(b+sign(b)*(b^2-4*a*c)^(1/2));

r=x2+l4*(x2-x1);tol=abs(r-x2);end

disp([num2str(knum2str(r)])

实验要求:1)用上述各种方法计算下面的里个例子。在达到相同精度的前提下,比较其迭代次数,浮点运算次数和cpu时间等。

ⅰx34x2100在[1,2]上的根。ⅱex10x20在(0,2)内的根。

数值结果:x34x2100在[1,2]上的根。

牛顿法:> tic,syms x;f=x^3+4*x^2-10;[r,k]=newdun(f,1),tock r

0 1.45451 1.36892 1.36523 1.36524 1.3652r =

1.3652k =4

elapsed time is 0.046000 seconds.②弦割法。

> tic,syms x;[r,k]=xiange('x^3+4*x^2-10',1,2),tock r0 1.26321 1.33882 1.

36663 1.36524 1.36525 1.

36526 1.3652r =

1.3652k =6

elapsed time is 0.055000 seconds.③抛物线法。

> tic,syms x;f=x^3+4*x^2-10;[r,k]=paowuxian(f,0,1,2),tock r0 1.34661 1.3652 1.

36523 1.36524 1.3652r =

1.3652k =4

elapsed time is 0.079000 seconds.

ex10x20在(0,2)内的根。

牛顿法:> tic,syms x;f=exp(x)+10*x-2;[r,k]=newdun(f,0),tock r

0 0.0909091 0.0905252 0.0905253 0.090525r =

0.0905k =3

elapsed time is 0.046000 seconds.②弦割法。

> tic,syms x;[r,k]=xiange('exp(x)+10*x-2',0,2),tock r

0 0.0757891 0.0880922 0.0905273 0.0905254 0.090525r =

0.0905k =4

elapsed time is 0.048000 seconds.

抛物线法。> tic,syms x;f=exp(x)+10*x-2;[r,k]=paowuxian(f,0,1,2),tock r0 0.09631 0.

0901452 0.0905253 0.0905254 0.

090525r =

0.0905k =4

elapsed time is 0.079000 seconds.

2)总结归纳实验结果,说明各种方法的收敛阶。

代数方程。迭代方法牛顿法弦割法抛物线法牛顿法。

弦割法抛物线法。

方程根r1.36521.36521.36520.09050.09050.0905迭代次数k

cpu时间/s0.0460000.0550000.0790000.0460000.0480000.079000

通过实验数值结果,可以看出不同的迭代法的收敛性及收敛速度不同,只要。

不等于零,牛顿法的收敛阶为至少2阶;弦割法收敛阶为1.618;抛物线法收敛阶为1.839.

数值分析作业

12.求在 0,1 上的一次最佳平方逼近多项式与二次最佳平方逼近多项式。函数 function s zjpfbj n,a,b 创建一个函数,里面填入次数,和区间范围。base inline x j 1 x j 定义多项式。quan inline 1 x 权函数。a zeros n 1 y zeros...

数值分析作业

数值分析上机作业。zhh mushan 班级 土木工程一班。姓名 赵惠惠。班级 2010510359 二零一一年六月 舍入误差与有效数。一 问题说明。1 设,其精确值为。1 编制按从小到大的顺序计算通用程序。2 编制按从小到大的顺序计算通用程序。3 按两种顺序分别计算并指出有效位数。编制程序用单精度...

数值分析作业

实验报告一。题目 分析误差的方法与原则。摘要 用计算机解决实际问题就要先建立数学模型,而模型与实际问题之间会出现误差无可避免。因此在数值分析中除了要研究数学问题的数值方法与理论,还要研究计算结果的误差是否满足精度要求,这就是误差估计问题。前言 目的和意义 掌握截断误差与舍入误差。数学原理 截断误差指...