名称: 插值 描述: “数值方法中插值问题的解决策略” 允许工具: [Bash, Read]
插值
何时使用
在数值方法中处理插值问题时使用此技能。
决策树
-
评估数据特征
- 有多少数据点?间距均匀还是非均匀?
- 数据是平滑的还是嘈杂的?
- 需要端点导数吗?
-
选择插值方法
- 少量点(<10):多项式插值(拉格朗日,牛顿)
- 大量点,平滑数据:三次样条
- 嘈杂数据:平滑样条或最小二乘法
- 高维度:使用基于单纯形的方法(n+1邻居 vs 2^n)
-
使用SciPy实现
scipy.interpolate.CubicSpline(x, y)- 自然三次样条scipy.interpolate.make_interp_spline(x, y, k=3)- B样条scipy.interpolate.interp1d(x, y, kind='cubic')- 一维插值
-
验证结果
- 检查边界处的龙格现象(高次多项式)
- 交叉验证:留一法误差估计
- 可视化检查插值曲线
sympy_compute.py limit "interp_error" --at boundaries
-
高维考虑
- Coxeter-Freudenthal-Kuhn三角剖分用于O(n log n)点定位
- 重心细分以获得平衡性能
工具命令
Scipy_Cubic_Spline
uv run python -c "from scipy.interpolate import CubicSpline; import numpy as np; x = np.array([0,1,2,3]); y = np.array([0,1,4,9]); cs = CubicSpline(x, y); print(cs(1.5))"
Scipy_Bspline
uv run python -c "from scipy.interpolate import make_interp_spline; import numpy as np; x = np.array([0,1,2,3]); y = np.array([0,1,4,9]); bspl = make_interp_spline(x, y, k=3); print(bspl(1.5))"
Sympy_Lagrange
uv run python -m runtime.harness scripts/sympy_compute.py interpolate "[(0,0),(1,1),(2,4)]" --var x
关键技术
来自索引教科书:
- [数值分析导论… (Z-Library)] 文献讨论 如引言所述,插值理论是数值积分和微分、近似理论以及微分方程数值解法发展的基础。这些主题在后续章节中发展,并在该点讨论相关文献。插值理论的额外结果见de Boor (1978), Davis (1963), Henrici (1982, 章节。
- [数值分析 (Burden R.L., Fair… (Z-Library)] 最常用的插值形式是分段多项式插值。如果函数和导数值可用,推荐使用分段三次埃尔米特插值。这是插值微分方程解函数值的首选方法。
- [数值分析 (Burden R.L., Fair… (Z-Library)] 版权 2010 Cengage Learning。未经允许,不得复制、扫描或复制,部分或全部。由于电子权利,部分第三方内容可能从电子书和/或eChapter(s)中删除。
- [数值分析 (Burden R.L., Fair… (Z-Library)] Galerkin和Rayleigh-Ritz方法均由方程确定。然而,对于任意边界值问题并非如此。两种方法的相似性和差异处理以及Galerkin方法的广泛应用讨论见[Schul]和[SF]。
- [数值分析导论… (Z-Library)] 多项式插值理论有许多重要用途。在本文中,其主要用途是提供一些数学工具,用于发展近似理论、数值积分和微分方程数值解法领域的方法。第二个用途是开发处理以表格形式存储的函数的手段。
认知工具参考
参见 .claude/skills/math-mode/SKILL.md 获取完整工具文档。