数值计算matlab_第1页
数值计算matlab_第2页
数值计算matlab_第3页
数值计算matlab_第4页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精品文档数值计算非线性方程五种数值解法的matlab程序一、算法描述计算 n A 的值可以将问题转化为求函数f ( x) xnA0 时的解,可以利用函数的收敛性结合数值逼近的思想进行算法设计。1.1 二分法设 f ( x) 在区间( x,y)上连续,假定 f ( a)0, f (b)0,a<b ,取中点 a b,若 f ( ab )0 ,22该点就是零点。若 f ( a b)0 , 则在区间( (a+b)/2 , b)内有零点, (a+b)/2>=a,令 aa b 继续22使用中点函数值判断。 若 f ( ab) 0 ,则在区间 (a,(a+b)/2)内有零点, (a+b)/2&l

2、t;=b ,令 bab 继22续使用中点函数值判断。这样就可以不断接近零点。通过每次把f(x) 的零点所在小区间收缩一半的方法,使区间的两个端点逐步逼近函数的零点,以求得零点的近似值从以上可以看出,每次运算后,区间长度减少一半,是线形收敛。Matlab 实现 :function erfen(A,n,a,b,e)a0=a;b0=b;f = (x)xn-A;m= 0;tic;if f(a)* f(b)<0m=1;c=(a+b)/2;fprintf('x%d=%12.9fn',m,c)while abs(a-b)>eif f(a)* f(c)<0b=c;c=(a+b

3、)/2;elseif f(c)*f(b)<0a=c;c=(a+b)/2;else y=c;endm=m+1;fprintf('x%d=%12.9fn',m,c)endformat longy=c;elseif f(a)=0。1欢迎下载精品文档y=a;elseif f(b)=0y=b;else disp ('may not be a root')endmt = toc;fprintf('根为 : %.10fn',c);fprintf('初始值 : %.5f , %.5fn',a0,b0);fprintf('迭代次数 :

4、 %dn',m);fprintf('迭代时间 : %.10fn',t);1.2 牛顿法在 已 知 方 程 的 近 似 根 x0 ,且 在 x0附 近 将 f ( x)用一阶泰勒多项式展开即f ( x)f ( x0 ) f ' (x0 )( x x0 ) ,令 f (x)0即可解得 xx0f (x0 )。取此 x 作为原方程的新f ' (x0 )近似根继续重复以上步骤,于是可得迭代公式xk 1f ( xk )xkf '( xk )Matlab 实现:functionNewton(A,n,x0,e)begin=x0;f = (x)xn-A;df =

5、(x)n*x(n-1);x1=x0-f (x0)/df (x0);m=1;fprintf('x%d=%12.9fn',m,x1);tic;while (abs (x1-x0)>=e)&(m<=100000000)x0=x1;x1=x0-f(x0)/df(x0);m=m+1;fprintf('x%d=%12.9fn',m,x1);endx1mt = toc;fprintf('根为 : %.10fn',x1);fprintf('初始值 : %.5fn',begin);fprintf('迭代次数 : %dn&

6、#39;,m);fprintf('迭代时间 : %.10fn',t);1.3 简易牛顿法为简化计算,在牛顿迭代公式中用一常数M代替 f '( xk ) 即为简化牛顿迭代法,在此取f ' (x0 )f ' ( xk )。2欢迎下载精品文档Matlab 实现: function sNewton(A,n,x0,e)xk0=x0;f = (x)xn-A;df = (x)n*x(n-1);xk1=xk0-f (xk0)/df (x0);m=1;fprintf('x%d=%12.9fn',m,xk1);tic;while (abs (xk1-xk0)

7、>=e)&(m<=100000000)xk0=xk1;xk1=xk0-f(xk0)/df(x0);m=m+1;fprintf('x%d=%12.9fn',m,xk1);endxk1mt = toc;fprintf('根为 : %.10fn',xk1);fprintf('初始值 : %.5fn',x0);fprintf('迭代次数 : %dn',m);fprintf('迭代时间 : %.10fn',t)1.4 割线法在牛顿迭代公式中用差商f ( xk )f (xk 1) 代替 f '( x

8、k ) 即为割线法xkxk 1Matlab 实现function gexian(A,n,a,b,e)x0=a;x1=b;f = (x)xn-A;x2=x1-f (x1)*(x1-x0)/(f(x1)-f(x0);m=1;fprintf('x%d=%12.9fn',m,x2);tic;while (abs (x2-x1)>=e)&(m<=100000000)x0=x1;x1=x2;x2=x1-f (x1)*(x1-x0)/(f(x1)-f(x0);m=m+1;fprintf('x%d=%12.9fn',m,x2);endx2mt = toc;f

9、printf('根为 : %.10fn',x2);fprintf('初始值 : %.5fn',a,b);。3欢迎下载精品文档fprintf('迭代次数 : %dn',m);fprintf('迭代时间 : %.10fn',t1.5 斯特芬森法该迭代法解方程x( x) 可以看成是另一种不动点迭代:xk 1(xk ), k0,1,2,L 其中迭代函数为(x)( x)x)2得 到 迭 代 公 式 为 :yk( xk ), zk( yk ) ;x2 (x)( (x)xxk 1( ykxk )20,1, 2Lxk2 yk, kzkxkMatl

10、ab 实现function Steffensen(A,n,x0,e)begin=x0;f = (x)xn-A;g = (x)A/(x(n-1);x1= x0-(g(x0)-x0)2/(g(g(x0)-2*g(x0)+x0)m=1;fprintf('x%d=%12.9fn',m,x1)tic;while (abs (x1-x0)>=e)&(m<=100000000)x0=x1;x1= x0-(g(x0)-x0)2/(g(g(x0)-2*g(x0)+x0);m=m+1;fprintf('x%d=%12.9fn',m,x1)endx1mt = to

11、c;fprintf('根为 : %.10fn',x1);fprintf('初始值 : %.5fn',begin);fprintf('迭代次数 : %dn',m);fprintf('迭代时间 : %.10fn',t);二计算机软硬件配置电脑型号华硕 K52JU 笔记本电脑操作系统Windows 7 旗舰版 32 位 SP1 ( DirectX 11 )处理器英特尔 Core i3 M 380 2.53GHz双核笔记本处理器内存2 GB (昱联 DDR3 1333MHz )Matlab 版本三参数设置n A , e(精度),a,b(区

12、间), x0 初始值。4欢迎下载精品文档四计算结果(以计算3 500 为例)erfen(500,3,0,10,0.000001)gexian(500,3,0,10,0.000001)newton(500,3,10,0.000001)snewton(500,3,10,0.000001)steffensen(500,3,10,0.000001)迭代次数二分法割线法牛顿法简易牛顿斯特芬森15.0000005.0000008.3333338.3333338.75000027.5000007.1428577.9555558.0709878.08548138.7500008.3561647.9370487

13、.9851517.94244148.1250007.8937927.9370057.9546367.93701257.8125007.9347937.9370057.9435047.93700567.9687507.9370177.9394077.93700577.8906257.9370057.93789387.9296877.9370057.93733397.9492187.937126107.9394537.937050117.9345707.937021127.9370117.937011137.9357917.937007147.9364017.937006157.9367067.9

14、37005167.936859177.936935187.936973197.936992207.937002217.937006227.937004237.937005247.937005257.937005迭代次数2585156迭代时间0.0500000.0100000.0000000.0000000.010000根7.9370057.9370057.9370057.9370057.937005四分析结果及结论由以上运行结果可知,牛顿法的收敛速度最快,二分法收敛速度最慢。5欢迎下载精品文档牛顿法、割线法和斯特芬森得到的结果精度最高,迭代次数由低到高排列为:牛顿法,斯特芬森,割线法,简易牛顿法,二分法。出现这种结果的原因是:二分法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论