北航研究生数值分析作业第二题

发布 2022-09-29 08:42:28 阅读 3888

一、算法设计方案。

1. 按照题目给出的矩阵定义对矩阵a赋初值:对应的函数为a_init();

2. 对矩阵a进行householder变换,使其拟上三角化:对应的函数为householder();

3. 输出拟上三角化后的a:对应的函数为aout(int);

4. 对拟上三角化后的矩阵a使用带双步位移的qr分解法逐次迭代(最大迭代次数l=500),逐个求出其特征值,对应的函数为eigen_a();中间包含两个子程序:calc_mk()和qr_analyze(),分别用来计算矩阵mk和对mk进行qr分解并得到ak+1;

5. 输出qr分解过程完毕后的a及求得的特征向量:对应的函数为aout()和eigenvalout();

6. 对于在第三步中求得的每个实特征值,使用带原点平移的反幂法求出其对应的特征向量,对应的函数为eigenvec();其中包含一个解方程(a-μi)=yk-1的程序段。这部分也用迭代完成,仍然将最大迭代次数l设置为500;

7. 输出矩阵a的特征向量,结束计算:对应的函数为eigenvecout()。

算法编译环境:vlsual c++6.0

二、源程序如下:

#include <>

#include <>

#define n 10矩阵阶数;

#define epsl 1.0e-12 //迭代的精度水平;

#define l 500迭代最大次数;

#define outputmode 1 //输出格式:0--输出至屏幕,1--输出至文件

double a[n][n], a2[n][n], eigen[n][n声明矩阵a;

double sa_re[n] =sa_im[n] =定义反幂法中使用的初始向量u;

/主程序开始;

int main()

file *p;

void a_init();

void householder();

void equal_zero(double matrix[n][n], int);

void eigenvec();

int eigen_a();

void aout(int);

void eigenvalout(int);

void eigenvecout(int);

if(outputmode)

a_init对矩阵a进行初始化;

householder对矩阵a进行拟上三角化;

equal_zero(a, n对矩阵a的元素进行归零处理,消除误差;

aout(outputmode输出a;

if(eigen_a())printf("迭代超过最大次数,特征值求解结果可能不正确。");求矩阵a的特征值;

equal_zero(a, n对矩阵a的元素进行归零处理,消除误差;

aout(outputmode输出a;

eigenvalout(outputmode); 输出矩阵的特征值;

eigenvec求矩阵a的特征向量;

eigenvecout(outputmode); 输出矩阵a的特征向量;

getchar();

void a_init()

int i,j;

for(i = 1; i <=n; i++)

for(i = 1; i <=n; i++)

a2[i - 1][i - 1] =a[i - 1][i - 1] =cos(i + 1.2 * i) *1.5这里使用if语句反而更慢,所以赋值赋了两次。

void householder() 对矩阵进行拟上三角化;

int r,i,j;

double tmp_ir, tmp_dr, tmp_pr, tmp_qr, tmp_tr, dr, cr, hr, tr;

double ur[n] =pr[n] =qr[n] =wr[n] =

int sgn2(double);

for(r = 0; r < n-2; r++)

int eigen_a() 计算a的特征值;

北航研究生数值分析B作业

设有的矩阵。其中矩阵的特征值满足 试求 1.的值。2.的与数最接近的特征值。3.的 谱范数 条件数和行列式。1.算法的设计方案 本题的核心算法是幂法 带原点平移的幂法 反幂法和lu分解法,要点在于选择算法时,应使的所有零元素都不存储。故算法设计的思路如下,第一步,对使用幂法 powermethod ...

北航研究生数值分析A作业三

数值分析 a 计算实习题目三。一 题目。关于x,y,t,u,v,w的下列方程组。0.5cost u v w x 2.67 t 0.5sinu v w y 1.07 0.5t u cosv w x 3.74 t 0.5u v sinw y 0.79 以及关于z,t,u的下列二维数表。确定了一个二元函数...

研究生数值分析作业题

11级研究生数值分析习题。第一章误差及相关问题。1.设的相对误差为,求的绝对误差。2.要使的相对误差不超过0.1 应取几位有效数字?解 知识点 有效数字和相对误差间的关系。因为的首位数字为4,设近视数有n位有效数字,所以有 令 解得 所以有4位有效数字。3.用x近似即最大为多少时,该近似计算的截断误...