반응형
[연립방정식의 해 미지수 n = 3개]
[Gauss 소거 + 후진 대입법]
미지수 3개인 연립방정식의 해 구하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | #include <stdio.h> #include <math.h> #define Max_DIM 3 void printmatrix(float a[3][4], int n) { int i,j; for(i = 1; i<=n; i++){ printf("\n"); for(j=1; j<=n+1; j++){ printf("%f ",a[i-1][j-1]); } } } main() { // float a[Max_DIM][MAX_DIM+1]; float a[3][4] = {1,-1,3,4, 1,2,-2,10, 3,-1,5,14}; float x[3] = {0, 0, 0}; float temp,tmp; int n=3,i,j,k,l; // printf("\nInput n ="); // scanf("%d",&n); /* for(i=1; i<=n; i++){ // 배열 요소 입력 printf("\n"); for(j=1; j<=n+1; j++){ printf("Input a[%d][%d]",i,j); scanf("%f", &(a[i-1][j-1])); } } */ printmatrix(a,n); // 보여주기 for(k=1; k<=n; k++){ temp = a[k-1][k-1]; if(temp == 0){ // 0일경우 행 교환 for(j=k; j<=n+1; j++){ for(l = k; l < n; l++){ // 다음행도 0이 아닐경우 교환 if(a[l][j-1] != 0){ tmp = a[k-1][j-1]; a[k-1][j-1] = a[l][j-1]; a[k][j-1] = tmp; break; } } } temp = a[k-1][k-1]; // 행 교환후 새 temp 설정 } for(j=k; j<=n+1; j++){ //전반 계산 a[k-1][j-1] = a[k-1][j-1]/temp; } for(i=k+1; i<=n; i++){ //후반 계산 temp = a[i-1][k-1]; for(j=k; j<=n+1; j++){ a[i-1][j-1] = a[i-1][j-1] - temp*a[k-1][j-1]; } } printf("\n"); printmatrix(a,n); // Gauss 소거 과정 } x[n-1] = a[n-1][n]; for(k=n-1; k>=1; k--){ // 후진 대입법 x[k-1] = a[k-1][n]; for(j= k+1; j<=n; j++){ x[k-1] = x[k-1] - a[k-1][j-1]*x[j-1]; a[k-1][j-1] = 0; } a[k-1][n] = x[k-1]; printf("\n"); printmatrix(a,n); // 후진 대입 소거 과정 } printf("\n"); for(k=1; k<=n; k++){ // x값 출력 printf("\nx[%d] = %f",k, x[k-1]); } printf("\n"); } | cs |
반응형
'학습공간 > 수치해석, 확률과통계, 이산수학' 카테고리의 다른 글
[C언어 수치해석] 2차 Simpson 방법과 3차 Simpson 방법 비교 (0) | 2019.11.28 |
---|---|
[C언어 수치해석] 직사각형 방법, 사다리꼴 방법, Simpson 방법 (수치적분) (0) | 2019.11.28 |
[C언어 수치해석] 라그랑지(Lagrange) 곡선 그리기 (MFC 활용) (0) | 2019.11.28 |
[C언어 수치해석] Pivoting 전략 (연립방정식의 해) (0) | 2019.11.28 |
[C언어 수치해석] 이분법, Scant법, Newton법 (근사해 구하기) (0) | 2019.11.28 |