24小时热门版块排行榜    

查看: 2636  |  回复: 12

wangxingye

新虫 (小有名气)

[求助] MATLAB计算expm(At)的定积分 已有1人参与

想用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),
不是一个数值解,不知道是怎么回事,  希望高手指点一下!)
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangxingye

新虫 (小有名气)

大神们来指导一下可好!
2楼2017-06-25 19:48:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huab1984666

新虫 (著名写手)

int是数值积分吗?为什么叫数值解?
春风又绿江南岸,明月何时照我还。
3楼2017-06-26 19:39:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangxingye

新虫 (小有名气)

引用回帖:
3楼: Originally posted by huab1984666 at 2017-06-26 19:39:55
int是数值积分吗?为什么叫数值解?

是积分,数值解就是解是一个具体值。

发自小木虫Android客户端
4楼2017-06-27 19:14:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huab1984666

新虫 (著名写手)

引用回帖:
4楼: Originally posted by wangxingye at 2017-06-27 19:14:36
是积分,数值解就是解是一个具体值。
...

int求积分是 符号积分,数值解用quad,quadl,都可以啊
春风又绿江南岸,明月何时照我还。
5楼2017-06-27 19:37:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huab1984666

新虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★
wangxingye: 金币+6, ★★★很有帮助 2017-07-01 11:37:44
A=[1 1 2 1; 0 1 2 1; 1 0 1 2; 0 1 1 1];
[V,D]= eig(A*t);
expm_At=V*diag(exp(diag(D)))/V;
ZT=V.*diag(exp(diag(D)))./V;
zx=int(ZT,t,0,5)
zx1=double(zx);
____
1.50089258542985        0        0        0
0        1.50089258542985        0        0
0        0        77.7866509151555        0
0        0        0        40294095.5889382

(2)
inlin=@(t) expm(A.*t);
xx=quadv(inlin,0,5,1e-8);
xx=
7152252.40339041        9990710.36498105        19794658.2521338        20498437.4094611
5253863.52224002        7339014.88121874        14540794.7298937        15057811.4093927
5353997.00461222        7478838.96351027        14817853.8447290        15344707.3695933
3832800.72066930        5353997.00461222        10607860.5268522        10985053.1240597
春风又绿江南岸,明月何时照我还。
6楼2017-06-27 20:03:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huab1984666

新虫 (著名写手)

不知道对不对。
春风又绿江南岸,明月何时照我还。
7楼2017-06-27 20:07:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangxingye

新虫 (小有名气)

引用回帖:
6楼: Originally posted by huab1984666 at 2017-06-27 20:03:02
A=;
= eig(A*t);
expm_At=V*diag(exp(diag(D)))/V;
ZT=V.*diag(exp(diag(D)))./V;
zx=int(ZT,t,0,5)
zx1=double(zx);
____
1.50089258542985        0        0        0
0        1.50089258542985        0        0
0        0        77.7866509151555        0
0        0         ...

不好意思,别的事耽搁了,没能及时回复您!
还有几点不太明白,
一是expm_At=V*diag(exp(diag(D)))/V;  这句执行了一个多小时,MATLAB一直是busy,
得不到结果,这与我的软件是2012有关吗?还是别的其他原因?
二是为什么要按位运算求ZT,对ZT求积分,不应该是对expm_At求积分吗?
三是(2)中inlin=@(t) expm(A.*t);为什么也是用的按位乘法,是对于变量t就要用按位运算,而不能直接A*t吗?
我试了一下A*t运算报错。
还望您能指导一下!
8楼2017-07-01 11:46:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangxingye

新虫 (小有名气)

没有说清楚,这个没有报错,是另外真实要用的一个A,计算时报错,不知道是不是A*t和A.*t不同造成的。
9楼2017-07-01 11:50:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huab1984666

新虫 (著名写手)

引用回帖:
9楼: Originally posted by wangxingye at 2017-07-01 11:50:39
没有说清楚,这个没有报错,是另外真实要用的一个A,计算时报错,不知道是不是A*t和A.*t不同造成的。

我也不知道结果是哪个形式的。我的也是。不知道这两个结果哪个更合适,有没有参考的。我才想办法改进。
春风又绿江南岸,明月何时照我还。
10楼2017-07-02 16:14:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wangxingye 的主题更新
信息提示
请填处理意见