프로그래밍

 3198, 1/160 회원가입  로그인  
   rhkdals1243
   C++ 질문올립니다 ㅎㅎ;

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3009 [복사]


일단 행렬관련된거에요

A^-1*X=B

이 식에서 X집합의 값을 구하는거에요

근데 방정식 자체(ex. 2x(1)+3x(2)+1x(3) = 4, 1x(1)+4x(2)+5x(3) = 3, 7x(1)+1x(2)+1x(3) = 5)를

그대로 입력받고 난 뒤에 X값을 구하려고 하는데요
(기본적으로 생각한건 저 위의 식을 입력받고 실수계와 변수계로 나누기만 하면 될거같은데...)

위 방법대로 할려고 하면 어떻게 해야할까요?

그리고 제가 그래도 생각해둔게 있는데 위처럼 입력받고 밑 방법처럼 하려면 어떻게 해야할까요?  

일단 식을 그대로 받고난 뒤에

이렇게 변환하고 싶은데요 → (ex. 2x[0]+3x[1]+1x[2]+...+1x[n]=b[1])

저 방법이 될까요? ㅋㅋㅋㅋ;

C언어 초보라 방정식 자체를 입력받아 문제를 해결하라 하니깐

머리가 너무 아파서...

아무튼 결론을 말하자면 방정식 자체를 여러게 입력받아서

어떻게 A(nxn)X(nx1)=B(nx1)의 X행렬을 구할까요? 라는 질문입니다.

조언 부탁드립니다.

  Hit : 4801     Date : 2011/05/17 07:22



    
Prox 연립방정식을 푸는 프로그램이군요. (이부분은 사실 검색해보면 엄청나게 방대한 자료가..)
저도 비슷한걸 만들려다가 포기하고 소스를 찾으러 다닌적이 있어요ㅋㅋ

행렬의 곱셈의 경우, 그냥 정의대로 짠다고 생각하세요!!
a행렬과 b행렬을 곱하여 result배열에 저장하되,
사이즈는 (i * j) * (j * k) = (i * k) 이렇게!

for(i=0;i<3;i++)
for(k=0;k<3;k++) //결과행렬이 i*k이므로 최상위 for문에서는 i와 k를 돌려주면되고..
{
result[i][k]=0;
for(j=0;j<3;j++)
result[i][k] += a[i][j] * b[j][k]; //이것도 쉽지요?
}
}
시작하는게 어렵지 짠거보면 별거아니더라구요.ㅋ

행렬의 역행렬 구하는거는.. 생각보다 어렵던데요 -_-
가우스소거법을 구현해야되는데.. 전 이부분에서 포기했던 기억이..
구글링하면 이부분은 친절하게 설명이 되있을꺼에요 ㅎ
2011/05/18