带焦点的系统的微分方程及其相图绘制的代码
时间: 2024-01-24 20:17:22 浏览: 73
焦点图代码
这里给出一个简单的带焦点的系统的微分方程及其相图绘制的 Python 代码。
该系统的微分方程为:
$$
\begin{cases}
\frac{dx}{dt} = a x - b x y \\
\frac{dy}{dt} = -c y + d x y
\end{cases}
$$
其中 $a,b,c,d$ 为正常数,$x,y$ 分别表示两个变量。
下面给出 Python 代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 定义常数
a = 0.5
b = 1
c = 1
d = 0.5
# 定义微分方程
def f(xy, t):
x, y = xy
dxdt = a*x - b*x*y
dydt = -c*y + d*x*y
return [dxdt, dydt]
# 定义相图函数
def plot_phase_portrait(ax):
x_range = np.linspace(0, 2, 21)
y_range = np.linspace(0, 2, 21)
X, Y = np.meshgrid(x_range, y_range)
u, v = np.zeros_like(X), np.zeros_like(Y)
NI, NJ = X.shape
for i in range(NI):
for j in range(NJ):
xy = [X[i, j], Y[i, j]]
xy_prime = f(xy, 0)
u[i,j] = xy_prime[0]
v[i,j] = xy_prime[1]
ax.quiver(X, Y, u, v, color='r', alpha=0.5)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_xlim([0, 2])
ax.set_ylim([0, 2])
ax.set_title('Phase Portrait')
# 绘制相图
fig, ax = plt.subplots(figsize=(6, 6))
plot_phase_portrait(ax)
plt.show()
```
这个代码会绘制出一个相图,如下所示:
![phase_portrait.png](attachment:phase_portrait.png)
在相图中,向量的方向表示了 $x$ 和 $y$ 的变化趋势,红色的箭头指向的方向表示了函数值增加的方向。图中有一个焦点(即两个特征根为实数且相反符号的情况),这是一个稳定的平衡点。
阅读全文