You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python绘制非线性ODE系统相图异常,请求技术支持

问题排查与修正方案

1. 代码中的语法错误

你的values数组定义末尾缺少一个右括号,会直接导致运行报错:

# 错误写法
values = np.array([[0.01,0.01], [0.01,2.01], [1.51, 0.01], [1.01,1.01])
# 修正后
values = np.array([[0.01,0.01], [0.01,2.01], [1.51, 0.01], [1.01,1.01]])

2. 相图绘制的核心问题

仅用4个定点附近的初始点,无法覆盖相平面的所有流动区域;且只模拟正向时间(t从0到15),无法展示鞍点等特殊定点的完整轨迹结构。另外,代码未给轨迹添加标签,导致图例显示为空。

3. 修正后的完整代码

以下代码包含语法修复、多区域初始点、正反时间模拟及方向场绘制,可还原预期相图:

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

# ODE系统定义
def f(u, t):
    x, y = u
    dxdt = x * (3 - 2*x - y)
    dydt = y * (2 - x - y)
    return np.array([dxdt, dydt])

# 扩展初始点:覆盖相平面不同区域,包含定点附近及典型流动区域
initial_points = [
    [0.01, 0.01], [0.01, 2.01], [1.51, 0.01], [1.01, 1.01],
    [0.5, 0.5], [2, 0.5], [0.5, 1.5], [2, 1], [1, 0.5]
]

# 同时模拟正向和反向时间,展示完整相图轨迹
t_forward = np.linspace(0, 15, 1000)
t_backward = np.linspace(0, -15, 1000)

plt.figure(figsize=(8, 6))

for i, (x0, y0) in enumerate(initial_points):
    # 绘制正向时间轨迹
    sol_forward = odeint(f, [x0, y0], t_forward)
    plt.plot(sol_forward[:,0], sol_forward[:,1], color="black", alpha=0.7, label=f"轨迹{i+1}" if i==0 else "")
    # 绘制反向时间轨迹(展示鞍点的流出/流入方向)
    sol_backward = odeint(f, [x0, y0], t_backward)
    plt.plot(sol_backward[:,0], sol_backward[:,1], color="black", alpha=0.7)

# 绘制方向场,直观展示向量场分布
x = np.linspace(0, 2, 20)
y = np.linspace(0, 2.5, 20)
X, Y = np.meshgrid(x, y)
DX, DY = f([X, Y], 0)
plt.quiver(X, Y, DX, DY, color='gray', alpha=0.5)

# 标记所有定点
fixed_points = [(0,0), (0,2), (1.5,0), (1,1)]
for (px, py) in fixed_points:
    plt.scatter(px, py, color='red', s=50, zorder=10, label='定点' if (px,py)==(0,0) else "")

plt.ylabel("Sheeps")
plt.xlabel("Rabbits")
plt.legend(loc="upper right")
plt.xlim(0, 2)
plt.ylim(0, 2.5)
plt.show()

4. 关键优化说明

  • 补全语法错误,确保代码可正常运行
  • 扩展初始点覆盖相平面主要流动区域,还原完整相图结构
  • 增加反向时间模拟,展示鞍点的双向轨迹特征
  • 添加方向场和定点标记,提升相图可读性与信息完整性

内容的提问来源于stack exchange,提问作者Leo_Miche

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 20:05:38