2013년 8월 13일 화요일

[JAVA JAcobi, 오라클자바커뮤니티]자바로 구현한 자코비(Jacobi)의 반복법을 이용한 예제

자코비의 방법이 어느 연립방정식이나 모두 수렴하는것은 아니며
아래의 조건이 맞을때 수렴하는 것이다. 


  오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(신입사원채용무료교육, 오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷)  

주어진 연립방정식을 행렬 AX=B 형태로 표현했을때 행렬A의 임의의
대각원소 A(i,j) 에 대해 그 절대값이 동일행의 모든 다른 원소의  절대값의
합보다 크면 자코비의 반복법은 항상 해에 수렵한다.

아래의 자바 클래스를 보자...

public class Jacobi {
public static void main(String[] args) {
double[][] use = {{3,2,5,-1,17}, {1,7,1,-2,-25},{2,5,18,1,19},{1,3,-1,17,12}};
double[] base = new double[4];
double[] result = new double[4];
double[] para = new double[4];

for(int i=0; i<4; i++) {
base[i] = use[i][i];
use[i][i] = 0;
result[i]=0;
}

for(int i=0;i<20;i++) {
for(int j=0;j<4;j++) {
double sum=0;
for(int k=0; k<4; k++) {
sum += use[j][k] * result[k];
}
para[j] = (use[j][4] - sum) / base[j];
}

for(int j=0;j<4;j++) {
result[j] = para[j];
}
}

System.out.println("result....");
for(int i=0;i<4; i++) 
System.out.println("The value " + i + " equal " + para[i]);
}

댓글 없음:

댓글 쓰기