背景

通常数值解微分方程、微分方程组(常微分、偏微分方程),人们言必称“Matlab”,COMSOL,实际上,微分方程求解有两大强手被人忽视:(1)符号求解独孤求败:Maple; (2)数值求解Mathematica更为好用而且强大。

拿个例子来练习和学习偏微分方程求解solver的用法。这里先看看Mathematica的有限元方法数值求解“波动方程”类型的偏微分方程的初边值问题。

问题

学软件最方便的是看文档,大部分情况下,没有比软件自带文档更权威的教材了。我这个例子是从文档偷出来的。

偏微分方程

∂2u(x,y,t)∂t2=∂2u(x,y,t)∂x2+∂2u(x,y,t)∂y2(1)

\frac{\partial^2 u\left(x,y,t\right)}{\partial t^2}=\frac{\partial^2 u\left(x,y,t\right)}{\partial x^2}+\frac{\partial^2 u\left(x,y,t\right)}{\partial y^2}\tag{1}

求解所在的区间

求解该函数 u u所在的xoyxoy平面上的区域为非普通矩形的不规则区域(差分法常用的矩形网格无法使用):

初边值条件

未知函数 u(x,y,t) u(x,y,t)二阶,而且有三个变量,经验判断初边值条件要有“四个”;左边界、右边界,0阶和一阶初值条件。

第一类边界条件,内边界和外边界上函数值都为0,

u(x,y,t)|(x,y)∈∂=0(2)

u\left(x,y,t\right)_{|(x,y)\in\partial}=0\tag{2}
用代码表示为:

DirichletCondition[u[x,y,t]==0,True]

这个实际包含了内部的圆和外部的圆两个边界条件,“一个顶两个”;

一阶和0阶初始条件:

u(x,y,0)=e−5((x−0.2)2+y2)(3)

u(x,y,0)=e^{-5\left(\left(x-0.2\right)^2+y^2\right)}\tag{3}

∂u(x,y,0t)∂t|t=0=0(4)

\frac{\partial u(x,y,0t)}{\partial t}_{|t=0}=0\tag{4}

求解利用FEM包载入即可。

波动方程解一个周期的可视化

求解的方法和代码还可以参考这里

跟COMSOL的对比

COMSOL是Matlab中pdetool相关代码至少早期版本的实际开发者。所以,使用Matlab的pdetool的图形用户界面时,会发现跟COMSOL中“数学形式的PDE”的Physics部分的界面非常类似、简直就是雷同。

不过我用COMSOL求解同一问题,发现效果很不理想,难道因为我是新手,COMSOL就特别歧视我吗?

我开始怀疑COMSOL计算的精度是不是总是这么低,总能导致一些因为误差而产生的虚假的波动?

Mathematica中用有限元方法解不规则区域上的波动方程相关推荐

  1. 有限元方法编程计算电场中各个区域分布的电势

    用有限元方法解二维的拉普拉斯方程,求出有边缘二维面上的电势分布 这里以计算10x10区域为演示,当差异小于设置值后停止演算 Code: #include <QCoreApplication> ...

  2. PhyGeoNet一种可用于不规则区域的物理信息极限学习机

    题目 Physics-Informed Geometry-Adaptive Convolutional Neural Networks for Solving Parametric PDEs on I ...

  3. 使用多视角图卷积网络预测不规则区域的全市人群流量

    1.文章信息 <Predicting Citywide Crowd Flows in Irregular Regions Using Multi-View Graph Convolutional ...

  4. pde中微元分析法的主要思想_有限元方法的核心思想

    有限元法(Finite Element Method)是基于近代计算机的快速发展而发展起来的一种近似数值方法,用来解决力学,数学中的带有特定边界条件的偏微分方程问题(PDE).而这些偏微分方程是工程实 ...

  5. 边界元与有限元方法相比较的优缺点

     一本书上关于有限元和边界元的比较,摘录如下:有限元基于区域上的变分原理和剖分插值,边界元基于边界归化及边界上的剖分插值:有限元属于区域法,其剖分涉及到整个区域,而边界元只需对边界离散,因此,可以 ...

  6. 带有不同粘性系数的稳态N-S方程的几种迭代有限元方法的latex模板

    \documentclass{article} \linespread{2.0} \usepackage{geometry}%页边距等 \geometry{left=2.5cm,right=2.5cm ...

  7. 二维三角元有限元方法matlab,有限元C++编程实践.doc

    有限元C++编程实践.doc 基于有限元算法的编程实践学号:2011043010031 姓名:廖校毅电子科技大学 物理电子学院[摘要]本文就有限元算法在电磁场分析中的应用展开研究与实践,从电磁场的 M ...

  8. 哈密顿插值c语言,哈密顿系统有限元方法的长时间性质研讨——冯康猜想的证明.pdf...

    哈密顿系统有限元方法的长时间性质研讨--冯康猜想的证明 摘 要 哈密顿系统是最重要的动力系统之一,它有两个重要的性质:辛 结构和能量守恒.此外,在一定条件下还具有周期性.优秀的算法应 当尽可能的保持系 ...

  9. 有限元方法基础入门教程(一维弹性问题的有限元程序)

    有限元方法(冯康首次发现时称为基于变分原理的差分方法),是一种用于求解微分方程组或积分方程组数值解的数值技术.这一解法基于完全消除微分方程,即将微分方程转化为代数方程组(稳定情形):或将偏微分方程(组 ...

最新文章

  1. 小程序页面之间的通讯利器 - nsevent
  2. 安装CDH5时出错 5.68.168.192.in-addr.arpa domain name pointer bogon.
  3. 神经网络不可思议的声誉
  4. DockerFile 参数详解
  5. mac PHP集成开发工具(PhpStorm)
  6. SPOJ- QTREE+HDU 3966(树链剖分裸题
  7. Vue学习笔记(二)—— vue项目中使用axios
  8. 用小程序·云开发打造运动圈小程序丨实战
  9. java random用法_JAVA面试题(1)
  10. Python的安装路径
  11. 01背包、完全背包、多重背包问题的C++实现及路径记录
  12. JS总结 循环 退出循环 函数
  13. 网易云视频html代码,网易云课堂-8小时学会HTML网页开发01-1
  14. thymeleaf实现分页
  15. Radius认证协议(六)报文属性
  16. 性能测试从入门到精通高级篇 - Jmeter之IP伪装和欺骗(详解教程)
  17. mysql workbench6.3.5_mysql workbench
  18. echarts图表入门级教程(An introductory chart tutorial)
  19. CSS中使盒子移动方法总结
  20. 为啥是SoA?(SoA化的挑战)

热门文章

  1. 程伟健:新城易居携手中旅联盟深度发力打造城市中心文旅目的地
  2. Unity接入ChatGPT基于Python.Runtime的实现
  3. TOP Network 2019年度回顾:积蓄力量,再创辉煌
  4. 【4】RagTag-基于近缘/同物种的基因组同源组装
  5. ubuntu(21):ubuntu安装gurobi
  6. python是商业组织吗_基于Python的电子商务系统的弹性架构与思考
  7. fopen()、fwrite()、fread()函数使用说明与示例
  8. 最大数leetcode_Leetcode:最大化有效体验
  9. Ceph 在Linux上的使用
  10. C语言写一个函数,可以逆序一个字符串的内容。