NumericalAnalysisKit

Swift 数值分析工具包

此软件包包含用于执行各种数值分析任务的库。

NumericalPDEKit

此库包含各种偏微分方程的数值求解器(即将包含双曲型求解器)。

EllipticalPDE

struct 使用有限差分法椭圆型 PDE 进行数值求解。

有关用法,请查看 EllipticalPDETests 中的一些示例。

ParabolicPDE

struct 实现了 Crank-Nicolson 方法,用于对抛物型 PDE 进行数值求解。

有关用法,请查看 ParabolicPDETests 中的一些示例。

HyperbolicPDE (即将推出)

尚未实现,但将提供双曲型 PDE 的求解器。

VisualizationKit

此库提供了用于基于数值分析问题的解决方案生成各种可视化的实用程序。 目前,这仅限于生成代表任何x-,y-或z-方向上的横截面热图的2D图像。

示例

2 个空间维度中的拉普拉斯方程

使用该框架生成热图,指示空间中各个点的标量值。 例如,以下渲染显示了在精细矩形网格上求解拉普拉斯方程的结果,受到某些狄利克雷边界条件的约束(在此示例中,薄片在一边保持在 100ºC,在其他三个边保持在 0ºC;图中显示了内部温度,较冷的温度用蓝色表示,逐渐增加到较热的红色)

Laplace Equation 2D

2 个空间维度中的热方程

使用与上述示例中相同的物理条件,我们可以类似地渲染热方程的随时间变化的(非稳态)解,用于一系列离散时间步长(在本例中,将它们拼接成动画 GIF)

Heat Equation

3 个空间维度中的拉普拉斯方程

最后一个示例说明了如何使用热图可视化 3D 矩形区域上的解 u(x,y,z)。 在 15cm x 15cm x 15cm 的立方体上求解拉普拉斯方程,空间步长大小 h = 0.5 cm; 每个面都保持在不同的温度下,从 0ºC 开始,以 20º 的增量向上递增,直到 100ºC。 在 3D 网格内的所有网格点上都已知温度 u。 以下每个图像代表一个特定的 2D 横截面热图,取自沿 x-y-z- 轴的特定位置。