📄 fanmi.cpp
字号:
//二范数幂法
#include<iostream.h>
#include<math.h>
#include<stdio.h>
#include <iomanip.h>
void main()
{
int i,j,k=0;
double b1=0,b2=0,sum2,sum3,err,a[3][3]={{6,-12,6},{-21,-3,24},{-12,-12,51}},u[3]={1,0,0},y[3];
while (err>0.0001||k==0)
{sum2=0;
b2=0;
for (i=0;i<=2;i++)
{
sum2=sum2+u[i]*u[i]; //u(k-1)的二范数
}
sum2=sqrt(sum2);
for (i=0;i<=2;i++) //u(k-1)的单位化矩阵
{y[i]=u[i]/sum2;
}
for (i=0;i<=2;i++)
{sum3=0;
for (j=0;j<=2;j++)
{sum3=sum3+a[i][j]*y[j]; //u(k)
}
u[i]=sum3;
}
for (i=0;i<=2;i++)
{b2=b2+y[i]*u[i];
}
err=fabs((b2-b1)/b2); //呗他
b1=b2;
k=k+1;
cout<<"u("<<k<<"):";
for (i=0;i<=2;i++)
cout<<setprecision(16)<<u[i]<<" ";
cout<<endl<<"y("<<k-1<<"):";
for (i=0;i<=2;i++)
cout<<setprecision(16)<<y[i]<<" ";
cout<<endl;
cout<<"b2:"<<b2<<endl;
}
getchar();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -