How to find state transition matrix with symbolic parameters efficiently

223 views (last 30 days)
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?
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]

Accepted Answer

Arnab Sen
Arnab Sen on 23 Feb 2016
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];
>>TM=(V*diag(exp(diag(D))))* inv(V)
For more details, refer to the following link:

More Answers (1)

xianjie Zhou
xianjie Zhou on 23 Feb 2016
Hi Arnab Sen, thanks for the answers. It still take a bit long but can achieve the solution in the end.

Community Treasure Hunt

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

Start Hunting!