资源描述:
《北航数值分析大作业一》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数值分析第一次作业设有的实对称矩阵A,其中,。矩阵A的特征值为,并且有1.求,和的值。2.求A的与数最接近的特征值。3.求A的(谱范数)条件数和行列式detA。一方案设计1求,和的值。是矩阵A最小的特征值,为矩阵最大的特征值。对矩阵A使用幂法可以求出、其中的一个,但不确定是哪一个,设求出的值为。然后再构造矩阵B=A-I,对矩阵B使用幂法求出其按模最大的特征值,可得、中另外一个值,为+。比较和+,其中较小者为为,较大者为。为按模最小特征值,,直接利用反幂法可以求得。2求A的与数最接近的特征值。题目可看成求以为偏移量后,按模最小的特征值。即以为偏移量做位移,
2、使用反幂法求出按模最小特征值后,加上,即为所求。3求A的(谱范数)条件数和行列式detA。矩阵A为非奇异对称矩阵,可知,(1-1)其中为按模最大特征值,为按模最小特征值。detA可由LU分解得到。因LU均为三角阵,则其主对角线乘积即为A的行列式。二算法实现1幂法使用如下迭代格式:(2-1)终止迭代的控制理论使用,实际使用(2-2)由于不保存A矩阵中的零元素,只保存主对角元素a[501]及b,c值。则上式中简化为:(2-3)2反幂法使用如下迭代格式:(2-4)其中,解方程求出。对于的求解算法我采用了LU分解法和JACOBI迭代法两种。(1)LU分解由于A为
3、5对角矩阵,选择追赶法求取LU分解。求解过程如下:(2-5)由上式推出分解公式如下:(2-6)推导出回代求解公式如下:(2-7)(2-8)(2)JACOBI迭代法迭代公式如下所示:u1k=-bu2k-1+cu3k-1+y1k-1/a[1][1]u2k=[-(bu1k-1+bu3k-1cu4k-1)+y2k-1]/a[2][2]u500k=-bu498k-1+bu499k-1+cu501k-1+y500k-1/a[500][500]u501k=-cu499k-1+bu500k-1+y501k-1/a[501][501]uik=-cui-2k-1+bui-1
4、k-1+bui+1k-1+cui+2k-1+yik-1/a[i][i](2-9)3及A行列式求解(2-10)由式(2-5)可得:(2-11)三源程序#include#includedoublemifa(doublea[501]);//幂法doublefanmifa1(doublea[501]);//反幂法(三角分解法求解U(k))doubledet(doublea[501]);//求detdoublefanmifa(doublea[501]);//反幂法(jacobi求解)doubleep=1e-12,b=0.16,c=
5、-0.064;intj=0;intmain(){inti,k;doubleA[501],B[501],beta_1,beta_501,beta_s,beta_k,beta_m;doublemu;for(i=0;i<501;i++)A[i]=(1.64-0.024*(i+1))*sin(0.2*(i+1))-0.64*exp(0.1/(i+1));beta_1=mifa(A);for(i=0;i<501;i++)B[i]=A[i]-beta_1;beta_m=mifa(B);beta_m=beta_m+beta_1;if(beta_m>beta_1){be
6、ta_1=beta_1;beta_501=beta_m;}else{beta_1=beta_m;beta_501=beta_1;}printf("λ1t=%.12et",beta_1);for(i=0;i<501;i++)B[i]=A[i]-beta_1;beta_501=mifa(B)+beta_1;printf("λ501=t=%.12et",beta_501);beta_s=fanmifa(A);printf("λst=%.12et迭代次数:%d",beta_s,j);for(k=1;k<=39;k++){mu=beta_1
7、+k*(beta_501-beta_1)/40;for(i=0;i<501;i++)B[i]=A[i]-mu;beta_k=fanmifa(B)+mu;printf("λi%dt=%.12et迭代次数:%d",k,beta_k,j);}printf("cond(A)2=%.12e",beta_1/beta_s);printf("detAt=%.12e",det(A));return0;}doublemifa(doublea[501])//幂法{inti=0,r;doubleb=0.16,c=-0.064;doubleu[501],y[5
8、01];doubles,lastbeta,beta,sq;for(i=0;i<5