Sympy 用 subs 替换不正确
Sympy incorrect substitution with subs
q1 = Function('q1')(t)
f=cos(q1).diff(t)
f.subs(q1,pi/2)
我有一个 function f = -sin(q1)*q1'
,我想在 q1=pi/2
时评估它。我希望得到一个答案:-(q1)' 但我得到的是:-0。
因此,不仅参数 q1 被替换,而且它的时间导数也变为零,因为 q1 现在是一个常数。
我在这里使用错误的方法吗?
在给定的示例中,Sympy 的替换给出了正确的答案,因为我们试图替换 q1(t) = pi/2
,一个常量函数。所以它的导数必然是0
。只有当 q1
和 q1'
彼此独立时,答案 -Derivative(q1(t),t)
才是正确的,就像在变分法中一样。在这种情况下,最好使用两个不同的变量——一个用于 q1
,另一个用于 q1'
。所以,如果我们已经知道函数 f
最好直接定义它而不是像
那样尝试推导它
p, q, t = symbols('p, q, t')
f = -sin(p)*q
f.subs( p, pi/2)
如果q1
和q1'
相互独立,这应该是正确的替换方式。
q1 = Function('q1')(t)
f=cos(q1).diff(t)
f.subs(q1,pi/2)
我有一个 function f = -sin(q1)*q1'
,我想在 q1=pi/2
时评估它。我希望得到一个答案:-(q1)' 但我得到的是:-0。
因此,不仅参数 q1 被替换,而且它的时间导数也变为零,因为 q1 现在是一个常数。
我在这里使用错误的方法吗?
在给定的示例中,Sympy 的替换给出了正确的答案,因为我们试图替换 q1(t) = pi/2
,一个常量函数。所以它的导数必然是0
。只有当 q1
和 q1'
彼此独立时,答案 -Derivative(q1(t),t)
才是正确的,就像在变分法中一样。在这种情况下,最好使用两个不同的变量——一个用于 q1
,另一个用于 q1'
。所以,如果我们已经知道函数 f
最好直接定义它而不是像
p, q, t = symbols('p, q, t')
f = -sin(p)*q
f.subs( p, pi/2)
如果q1
和q1'
相互独立,这应该是正确的替换方式。