Computational Physics
Episode 1. 计算方法
Computational Physics
REF:计算方法/scherer computational physics/Hoffman 计算物理学/丁泽军讲义
涉及内容: 经典力学问题/电磁学/QM本征值问题/统计力学 相变/随机过程/二次量子化/严格对角化/开放系统耗散问题/固体物理/随机矩阵
Review:数值方法
插值
给定组数据点,考虑存在函数,满足,显然在这些点处是没有误差的,显然误差满足
误差阶数是,那么应该是一个阶数小于的多项式,形式上
直接的想法是求解方程组
Lagrange插值
插值的用意:
计算积分
计算积分最粗糙的方式是取矩形近似,但毫无疑问精度是不太够的,此时积分值表示为。外推这个表达式,有一般形式
其中为权重,,例如矩形近似的等权重的。上式通常称为和积分形式,但处理高微积分时效率并不高。矩形近似的误差为,采取梯形近似的误差为
实际上对应Taylor展开得不同阶项
的解析积分值。这么做可以不断提高积分的精度,但是前提我们需要知道的各阶导数,而实际情况往往不能满足。不要求导数信息的数值方法Simpson summation具有,记已知数据点
数据点等距的情况下
这种方法实际上用两点插值
给出的函数完成了解析积分运算。
进一步,考虑Lagrange插值
考虑等距数据点,积分表示为
其中第二步移动坐标原点以及rescale,最后的权重定义为
可直接查表。
注意到Lagrange函数的性质
定义
可以验证
同时也满足权重函数的归一性。
Newton-Cotes插值
对于Lagrange插值,增加一个数据点时,插值函数要完全重新计算;相对的Newton-Cotes插值在处理上简单很多,只需在插值多项式上额外增加一项即可。
考虑如下形式的插值多项式
取,分别得到
其他插值方法
切比雪夫插值,考虑一个例子
其中
,系数可以通过FFT计算。
Runge-Kutta方法
从一个ODE出发
这个问题通常可以应用于两种场合:(1)ODE求解;(2)作为高精度的积分器。一个trivial的处理方式是
第三行的由于的计算要调用自身的值,计算方式收敛性会相对好,通常我们会对取一个预估值(可以用第二行的表达式算),然后在此基础上反复迭代计算的值。
换个角度考虑上式的积分
这种算法需要计算的各阶偏导数,实际仍然不便利。如何避开导数的运算?Runge-Kutta方法在保证精度的情况下,避开了导数的运算(证明较复杂)。
Runge-Kutta 23
由于
则
这个计算方法有3阶精度。
Runge-Kutta 45
令
则
上述数值方法也称为ODE45。
求解二阶ODE
物理学问题中常常有二阶微分方程,例如单摆的运动方程
这种二阶方程可以通过设,reduce至一阶:
值得注意的是,Runge-Kutta方法也支持诸如的向量情形。
HW
:Lagrange力学模拟问题
a.双摆问题
b. 引力模型
c. 竖杆倾倒问题
Notes on the Runge-Kutta method
示例:MMA求解经典力学问题
二维中心势场下的经典粒子运动问题。保守力场下拉格朗日量为
拉格朗日方程
以及初始条件。
TEST
TEST
TEST