公告:本站正式转型为非交互式静态网站!
转型:本站将通过笔记和博客的形式继续为大家服务,关于 Mathematica 问答服务请移步至QQ群:365716997
联系:如有问题请联系QQ群管理员,或发送邮件至:lixuan.xyz@qq.com。
感谢:最后非常感谢大家多年来的支持与帮助!
参考《互联网跟帖评论服务管理规定》《中华人民共和国网络安全法》《网络信息内容生态治理规定》《互联网用户账号信息管理规定》

—— 2022-11-27

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

语法高亮:在编辑器中点击

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

支持LaTex数学公式
行内公式标识符:\$ 或“$\backslash ($”+“$\backslash )$”,
行间公式标识符:\$\$ 或 “$\backslash [$”+“$\backslash ]$”

社区建议QQ群:365716997

分类

+3 投票
2.3k 浏览

在这里有这样一个行列式

y[t] = SparseArray[{{i_, 1} -> Subscript[y, i][t]}, {5, 1}]

我用Map对其中的每一项求三阶导数

aa = D[#, {t, 3}] & /@ y[t] // MatrixForm

得到的确是这种结果

{{Derivative[1][Subscript[y, 1]][t]}, 
 {Derivative[1][Subscript[y, 2]][t]},
 {Derivative[1][Subscript[y, 3]][t]}, 
 {Derivative[1][Subscript[y, 4]][t]}, 
 {Derivative[1][Subscript[y, 5]][t]}}

我知道通过

aa = D[#, {t, 3}] & @@@ y[t] // MatrixForm

可以得到正确的解

{Derivative[3][Subscript[y, 1]][t],
 Derivative[3][Subscript[y, 2]][t], 
 Derivative[3][Subscript[y, 3]][t], 
 Derivative[3][Subscript[y, 4]][t], 
 Derivative[3][Subscript[y, 5]][t]}

上面的错误是由于我对公式的作用层出不对,但是为什么,第一种方法在错误的情况下依然会出结果呢?

 

用户: 小菜220 (66 分)
修改于 用户:小菜220
我觉得这是个Bug,把y[t]给Normal之后第一种方法是可以出正确结果的。不妨去SE问问。
原来的号丢失 重新注册了下 在SE提问了,我感觉mma应该告诉我命令是错误的不能运算,但这里返回的是错误的结果应该算bug?
我发邮件给support了
在SE上的提问也得到了一种解决方案,就是D[y[t], t, t, t] // MatrixForm 这种写法,http://mathematica.stackexchange.com/questions/115310/something-wrong-when-i-apply-derivative-on-a-sparsearray?noredirect=1#comment312741_115310

1个回答

+2 投票

问题基本可以确认出现在SparseArray上,想要正确结果加上Normal就可以了。观察以下:

得到一阶导数是因为Mathematica的bug,已经由support确认

用户: happyfish (1.8k 分)
修改于 用户:happyfish
不过Normal这种形式学到了。
我在SE上编辑了你这部分的答案, 因为是中文网站我就没有贴这里的链接,我在这只会你一下。
明天看看support怎么说
List and matrix operations are typically set up to work as they do on Normal[SparseArray[\[Ellipsis]]].
理论上讲和普通列表在矩阵操作上应该是没有区别的,这事情看起来像是bug。
是的,mma里面手动输入的话 矩阵就是一个二层的列表吧
...