谁来帮我看一下!

cjh2000 2003-10-14 07:21:42
/**
* 本程序用雅可比迭代法求方程组的解。
* 方程组的系数分别存放在a数组当中,b用来存放对角线系数,
* c数组用来存放常数项的值。
* x1和x2数组用来存放初次迭代的值。
*/
public static void main(String[] args) {
int u=0;
double[][] a;
double[] b,c,x1,x2;
double m,n,s,eps;
a=new double[3][3];
b=new double[3];
c=new double[3];
x1=new double[3];
x2=new double[3];
b[0]=a[0][0]=10.0;
a[0][1]=-1.0;
a[0][2]=-2.0;
a[1][0]=-1.0;
b[1]=a[1][1]=10.0;
a[1][2]=-2.0;
a[2][0]=-1.0;
a[2][1]=-1.0;
b[2]=a[2][2]=5.0;
c[0]=7.2;
c[1]=8.3;
c[2]=4.2;



for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
if(i==j)
{
a[i][j]=0;
c[i]=c[i]/b[i];
}
else
{
a[i][j]=a[i][j]/b[i];
c[i]=c[i]/b[i];
}
}

x1[0]=1.0;
x1[1]=1.0;
x1[2]=1.0;
x2[0]=0.0;
x2[1]=0.0;
x2[2]=0.0;
m=1.0;
n=0.0;
eps=0.000000001;
while((m-n)>eps)
{
for(int i=0;i<3;i++)
{
x1[i]=x2[i];
}
for(int i=0;i<3;i++)
{
s=0;
for(int j=0;j<3;j++)
s=s+a[i][j]*x1[i];
x2[i]=s+c[i];
}

m=(x1[0]>x1[1]?x1[0]:x1[1]);
m=(m>x1[2]?m:x1[2]);
n=(x2[0]>x2[1]?x2[0]:x2[1]);
n=(n>x2[2]?n:x2[2]);
}
System.out.println("线性方程组的解是:");
for(int i=0;i<3;i++)
System.out.println(x1[i]);
}

问题是得出来的答案不准确,不知道哪里错了,谁知道的话帮我改一下,在这里先谢了!
...全文
25 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

23,404

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧