반응형
Recent Posts
Recent Comments
Link
관리 메뉴

공머씨의 블로그

내가 공부한 옥타브8-옥타브로 연립방정식 계산하기(35~42) 본문

내가 공부한 옥타브(매틀랩)/내가 공부한 옥타브

내가 공부한 옥타브8-옥타브로 연립방정식 계산하기(35~42)

공머씨 2020. 3. 11. 23:03
반응형

연립방정식과 다항식의 해를 octave를 이용해 계산하는 법에 대해 공부해보겠습니다.

 

35. 역행렬을 내장 함수를 이용해 간단하게 구하기

일단 내장함수 inv()에 대해서

A의 역행렬을

수학에서 위와 같이 표기합니다.

옥타브에서는 inv()라는 역행렬을 출력하는 내장 함수가 있습니다.(역행렬이 영어로 inverse matrix입니다.)

내장 함수를 활용해 봅시다.

내공 옥 2의 7번에서 아래 그림과 같이

계산 막일하면서 구한 역행렬을

옥타브에서 아~~~~~~~~~~주 간단하게 내장 함수 단 하나 inv()만을 이용하여 구해 보겠습니다.

행렬 A는 다음과 같습니다.

A=[

2 5

3 8

]

Q A의 역행렬을 옥타브를 이용해 구하세요.

A=[2 5;3 8]

inv(A)

simple이라는 이름의 m파일에 저장한 뒤 실행한 모습입니다.

이렇게 상황에 맞는 적절한 언어를 사용하면 손이 매우 편리해짐을 알 수 있습니다.

이게 우리가 코딩을 하는 이유라고 생각합니다.

36. 주어진 연립방정식은 행렬로 표현할 수 있고, 그해는 역행렬을 이용해 구할 수 있다.

(행렬의 곱을 이용)

역행렬을 모르시는 분은 내옥공 2 7번에서 역행렬에 대해 공부하고 오시기 바랍니다.

36번에서 알아갈 것은 3가지입니다.

1. 연립방정식을 행렬로 표기하기

2. 연립방정식의 행렬로 표현한 뒤 역행렬을 이용해 구하기

1) 연립방정식을 행렬로 표기하기

두 식 모두 일차식인 하나의 연립방정식이 다음과 같이 있습니다.

2x + 1y =4 ---------1)

1x + 3y =7 ---------2)

이를 행렬로 표현하면

왜 이렇게 표현되는지는

왼쪽 변의 두행렬의 곱하면

2x + 1y =4

1x + 3y =7

가 나오는 것을 알 수가 있습니다.

여기서 각 행렬의 이름을 다음과 같이 하겠습니다.

그러면 35번 의 연립방정식이 다음과 같은 방정식으로 표현이 됩니다.

AX=B

즉 X(미지수로 구성된 행렬)를 구하려면 왼쪽 항의 A를 이항 해서

X= A-1B 가 됩니다. (37번에서 또 다른 방법으로 설명합니다.)

이때 X를 구하려면 A의 역행렬을 구하면 되는 것을 알 수 있습니다.

2). 연립방정식의 행렬로 표현한 뒤 역행렬을 이용해 구하기

옥타브에서는 역행렬을 inv()라는 내장 함수를 사용해서 출력할 수 있다고 위에서 설명했습니다.

위의 연립방정식의 해를 옥타브를 이용해 구해보겠습니다.

Q 먼저 직접 해보시기 바랍니다.

A=[2 1;1 3]

B=[4;7]

X=inv(A)*B

inverse라는 이름의 m파일로 저장한 뒤 실행시킨 모습입니다.

 

 

37. AX=B에서 X=A-1B임을 또 다른 방법으로 알아보기 (행렬의 관점)

다음과 같이 삼 원 일 차 연립방정식이 있습니다.

1)

이를 행렬로 다음과 같이 표현할 수 있습니다.

2)

다음과 같이 변수를 설정하겠습니다.

3)

그렇다면 두 번째 사진의 행렬은

다음과 같은 방정식으로 작성할 수 있습니다.

AX=B

4)

양변에 A의 역행렬을 곱합니다. (행렬의 곱셈에서 결합 법칙이 성립함을 알고 있습니다.)

A-1AX=A-1B

5)

왼쪽항에서 가역 행렬과 그 역행렬을 곱한 부분은 단위행렬 ( I )이 됩니다.

IX=A^-1 ×B

6)

단위행렬 I를 임의의 행렬 A와 곱하면 행렬 A가 얻어진다.

라는 것을 알고 있습니다.(내옥공2 3번 참조)

따라서 위의 식은 아래와 같습니다.

X=A^-1 ×B

여기서 주의할 것은 B가 A-1의 역행렬이 아니므로 교환 법칙이 성립하지 않습니다.

38. 가우스 소거법으로 연립방정식의 해를 구하기

Q 일단 다음 연립 방정식의 해를 옥타브를 이용해 구해보시기 바랍니다.

x + 2y + 3z = 7

3x -2y +z =5

2x -3 +z=1

a=[1 2 3;3 -2 1;2 –3 1]

b=[7;5;2]

X=inv(a)*b

위와 같은 코드를 입력했으리라 생각합니다.

또 다른 방법이 있습니다.

선형 연립방정식의 해를 구하는 방법으로 가우스 소거법이라는 것 이 있습니다.(선형대수학 참고)

옥타브에서는 를 사용하면 가우스 소거법으로 계산합니다.

이때 ' \\'를 왼쪽 나눗셈 연산자라고 합니다.

/ : slash

\: back slash (보통 키보드의 back space밑 에칸에 \와 함께 있습니다.)

 

옥타브에서 \가 입력 안되면 \라고 입력해줘도 됩니다. 

위의 문제에 대한 또 다른 답으로는

a=[1 2 3;3 -2 1;2 –3 1]

b=[7;5;2]

X=a\b

가 될 수도 있겠네요.

 

 

 

39. 3원 1차 연립방정식에서 해 구하기

(3개 원소로 이루어진 1차식의 연립방정식을 뜻합니다.)

 

고차방정식을 행 벡터로 표시하기

1) 모든 차수가 0이 아닌 경우

 

아주 간단합니다.

 

 

2) 어떤 차수가 제외된 다항식의 경우

예를 들면 아래와 같은 다항식입니다.

 

위의 식과

아래식은 같은 것을 알고 있습니다.

 

ps. 제가 본 강의자료에는 xx가 변수로 나와 있더라고요.

처음에???? 저게 뭐지?? 했는데 xx는 변수 이름입니다!

마찬가지로 아주 간단하지만 주의해야 할 것은

반드시 0도 포함시켜 주어야 합니다.

 

 

 

 

40. roots() 함수를 이용하여 고차방정식 해를 구하기

근의 공식( roots())

근의 공식으로 해를 구하는 함수는 roots()입니다.

근의 공식을 이용해 해를 구하는 것에는 두 가지 방법(방법이라고 하기에도 그렇지만...)이 있습니다.

1) 괄호 안에 방정식의 계수를 넣어서 구하는 방법

위 와 같이 출력됩니다

위 그림에서 첫 번째 코드를 보면

옥타브가 허수도 알고 있다는 사실을 확인할 수 있습니다.

위 그림에서 두 번째 코드를 보면

x2+3x+2=0의 해는 -2와 -1 임을 알 수 있습니다.

2) 괄호 안에 방정식의 이름을 넣어서 구하는 방법

(단 방정식을 행렬로 표현한 뒤 행렬의 이름을 설정 )

고차방정식의 미지수에 숫자를 대입했을 때의 결괏값

 

 

x2+3x+2=0라는 방정식을 행렬로 표현한 뒤

1) 번과 다르게 이 행렬에 이름을 붙였습니다.

그리고 roots()의 괄호 안에 행렬의 이름을 넣었습니다.

41.  polyval() 함수를 이용하여 해를 알고 있는 방정식의 계수 구하기

(x-1)(x-0)(x-0)(x-0)(x-1)

위 와같이 해를 알고 있는 방정식을 전개해서 방정식의 계수를 알고 싶다면

polyval() 함수를 쓰면 됩니다.

>> roots는 인수분해를(정확히 말하면 근의 공식) 했는데

polyval은 전개를 했습니다.

 

 

주의할 것 은

한 번에 polyval([1 0 0 0 1],2)를 입력하면 아래와 같은 오류가 납니다. 반드시 행렬의 형태로 방정식을 먼저 표현 해준 뒤 함수에 집어넣어야 합니다.

 

 

 

 

 

 

 

 

42. 두 다항식의 곱셈

Q :두 다항식을 Octave로 출력하고

두 다항식의 곱을 출력하는 코드를 짜시오.

(참고: 두 다항식 a, b의 곱을 만드는 함수는 conv (a, b)이다.)

 

 

a=[1 2 3 4 ]

b=[1 4 9 16]

c=conv(a, b)

 

 

 

 

 

 

 

 

 

 

43. 다항식의 나눗셈

Q: 위에서 얻은 곱의 결과식(c(x))을 위의 b 식으로 나누는 코드를 짜시오.

(참고 다항식 c를 b로 나누는 함수 deconv(c, b)이다.)

코딩 전에 답은 a(x) 일 것 임을 알 수 있습니다.

a=[1 2 3 4 ]

b=[1 4 9 16]

c=conv(a, b)

deconv(c, b)

한번 확인해 보겠습니다.

 

 

주의할 것은 deconv(c, a)에서 c가 나누어지는 식 a가 나누는 식입니다.

 

 

이번 포스팅은 여기서 마치겠습니다. 
읽어 주셔서 감사합니다! 

공감과 덧글은 큰 힘이 됩니다 

반응형
Comments