pdeCoeff2D

首发版本:3.00.6.1

语法

pdeCoeff2D(xx, yy, [xy=0], [x=0], [y=0], [u=0], [source=0], [mass=1])

详情

构造二维偏微分方程(PDE)的算子形式(Operator-form)系数字典。

该函数将方程的各项系数(二阶偏导项、一阶偏导项、零阶项、源项、质量项)封装为求解器 pdeSolver 可识别的系数字典对象。返回结果可直接作为 pdeSolver 二维求解路径的 coeff 参数。支持常系数(标量)和变系数(函数)。

参数

xx 数值标量或函数,指定 x 方向二阶偏导项系数。

yy 数值标量或函数,指定 y 方向二阶偏导项系数。

xy 可选参数,数值标量或函数,指定交叉偏导项系数。默认值为 0。

x 可选参数,数值标量或函数,指定 x 方向一阶偏导项系数。默认值为 0。

y 可选参数,数值标量或函数,指定 y 方向一阶偏导项系数。默认值为 0。

u 可选参数,数值标量或函数,指定零阶项系数。默认值为 0。

source 可选参数,数值标量或函数,指定源项系数。默认值为 0。

mass 可选参数,数值标量或函数,指定质量项系数。默认值为 1。

注意:

  • 若系数为标量,必须为有限的有效值(即非 NULL、NaN 或 Inf)。

  • 若系数为函数,该函数必须接收 3 个参数(通常代表空间位置 x、y 和时间 t)。

  • 在求解阶段,mass 系数必须始终为正数且有限。

返回值

返回一个包含以下字段的字典(DICTIONARY):

  • type: STRING 标量,固定为 "operator2D"。

  • dim: INT 标量,固定为 2。

  • form: STRING 标量,固定为 "operator"。

  • mass: DOUBLE 标量或函数,为规范化后的 mass、默认值或原函数对象。

  • xx: DOUBLE 标量或函数,为规范化后的 xx 或原函数对象。

  • yy: DOUBLE 标量或函数,为规范化后的 yy 或原函数对象。

  • xy: DOUBLE 标量或函数,为规范化后的 xy、默认值或原函数对象。

  • x: DOUBLE 标量或函数,为规范化后的 x、默认值或原函数对象。

  • y: DOUBLE 标量或函数,为规范化后的 y、默认值或原函数对象。

  • u: DOUBLE 标量或函数,为规范化后的 u、默认值或原函数对象。

  • source: DOUBLE 标量或函数,为规范化后的 source、默认值或原函数对象。

注意:系数名称、系数输入类型、交叉项和依赖性等诊断信息可通过 pdeInfo(coeff) 查询。

例子

例 1. 构造无交叉项的二维扩散系数

coeff = pdeCoeff2D(xx=0.01, yy=0.02)

例 2. 构造二维对流扩散系数

coeff = pdeCoeff2D(
    xx=0.01,
    yy=0.01,
    x=-0.3,
    y=0.1,
    source=2.5
)

例 3. 构造含交叉项的常系数算子

coeff = pdeCoeff2D(
    xx=0.1,
    yy=0.2,
    xy=-0.05
)

例 4. 构造 Heston PDE 系数

coeff = pdeCoeff2D(
    xx=def(S, v, tau) {
        return 0.5 * v * S * S
    },
    yy=def(S, v, tau) {
        return 0.5 * 0.3 * 0.3 * v
    },
    xy=def(S, v, tau) {
        return -0.7 * 0.3 * v * S
    },
    x=def(S, v, tau) {
        return 0.05 * S
    },
    y=def(S, v, tau) {
        return 2.0 * (0.04 - v)
    },
    u=-0.05
)

例 5. 构造时空相关的制造解系数

coeff = pdeCoeff2D(
    xx=def(x, y, t) { return 0.0 },
    yy=def(x, y, t) { return 0.0 },
    source=def(x, y, t) { return 1.0 },
    mass=def(x, y, t) { return 1.0 }
)

相关函数: pdeInfopdeSolver