상세 컨텐츠

본문 제목

미분방정식2 - 상미분 방정식의 풀이

장.Matlab/Differential Equation solver

by 수내동떡볶이주먹 2021. 2. 19. 15:01

본문

앞에서는 정말 간단한 1개의 식으로 이루어진 1차 상미분 방정식을 풀어보았다.

 

그러나 대부분의 경우에는 여러개의 미분방정식을 엮어서 연립미분 방정식으로 풀어야하는 경우가 있다.

 

형식에는 큰 차이가 나지 않지만, 

 

myode 즉 미분 방정식의 식을 저장하는 부함수에 저장해줄 변수의 수가 조금 더 많아질 뿐이다.

 

이러한 방정식은 이론적인 경우보다 실질적인 상황에서 발생하는 경우가 많기에 바로 예제를 보면서 풀어보도록 하자.

 

 

 

 

 

상미분 방정식의 예제로 유명한 여우와 토끼의 추적문제를 예시로 함께 보도록 하자.

출처 - 매트랩 한방에 끝내기

식만 본다면 변수들이 많아졌을 뿐 여전히 1차 상미분 방정식이다. 즉 ordinary differential equation이기에 우리가

 

앞에서 배운 형식 그대로 충분히 풀 수 있다는 것이다. 

 

단 myode에서 넘겨주어야 할 변수 값이 dy1 dy2 2개라는 것이 다른 점이다. 

 

dy1 dy2를 제외하면 그저 복잡한 식을 간단하게 나타내기 위한 함수식들이기에 단순 계산이다. 

 

새로운 방법을 도입한것이 아니고 복잡한 식을 matlab으로 옮겨 적은것 뿐이니 코드를 참고하여 연습해보도록 하자.

 

 

 

r을 미분된 식을 편하게 구하기 위해 diff를 이용하여 미분된 식을 구하는 파일을 만들어주었다.

이 파일을 실행하면 이렇게 함수가 나온다

 

 

첫번째 풀이와 다르게 주의해야 할 점은 이떄는 dy의 식이 행렬로 만들어진다는 것이다.

뒤에서 2차 미분방정식을 풀때 더 하겠지만 대부분 return되는 dy 값은 행렬안에 함수를 넣어서 돌려주는 형태로 진행된다.

 

 

 

 

 

2. Robertson 화학반응 모델의 풀이

 

이번에도 마찬가지로 1차 상미분 방정식이다. 

그러나 서로 변수가 맞물리면서 연립 미분 방정식의 형태로 나왔다.

다소 복잡하고 어려워 보일 수 있지만, 우리가 기억해야 할 것은 미분방정식을 나타내는  myode 함수에 무엇을 포함 시켜야 하는가? 이다

위의 식에서 미분된 변수는 dy1 dy2 dy3 3개 이므로 위의 3개의 변수를 포함시켜 주면 된다.

 

 

dy는 3,1 행렬로 만들어야한다

 

 

예제를 몇개 풀어보았는데, 정해진 형식에 맞춰서 식만 만들어주면 된다.

처음에는 어렵지만 형식에 맞추기만 하면 어렵지 않다!

관련글 더보기

댓글 영역