PINN求解一维波动方程,pytorch框架,附代码(二)

PINN求解一维波动方程,pytorch框架,附代码(二)

pytorch和tensorflow区别

以下tensorflow简称TF

  • pytorch具有更加易用的API,目前的TF 2.x + Keras也提供类似的易用的API
  • pytorch构建动态计算图,方便调试,TF以静态图为主,有利于部署和加速,目前也支持动态图,鼓励用语法糖转化为静态图获得性能提升
  • 部署方面,TF有完整的工具链,目前pytorch也增强了部署能力
  • 可视化工具,TF集成有TensorBoard,pytorch也支持用TensorBoard

总结:但随着版本迭代,两者正在相互借鉴优点,差距逐渐缩小。学习阶段可以采用pytorch,获得成熟可用的项目后可以转用tensorflow部署获得更高的性能。

正问题

正问题是已知一切条件预测结果,这是一个确定性的计算过程。

  • 已知方程形式,且已知:

初始条件:

边界条件:

解析解: 根据达朗贝尔公式可得:

表达式如下:

损失函数表达式:

  • 网络架构

  • 输入层:空间坐标(
  • 隐藏层:3层,每层50个神经元
  • 输出层:物理场预测值

值得一提的是: PINN本身并不提供解的存在唯一性证明。这个保证来自于应用数学领域的微分方程理论。在将一个问题交给PINN求解之前,我们通常依赖于已知的数学定理来确保问题是一个“适定性问题”,即:

  • 存在性:至少有一个解。
  • 唯一性:最多有一个解。
  • 稳定性:解连续地依赖于初始条件或边界条件。

例如将上述波动方程初始条件中的一阶导公式去掉,解就失去了唯一性,PINN就无法按预期工作。PINN求解一维波动方程,pytorch框架,附代码(二)的图1

原始采样点

PINN求解一维波动方程,pytorch框架,附代码(二)的图2

损失函数变化

PINN求解一维波动方程,pytorch框架,附代码(二)的图3

真实结果、预测结果、绝对误差

逆问题

逆问题是已知一些观测数据,但是不确定方程中的一些系数是多少,目标是利用这些观测数据来反推出方程中的系数。更进一步,有大量的观测数据,但是不知道方程的具体形式,利用已有数据来推出方程的表达式,因此逆问题可能不具备适定性,求解更困难。

  • 将上述正问题做两点改动,1.添加一些已知观测数据。2.参数c的数值未知。那么上述正问题就变成了一个逆问题。

此时损失函数表达式:

表示的是和参数的集合。

PINN求解一维波动方程,pytorch框架,附代码(二)的图4

原始采样点

PINN求解一维波动方程,pytorch框架,附代码(二)的图5

损失函数变化、参数变化

PINN求解一维波动方程,pytorch框架,附代码(二)的图6

真实结果、预测结果、绝对误差

本本文涉及的完整代码,请后台回复关键词" pinn-2" 获取。

感谢每一位朋友的关注!期待能和大家在这个领域携手前行,后续会有更多技术解读和实战技巧分享,我们一起学习,共同成长!~~~🤞🤞🤞

登录后免费查看全文
立即登录
App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP

1
1