c语言编程计算任意矩阵条件数,北航数值分析-实习作业1(C语言详细注释).doc

《数值分析》计算实习作业一》

北航第一题的矩阵

其中矩阵的特征值满足

试求

和的值

的与数最接近的特征值

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值