Computational Physicsd'x例题2.一维运动粒子的方程为=-kxmdi?初始条件:Xo = 5; Po = 0k其精确解为:=t+Φx = Acos(wot +Φ) = Acos(mp=-mAw,sin(wot +Φ其中振幅A与初始相位由初始条件决定kx +=mi=kA?Φ=cos-'(x。 / A)见Matlab程序chapter2example 2 harmonic_oscillator.mChenweiJiang,Xi'anJiaotongUniversity,2019
Chenwei Jiang, Xi’an Jiaotong University, 2019 Computational Physics 见Matlab程序 chapter2_example_2_harmonic_oscillator.m 例题2. 一维运动粒子的方程为 2 2 d d x m kx t = - 0 0 初始条件: x p = = 5; 0 其中振幅A与初始相位由初始条件决定。 222 0 0 11 1 22 2 kx mv kA + = 0 cos( ) cos( ) k x A wt A t m 其精确解为: = += + f f 0 0 p mAw w t = - sin( ) + f 1 0 f = cos ( / ) x A -
ComputationalPhysics2. 泰勒级数法业f(x,y)三将yn+在y附近做泰勒展开Yn+1 = y(x, + h)= y, + hy, +=h'y" +O(h')yh=f(xn,yn)= fhd=f(x,V"二n,y.n2dxOx"oy x Ox OyYn+1 = y, + hf, +=h'[f, + f,f], + O(h3)2局部误差为0(h3)全局误差为NO(h)=0(h))这个公式在已知f的解析形式时很好用。阶数增大时,变得复杂ChenweiJiang,Xi'anJiaotongUniversity,2019
Chenwei Jiang, Xi’an Jiaotong University, 2019 Computational Physics 2. 泰勒级数法 这个公式在已知 f 的解析形式时很好用。阶数增大时,变得复杂。 将 yn+1 在 yn附近做泰勒展开 ( ) 2 1 ( ) 2 3 1 y y x h y hy h y O h n + = n + = n + n ¢ + n ¢¢ + n n n n y ¢ = f ( x , y ) º f f y f x f x y y f x f f x y x y n n n ¶ ¶ + ¶ ¶ = ¶ ¶ ¶ ¶ + ¶ ¶ ¢¢ = ( , ) = d d [ ] ( ) 2 1 2 3 1 y y hf h f f f O h n + = n + n + x + y n + f f f x y º + ( , ) d d f x y x y = 局部误差为 O(h3) 全局误差为 NO(h3)≈O(h2)
Computational Physics练习:推导三阶泰勒级数法Yn+1 = yn +?Jn+1 =y(x,+h)= y,+hy,+=h'y"+h'y"+0(h*)Yn+I = y, + hf, +=h'[f, + f,f], ++Ih'lfu+2f,f+ ,f?+f,(f,+f,f)], +0(h*)ChenweiJiang,Xi'anJiaotongUniversity,2019
Chenwei Jiang, Xi’an Jiaotong University, 2019 Computational Physics 练习:推导三阶泰勒级数法 ? 1 = + n + n y y ( ) 6 1 2 1 ( ) 2 3 4 1 y y x h y hy h y h y O h n + = n + = n + n ¢ + n ¢¢ + n ¢¢¢+ [ 2 ( )] ( ) 6 1 [ ] 2 1 3 2 4 2 1 h f f f f f f f f f O h y y hf h f f f xx xy yy y x y n n n n x y n + + + + + + + = + + + +
ComputationalPhysics例题3.考虑下述微分方程和初始条件dy / dx = -xy; y(0) = l用Euler法与二阶泰勒级数法求解y(2)的值,采用不同的步长h,并与精确值比较,计算误差大小解答:方程的精确解为V=e=r?/2Yn+1 = y, + hf, +=h'[f,+ f,f], + O(h3)2h'[-y, +x,yn]+O(h3)=yn-hx,yn +2见Matlab程序chapter2 example 3 EulerTaylor.mChenweiJiang,Xi'anJiaotongUniversity,2019
Chenwei Jiang, Xi’an Jiaotong University, 2019 Computational Physics dy dx xy y / ; (0) 1 = - = 用Euler法与二阶泰勒级数法求解y(2)的值,采用不 同的步长h,并与精确值比较,计算误差大小。 见Matlab程序 chapter2_example_3_Euler_Taylor.m 解答:方程的精确解为 2 x / 2 y e - = 例题3. 考虑下述微分方程和初始条件 2 3 1 22 3 1 [ ] () 2 1 =- [ ] () 2 n n n x yn n nn n nn y y hf h f f f O h y hx y h y x y O h + =+ + + + + - + +
Computational Physics通常,建立微分方程的数值算法,有两条途径Yn+l -y,(1)用数值微分的两点公式替代微分方程Xn+1 -Xn左边的一阶微商;如Euler法。(2)从x一x+k积分恒等式y(t)=f(t,J(t)),得y(x + k) - y(x) = (n" f(t, y(t)dt取x=xn,k=h有Xn+1f(t, y(t)dtYn+1 - Yn =下面我们通过第二条途径推导其他数值算法ChenweiJiang,Xi'anJiaotongUniversity,2019
Chenwei Jiang, Xi’an Jiaotong University, 2019 Computational Physics ò + + - = x k x y ( x k ) y ( x) f (t, y (t))dt 取 x=xn, k=h 有 通常,建立微分方程的数值算法,有两条途径 n n n n x x y y - - + + 1 1 ò + + - = 1 ( , ( ))d 1 n n x x n n y y f t y t t (1) 用数值微分的两点公式 替代微分方程 左边的一阶微商;如Euler法。 (2) 从x →x+k积分恒等式y'(t)= f (t, y(t)),得 下面我们通过第二条途径推导其他数值算法