jacobi

来自「收集的C语言算法程序」· 代码 · 共 49 行

TXT
49
字号
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 + =
减小字号Ctrl + -
显示快捷键?