由于安装Python的Numpy和Matplotlib包实在水深搞不清楚,和以前安装VS,matlab区别太大了,一时理不清楚,于是这次作业我就暂时用Mathematica写了,特此说明。
课后第一题
很明显,自由落体中,速度v与时间t是线性关系,所以此处应用欧拉方法并不会产生与理论结果的数值差。
思路为,时间t由0s增长至10s换用多个步长(dt0=0.1的整数倍的几个步长)依次计算时间为10s时由欧拉方法得到的速度v的值,并把每个v值加入空列表result中,最后显示各个步长计算下得到的每一个v值。
显然理论解在t=10s时,v=g*t=9.8*10=98m/s;
源代码及运行结果:
结果表明欧拉方法应用于线性关系的数值求解(好像没什么意义)是与理论值没有误差的。
故尝试其它题目:课后第六题
人口增长问题:dN/dt=aN-bN*N;
选取dt0=0.01为基准步长,按书上提示,使初始人口为1000人,a=10,b=0.01;
发现所取步长下各步长对应结果相同,修改代码中建议值a与b,a=100,b=0.013,发现其还是趋向了一个稳定的最终结果。
查询相关资料知:它表明当人口数量超过最大人口容纳量时,人口数量将减少,当人口数量小于最大人口容纳量时,人口数量将增加。百度文库链接
总结
由以上易知线性关系下采用欧拉方法意义不大,对于非线性关系,在步长取的足够精细的情况下,欧拉方法的误差也很小。从其他的取值尝试后,最终结果趋向无穷,可知当取值极端时,此模型函数不再试用,其计算结果也不再有参考和指导意义。
蔡佳伟 2015301890053
2017/9/27