ヤコビ法の数値計算例(Java) |
- プログラムソース
import java.io.*;
class Co
{
static final int n=3; //行列の行(列)の数
static final int max=100; //繰り返し最大回数
static final double eps=1.0e-5; //誤差許容範囲
}
class Jacobi
{
static double a[][]={{3.0,-6.0,9.0},{2.0,5.0,-8.0},{1.0,-4.0,7.0}};
static double b[]={6.0,8.0,2.0};
static double xold[]={1.0,1.0,1.0};
static double xnew[]=new double[Co.n];
public static void main()
{
int i,j,k;
double err;
for(k=0;k<Co.max;k++)
{
err=0.0;
for(i=0;i<Co.n;i++)
{
xnew[i]=b[i];
for(j=0;j<Co.n;j++)
{
if(j!=i)
{
xnew[i]-=a[i][j]*xold[j];
}
}
xnew[i]=xnew[i]/a[i][i];
}
for(i=0;i<Co.n;i++)
{
err+=Math.abs(xold[i]-xnew[i]); //各解の誤差をたす
xold[i]=xnew[i];
}
if(err<Co.eps) break; //誤差が許容範囲だったら終了
}
for(i=0;i<Co.n;i++)
{
System.out.println(xnew[i]);
}
System.out.println("繰り返し回数は" + k + "回でした。");
}
}
- プログラム実行結果
3.0000084657365673
2.0000428954504441
1.0000260751383328
繰り返し回数は81回でした。
Press any key to continue
|
|
|
|
|
|