方法2:如果你是对角优势阵,也就是对角线上的值的绝对值,比同行所有其他元素的绝对值的和还大,可以通过局部旋转的方法把矩阵“能量”集中到对角线
这个是方法,你可以自己去写一下试试~
阶数通过修改 #define N 3#include <math.h>
#include <alloc.h>
#include "c\elmhes.c "
#include "c\hqr.c "
#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=0i <=Ni++)
a[i]=b[i] /*赋值完毕*/
printf( "Original A:\n ")
for(i=1i <=Ni++)
{
for(j=1j <=Nj++)
printf( "%f ",a[i][j])
printf( "\n ")
}
elmhes(a,N) /*变换至上Hessenburg型,特征值不变*/
printf( "After Elmhes:\n ")
for(i=1i <=Ni++)
for(j=1j <(i-1)j++)
a[i][j]=0
for(i=1i <=Ni++)
{
for(j=1j <=Nj++)
printf( "%f ",a[i][j])
printf( "\n ")
}
hqr(a,N,wr,wi)/*用QR方法求上Hessenburg型矩阵的特征值*/
printf( "Eigenvalue:\n ")
for(i=1i <=Ni++)
printf( "%f + %f * i\n ",wr[i],wi[i])
#include <stdio.h>void main(){
int i,j,k=1,n,s=0
scanf("%d",&n)
for(i=1ni++){
j=n%10n/=10
if(j%2&&i%2||j%2==0&&i%2==0)
s+=kk*=2
}
printf("%d",s)
}
//运行示例: