《数值分析》计算实习作业一》
北航第一题的矩阵
其中矩阵的特征值满足
试求
和的值
的与数最接近的特征值
3. 的(谱范数)条件数和行列式
要求
全部源程序(详细注释)。变量为double,精度,输出为e型12位有效数字
特征值和以及的值
讨论迭代初始向量的选取对计算结果的影响,并说明原因
解答:
对于满足,所以是按模最小的特征值,直接运用反幂法可求得。
对于,一个是最大的特征值,一个是最小的特征值,不能确定两者的绝对值是否相等,因此必须首先假设,然后运用幂法,看能否求得一个特征值,如果可以求得一个,证明是,较小的特征值就是。如果在假设的前提下,无法运用幂法求得按模最大的特征值,即此时A不收敛,则需要将A进行带原点平移的幂法,平移量可以选取1,再重复上述步骤即可求得两个特征值。
源程序(见附录A)
由于A一律采用带状存储,因此关于A的函数,都是针对带状存储的矩阵的运算。
的与数最接近的特征值
-1.01829340331e+001 -9.58570742507e+000 -9+000
-8.65228400790e+000 -8.09348380868e+000 -7.65940540769e+000
-7.11968464869e+000 -6.61176433940e+000 -6.06610322660e+000
-5.58510105263e+000 -5.11408352981e+000 -4.57887217687e+000
-4.09647092626e+000 -3.55421121575e+000 -3.04109001813e+000
-2.53397031113e+000 -2.00323076956e+000 -1.50355761123e+000
-9.93558606008e-001 -4.87042673885e-001 2.23173624957e-002
5.32417474207e-001 1.05289896269e+000 1.58944588188e+000
2.06033046027e+000 2.55807559707e+000 3.08024050931e+000
3.61362086769e+000 4.09137851045e+000 4.60303537828e+000
5+000 5.59490634808e+000 6.08093385703e+000
6.68035409211e+000 7.29387744813e+000 7.71711171424e+000
8.22522001405e+000 8.64866606519e+000 9.25420034458e+000
讨论初始向量对计算结果的影响
如果初始迭代向量选取使得其在特征值上的分量为零,但是由于计算中存在误差,迭代次数充分大后理论上使得在特征值上的分量不为零于是以为新的初始迭代向量仍可以得到结果。
当增加迭代初始向量中非零元素的个数时,计算出的结果会越接近准确值。实际上,当初始向量中的0元素较多时,可能=0的情况较为普遍,许多a都有可能等于0,此时计算出的结果便与最大特征值差距较大。这是因为实际中由于精度的要求和算法允许的计算量无法做到迭代次数充分大,于是在实际选取中初始迭代向量最好使得其在按模最大特征值的分量上不为零。
附录A
#include /****编译环境gcc或VS2012均可通过****/
#include
#include
#include
double mifa(double **a,int r,int s,int n,double *y);/*幂法函数*/
double fanmifa(double **a,int r,int s,int n,double *y);/*反幂法函数*/
int LU(double **A,double *B,int r,int s,int n,double *x);/*LU分解法*/
int det(double **A,int r,int s,int n,double *pdet);/*求矩阵行列式的值函数*/
double **dmatrix(int m,int n);/*生成坐标从1开始的矩阵*/
void free_dmatrix(double **a)