📄 main.c
字号:
#include<stdio.h>
#include <math.h>
#include <malloc.h>
#include "lib\elmhes.h"
#include "lib\hqr.h"
#define N 3
void main()
{
double b[N+1][N+1]={{0,0,0,0},{0,3,1,-1},{0,2,2,-1},{0,2,2,0}};/*这里矩阵无需对称,若对称,则特征值均为实数*/
double **a;
double wr[N+1],wi[N+1];/*特征值的实部和虚部*/
int i,j;
a=(double **) malloc((unsigned) (N+1)*sizeof(double*));
for(i=0;i<=N;i++)
a[i]=b[i]; /*赋值完毕*/
printf("Original A:\n");
for(i=1;i<=N;i++)
{
for(j=1;j<=N;j++)
printf("%f ",a[i][j]);
printf("\n");
}
elmhes(a,N); /*变换至上Hessenburg型,特征值不变*/
printf("After Elmhes:\n");
for(i=1;i<=N;i++)
for(j=1;j<(i-1);j++)
a[i][j]=0;
for(i=1;i<=N;i++)
{
for(j=1;j<=N;j++)
printf("%f ",a[i][j]);
printf("\n");
}
hqr(a,N,wr,wi);/*用QR方法求上Hessenburg型矩阵的特征值 */
printf("Eigenvalue:\n");
for(i=1;i<=N;i++)
printf("%f + %f * i\n",wr[i],wi[i]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -