jacobi.cpp
来自「计算方法A中的雅可比算法 是我在学习计算方法时编写的 体现了雅可比算法计算求解的」· C++ 代码 · 共 60 行
CPP
60 行
#include <stdio.h>
#include <math.h>
#define eps 1e-6
#define max 100
float a[4][5]={
10.0,-1.0,2.0,0.0,-11.0,
0.0,8.0,-1.0,3.0,-11.0,
2.0,-1.0,10.0,0.0,6.0,
-1.0,3.0,-1.0,11.0,25.0};
void Jacobi(float *a,int n,float x[])
{
int i,j,k=0;
float epsilon,s;
float *y=new float[n];
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*(n+1)+j)*x[j];
}
y[i]=(*(a+i*(n+1)+n)-s)/(*(a+i*(n+1)+i));
epsilon+=fabs(y[i]-x[i]);
}
for(i=0;i<n;i++) x[i]=y[i];
if(epsilon<eps)
{
printf("迭代次数:%d\n",k);
return;
}
if(k>=max)
{
printf("迭代发散");
return;
}
}
delete y;
}
void main()
{
int i;
float x[4];
Jacobi(a[0],4,x);
for(i=0;i<4;i++)
printf("x[%d]=%f\n",i,x[i]);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?