(1.9)--2023数值实验——练习9.ppt

(1.9)--2023数值实验——练习9.ppt

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

clear,clcA=[3,2,1;2,5,-2;1,-1,-4];b=[5;16;7];n=length(b);D=diag(diag(A));L=-tril(A,-1);U=-triu(A,1);X0=zeros(n,1);X=D\((L+U)*X0+b);k=1;whilenorm(X-X0)10^(-12)k10^3k=k+1;X0=X;X=D\((L+U)*X0+b);endX,k一、线性方程组的定常(古典)迭代法第七章:线性与非线性方程组的迭代法1、Jacobi迭代法

一、线性方程组的定常(古典)迭代法clear,clcA=[3,2,1;2,5,-2;1,-1,-4];b=[5;16;7];n=length(b);D=diag(diag(A));L=-tril(A,-1);U=-triu(A,1);X0=zeros(n,1);X=(D-L)\(U*X0+b);k=1;whilenorm(X-X0)10^(-12)k10^3k=k+1;X0=X;X=(D-L)\(U*X0+b);endX,k2、Gauss-Seidel迭代法

n=40;A=rand(n);A=A+diag(sum(abs(A))+1);b=A*[1:n];D=diag(diag(A));L=-tril(A,-1);U=-triu(A,1);x=zeros(n,1);k=0;w=0.9;whilenorm(b-A*x)/norm(b)10^(-7)k1000k=k+1;x=(D-w*L)\(((1-w)*D+w*U)*x+w*b);endx=x,k=k3、SOR(超松弛)迭代法一、线性方程组的定常(古典)迭代法

?最速下降法的算法选取初值fork=0,1,2,…如果,停止否则,进行下一次循环缺陷:收敛速度慢clear,clcn=100;A=hilb(n);b=sum(A);x=zeros(n,1);k=0;r=b-A*x;whilenorm(r)/norm(b)10^(-6)k10000alpha=(r*r)/(r*A*r);x=x+alpha*r;k=k+1;r=b-A*x;endx=x,k=k二、线性方程组的非定常(Krylov子空间)迭代法1、最速下降法

(2)确定下一个搜索方向 或:二、线性方程组的非定常(Krylov子空间)迭代法2、共轭梯度法(1)选取初始向量,,

由极值的必要条件得

即:记

取下一个搜索方向为沿该方向进行一维搜索得步长为下面以为新的迭代值,重复上述过程即可。

一般地,设已经得到,则第k+1步迭代的计算公式为终止条件:

同时注意到

?共轭梯度法的算法选取初值Fork=0,1,2,…,n计算计算如果,停止否则,计算进行下一次迭代

2、共轭梯度法whilerho10^(-24)k1000k=k+1;ifk==1p=r;elsebeta=rho/rho1;p=r+beta*p;endw=A*p;alpha=rho/(p*w);x=x+alpha*p;r=r-alpha*w;rho1=rho;rho=r*r;endx,kn=2000;A=hilb(n);b=A*ones(n,1);x=zeros(n,1);r=b-A*x;rho=r*r;k=0;

解:易验证系数矩阵是对称正定的.例:用CG迭代法求解下列方程组:3xStep1计算

Step2计算迭代结束

Newton方法X=[1,1];k=0;whilenorm(F1(X))0.01k1000k=k+1,X=X-dfun(X)\F1(X)endX,kfunctiony=F1(x)y(1,1)=3*x(1,1).^2-x(2,1).^2;y(2,1)=3*x(1,1).*x(2,1).^2-x(1,1).^3-1;functiony=dfun(x)y=[6*x(1,1),-2*x(2,1);3*x(2,1).^2-3*x(1,1).^2,6*x(1,1).*x(2,1)];

*Broyden方法x0=[0;0];y0=newfun(x0);A=newjacobi(x0);x1=x0-A\y0;y1=newfun(x1);k=1;formatlongwhilenorm(y1,1)10^(-7)k10000k=k+1;y=x1-x0

您可能关注的文档

文档评论(0)

158****6446 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档