본문 바로 가기

학습 Q&A

강의 내용 궁금증! 교수님이 직접 답변 드립니다

  • 홈
  • 교수소개
  • 공학계열
  • 권준표 교수님
  • 학습 Q&A

ic_qna.png

강의 범위를 벗어난 질문은 답변이 어렵습니다.
비방, 욕설 등 게시판 성격과 무관한 내용은 사전 고지 없이 삭제됩니다.
답변 완료된 게시글은 수정 및 삭제 불가합니다.

kwonjunpyo_03.png

게시판 글보기
제목 답변완료 입력인수부족 메세지
질문유형 강좌내용 교수님 권준표
과목 매트랩 강좌명
작성자 백*민 (s******9) 등록일 2018-07-21 11:57
첨부파일

[1-3] 48강: 상미분방정식의 활용, 기호 상미분방정식 풀이(dsolve)에서

 

function dy = reac(t,y)

dy = [-0.04*y(1)+10^4*y(2)*y(3);

       0.04*y(1)-10^4*y(2)*y(3)-3*10^7*y(2)^2;

       3*10^7*y(2)^2];

 

라는 Robertson 화학반응 모델을 푸는 과정이 있는데요.

 

첨부파일에서 보듯이, 저장을 하면 입력인수가 부족하다고 합니다.

하지만 ode45함수를 쓰면 책에 있는대로, 말씀하신대로 실행은 잘 되고요.

 

t가 dy 함수에 없어서 경고 메세지가 표시되었던 것 같은데,

암묵적으로 `y는 t에 관한 식이다`라고 인식해서 그런 것인가요?

 

강의 항상 감사드립니다.

확인부탁드립니다.
 

답변 완료된 질문과 답변은 수정 및 삭제가 불가합니다.

댓글
0
권*표 교수님

MATLAB function(reac.m)에서 t와 y가 인수로 있는데 그냥 함수만 실행시키면 입력인수가 부족하다고 나오게 됩니다. 

ode45함수는 기본적으로 [t,y] = ode45(odefun,tspan,y0)의 형식을 갖습니다. 

 

교재에 나와있는 것처럼 solreac.m이라는  안에서 ode45를 작성해줘야 미분이 되는 겁니다. 

 

solreac.m에서의 ode45는

odefun = reac.m이 되는 것이고 (@reac으로 표현)

tspan = [0 3]

y0 = [1;0;0]

으로 구성되어 있는 상태죠.

 

함수만 실행시키면 안되고, 그 함수를 불러서  상에서 실행시켜줘야 계산이 되겠습니다.

  • 2018-07-23
  • 2024-12-12 수정