资源描述:
《北航数值分析计算实习第一题打印》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《数值分析》计算实习第7页北航数值分析作业第一题:一、算法的设计:1、A为五对角带状矩阵,其中有较多的零元素,故将A中非零元素压缩存储在C中,C为5行501列矩阵,其元素与A中元素一一对应,对应关系为:;2、求A的最大最小特征值,可以对A用幂法求出模最大的特征值λm1,然后以λm1为平移量对A进行平移后再用幂法求出λm,令λm2=λm1+λm,可以得知λm1,λm2为A的最大最小特征值,从而可得到A的最大特征值λ501,最小特征值λ1;3、因为在用反幂法的过程中要解方程组,还要求A的行列式,所以对A进行LU分解,并将分解后的元素也存在C中,以便在求A的模
2、最小的特征值和行列式的时候调用;4、用反幂法求出A的模最小的特征值λs;5、求与数μk最接近的特征值:依次k=1到39执行:对A按μk进行平移得B=A-μkI,并将B存在C中,再对B用反幂法求出B的特征值λ,则离μk最近的特征值为λik=λ+μk;5、A为实对称矩阵,所以A的条件数,其中λm1,λs分别为A的模最大和模最小的特征值;6、调用A的LU分解程序,则分解后的U矩阵的对角线元素相乘即为矩阵的行列式值。此算法的编译环境为MicrosoftVisualStudio需要编写的函数有矩阵压缩函数,矩阵LU分解函数,幂法函数,反幂法函数,最值函数,主函数。
3、二、全部源程序源程序如下:#include#include#include//定义A中元素doubleC[5][501];doublea[501];doubleb;doublec;//声明所有函数《数值分析》计算实习第7页voidYaSuoJZ(doubleC[5][501],doublea[501],doubleb,doublec);//压缩矩阵函数doublemifa(doubleC[5][501]);//幂法函数voiddaizhuangLU(doubleA[5][501]);//带状矩阵的LU分
4、解doublefanmifa(doubleC[5][501]);//反幂法函数//最值函数intmax2(intx,inty);intmax3(intx,inty,intz);intmin(intx,inty);//最值函数intmax2(intx,inty)//求2个数的最大值{intz;z=x>y?x:y;return(z);}intmax3(intx,inty,intz)//求3个数的最大值{intw;w=z>max2(x,y)?z:max2(x,y);return(w);}intmin(intx,inty)//求2个数的最小值{intz;z=x>
5、y?y:x;return(z);}//将矩阵A压缩存储在矩阵C中voidYaSuoJZ(doubleC[5][501],doublea[501],doubleb,doublec){inti;for(i=0;i<=500;i++){if(i>=2)C[0][i]=c;elseC[0][i]=0;if(i>=1)C[1][i]=b;elseC[1][i]=0;if(i<=499)C[3][i]=b;elseC[3][i]=0;if(i<=498)C[4][i]=c;elseC[4][i]=0;C[2][i]=a[i];}}《数值分析》计算实习第7页//幂法函
6、数:用幂法求矩阵模最大的特征值doublemifa(doubleC[5][501]){doubleu[501];doubley[501]={0},η=0;doubleβ,βk=0;doubleε=1;//ε为精度doublesumu=0,sumAY=0;inti,j,k=1;//k为循环次数for(i=0;i<=500;i++)//取任一非零向量u0u[i]=1.0;while(ε>=1e-12){for(i=0;i<=500;i++)//求u(k-1)的2范数ηsumu=sumu+u[i]*u[i];η=sqrt(sumu);sumu=0;for(i=
7、0;i<=500;i++)//求y(k-1)y[i]=u[i]/η;for(i=0;i<=500;i++)//求u(k)的各分量u[i]{for(j=max2(0,i-2);j<=min(i+2,500);j++)sumAY=sumAY+C[i-j+2][j]*y[j];u[i]=sumAY;sumAY=0;}//求幂法中的βkβ=βk;//将β(k-1)放在β中βk=0;for(i=0;i<=500;i++)//求βkβk=βk+y[i]*u[i];if(k>=2)ε=fabs(βk-β)/fabs(βk);k++;}return(βk);}//带状矩
8、阵的LU分解voiddaizhuangLU(doubleA[5][501]){i