首页 > 解决方案 > 使用相关参数求解和绘制 ODE

问题描述

我正在编写一些代码,这里有以下方程。问题是我非常想解决多个 k 值以及每个 k 值的相平面/颤动图。有人可以帮帮我吗?到目前为止,这是我为求解器所做的:

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint

def model(X, t):
    x = X[0]
    y = X[1]
    dxdt = k*x - y
    dydt = x + y
    return [dxdt, dydt]
#Initial state 
X0 = [1,1]

#Time
t = np.linspace(0,10)

X = odeint(model, X0, t)

这就是我到目前为止的绘图:

x = X[:,0]
y = X[:,1]

plt.plot(x,y)

请注意,我不是要简单地解决系统问题!我试图通过改变多个值(k)并绘制结果方程来解决它。

标签: pythonmatplotlibscipyodescientific-computing

解决方案


通过更多的计算工作,您可以使用

xvalues, yvalues = np.meshgrid(np.arange(-2, 2, 0.02), np.arange(-2, 2, 0.02))
Ks = np.linspace(-1, 1, 12)

plt.subplots_adjust(hspace=0.4,wspace=0.4)
for j,kix in enumerate(Ks):
    xdot, ydot = model([xvalues,yvalues],0 , kix)
    plt.subplot(3,4,j+1)
    plt.streamplot(xvalues, yvalues, xdot, ydot, density=0.5)
    plt.title("k=%.2f"%kix)

plt.show()

要得到

在此处输入图像描述


推荐阅读