📄 jacobi
字号:
Jacobi迭代2007-07-16 18:35#include<iostream>
#include<math.h>
using namespace std;
#define n 4
#define err 0.01
#define N 10
void main()
{
int i,j,k;
float a[n][n],b[n],x[n],y[n],tempsum=0,sum=0;
cout<<"Please input the matrix of coefficients:"<<"\n";
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
cout<<"Please input the right part:"<<"\n";
for(i=0;i<n;i++)
cin>>b[i];
cout<<"Please input the initializing vector x:\n";
for(i=0;i<n;i++)
{
cout<<"x["<<i+1<<"]"<<"=";
cin>>x[i];
}
k=1; //k要放在while之外
while(1)
{
for(i=0;i<n;i++)
{
for(j=0;j<n,j!=i;j++)
tempsum+=a[i][j]*x[j];
y[i]=(b[i]-tempsum)/a[i][i];
sum+=(y[i]-x[i])*(y[i]-x[i]);
}
sum=sqrt(sum);
if(sum<err) {cout<<"The result is:\n"; for(i=0;i<n;i++) cout<<"x["<<i+1<<"]="<<x[i]<<"\n";break;}
else
{
if(k<N) {k=k+1;for(i=0;i<n;i++) x[i]=y[i];tempsum=0;sum=0;} //注意tempsum和sum都要重新置0
else {cout<<"Error Warning,calculator is unable to determine the reslut!\n";break;} //注意跳出循环
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -