2014-11-18 2 views
0

솔루션 y (t) = e^(tA) * y (0)를 갖는 y '= A * y (t)의 시스템이 주어진다면, 여기서 e^A는 지수 지수 즉 n = 0에서 A^n/n의 무한대까지의 합계), 행렬 A의 값과 y의 초기 값을 주어진 솔루션을 계산하기 위해 matlab을 어떻게 사용합니까?Matlab의 ODE 계산

즉, 주어진 A = [-2.1, 1.6; -3.1, 2.6], y (0) = [1; 2], y (t) = [y1; y2] t = [0 : 5]에서 matlab에?

나는

t = 0:5 
[y1; y2] = expm(A.*t).*[1;2] 

같은 것을 사용하려고 나는 동의하지 인해 크기에 곱셈 계산의 오류를 찾는거야.

답변

1

지수 지수는 평방 매트릭스에 대해 정의됩니다. 감쇠 coefs에 시간 벡터를 곱하려고 시도하면 원하는 것을 얻을 수 없습니다 (슬라이스별로 지수화 된 3D 행렬이어야 함).

A = [-2.1, 1.6; -3.1, 2.6]; 

t = 0:5; 
n = numel(t); %'number of samples' 

y = NaN(2, n); 
y(:,1) = [1;2]; 


for k =2:n 
    y(:,k) = expm(t(k)*A) * y(:,1); 
end; 

figure(); 
plot(t, y(1,:), t, y(2,:)); 

MATLAB 배열 즉 1

에서 색인 참고 : 간단한 방법의

하나는이 것