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 }
)
