pdeGrid1D

首发版本:3.00.6.1

语法

pdeGrid1D(xMin, xMax, n, [gridType="uniform"], [focus=NULL], [density=2.0])

详情

生成一个包含 n 个节点的严格递增双精度浮点型(DOUBLE)向量,作为偏微分方程(PDE)求解时的空间网格节点。

在数值求解过程中,连续的物理空间需要被离散化为一系列坐标点。该函数支持生成均匀分布的网格,也支持通过特定的数学函数(如 sinh)在指定位置生成加密的非均匀网格,以提高数值解在关键区域的精度。

主要应用场景:

  • 离散化空间:将指定的计算范围划分为 n 个计算节点。

  • 灵活的加密策略:支持在特定点(如期权定价中的执行价格附近)进行网格加密,平衡计算效率与精度。

参数

xMin 数值标量,指定空间区间左端点。必须为有限的有效值(即非 NULL、NaN 或 Inf),且必须小于 xMax。当 gridType 为 "log" 时,xMin 必须大于 0。

xMax 数值标量,指定空间区间右端点。必须为有限的有效值(即非 NULL、NaN 或 Inf),且必须大于 xMin

n INT 标量,指定网格节点数。取值范围为 3 到 2,147,483,647。

gridType 可选参数,STRING 标量,指定网格类型。默认值为 "uniform"。支持以下取值(区分大小写):

  • "uniform":生成均匀网格。

  • "sinh":生成双曲正弦聚焦网格。

  • "tanh":生成双曲正切聚焦网格。

  • "log":生成指数或对数式聚焦网格。

focus 可选参数,数值标量或 NULL,指定非均匀网格的聚焦位置,即希望加密网格节点的空间位置。默认值为 NULL。

  • gridType 为 "sinh"、"tanh" 或 "log" 时,必须提供有限数值形式的 focus,且其取值必须位于 xMinxMax 之间(可等于端点)。若 focus 等于 xMinxMax,则生成单侧聚焦网格。focus 用于控制网格加密的位置,但不保证该值一定是输出向量中的某个节点;只有当其归一化位置恰好对应某个节点下标时,输出节点中才会精确包含该值。

  • gridType 为 "uniform" 时,表示生成均匀网格,不需要设置聚焦位置,因此必须省略 focus 或显式传入 NULL。

density 可选参数,数值标量,指定网格在聚焦位置(focus)的加密强度。默认值为 2.0。必须为有限的有效值(即非 NULL、NaN 或 Inf)。针对不同的 gridType,其取值范围和行为如下:

  • "uniform":必须保持默认值 2.0。若传入其他数值,系统将报错,不会静默忽略。

  • "sinh":取值范围为 [0, 10]。取值为 0 时,网格退化为均匀分布。

  • "tanh":取值范围为 [0, 3]。取值为 0 时,网格退化为均匀分布。

  • "log":取值范围为 [0, 10]。取值为 0 时,网格退化为均匀分布。

返回值

返回一个 DOUBLE 向量:

  • 向量长度等于 n

  • 向量中的元素为严格递增的空间节点。

  • 第一个元素为规范化后的 xMin,最后一个元素为规范化后的 xMax

例子

例 1. 生成均匀网格

pdeGrid1D(0.0, 1.0, 5)
// output: 0.0 0.25 0.5 0.75 1.0

例 2. 在执行价附近生成 sinh 聚焦网格

spotGrid = pdeGrid1D(0.0, 300.0, 401, "sinh", 100.0, 3.0)
domain = pdeDomain1D(spotGrid)

例 3. 生成 tanh 中心聚焦网格

grid = pdeGrid1D(-1.0, 1.0, 101, "tanh", 0.0, 2.0)

例 4. 在正数区间生成 log 聚焦网格

grid = pdeGrid1D(1.0, 100.0, 101, "log", 20.0, 2.0)

例 5. 在左端点附近单侧加密

grid = pdeGrid1D(0.0, 1.0, 101, "sinh", 0.0, 3.0)

例 6. density 为 0 时退化为均匀网格

grid = pdeGrid1D(0.0, 1.0, 5, "sinh", 0.25, 0.0)

返回结果与 pdeGrid1D(0.0, 1.0, 5) 相同。

相关函数: pdeDomain1DpdeDomain2DpdeInfopdeSolver