计算expm(At)的定积分,A是4阶方阵,t是变量
想用MATLAB计算expm(At)的定积分,A是4阶方阵,t是变量。
随便取个简单的例子,比如A=[1 1 2 1; 0 1 2 1; 1 0 1 2; 0 1 1 1];
t的变化范围是[0, 0.05],如何用MATLAB计算expm(A*t)的积分值呢?
(Ps,我试着用int('expm(A*t)', 't', 0, 0.05)计算,输出的结果是int(expm(A*s), s == 0..1/20),
不是一个数值解,不知道是怎么回事, 希望高手指点一下!) 返回小木虫查看更多
今日热帖
A=[1 2;3 4];
syms t
eval(int(expm(A*t),t,0,0.05))
感谢您的帮助,我也试过这种方法,2*2的矩阵很快就能运行出结果,但是A如果是4*4的矩阵的话,MATLAB运行很长时间也出不来答案,一直busy,这个怎么解决?
换Mathematica。要不你问问我老大陈浩南?
惭愧啊,没用过Mathematica,不知道MATLAB能不能解决这个问题,如果你老大陈浩南能帮忙的话,那就更好了
[V,D]=eig(A*t)
耗时发生在求inv(V)上,看expm的表达式:
[V,D] = eig(X)
expm(X) = V*diag(exp(diag(D)))/V
/V=*inv(V),而V过于复杂。
要是简单求e对每个元素的指数,用exp(X)才对。
我按照你的方法试了一下,inv(V)耗时稍长,求exp(diag(D))耗时更长一些,但也还能算出来,
而求最耗时的是发生在积分int上,运行了半个多小时,一直busy,得不出结果,
而我的目的也是求expm(At)的积分,不是简单求e对每个元素的积分。
其实之前参考书上的解法也试了一下,和你的方法有些类似:
[V,D]=eig(A)
B=V*exp(A*t)*inv(V)
B=vga(B,6)
然后,手算了B中每个元素对t的定积分,但是得到的结果和正确答案相差很大,也不知道是哪里出了问题
,