⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jacobi.cpp

📁 数值分析雅可比迭代法
💻 CPP
字号:
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include<math.h>
#include<iostream.h>
#define EPS 1e-4
#define MAX 100
#define M 9
#define N 10
main()
{
  int i,j,n;
  float a[M][N];
  float *x;
  float *Jacobi(int n,float a[M][N]);
  cout<<"输入未知数个数: ";
  cin>>n;
   cout<<"输入系数矩阵:\n";
  for(i=0;i<n;i++)
    {
      for(j=0;j<n;j++)       
	  { cout<<"a["<<i<<"]["<<j<<"]:";
	  cin>>a[i][j];}
	  }
  cout<<"输入常数项:\n";
  for(i=0,j=n;i<n;i++)
  cin>>a[i][j];
  x=(float *)malloc(n*sizeof(float));
  x=Jacobi(n,a);
  for(i=0;i<n;i++)
	  cout<<"方程的根""x["<<i+1<<"]="<<x[i]<<"\n";
  return 0;
}

float *Jacobi(int n,float a[M][M+1])
{
float *x,*y,epsilon,s;
int i,j,k=0;
x=(float *)malloc(n*sizeof(float));
y=(float *)malloc(n*sizeof(float));
for(i=0;i<n;i++) x[i]=0;
while(1)
  {
  epsilon=0;
  k++;
  for(i=0;i<n;i++)
    {
    s=0;
    for(j=0;j<n;j++)
      {
      if(j==i)
		  continue;
      s+=a[i][j]*x[j];
      }
    y[i]=(a[i][n]-s)/a[i][i];
    epsilon+=fabs(y[i]-x[i]);
    }
  if(epsilon<EPS)
  {
	  cout<<"迭代次数:"<<k<<"\n";
	  return x;
  }
  if(k>=MAX)
   {
     cout<<"无法计算"<<"\n";
     return y;
   }
  for(i=0;i<n;i++) x[i]=y[i];
  }
}

⌨️ 快捷键说明

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