雅各比.cpp

来自「数值分析实验内容一些计算源程序 数值分析实验内容一些计算源程序」· C++ 代码 · 共 57 行

CPP
57
字号
#include<iostream>
using namespace std;
#include<math.h>
float max(float array[],int n)
{
 int i;
 float maximum=0.0;
 for(i=0;i<=n;i++) if(maximum<=array[i]) maximum=array[i];
 return maximum;
}
void main()
{
 float a[3][3],b[3],x[3],y[3],m[3];
 int i,j,k,n;
  cout<<"输入a[3][3]:"<<endl;
 for(i=0;i<3;i++)
  {
   for(j=0;j<3;j++) cin>>a[i][j];
  }
 cout<<"input b[3] please"<<endl;
 for(i=0;i<3;i++) cin>>b[i];
 cout<<"输入初值:"<<endl;
 for(i=0;i<3;i++) cin>>x[i];
 float sum,maximum,e;
 k=1;
 float N;
 maximum=0.0;
 cout<<"n=";cin>>n;
 cout<<"e=";cin>>e;
 cout<<"输入迭代次数:"<<endl;
 cout<<"N=";cin>>N;
 sub:  
 for(i=0;i<=n;i++)
 {
  sum=0;
  for(j=0;j<=n;j++)
  {
   if(j==i) continue;
   sum=sum+a[i][j]*x[j];    
  }
  y[i]=(b[i]-sum)/a[i][i];
  m[i]=fabs(x[i]-y[i]);

  }
   
 maximum=max(m,n);
 if(maximum<e) {for(i=0;i<=n;i++) cout<<"Y"<<i<<"="<<y[i]<<"\n";}
 else 
 {
  if(k==N) cout<<"error!";
  else 
  {
   k=k+1;for(i=0;i<=n;i++) x[i]=y[i];goto sub;
  }
 }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?