python - 如何从 python 中的 ODE 获取常量?

标签 python numpy sympy ode differential-equations

我的任务是根据 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)

最佳答案

如果您想要与给定 tv(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/

相关文章:

python - GTK 焦点链

python - 行元素之间变化的滚动计数

python - 使用 sympy 提取嵌套分数的分子和分母

python - numpy interp 函数 - 如何找到给定 y 值的 x 值?

python - 根据列排列/排序 Pandas 数据框数据中的数据

sympy 解决给出了错误的结果

python - 同情 : expression simplification

python - 减去时间并得到以年为单位的输出,四舍五入到小数点后两位

python - 构建 [0, 0, ..., 0] 的最简单方法(有 n 个零)

datetime - 在 pandas/numpy 中获取每个月的具体最后一天