我的任务是根据 ODE 计算常数。所以,我不想绘制函数,我只想得到微分方程的结果,然后我需要根据这个假设计算c:当t0=0时v0=120。 我已经开始在 sympy 模块的帮助下实现,并成功得到以下结果:[120.000000000000 -2.23606797749979/tanh(C1)] 但是,在那之后我不知道如何才能获得c1。可能吗?
import inline as inline
import sympy as sp
import numpy as np
from scipy import integrate
import matplotlib.pyplot as plt
from sympy import *
from sympy import lambdify
t=Symbol('t')
v = map(Function, 'v')
v=Function('v')
k=2
g=10
i=dsolve(Eq( Derivative(v(t), t)+k*v(t)**2, g), v(t))
j=i.subs(v(t),120).subs(t,0).evalf()
print(i)
print(j)
h=j.args
k=np.array(h)
最佳答案
如果您想要与给定 t
和 v(t)
的值相对应的 C1
值,您可以先求解它然后代入已知值:
>>> C1 = [_ for _ in i.free_symbols if _.name == 'C1'][0]
>>> vals = solve(i, C1)
>>> [_.subs(v(t),120).subs(t,0).n(2) for _ in vals]
[-0.019 + 3.1*I, -0.019]
关于python - 如何从 python 中的 ODE 获取常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58361451/