第九章 各种迭代法编程.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
雅可比迭代法: function x=jacobi(a,b,p,delta,n) %a为n维非奇异矩阵;b为n维值向量 %p为初值;delta为误差界;n为给定的迭代最高次数 N=length(b); for k=1:n for j=1:N x(j)=(b(j)-a(j,[1:j-1,j+1:N])*p([1:j-1,j+1:N]))/a(j,j); end err=abs(norm(x’-p)); p=x’; if(errdelta) break; end end p %显示迭代过程 x=x’; k,err 高斯塞德尔法迭代: function x=saidel(a,b,p,delta,n) %a为n维非奇异矩阵;b为n维值向量 %p为初值;delta为误差界;n为给定的迭代最高次数 N=length(b); for k=1:n for j=1:N if j==1 x(1)=(b(1)-a(1,2:N)*p(2:N))/a(1,1); else if j=N x(N)=(b(N)-a(N,1:N-1)*(x(1:N-1))’)/a(N,N); else x(j)=(b(j)-a(j,(1:j-1)*x(1:j-1)-a(j,j+1:N)*p(j+1:N))/a(j,j); end end err=abs(norm(x’-p)); p=x’; if(errdelta) break; end end x=x’; k,err 不动点迭代法: function [x,k,err,p]=ddf(f,x0,tol,n) %ddl.m为用迭代法求非线性方程的解 %f为给定的迭代函数;x0为给定的初始值 %tol为给定的误差界;n为所允许的最大迭代次数 %k为迭代次数;x为不动点的近似值;err为误差 p(1)=x0; for k=2:n p(k)=feval(f,p(k-1)); k, err=abs(p(k)-p(k-1)) x=p(k); if(errtol) break; end if k==n disp(迭代超过最大次数!) end end x=p 牛顿法: function [x,k,err,y]=Newtun(f,df,x0,tol,n) %Newtun.m为用迭代法求非线性方程的解 %f为给定的非线性方程;df为f的微分方程;x0为给定的初始值 %tol为给定的误差界;n为所允许的最大迭代次数 %k为迭代次数;x为不动点的近似值;err为误差 %x为牛顿迭代法得到得近似解 y(1)=x0; for k=1:n x=x0-feval(f,x0)/feval(df,x0); err=abs(x-x0); x0=x; if(errtol)|(y==0); break; end end 必要编辑M文件qfun.m,代码如下: function y=qfun(x); y=x^3-3*x-1; 弦截法: function [x,err,k,y]=xjf(f,x0,x1,tol,n) %xjf.m为用弦截法迭代法求非线性方程的解 %f为给定的非线性方程;x0,x1为给定的初始值 %tol为给定的误差界;n为所允许的最大迭代次数 %k为迭代次数;x为牛顿迭代法的近似值;err为x1-x0的绝对值 y(1)=x0; for k=1:n x=x1-feval(li6_5fun,x1)*(x1-x0)/(feval(li6_5fun,x1)-feval(li6_5fun,x0)); err=abs(x-x1); x0=x1; x1=x; if(errtol)|(y==0); break; end end 必要编辑M文件li6_5.m,代码如下: function y=li6_5(x); y=x^3-3*x-1; 复化梯形公式matlab: function t=tixing(f,a,b,n)   h=(b-a)/n;   sum=0;   for k=0:n-1 x=a+k*h; sum=sum+feval(f,x);   end   t=h/2*(feval(f,a)+feval(f,b)+2*sum); 运行程序结果: format long tixing(inline(x./(x.^2+4)),0,1,8) ans = 0.111402354529548 复

文档评论(0)

xiaofei2001128 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档