📄 jacobi.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 + -