[关闭]
@youngwang 2017-09-29T16:09:52.000000Z 字数 994 阅读 368

Exercise 1.1

未分类


一.摘要:
本文介绍一种用Euler method来解决课本1.1的方法。
问题是一个物体从静止开始自由落体,通过设计一个程序来解速度方程,计算速度关于时间的函数。(取g=9.8m/s^2)

二.背景介绍:
1.数值解法:
由泰勒展开式忽略高阶项得:
其中
代入已知方程得:
此即为所谓Euler method.
值得注意的是,数值解忽略了高阶小项.
2.解析解:
由简单的积分我们即可得出答案。此处提及解析解的意义在于,检验数值解及程序运行的正确与否。在接下来的过程中我们会做一条解析解预测的结果与数值解所描的点做对比。

三.正文:
代码如下:

import pylab as pl
def plot_01():
t=0
v=0
g=9.8
dt=0.1
t2=[0,10]
v2=[0,-98]
pl.plot(t2,v2,'r')
pl.title('Plot of velocity of freely falling')
while t<=10:
v=v-g*dt
t=t+dt
pl.plot(t,v,'k',marker= '+',)
pl.show()
plot_01()

图1
图2
对于代码的相关解释:
1.参数t和v是用于数值解描出散点的,而t2和v2是解析解预言应该出现的结果,将两者画在一张图上便于比较。
2.数值解绘散点图时,用了一个循环,每次循环给t加上一个画出一个点,直到t=10。

四.结果:
从运行结果来看:
打出来的点始终在绘出来的直线上;
逐渐把间隔取小,发现打出来的点逐渐变得密集,逼近直线;
这个结果证明了,用Euler method得出的结果是比较准确的,取的点越密集,越趋近于真实解。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注