제목 | 답변완료 [MATLAB 한방에 끝내기 - Basic] 10강 25분~26분 / 초깃값 행렬의 차원..? | ||
---|---|---|---|
질문유형 | 강좌내용 | 교수님 | 권준표 |
과목 | 매트랩 | 강좌명 | |
작성자 | 정*연 (j*****2) | 등록일 | 2021-06-22 15:13 |
x` + 5x` + 4x = sin(10t)라는 2차미분방정식을 풀이하는 과정에서 다음과 같이 적분이 되야 할 함수 (dxdt) 는 2X1의 행렬이잖아용?
그런데
1X2의 행렬이잖아용..??
이 두개의 차원은 달라도 되는 것일까요?? (이 두개의 차원이 꼭 일치해야 한다고 교수님께서 말씀하신 적은 없었지만)
그렇다면 그 두개의 차원을 완전히 제맘대로 설정해도 되는 것일까요?? 그냥 원소?의 갯수만 맞춰서..?
그리고 제가 두번째 사진에서 하이라이트 한 부분 [initial_x initial_dxdt] 이것을 [initial_x ; initial_dxdt] 로 해도 똑같이 잘 돌아가더라구요..?? 그렇다면 정말 차원을 아무렇게나 설정해도 되는 건가요??
#차원 #행렬 #초기값 #초깃값 #dxdt 답변 완료된 질문과 답변은 수정 및 삭제가 불가합니다. |
- 댓글
- 0
안녕하세요.
질문해주신 내용에 대해 답변을 먼저 드리자면,
- function(ode45)에 해당하는 것은 차원을 확실하게 해주셔야 하고,
- ode45를 이용해서 값을 plot하는 스크립트에서는 ;의 여부가 중요하지 않습니다.
"help ode45"를 해보셨겠지만,
[t,y] = ode45(odefun,tspan,y0)
[t,y] = ode45(odefun,tspan,y0,options)
[t,y,te,ye,ie] = ode45(odefun,tspan,y0,options)
sol = ode45(___)
와 같이 질문하신 차원에 대한 값은
ode45에서 options에 해당하는데
이는 function이 자체적으로 구분해서 계산할 수 있는 것 같습니다.
즉, ode45 option의 경우
;를 붙이든 안 붙이든
결과값이 잘 나옵니다.
[ode45 ]
t=0:0.001:30;
initial_x = 0;
initial_dxdt = 0;
[t,x] = ode45(@myode4, t, [initial_x; initial_dxdt]);
-> [initial_x; initial_dxdt]은 option으로 초기값을 넣어주는 것인데 ;의 여부가 크게 상관 없습니다.
다만 function 인 경우,
[function : myode4]
function dxdt = myode4(t,x)
% x``+5x`+4x=sin10t
% x``=-5x`-4x+sin10t
dxdt_1 = x(2);
dxdt_2=-5*x(2)-4*x(1)+sin(10*t);
dxdt = [dxdt_1; dxdt_2];
여기에서 [dxdt_1; dxdt_2]는
실제 한번 그리고 두번 미분된 결과값을 지정하는 자리이기 때문에
;를 붙여서 column별로 정리를 해줘야지
;를 붙이지 않으면 오류가 나오게 됩니다.
- 2021-06-29
- 2024-12-12 수정