카테고리: 원하는 부분만 골라! 골라!
순서: 남들이 많이 봤던 내용들만 먼저! 먼저!
키워드 검색: 원하는 내용만 뽑아! 뽑아!
[매트랩] 초기값 행렬 차원
MATLAB
작성자
Godjunpyo (관리자)
작성일
2021-06-29 13:25
조회
612
x' + 5x' + 4x = sin(10t)라는 2차미분방정식을 풀이하는 과정에서
다음과 같이
적분이 되야 할 함수 (dxdt) 는 2X1의 행렬이잖아용?
그런데
y0에 해당하는... 그러니까 적분이 되고 난(?) 함수의 초깃값은
1X2의 행렬이잖아용..??
이 두개의 차원은 달라도 되는 것일까요??
(이 두개의 차원이 꼭 일치해야 한다고 교수님께서 말씀하신 적은 없었지만)
그렇다면
그 두개의 차원을
완전히 제맘대로 설정해도 되는 것일까요?? 그냥 원소?의 갯수만 맞춰서..?
그리고 제가 두번째 사진에서 하이라이트 한 부분
[initial_x initial_dxdt]
이것을
[initial_x ; initial_dxdt]
로 해도 똑같이 잘 돌아가더라구요..??
그렇다면 정말 차원을 아무렇게나 설정해도 되는 건가요??
#차원 #행렬 #초기값 #초깃값 #dxdt
다음과 같이
적분이 되야 할 함수 (dxdt) 는 2X1의 행렬이잖아용?
그런데
y0에 해당하는... 그러니까 적분이 되고 난(?) 함수의 초깃값은
1X2의 행렬이잖아용..??
이 두개의 차원은 달라도 되는 것일까요??
(이 두개의 차원이 꼭 일치해야 한다고 교수님께서 말씀하신 적은 없었지만)
그렇다면
그 두개의 차원을
완전히 제맘대로 설정해도 되는 것일까요?? 그냥 원소?의 갯수만 맞춰서..?
그리고 제가 두번째 사진에서 하이라이트 한 부분
[initial_x initial_dxdt]
이것을
[initial_x ; initial_dxdt]
로 해도 똑같이 잘 돌아가더라구요..??
그렇다면 정말 차원을 아무렇게나 설정해도 되는 건가요??
#차원 #행렬 #초기값 #초깃값 #dxdt
안녕하세요.
질문해주신 내용에 대해 답변을 먼저 드리자면,
- 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 script]
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 script인 경우,
[function script: 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별로 정리를 해줘야지
;를 붙이지 않으면 오류가 나오게 됩니다.