python - 非交换函数乘积的导数
问题描述
如果我在 SymPy 中使用函数并调用 diff 方法,那么交换属性就会被忽略。
h = Function('h',real=True,commutative=False)(t)
R = Function('R',real=True,commutative=False)(t)
print(diff(R*h,t))
# returns:
R(t)*Derivative(h(t), t) + h(t)*Derivative(R(t), t)
我在这里做错了吗?我只希望输出总是在前面有 R ..
解决方案
这可以说是 SymPy 中的一个错误,它根据函数的 arguments 确定函数的交换性。另请参阅此评论。它与导数无关:只需打印h*R
就会暴露错误(表达式显示为R(t)*h(t)
)。
在改变这种行为之前,似乎达到预期结果的唯一方法是声明t
为不可交换的:
t = Symbol('t', commutative=False)
h = Function('h', real=True)(t)
R = Function('R', real=True)(t)
print(diff(R*h, t))
印刷
R(t)*Derivative(h(t), t) + Derivative(R(t), t)*h(t)
推荐阅读
- java - java中的示例OAuth 1.0实现
- php - phpMyAdmin 表格外观看起来很宽很拉长
- firebase - 如何使用 RxJava 登录 Firebase 用户
- java - 测试容器:忽略来自 Dockerfile 的父“EXPOSE”指令
- javascript - 如何为来自特定促销的访问者添加将在标题中显示的自定义代码
- sql - 提高 SQL 视图连接多个表的速度,所有表都带有主键
- android - 如何使用 JFrog 平台设置 Android 工件?
- python - AttributeError:“str”对象在 MLPRegressor 和 random_state 中没有属性“decode”
- javascript - React/React-spring:如何从 html 流中获取元素/组件?
- joi - joi.label ,这种 joi 模式验证方法有什么作用