numeric solution to matrix ODE with matrix

I am now trying to solve a matrix ODE numerically, let's simplify my problem as follows:
%{ I don't know the best way to define a 4*4 matrix function%}
syms rho11(t) rho12(t) rho13(t) rho14(t);
syms rho21(t) rho22(t) rho23(t) rho24(t);
syms rho31(t) rho32(t) rho33(t) rho34(t);
syms rho41(t) rho42(t) rho43(t) rho44(t);
%{ rho is a 4*4 matrix, each element is a function of time %}
rho=[rho11, rho12, rho13, rho14;rho21, rho22, rho23, rho24;rho31, rho32, rho33, rho34;rho41, rho42, rho43, rho44];
%{ define constant matrix %}
s2p=zeros(4,4);s1p=zeros(4,4);
s2p(1,2)=1;s2p(3,4)=1;s1p(1,3)=1;s1p(2,4)=1;
init=zeros(4,4);init(2,2)=1;
%{now we need to solve the following ODE %}
d(rho)/dt=-(rho *s1p - rho *s2p);
%{initial condition:%} rho(0)=init
I know one way is to transform the matrix to a vector, but the actual equation I am doing is too complex to transform it myself. Can anybody tell me the code to make this transformation and solve the ODE? Thanks!

답변 (1개)

James Tursa
James Tursa 2016년 9월 26일

0 개 추천

Generally, the only thing you need to use for this is the reshape function. It doesn't matter how "complex" your matrix stuff is. E.g.,
% Define all of your matrix stuff here
% Reshape the matrix inputs into vectors
% Call ode with the vector inputs
% Reshape the ode vector outputs as desired.
And then in your derivative function
% function signature here (gets vector inputs from the solver)
% reshape the vector inputs to matrices as needed
% do your matrix operations
% reshape the matrix derivative into vector for output

댓글 수: 1

Jieyu You
Jieyu You 2016년 9월 26일
Thank you! Now I can transform my equation to y'(t)=A(y1,y2...yn), where y(t) is a vector. Can you give me more details on how to further transform it to y'(t)=A*y(t)?

댓글을 달려면 로그인하십시오.

카테고리

질문:

2016년 9월 26일

댓글:

2016년 9월 26일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by