통합검색
· 마을서비스란?  · 포럼마을  · 일반마을  · 테마마을  · 마을랭킹  · 활동왕
· 덱스퍼트란?  · TECBOX   · PRSBOX   · 이용안내  
· DEXT제품군  · 솔루션베이  · S/W & ESD 컴포넌트
· 프로그램베이
· LiveSeminar  · LiveConference
데브피아 사이트 운영자, 비사모 마을 입니다.
개발이 아니더라도 다양한 분야에 많은 얘기를 나누는 공간입니다.
  마을등급 비사모 마을   이 마을은 테마마을 입니다이 마을은 자유가입제 마을 입니다 마을소개 페이지로 이동 전입신청
마을촌장촌장 비사모 방문자 102506 since 2006-12-31
데브피아 공지사항
자유게시판
앨범
개인게시판
[마을 게시판]
데브피아 운영 소식
교육 & 세미나 홍보
[개발자 공감]
개발자 공감글
개발자 공감만화
랑데브 게시판
칼럼 게시판
개발자 고충상담
Dev Talk
자유토론방
벼룩시장
재나미 우스개
구인/프로젝트 정보
사람인 채용 게시판
  고객지원 게시판
마이 데브피아
 나의 e-Money 내역
 활동왕 My Page
 스크랩한 게시글보기
 쪽지관리
 주소록관리

 개발자 고충상담
 c언어 가우스 소거법이 너무 어렵네요...... 뭐가 틀린지 알려주실 고수님있으신가요ㅠㅠ 2020-04-18 오후 8:40:54
대갈아프다... 번호: 25737  / 읽음:2,190

#include <iostream>      // for cout

#include <iomanip>       // for setw()

#include <math.h>        // for fabs()

 

using namespace std;

 

#define DIMENSION       10

#define EPSILON        1.0e-30

 

#define SUCCESS          0

#define DIVISION_BY_ZERO 1

 

void print_matrix( double mtrx[DIMENSION][DIMENSION+1], int p )

{

cout.setf(ios::fixed,ios::floatfield);    cout.precision(5);

  for( int i=0; i<DIMENSION; i++ )  {

      for( int j=0; j<DIMENSION+1; j++ ) {

         cout<<setw(10)<<mtrx[i][j];

}

cout<<endl;

}

   cout<<"The pivot row is "<<p+1<<"th row"<<endl;

cout<<"The pivot element is "<<mtrx[p][p]<<endl;

}

 

 

int forward_elimination( double aug_mtrx[DIMENSION][DIMENSION+1] )

{

for( int p=0; p<DIMENSION-1; p++ ) {

for( int i=p+1; i<DIMENSION; i++ ) {

            print_matrix( aug_mtrx, p );

double pivot_element = aug_mtrx[p][p];

            if( fabs(pivot_element) < EPSILON ) return DIVISION_BY_ZERO;

double factor = aug_mtrx[i][i-1]/pivot_element;

for( int j=i-1; j<DIMENSION+1; ) {

aug_mtrx[i][j] -=aug_mtrx[p][j]*factor;

}

}

 

}

 

    return SUCCESS;

}

 

int backward_substitution( double x[DIMENSION] ,double aug_mtrx[DIMENSION][DIMENSION+1])

{   x[DIMENSION-1] = aug_mtrx[DIMENSION][DIMENSION+1]/aug_mtrx[DIMENSION][DIMENSION];

double a=0;

for(int i=DIMENSION-1; i>0; i--)

{

for(int j=DIMENSION-1;j>i;j--)

{

a +=x[i]*aug_mtrx[i-1][j];

    }

x[i-1]=(aug_mtrx[i][DIMENSION]-a)/aug_mtrx[i][i];

}

 return SUCCESS;

}

 

 

int gauss_elimination( double x[DIMENSION], double aug_mtrx[DIMENSION][DIMENSION+1] )

{

int status;

status = forward_elimination( aug_mtrx );

if( status == DIVISION_BY_ZERO ) {

  cout<<"Arithmatic Error : Division by zero in 'forward_elimination'"<<endl;

  return status;

    }

status = backward_substitution( x, aug_mtrx );

if( status == DIVISION_BY_ZERO ) {

   cout<<"Arithmatic Error : Division by zero in 'backward_substitution'"<<endl;

   return status;

    }

    

    return SUCCESS;

}

 

 

int main()

{

double solution[DIMENSION];

    double matrix_a[DIMENSION][DIMENSION] = { 

   {2, 1, 3, 2, 1, 3, 4, 2, 1, 1},

   {1, 3, 2, 5, 3, 2, 3, 2, 2, 3},

   {3, 2, 1, 4, 2, 1, 3, 1, 3, 1},

   {2, 2, 4, 2, 1, 3, 2, 1, 1, 2},

   {4, 3, 2, 1, 2, 1, 3, 1, 2, 3},

   {3, 2, 2, 1, 2, 3, 2, 4, 2, 3},

   {3, 1, 3, 1, 3, 2, 4, 2, 4, 3},

   {3, 2, 3, 1, 4, 2, 2, 1, 3, 2},

   {1, 2, 3, 4, 3, 2, 1, 2, 3, 4},

   {2, 3, 4, 4, 3, 2, 1, 1, 2, 3}

};

double vector_b[DIMENSION] = {20, 26, 21, 20, 22, 24, 26, 23, 25, 25};

double augmented_matrix[DIMENSION][DIMENSION+1];

for( int i=0; i<DIMENSION; i++ )  {

for( int j=0; j<DIMENSION; j++ )

augmented_matrix[i][j] = matrix_a[i][j];

augmented_matrix[i][DIMENSION] = vector_b[i];

}

 

    int status = gauss_elimination( solution, augmented_matrix );

    if( status == SUCCESS )

        cout<<"The solution are "<< solution <<endl;

 

 

return 0;

}

[코멘트] 좋음
2020-04-18 23:27
칡흙
// 참고해보세요.

- 잘 되는. 예제 소스'로. 결과 확인 가능 합니다.

C++ code - 214 lines - codepad
http://codepad.org/geQMeEK6

가우스 소거법 - 위키백과, 우리 모두의 백과사전
http://ko.wikipedia.org/wiki/%EA%B0%80%EC%9A%B0%EC%8A%A4_%EC%86%8C%EA%B1%B0%EB%B2%95

가우스 소거법 C언어 - Google 검색
http://www.google.com/search?ei=SgibXuvQHoOsoATP9pTYAg&q=%EA%B0%80%EC%9A%B0%EC%8A%A4+%EC%86%8C%EA%B1%B0%EB%B2%95+C%EC%96%B8%EC%96%B4&oq=%EA%B0%80%EC%9A%B0%EC%8A%A4+%EC%86%8C%EA%B1%B0%EB%B2%95+C%EC%96%B8%EC%96%B4&gs_lcp=CgZwc3ktYWIQAzoECAAQRzoCCAA6BAgAEENQ0eIFWJjxBWDn8gVoAXACeACAAX-IAYIHkgEDMC44mAEAoAEBqgEHZ3dzLXdpeg&sclient=psy-ab&ved=0ahUKEwjrnYvakfLoAhUDFogKHU87BSsQ4dUDCAw&uact=5

가우스 소거법 C언어 : 네이버 통합검색
http://search.naver.com/search.naver?ie=UTF-8&sm=whl_hty&query=%EA%B0%80%EC%9A%B0%EC%8A%A4+%EC%86%8C%EA%B1%B0%EB%B2%95+C%EC%96%B8%EC%96%B4

가우스 소거법 : 네이버 통합검색
http://search.naver.com/search.naver?ie=UTF-8&sm=whl_hty&query=%EA%B0%80%EC%9A%B0%EC%8A%A4+%EC%86%8C%EA%B1%B0%EB%B2%95

가우스 소거법
http://terms.naver.com/entry.nhn?docId=3338400&cid=47324&categoryId=47324

행 연산 : 네이버 통합검색
http://search.naver.com/search.naver?ie=UTF-8&sm=whl_hty&query=%ED%96%89+%EC%97%B0%EC%82%B0

gaussian elimination - Wolfram|Alpha
http://www.wolframalpha.com/input/?i=gaussian%20elimination

Search - CodeProject
http://www.codeproject.com/search.aspx?q=Gaussian&x=0&y=0&sbo=kw

행 연산 - Google 검색
http://www.google.com/search?q=%ED%96%89%20%EC%97%B0%EC%82%B0

행 연산 : 네이버 통합검색
http://search.naver.com/search.naver?ie=UTF-8&sm=whl_hty&query=%ED%96%89+%EC%97%B0%EC%82%B0

기본 행 연산
http://terms.naver.com/entry.nhn?docId=3404995&cid=47324&categoryId=47324

행 사다리꼴 행렬
http://terms.naver.com/entry.nhn?docId=3405414&ref=y&cid=47324&categoryId=47324

행렬 곱셈 : 네이버 통합검색
http://search.naver.com/search.naver?sm=top_hty&fbm=0&ie=utf8&query=%ED%96%89%EB%A0%AC+%EA%B3%B1%EC%85%88

행렬의 곱셈
http://terms.naver.com/entry.nhn?docId=3569496&cid=58944&categoryId=58970

c언어 가우스 소거법 검색결과, 책 검색 : 네이버 책
http://book.naver.com/search/search.nhn?sm=sta_hty.book&sug=&where=nexearch&query=c%EC%96%B8%EC%96%B4+%EA%B0%80%EC%9A%B0%EC%8A%A4+%EC%86%8C%EA%B1%B0%EB%B2%95
저장 취소
[코멘트] 좋음
2020-04-19 00:05
SkyNET
소스 한번 볼께요
저장 취소
[코멘트] 좋음
2020-04-19 01:26
대갈아프다...
감사합니다
혹시 어디가 틀린지...... 초보자 못찾겠습니다ㅜㅜ 부탁드립니다.....
저장 취소
[코멘트] 좋음
2020-04-19 01:28
대갈아프다...
실행 시키면 피벗 하면서 피벗행 표시하고 행렬이 나타내지는 줄알았는데 반복조차 안되네요.....
저장 취소
[코멘트] 좋음
2020-04-19 23:49
JUNE_MS
제목이 재밌어요 ㅜㅜ
저장 취소
[코멘트] 좋음
2020-04-20 13:03
오징어땅콩
고충이 심하시네요.
질문게시판에 글적는 기분 부터 배우시면 쉽게 해결 됩니다.
저장 취소
[코멘트] 좋음
2020-04-20 13:37
분당에집갖고싶어
질문은 질게로...
저장 취소
[코멘트] 좋음
2020-04-20 23:21
대갈아프다...
삭제 요청했습니다 죄송합니다.....
저장 취소
[코멘트] 좋음
2020-05-25 18:49
한몽희
int forward_elimination( double aug_mtrx[DIMENSION][DIMENSION+1] )

여기에서 for문의 루프에서 빠진 것이 있네요.
int forward_elimination( double aug_mtrx[DIMENSION][DIMENSION+1] )

{

여기에서
for 문 for (int j = i - 1; j < DIMENSION + 1) {
여기에서 빠진 것이 있습니다.
for (int j = i - 1; j < DIMENSION + 1; j++) {
이렇게 바꾸면 진행을 하네요.
저장 취소
[코멘트] 좋음
2020-05-25 18:55
한몽희
보니 여기도 수정을 하여야 하는 것 같네요
for (int p = 0; p < DIMENSION-1 ; p++) {

for (int i = p + 1; i < DIMENSION; i++) {

for (int p = 0; p < DIMENSION ; p++) {

for (int i = p + 1; i < DIMENSION+1; i++) {
이렇게 바꿔야 하나보네요
저장 취소
코멘트쓰기
  좋음   놀람   궁금   화남   슬픔   최고   침묵   시무룩   부끄럼   난감
* 코멘트는 500자 이내(띄어쓰기 포함)로 적어주세요.
목록 보기   지금 보고 계시는 글을 회원님의 my Mblog >> 스크랩에 넣어두고 다음에 바로 보실 수 있습니다.  
회사소개  |   개인정보취급방침  |  제휴문의  |   광고문의  |   E-Mail 무단수집거부  |   고객지원  |   이용안내  |   세금계산서
사업자등록번호 안내: 220-81-90008 / 통신판매업신고번호 제 2017-서울구로-0055호 / 대표: 홍영준, 서민호
08390, 서울시 구로구 디지털로32길 30, 1211호 / TEL. 02_6719_6200 / FAX. 02-6499-1910
Copyright ⓒ (주) 데브피아. All rights reserved.