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,且其取值必须位于 xMin 和 xMax 之间(可等于端点)。若 focus 等于 xMin 或 xMax,则生成单侧聚焦网格。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) 相同。
