声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4672|回复: 17

[编程技巧] 在matlab中如何对一个表达式求导?

[复制链接]
发表于 2008-10-8 16:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
例如:
t=0:100;
Js=-inv(A+B)*C(A,B,C是矩阵且是角度(u(i))的函数,角度是时间t的函数);

现在要求Js的导数,该怎么求呢??

我觉得在matlab中,求逆就是一个非常复杂的事情,如果再对逆求导,就更复杂了,求高手赐教解决办法。(直接解也行,绕过去也行,只要能把这个问题解决了。)

不胜感谢!!!
回复
分享到:

使用道具 举报

发表于 2008-10-8 17:55 | 显示全部楼层
Js对谁的求导?
 楼主| 发表于 2008-10-8 18:20 | 显示全部楼层

回复 沙发 sigma665 的帖子

应该是在每个时间点对 t  求导
 楼主| 发表于 2008-10-8 23:16 | 显示全部楼层
或者是这样一个问题:如何对一个矩阵的逆 求导??这里矩阵的逆相当复杂,郁闷了好久了。。。

请教!!
发表于 2008-10-9 08:40 | 显示全部楼层

回复 地板 wxl789 的帖子

用数值求导啊
再复杂,算出来的是一组数
然后再中心差分求导
 楼主| 发表于 2008-10-9 09:11 | 显示全部楼层

回复 5楼 sigma665 的帖子

小西请说的具体点啊。。

用m文件编写程序该怎么实现呢?
直接用diff指令会报错的啊。

谢谢!
 楼主| 发表于 2008-10-9 16:49 | 显示全部楼层
再补充一点,这个应该是符号求导,不是数值求导。。。
直接用 diff 出来之后少掉了一维。
应该把t和u(i)声明为syms之后求导,这就和前边的数值运算相矛盾了,请教各位有遇到类似问题的吗??

急盼赐教。。
谢谢!!!
发表于 2008-10-9 20:27 | 显示全部楼层

回复 7楼 wxl789 的帖子

矩阵求导没试过,不知道行不行
一维的数组可以
发表于 2008-10-10 02:15 | 显示全部楼层
syms x
>> f = sin(x)/sqrt(5-4*cos(x))

f =

sin(x)/(5-4*cos(x))^(1/2)


>> f=-asin(f)

f =

-asin(sin(x)/(5-4*cos(x))^(1/2))


>> diff(f)

ans =

-(cos(x)/(5-4*cos(x))^(1/2)-2*sin(x)^2/(5-4*cos(x))^(3/2))/(1-sin(x)^2/(5-4*cos(x)))^(1/2)


>> simplify(ans)

ans =

-(-5*cos(x)+2*cos(x)^2+2)/(-5+4*cos(x))/(5-4*cos(x))^(1/2)/(-(cos(x)-2)^2/(-5+4*cos(x)))^(1/2)


>> simple(ans)

.........................................
........................................

ans =

(2*cos(x)-1)/(-5+4*cos(x))


>> pretty(ans)

                                 2 cos(x) - 1
                                 -------------
                                 -5 + 4 cos(x)

评分

1

查看全部评分

发表于 2008-10-10 08:15 | 显示全部楼层

回复 9楼 科技在线 的帖子

我看他的表达式会很复杂,符号求估计会很慢
 楼主| 发表于 2008-10-10 10:22 | 显示全部楼层

回复 9楼 科技在线 的帖子

非常感谢。。。

正如小西所说的,我的表达式很复杂,而且,还是未知的。
如例中的 Js  是角度的函数,角度的具体表达式在 Js  表达式求出后才能给出。。。

请问这个该怎么办呢???
发表于 2008-10-11 06:39 | 显示全部楼层
建议符号运算改用maple或者Mathematica来做吧

评分

1

查看全部评分

 楼主| 发表于 2008-10-11 18:43 | 显示全部楼层

回复 12楼 happy 的帖子

感谢教授。。

前边的公式就是用maple求的表达式,但运算这个的时候直接死掉,没反应了。。。

所以想想是否可用matlab直接用数值方法算。。。

到现在还么有解决。

现在的思路就是把 t 和 角度(u(i)) 看做符号求导,但具体的表达式又没有。。。
该怎么解决呢???

希望有遇到相似问题的前辈提供思路。。。
谢谢!!!
发表于 2008-10-12 20:35 | 显示全部楼层

回复 13楼 wxl789 的帖子

我觉得加入太复杂,用maple或者其他的软件计算出来都比较麻烦(书写上比较麻烦)。所以还是考虑一下手动解析上有没有可能,因为我曾经也有你这样的想法,但是最后还是考虑手动了
 楼主| 发表于 2008-10-12 21:25 | 显示全部楼层

回复 14楼 无水1324 的帖子

谢谢无水。。

我觉得现在可以暂时放弃了。。
改用其他方法做。。

解析方法在混沌中应用的好像不多。
在推导公式过程中,我已经尝试着故意避开这个,但还是没有绕掉。。。:@(

你说的手动是什么意思呢?如果是让软件算就很复杂,手动算不是更烦吗?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-4 23:19 , Processed in 0.084679 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表