#include <stdio.h>
#include <math.h>
#include <iostream.h>
#include <conio.h>
main()
{
int k=0,i,j,m;
double a[3][3],b[3],x[3][1000],p,p1,p2,p0;
clrscr();
printf("Please input the coefficients :a11..a33 and b1 b2 b3\nWarning:The value of aii can't be zero!\n");
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
scanf("%lf",&a[i][j]);
}
for(i=0;i<3;i++)
scanf("%lf\n",&b[i]);
printf("Please input the start value of x1[0],x2[0],x3[0]\n");
for(m=0;m<3;m++)
scanf("%lf\n",&x[m][0]);
do
{ x[0][k+1]=(b[0]-a[0][1]*x[1][k]-a[0][2]*x[2][k])/a[0][0];
x[1][k+1]=(b[1]-a[1][0]*x[0][k]-a[1][2]*x[2][k])/a[1][1];
x[2][k+1]=(b[2]-a[2][0]*x[0][k]-a[2][1]*x[1][k])/a[2][2];
p0=x[0][k+1]-x[0][k];
p1=x[1][k+1]-x[1][k];
p2=x[2][k+1]-x[2][k];
if(p0>p1&&p0>p2)
p=p0;
else
p=(p1>p2?p1:p2);k++;
}while (p>0.00001);
printf("x1=%lf\n",x[0][k+1]);
printf("x2=%lf\n",x[1][k+1]);
printf("x3=%lf\n",x[2][k+1]);
printf("The Jaxobi iterative number is:%d\n",k+1);
return 0;
}
说明:本方程是用雅克比迭代法解决三元一次方程的一个小程序。
有几个点可能有点问题: "x[3][1000]" 语言对数组的大小有规定么?
在输入方程组系数6个和b 3个之后本来要求输入初始值3个,但是程序却出现不只6+3+3个数要输入。
高手指教!