c语言编写,计算一矩阵的特征值,按从大到小排序输出。

Python012

c语言编写,计算一矩阵的特征值,按从大到小排序输出。,第1张

#include<stdio.h>

int main()

{

int a[3][5],i,j,k,temp

//通过读取给3×5的数组赋值

for(i=0i<3i++)

for(j=0j<5j++)

scanf("%d",&a[i][j])

//一行一行的判断

for(k=0k<3k++)

{

//标准冒泡法

for (j = 0j <9j++)

{

for (i = 0i <9 - ji++)

{

if (a[k][i] <a[k][i + 1])

{

temp = a[k][i]

a[k][i] = a[k][i + 1]

a[k][i + 1] = temp

}

}

}

for(i=0i<3i++)

{

for(j=0j<5j++)

printf("%d\t",a[i][j])

printf("\n")

}

}

方法1:推导出det(aA-I)=0的解析式,这应该是个四次方程,因为只有4阶,不是很困难的,写出后就可以用方程求根的方法求解(如newton迭代法)方法2:如果你是对角优势阵,也就是对角线上的值的绝对值,比同行所有其他元素的绝对值的和还大,可以通过局部旋转的方法把矩阵“能量”集中到对角线这个是方法,你可以自己去写一下试试~