How to find state transition matrix with symbolic parameters efficiently

Hi
I am going to find the state transition matrix of a 4x4 system. But matlab ran for a long time without giving a solution. Is there any other ways to find the solution?
Thanks
syms t
A=[-2.1 -0.98 -0.158 -2.05
2.22 -11.03 0 0
-27.64 0.19 -6.39 -82.6
0 0 1 0]
TM=expm(A*t)

 채택된 답변

Hi xianjie,
I tried to execute the code you provided and found the same issue that it's running long time without giving the output. I investigated into it and found that the function 'expm' is defined as:
>> [V,D] = eig(X)
>> expm(X) = V*diag(exp(diag(D)))/V
Now I found that the right matrix division 'mrdivide'('/') is taking long time. I am not sure why it's taking so long. However, right matrix division '/' can be approximated as matrix inverse 'inv' followed by matrix multiplication. That is, A/B can be approximated by the operation A*inv(B). So, as a workaround, you may consider the following code snippet to achieve the same functionality:
>>syms t;
>>A=[-2.1 -0.98 -0.158 -2.05
2.22 -11.03 0 0
-27.64 0.19 -6.39 -82.6
0 0 1 0];
>>X=A*t;
>>[V,D]=eig(X);
>>TM=(V*diag(exp(diag(D))))* inv(V)
For more details, refer to the following link:

댓글 수: 3

xianjie Zhou
xianjie Zhou 2016년 2월 23일
이동: Dyuman Joshi 2023년 12월 23일
Hi Arnab Sen, thanks for the answers. It still take a bit long but can achieve the solution in the end.
hi, what is t in the exp ?
Thank you so much! I tried 2x2 matrix I am pasting my code here.
syms t;
A=[0 1; -4 -5];
%State Transition matrix
X=A*t;
[V,D]=eig(X);
STM=(V*diag(exp(diag(D))))* inv(V)
Output
[ (4*exp(-t))/3 - exp(-4*t)/3, exp(-t)/3 - exp(-4*t)/3]
[(4*exp(-4*t))/3 - (4*exp(-t))/3, (4*exp(-4*t))/3 - exp(-t)/3]
Its correct!

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

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Operating on Diagonal Matrices에 대해 자세히 알아보기

질문:

2016년 2월 17일

이동:

2023년 12월 23일

Community Treasure Hunt

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

Start Hunting!

Translated by