디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

정말 미치겟습니다 도와주세요 c언어 ㅠㅠ jacobi 프로그램...

아00--아00(99.226) 2012.04.04 10:04:19
조회 570 추천 0 댓글 3

#include <stdio.h>
#include <math.h>
#include <string.h>
/*
Solving a system of linear equations using the Jacobi method.
This program reads in data of the form
3
4.0 0.3 0.5 1.0
2.0 4.0 0.8 2.0
1.0 0.6 9.0 3.0
where the first number N (in this case 3) indicates that the next
N lines will be an augmented matrix N x N+1
The N x N part of the augmented matrix is the matrix of coefficients S
of vector X, and the last column of the augmented matrix is vector T,
such that SX = T
This program uses the Jacobi method to iteratively solve for X.
*/
#define N 8
#define EPSILON 0.0001
void in(double s[][N], double t[], int * n);
void out2D(char * what, double s[][N], int n);
void out1D(char * what, double t[], int n);
void jacobi(double s[][N], double x[], double t[], int n);
void mult(double a[][N], double b[], double result[], int n) ;
char * check(char * name, double sx[], double t[], int n);
main()
{
char name[25] = "Jacobi" ;
double s[N][N], x[N], t[N], sx[N] ;
int i, j, n;
in(s, t, &n);
printf("-----------------------------------------\n") ;
printf("SOLVING S * X = T USING THE JACOBI METHOD\n") ;
printf("-----------------------------------------\n") ;
out2D("S", s, n);
jacobi(s, x, t, n);
mult(s, x, sx, n);
out1D("Jacobi S * X", sx, n);
out1D("original T", t, n);
printf("%s\n", check(name, sx, t, n));
printf("\n\n\n");
}
/*
Reads a value *n which is the dimension of a two dimensional
square matrix, and then reads the n x n matrix s and the vector t
where the data have a shape as shown in the top comment.
*/
void in(double s[][N], double t[], int * n)
{
int i,j;

FILE*in;
in = fopen ("input1.txt","r");
fscanf (in,"%d",&*n);

 for (i=0;i<*n;i++)
   {
  for (j=0;j<*n;j++)
     {
  fscanf (in,"%lf",&s[i][j]);
  }
 fscanf (in,"%lf",&t[i]);
   }
 fclose(in); 
}
/*
Prints a two dimensional square matrix s which is n x n
preceded by the name stored in 'what'. For example, for the
input shown above and the matrix called 's':
s :
4.000000 0.300000 0.500000
2.000000 4.000000 0.800000
1.000000 0.600000 9.000000
*/
void out2D(char * what, double s[][N], int n)
{
 int i,j;
 double t[N];
    in(s,t,&n);
 printf("%c:\n",*what);
 
 for(i=0;i<n;i++)
 {
  for(j=0;j<n;j++)
  {
   printf("%f\t",s[i][j]); 
  }
  printf("\n"); 
 }
 printf("\n");
}
/*
Prints a vector t which has n elements,
preceded by the name stored in 'what'. For example, for the
input shown above and the matrix called 't':
t :
1.000000
2.000000
3.000000
*/
void out1D(char * what, double t[], int n)
{
 int i;
    double s[N][N], x[N];
    double sx[N];
    mult(s,x,sx,n);
    in(s,t,&n);
    printf("\n%s:\n",what);
    for (i=0;i<n;i++){
        printf("%.2lf",t[i]);
        printf("\n\n");
        }
}
/*
Runs the jacobi iterative solution to S X = T.
The matrix S is given by s and is n x n.
The vector X is given by x, which has n elements.
The vector T is given by t, which has n elements.
The iteration stops if all new elements differ by no more than
EPSILON from the old elements.
*/
void jacobi(double s[][N], double x[], double t[], int n)
{
int i, j, flag = 1, k;
double new_x[N], sum;

while(k<20)
{
 flag=0;
 for(i=0;i<n;i++)
{
 sum=0;
 new_x[i]=t[i];
}
 for(j=0; j<i; j++)
{
 sum -= s[i][j]* x[j];
 
}
 for(j=i+1; j<n; j++)
{
 sum -= s[i][j]* x[j];
}
new_x[i] += sum;
new_x[i]/=s[i][i];

if (fabs(new_x[i]-x[i])>EPSILON)
{
 flag=1;
 x[i]=new_x[i];
 }
k++;}

 

/*
Multiplies an n x n matrix A by a vector X, i.e., an n x 1 matrix.
The resulting vector is called result.
*/
void mult(double a[][N], double x[], double result[], int n)
{

int i, j, sum ;
  for (i = 0 ; i < n ; i++)
  {
    for (j = 0 ; j< n ; j++)
   {
      sum = 0 ;
      
    sum = sum + a[i][j] * x[i] ;
      
    result[i] = sum ;
   }
  }
}

/*
Checks if two vectors are 'close', meaning that each pair of
corresponding elements differ by no more than EPSILON.
It returns a string "Jacobi check fails" if the vectors are not close
otherwise a string "Jacobi check is OK".
*/
char * check(char * name, double sx[], double t[], int n)
{
int i;
for(i = 0 ; i < n ; i++)
if(fabs(sx[i] - t[i]) > 10 * EPSILON)
return (strcat(name, " check fails"));
return (strcat(name, " check is OK"));
}
}

컴파일시 왜 오류가날까요 ㅠㅠ

아 미치겟습니다 도와주세요 ㅠㅠ

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 뛰어난 운동 신경으로 남자와 싸워도 이길 것 같은 여자 스타는? 운영자 25/11/24 - -
이슈 [디시人터뷰] 충무로가 주목하는 신예, '세계의 주인' 서수빈 운영자 25/11/24 - -
AD 대학생 필수템! What's in my Bag 운영자 25/11/21 - -
309544 진짜 간단한 소스 질문좀 부탁해요 성님들 제발제발 !!!! [37] 학생1(143.238) 12.04.06 145 0
309541 헉허헉ㅎㄱ헉허 형들 나 급함. ㄴㅇㄴㅇ(112.170) 12.04.06 31 0
309540 형님들 워크숍가면 뭐하고 놀아야되죠? [1] Html갤로그로 이동합니다. 12.04.06 52 0
309534 회사에서 교육받았던 자료 안가져왔네.. -_- (210.113) 12.04.06 22 0
309533 c언어 이제부터 공부하려고 하는데요 [2] 락쿼즈갤로그로 이동합니다. 12.04.06 63 0
309531 형들 cnc 에서 g코드 어원아는형있남 안만들래갤로그로 이동합니다. 12.04.06 61 0
309530 어휴 오늘 일 엄청 많이 했다 [1] ㅁㄴㄻㄹ갤로그로 이동합니다. 12.04.06 69 0
309529 횽님들 자바공부중인데 이거좀알려주세요 [15] 머저리(218.48) 12.04.06 86 0
309528 형들 폰겝 카메라 다뤄본사람있어 ㅠㅠ 나이거때문에 고생이얌 ㅠㅠ 갤로그로 이동합니다. 12.04.06 57 0
309527 안드로이드 튜토리얼... [4] PiRA갤로그로 이동합니다. 12.04.06 84 0
309522 아 코딩하거 시픔 [성대아싸]갤로그로 이동합니다. 12.04.06 68 0
309521 어제 kbhit() 함수 알려주신분 계심니까? [5] 34512(59.18) 12.04.06 60 0
309519 근무지에서 여러 사이트 접속 못하게 막아놨는데 [2] 빌어먹을야옹갤로그로 이동합니다. 12.04.06 91 0
309518 오라클 자바교육센터 어떤가요? [1] 므해?갤로그로 이동합니다. 12.04.06 83 0
309517 형들 listview에 이미지 넣을때 이미지 위치 조절은 못하는거야? [1] ㅇㅇㅇㅇ(203.241) 12.04.06 37 0
309515 노래방 혼자가는거 이상한거 아니지? [9] DeCoY갤로그로 이동합니다. 12.04.06 122 0
309514 서버 분산처리프로그램 [8] 중간점검갤로그로 이동합니다. 12.04.06 107 0
309511 알고리즘 잘아는 횽들 좀 도와줘요 [4] 왕지룡이갤로그로 이동합니다. 12.04.06 77 1
309509 테트리스 - ㅅ-) 땡칠도사갤로그로 이동합니다. 12.04.06 92 0
309506 횽들 아까 아이티 뱅크 쓰래기라고 물어봤던 좆뉴빈데 한개만 더물어볼게 [8] 개초(210.183) 12.04.06 308 0
309505 아래 댓글단형들 ~~ 고마워 [3] 색초(121.134) 12.04.06 51 0
309504 조선족들 몰아내자 [2] 올체갤로그로 이동합니다. 12.04.06 88 0
309503 좀있으면 프라이데이 나이트 [1] 빌어먹을야옹갤로그로 이동합니다. 12.04.06 41 0
309501 형들 윈7에서 가상mac 까는거 질문점 [4] gg(121.139) 12.04.06 62 0
309499 형들 나 프로그래밍 배우는 뉴비인데..좌절해쏘 ㅋ.ㅋ [10] 색초(121.134) 12.04.06 187 0
309498 서버 없는 p2p방식의 채팅에 대해 어떻게 생각함? [8] ?(211.246) 12.04.06 143 0
309496 mfc 소켓프로그래밍으로 메신저 만드는중인데 ㅠㅠ [3] sdf(1.216) 12.04.06 70 0
309493 자바 진짜 빡친네 좀 도와줘 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ [7] ㄹㄹㄹ(218.39) 12.04.06 107 0
309492 플밍 잘하고 싶은 학부생들 [2] 올체갤로그로 이동합니다. 12.04.06 135 0
309490 여자 개발자 대체로 어떰? [4] 올체갤로그로 이동합니다. 12.04.06 315 0
309487 서버 하드께서 승천하셨다 땡칠도사갤로그로 이동합니다. 12.04.06 62 0
309486 컴공에 왜케 좌파가많냐? [4] 나나(211.177) 12.04.06 159 0
309485 특성화고 이야기가 나와서 그런데 난 인문계 형들이 부러움 [3] ddd(115.23) 12.04.06 76 0
309483 그냥 갑자기 답답해서 그럼 [9] 12(59.12) 12.04.06 99 0
309481 내가 과연 컴공에서 살아남을 수 있을까...우울하다 [22] 12(59.12) 12.04.06 333 0
309480 회사 그만둔지 4개월째 [3] ㄱㄱ(112.214) 12.04.06 120 0
309479 횽들 유닉스 리다이렉션 제발 돠줘요 ㅠㅠ [1] 유닉스(211.245) 12.04.06 58 0
309478 0x10c(121.139) 12.04.06 23 0
309477 HTML 파싱 처음 해봤는데 존나쉽네 [5] cyber갤로그로 이동합니다. 12.04.06 153 0
309475 배열에서 특정요소 삭제는 어떻게 하는거에요? [5] ㅁㅁ(114.199) 12.04.06 68 0
309474 횽들 리눅스 공부할 때 말이야.. [5] 뿌우우잉(220.79) 12.04.06 87 0
309473 자바스레드질문좀 할께.. [12] ㅁㄴㅇ(59.14) 12.04.05 62 0
309472 혹시 여기 정보보호기술병 출신 없나열? ㅁㄴㅇㄹ(121.129) 12.04.05 85 0
309471 개발을 하고 싶었지만.. [1] 김호도갤로그로 이동합니다. 12.04.05 46 0
309470 double형의 실수를 string에 저장했을때 [2] 고독의숲갤로그로 이동합니다. 12.04.05 56 0
309468 배열에저장되어있는 문자열을 출력할 때 인덱스범위지정 가능하냐? [1] ㅁㅁ(114.199) 12.04.05 46 0
309465 ~= 뜻이 뭐였지 [4] ㅇㅇ(220.76) 12.04.05 62 0
309464 프로그래밍 로직관련 서적은 없나요? ㅇㅇ(210.113) 12.04.05 34 0
309463 배열 기본적인 문법 질문 [3] ㅁㅁ(114.199) 12.04.05 80 0
309462 형님들 ㅠㅠ 자료구조 다항식 덧셈 곱셈 자료구조(211.211) 12.04.05 80 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2