python - 特定点python上的微分方程的解
问题描述
我有一个微分方程:
from scipy.integrate import odeint
import matplotlib.pyplot as plt
# function that returns dy/dt
def model(y,t):
k = 0.3
dydt = -k * y
return dydt
# initial condition
y0 = 5
# time points
t = np.linspace(0,10)
t1=2
# solve ODE
y = odeint(model,y0,t)
我想评估这个微分方程在两个不同点上的解。例如,我想要 y(t=2) 和 y(t=3)。
我可以通过以下方式解决问题:
假设您需要 y(2)。然后你,定义
t = np.linspace(0,2)
然后打印
print y[-1]
为了得到y(2)的值。但是我认为这个过程很慢,因为我需要再次做同样的事情来计算 y(3),如果我想要另一个点,我需要再次做同样的事情。那么有一些更快的方法可以做到这一点吗?
解决方案
这不只是:
y = odeint(model, y0, [0, 2, 3])[1:]
即第三个参数只指定t
你想要返回的值。
作为打印结果的示例,我们只需遵循上述内容:
print(f'y(2) = {y[0,0]}')
print(f'y(3) = {y[1,0]}')
这给了我:
y(2) = 2.7440582441900494
y(3) = 2.032848408317066
这似乎与任何解决方案相同:
5 * np.exp(-0.3 * np.array([2,3]))
推荐阅读
- html - 粘性元素不在屏幕边缘开始
- c - 将字符串作为视觉对象添加到我的函数代码中
- amazon-web-services - 阻止 AWS VPC 的入站流量,但来自负载均衡器和选择地址的流量除外
- pine-script - Pine Script:绘制最后 10 根柱线中最低低点的线
- pandas - Pandas / Dask 阅读半表格文本
- javascript - 无法从 API 向元素添加事件侦听器
- c# - 有没有办法创建一个可以返回不同类型的方法,无论是 Predicate
或过滤器定义 ? - java - JAX-RS Bean 验证错误消息国际化
- api - 使用 curl 测试烧瓶休息。具有多个查询参数的 GET 请求
- pdf - 在不同 PDF 查看器中具有不同输出的 PDF(带阴影)