欢迎来到天天文库
浏览记录
ID:13813771
大小:168.50 KB
页数:11页
时间:2018-07-24
《北航数值分析第一次大作业》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一、算法的设计方案:(一)各所求值得计算方法1、最大特征值λ501,最小特征值λ1,按模最小特征值λs的计算方法首先使用一次幂法运算可以得到矩阵的按模最大的特征值λ,λ必为矩阵A的最大或最小特征值,先不做判断。对原矩阵A进行一次移项,即(A-λI),在进行一次幂法运算,可以得到另一个按模最大特征值λ0。比较λ和λ0的大小,较大的即为λ501,较小的即为λ1。对矩阵A进行一次反幂法运算,即可得到按模最小特征值λs。2、A与μk值最接近的特征值λik的计算方法首先计算出k所对应的μk值,对原矩阵A进行一次移项,即(A-μkI),得到一个新的矩阵,对新矩阵进行一次反幂法运算,即可得到一个按模最
2、小特征值λi。则原矩阵A与μk值最接近的特征值λik=λi+μk。3、A的(谱范数)条件数cond(A)2的计算方法其中矩阵A的按模最大和按模最小特征值。(二)程序编写思路。由于算法要求A的零元素不存储,矩阵A本身为带状矩阵,所以本题的赋值,LU分解,反幂法运算过程中,均应采用Doolittle分解法求解带状线性方程组的算法思路。幂法、反幂法和LU分解均是多次使用,应编写子程序进行反复调用。二、源程序:#include#include#include#include#include#include
3、/*头文件*//*定义全局变量*/#defineN502/*取N为502,可实现从1到501的存储,省去角标变换的麻烦*/#defineepsilon1.0e-12/*定义精度*/#definer2/*r,s为带状矩阵的半带宽,本题所给矩阵二者都是2*/#defines2doublec[6][N];/*定义矩阵存储压缩后的带状矩阵*/doublefuzhi();/*赋值函数*/voidLUfenjie();/*LU分解程序*/intmax(inta,intb);/*求两个数字中较大值*/intmin(inta,intb);/*求两个数字中较小值*/doublemifa(
4、);/*幂法计算程序*/doublefanmifa();/*反幂法计算程序*/doublefuzhi()/*赋值程序,按行赋值,行从1到5,列从1到501,存储空间的第一行第一列不使用,角标可以与矩阵一一对应,方便书写程序*/{inti,j;i=1;for(j=3;j5、.16;}i=5;for(j=1;jb)?a:b);}intmin(inta,intb){return((a6、mp=temp+c[k-t+s+1][t]*c[t-j+s+1][j];}c[k-j+s+1][j]=c[k-j+s+1][j]-temp;}for(i=k+1;i<=min(k+r,N-1);i++){temp=0;for(t=max(1,max(i-r,k-s));t<=(k-1);t++){temp=temp+c[i-t+s+1][t]*c[t-k+s+1][k];}c[i-k+s+1][k]=(c[i-k+s+1][k]-temp)/c[s+1][k];}}}doublemifa()/*幂法计算程序*/{doubleu0[N],u1[N];doubletemp,Lu,beta=07、,beta0;inti,j;for(i=1;i
5、.16;}i=5;for(j=1;jb)?a:b);}intmin(inta,intb){return((a6、mp=temp+c[k-t+s+1][t]*c[t-j+s+1][j];}c[k-j+s+1][j]=c[k-j+s+1][j]-temp;}for(i=k+1;i<=min(k+r,N-1);i++){temp=0;for(t=max(1,max(i-r,k-s));t<=(k-1);t++){temp=temp+c[i-t+s+1][t]*c[t-k+s+1][k];}c[i-k+s+1][k]=(c[i-k+s+1][k]-temp)/c[s+1][k];}}}doublemifa()/*幂法计算程序*/{doubleu0[N],u1[N];doubletemp,Lu,beta=07、,beta0;inti,j;for(i=1;i
6、mp=temp+c[k-t+s+1][t]*c[t-j+s+1][j];}c[k-j+s+1][j]=c[k-j+s+1][j]-temp;}for(i=k+1;i<=min(k+r,N-1);i++){temp=0;for(t=max(1,max(i-r,k-s));t<=(k-1);t++){temp=temp+c[i-t+s+1][t]*c[t-k+s+1][k];}c[i-k+s+1][k]=(c[i-k+s+1][k]-temp)/c[s+1][k];}}}doublemifa()/*幂法计算程序*/{doubleu0[N],u1[N];doubletemp,Lu,beta=0
7、,beta0;inti,j;for(i=1;i
此文档下载收益归作者所有