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

如何定义适配Scipy solve_bvp的向量输入函数?

使用Scipy的solve_bvp定义一阶微分方程的RHS函数

你的目标是实现微分方程 $y' = \frac{1+y^2}{2(1-x)}$ 的右侧(RHS)函数,适配Scipy的solve_bvp接口。对比你给出的麻疹模型示例(三阶系统),你的问题是一阶常微分方程,函数结构会更简单,核心是理解solve_bvp对RHS函数的输入输出要求:

  • 输入参数:x是自变量的数组(形状为(m,),m为采样点数);y是状态变量的二维数组(形状为(n, m),n是方程阶数,这里n=1)
  • 输出:返回状态变量的导数数组,形状必须和y一致(即(n, m))

适配的RHS函数实现

import numpy as np

def fun_rhs(x, y):
    # y[0] 对应微分方程中的y(x),因为是一阶系统,仅一个状态变量
    dy_dx = (1 + y[0] ** 2) / (2 * (1 - x))
    # 用np.vstack将一维结果转为二维数组,满足solve_bvp的输出要求
    return np.vstack((dy_dx))

关键说明

  1. 向量化运算:y是二维数组,y[0]取出对应y(x)的所有采样点值,运算时会自动对每个x点计算导数,符合solve_bvp的向量化要求
  2. 输出格式:必须返回二维数组,所以用np.vstack把一维的dy_dx转为(1, m)的形状,和输入y的结构匹配

这个函数可以直接传入solve_bvp使用,配合你定义的边界条件即可求解该微分方程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:15:27