디시인사이드 갤러리

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

갤러리 본문 영역

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

아00--아00(99.226) 2012.04.04 10:04:19
조회 572 추천 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/12/01 - -
AD 따뜻한 겨울나기! 방한용품 SALE 운영자 25/11/27 - -
309683 저 저기 .. 쉬운건데 이해가 잘안가서 그러는ㄷ ㅔ.. 이해시켜주세요 ㅠ [4] 코딩...?갤로그로 이동합니다. 12.04.08 73 0
309681 형들 객체지향 공부중인데 현실에서 객체가없는 클래스가 존재하나요 ? [6] 씨샵(122.34) 12.04.08 103 0
309677 중삐리에게 충고좀 해주세요 형님들 [6] 웃대눈팅족(118.221) 12.04.08 149 0
309676 디씨 형들 MFC 관련해서 뭐 하나만 알려줘 [3] 세달뒤면몸짱갤로그로 이동합니다. 12.04.08 66 0
309675 msys 이거 minGW도 깔았는데 컴파일 왜 안됨? [1] Grandlos갤로그로 이동합니다. 12.04.08 39 0
309674 횽들아 계산기 자바로 짜고잇는데/.. [1] 소보루빵갤로그로 이동합니다. 12.04.08 182 0
309673 소수판정할때 질문 [5] 항우(112.133) 12.04.08 75 0
309672 형들 c++ , 자바 공부 해야되는데 어떻게 시작하지 ?? 너무힘드러 [1] 데인티갤로그로 이동합니다. 12.04.08 43 0
309670 이 C++ 예제가 VS2008에서는 잘되는데 브레이크갤로그로 이동합니다. 12.04.08 37 0
309668 프로그래밍보다 디자인이 중요하다 무허(218.51) 12.04.08 65 0
309665 pow함수 쓰는법좀알려줘 ㅜ [2] 어렵네(175.123) 12.04.08 101 0
309664 횽드라 C 하는데 질문 [2] 종간이갤로그로 이동합니다. 12.04.08 52 0
309663 버스사의거리정보 받아오는게 그렇게,??? [2] 도와줘잉(203.237) 12.04.08 57 0
309659 형님들아 이거 스크립트 속도 오리는법좀 [1] ㅇㅇ(211.117) 12.04.08 56 0
309658 좋다.기분..야! 때릴꺼야?(116.40) 12.04.08 56 0
309657 리눅스 콘솔모드에서 파일 실행시키는것 관련 질문 [3] 티아고알베스(221.159) 12.04.08 47 0
309656 오오미 성님들 제꺼 소스가 안된당께요 [6] qw(1.217) 12.04.08 80 0
309655 완전 어이없네 [5] Grandlos갤로그로 이동합니다. 12.04.08 103 0
309654 공유기 쓰는 윈도우 아파치 서버 외부에서 접속하는 방법좀 알려주세요 [4] ?(115.21) 12.04.08 119 0
309653 while문에서 멈추지가 않아용 복학생(210.121) 12.04.08 47 0
309650 내가 요즘 프로젝트하면서 느낀건데 가모가모갤로그로 이동합니다. 12.04.08 60 0
309648 아놕 사는게 죄래.ㅋㅋㅋ [2] 생물학(175.119) 12.04.08 88 1
309647 전계강도 구하는 프로그램(매트랩). [1] 하아 ㅠㅠㅜ(175.205) 12.04.08 68 0
309646 미국에선 소프트웨어 엔지니어가 잘나간다는게 사실? [5] Lincredible갤로그로 이동합니다. 12.04.08 200 0
309644 디씨 분명히 탈퇴햇는데 [1] 갤로그로 이동합니다. 12.04.08 48 0
309640 정보보안이 쓰렉이라며 [1] dd(121.171) 12.04.08 169 0
309639 앱스토어랑 마켓이 개인에게 기업과 경쟁할 기회를 줫다는것에 대해 정말 [1] ㅋㅋ(218.37) 12.04.08 82 0
309638 혼자 C언어 공부하려는데 [3] 확장판갤로그로 이동합니다. 12.04.08 76 0
309637 c++ 연결리스트 사용해서 다항식연산을 구현하려고 하는데 롤롤(121.187) 12.04.08 47 0
309635 형들 c++에서 char형으로 읽은 문자가 숫자인지 알려면 어케행?? [3] 롤롤(121.187) 12.04.08 86 0
309634 자라 정수정•‿•갤로그로 이동합니다. 12.04.08 37 0
309633 형들 왜 실력이 안느는거지?.... [16] 자바초보(111.118) 12.04.08 170 0
309632 나 디씨 탈퇴햇거든? [1] 갤로그로 이동합니다. 12.04.08 48 0
309630 졸작으로 톡같은거 만들라고하는데 배워야할것좀 알려줘 ㅜㅜ [11] ㅁㄴㅇ(59.14) 12.04.08 175 0
309629 아 진짜 잊잉 개년 살려주셈 [15] 아시1발(211.214) 12.04.08 168 0
309628 자바 객체에 관해서물어볼께... [6] 늅늅이(59.14) 12.04.08 63 0
309627 ARM UART라이브러리 만드는데 [3] 마타버터갤로그로 이동합니다. 12.04.08 55 0
309626 매트랩 처음 해보는데요... 모르겠습니다 도와주실분..;; [5] 매트랩..(110.46) 12.04.08 88 0
309625 왜 안되는지 모르겠어요 존나 간단한거 + 조공 [9] 라솔갤로그로 이동합니다. 12.04.08 176 0
309624 얘들아 이거는 내 과젠데 좀 도와줘봐 [3] 니 코 가 뭐갤로그로 이동합니다. 12.04.08 75 0
309623 얘들아 근데 검색 알고리즘 뭐쓰냐? [6] 니 코 가 뭐갤로그로 이동합니다. 12.04.07 110 0
309621 c++해야되냐? [6] 대문자갤로그로 이동합니다. 12.04.07 126 0
309619 노트북 하나 사려는데 뭐가좋아여 형들? [5] 애슐리::그린갤로그로 이동합니다. 12.04.07 129 0
309615 형들 입력받은 배열을 함수에 전달후 그함수를 호출할때 관련 질문이야 [8] 티아고알베스갤로그로 이동합니다. 12.04.07 77 0
309613 근데 꾸준히 계속하면 진짜 실력 늘까? ㅇㅇ(210.113) 12.04.07 87 0
309612 여친만드는 알고리즘좀 짜줘 [7] (175.120) 12.04.07 199 0
309611 형들~ prototype, static 둘 비슷한거아닌가요? 123(175.116) 12.04.07 50 0
309608 또 M병쉰 게임가지고 지랄하네 [1] 미쳤dot갤로그로 이동합니다. 12.04.07 73 0
309607 좋아하는 이는 아니지만 대단한 사람임엔 분명하다 [3] 페고떼찌갤로그로 이동합니다. 12.04.07 141 0
309606 블로그 이용자가 줄어들고 있어 [1] 이모군(211.60) 12.04.07 67 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2