我正在画一个函数的导数,虽然画实际的函数是可以的,但我不能画它的导数。
# Solve u function for t
eq = m*sp.diff(u, t, 2) + c*sp.diff(u, t) + k*u
u_sol = sp.dsolve(eq, u).subs({k: sol1[0][1], c: sol1[0][2]})
# Plot the graph of u(t) (assuming constants are 1)
# t needs to start from 0
assumed_func1 = u_sol.rhs.subs({C1: 1, C2: 1})
plot(assumed_func1, xlim=(0, 10), ylim=(-5, 5), title="u(t)") # This works
assumed_func2 = sp.diff(u_sol, t).subs({C1: 1, C2: 1})
plot(assumed_func2, xlim=(0, 10), ylim=(-5, 5), title="u'(t)") # This does not work
试图画出一个函数的微分。但我得到了这个错误:
function.py", line 1339, in __new__
raise ValueError(filldedent('''
ValueError:
Can't calculate derivative wrt -10.0000000000000.
我认为,当t取负值时会出现问题。我尝试使用
xlim=(0, 10)
但它没有改变。
1条答案
按热度按时间goqiplq21#
u_sol
是Equality
类型的对象,它具有左手侧和右手侧。当您执行这段代码时,我假设您希望对
u_sol
的两端都应用派生函数,但遗憾的是,SymPy目前无法做到这一点:所以你得到了等式的导数,而sympy不知道怎么画。
您需要做的是仅区分
u_sol
的右侧:然后,plot命令应该起作用。