北航数值分析大作业第一题MATLAB.docx_第1页
北航数值分析大作业第一题MATLAB.docx_第2页
北航数值分析大作业第一题MATLAB.docx_第3页
北航数值分析大作业第一题MATLAB.docx_第4页
北航数值分析大作业第一题MATLAB.docx_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

数值分析大作业第一题仅供参考!一、 算法设计:1、,和的求法:1)首先根据幂法求出按模最大,即绝对值最大的特征值,然后根据所求的值对原矩阵进行平移,同理根据幂法求出另一特征值,比较两个值的大小,数值小的为所求,大的为。2)使用反幂法求。 2、与最接近的特征值的求法:根据(k=1,2,39)的值进行原点平移后使用反幂法依次求出与数最接近的特征值。3、和detA的求法:1),其中1和分别是有幂法和反幂法求出的按模最大和最小的特征值。2)对矩阵A进行LU分解(A=L*U),其中L为单位下三角矩阵,U为上三角矩阵,后者的主对角线元素之积即为det A。二、 源程序format long em=501; %矩阵的维数b=0.16;c=-0.064;er=1e-12; %给定误差或者精度A=zeros(m,m); %生成501维全零方阵I=eye(m); %定义501维单位方阵for q=1:m; %主对角线的赋值 A(q,q)=(1.64-0.024*q)*sin(0.2*q)-0.64*exp(0.1/q);endfor j=1:m-1; %副对角线的赋值 A(j,j+1)=b; A(j+1,j)=A(j,j+1);endfor k=1:m-2; %次副对角线赋值 A(k,k+2)=c; A(k+2,k)=A(k,k+2);end%矩阵已定义好detA=det(A); %计算矩阵A的值作为参考%幂法求解绝对值最大的特征值u2=1:m; %m维行向量u1=u2; %u1为列向量Lambda=1; %Lambda迭代初值preLambda=0; %Lambda迭代初值kk=0;while abs(Lambda-preLambda)=er; %迭代终止条件,每两次迭代的特征值之差小于给定误差 preLambda=Lambda; kk=kk+1; n1=sqrt(u1*u1); %u1的二范数 y1=u1/n1; %将u1归一化 u1=A*y1; %幂法做迭代 Lambda=y1*u1; %特征值,终止条件 title(求解Lambda1的误差收敛图); ylabel(误差); xlabel(迭代次数) plot(kk,abs(Lambda-preLambda),- * b); semilogy(kk,abs(Lambda-preLambda); hold on;end%Lambda1为绝对值最大的特征值Lambda11=Lambda;K11=kk;%求解最大的特征值 d=abs(Lambda11);B=A+d*I; %对A做平移u2=1:m;u1=u2;Lambda=1; %Lambda迭代初值preLambda=0; %Lambda迭代初值kk=0;while abs(Lambda-preLambda)=er; %迭代循环终止条件,每两次迭代的特征值之差小于给定误差 preLambda=Lambda; kk=kk+1; %累计迭代次数 n1=sqrt(u1*u1); %u1的二范数 y1=u1/n1; %归一化 u1=B*y1; %幂法做迭代 Lambda=y1*u1; %求解迭代后的特征值 title(求解Lambda501的误差收敛图); ylabel(误差); xlabel(迭代次数) plot(kk,abs(Lambda-preLambda),- * b); semilogy(kk,abs(Lambda-preLambda); hold on;endLambda22=Lambda-d; %Lambda501为最大的特征值K22=kk;%比较判断Lambda1与Lambda501,其中Lambda501大于Lambda1if Lambda11=er; %迭代循环终止条件,每两次迭代的特征值之差小于给定误差 preLambda=Lambda; kk=kk+1; n1=sqrt(u1*u1); %求向量u1的二范数 y1=u1/n1; %对u1归一化 u1=Ay1; %反幂法迭代Au(k)=y(k-1) Lambda=y1*u1; %计算特征值 title(计算Lambdas的误差收敛图); %图名 ylabel(误差); %坐标轴名 xlabel(迭代次数) %坐标轴名 plot(kk,abs(Lambda-preLambda),- * b); %以迭代次数为横坐标,误差为纵坐标绘图 semilogy(kk,abs(Lambda-preLambda); %纵坐标(误差)用对数比例坐标轴 hold on; %迭加绘图endLambdas=1/Lambda %Lambdas为绝对值最小的特征值kk%第二问:求解与给定uf(i)最接近的特征值uf=1:39; %uf(i)接用来储存与ui接近的特征值ui=1:39;for k=1:39; uk=Lambda1+k*(Lambda501-Lambda1)/40); ui(k)=uk; C=A-uk*I; u2=1:m; u1=u2; Lambda=1; %Lambda迭代初值 preLambda=0; %Lambda迭代初值 while abs(Lambda-preLambda)=er; %迭代循环终止条件 preLambda=Lambda; n1=sqrt(u1*u1); y1=u1/n1; u1=Cy1; Lambda=y1*u1; end uf(k)=1/Lambda+uk; %对uf(k)赋值enduiuf %显示uf%第三问 求条件数=模最大的特征值/模最小的特征值condA2=abs(Lambda1/Lambdas)%Doolittle分解法A=LUL=eye(m); %定义L为单位阵U=zeros(m,m); %定义U为全零阵for k=1:m; %做K次分解 for ii=k:m; %U矩阵的第K行赋值 U(k,ii)=A(k,ii); %对U(k,ii)赋初值 for i1=1:k-1; %求解U矩阵K行的每个元素 U(k,ii)=U(k,ii)-L(k,i1)*U(i1,ii); A(k,ii)=A(k,ii)-A(k,i1)*A(i1,ii); end end for jj=k+1:m; %L矩阵的第K列赋值 if k=m; %Km else %KA1A5011;所以用幂法和反幂法求解矩阵特征值时,误差收敛速度主要取决于所求特征值与其相邻特征值之比的大小,相差越大,收敛速度越快。附:s附近的特征值:-6.374983628561743-003-5.557910794213269e-0031.030967546258130e-002As=1.147010785995196e+0001附近的特征值:-1.070011361515021e+001-1.030713506176649e+001-1.018293403314615e+001A1=1.038126846211751e+000501附近的特征值:9.254200344575050e+0009.497891230382715e+0009.724634099672162e+000A501=1.023872969671849e+000 在求解1与s时,起初误差会有增大的现象,主要是因为迭代选取的初始向量u1为值均为1的任意向量,最初的迭代中可能会出现前后得到的相差较大,有误差增大的现象,但这不影响整体收敛性,i最终还是会收敛于所求的特征值。误差收敛速度主要取决于所求特征值与其相邻特征值之比的大小,与初始迭代向量无关。考虑初始向量对迭代误差收敛的影响:增加初始迭代向量中零的个数;当u1=(1,0,1,0,1,0,.,1,0,1)时,迭代次数分别为:Lambdas = -5.

温馨提示

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

最新文档

评论

0/150

提交评论