![](https://csdnimg.cn/release/download_crawler_static/4350768/bg1.jpg)
1
数值分析第一题实验报告
一 算法设计
1. 题中给出的矩阵 A 进行压缩存储,将 A[i][j]映射为 B[i-j+s][j],其中 s 为上半带宽,这
样减少内存的占用。而在存储矩阵 A 时只存储 A 的对角线元素将 b,c 都设置为全局变量,进
一步减少存储量。
2. 由题意λ1<λ2<……<λ501, λ1 与λ501 中必有一个是按模最大的,因此可以通过幂法
求出记为λm,如果λm>0,则求出为λ501,利用原点平移 B=A-λmI,则次数λ1-λm 为按模
最大特征值可以再次使用幂法求出,记为λt,则λ1=λt+λm。如果λm<0 类似。λs 是按模
最小的,因此可以通过反幂法求出。
3. 反幂法中使用 doolittle 分解法,分解成 LU,便于每次求解 u=Ay 只需进行两次迭代过程
就可以求出 u,y,减少计算量。顺便可以求出 A 的行列式,|A|=|LU|=|L|*|U|,而|L|=1,
|U|=U 的对角线元素的乘积。因此在进行 doolittle 分解时可以求出 A 的行列式。
4. 计算 A 与μk=λ1+k(λ501-λ1)/40,(k=1,2,…,39)最接近的特征值通过将 A 每次进行原
点平移 B=A-μkI,则通过反幂法求出 B 的按模最小特征值加上μk 即得到所求 λik。
5. A 的(谱范数)条件数 cond(A)2,因为 cond(A)2=||A||*||A-1||,所以只需求出 A 的按模
最大特征值和 A-1按模最大特征值。而 A-1按模最大特征值即为 A 按模最小的特征值,所
以 cond(A)2=λm*λs。
二 源程序
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define N 501
#define eps 1e-10
double b=0.16,c=-0.064;
int Max(int value1,int value2)
{
return((value1>value2)?value1:value2);
}
int Min(int value1,int value2)
{
return ((value1<value2)?value1:value2);
}
double multiply(double x[N],double y[N]){ //计算向量内积
int i;
double temp=0.0;
for(i=0;i<N;i++)