栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

欧拉公式-python程序-计算机仿真方法(入门级)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

欧拉公式-python程序-计算机仿真方法(入门级)

最近在学计算机仿真,把一些简单的仿真方法分享一下,也帮自己记忆。

不是计算机专业,只是感兴趣选的选修课,代码写的不好,路过的大神轻喷。

  • 基础欧拉公式

欧拉公式,一阶数值方法,可以说是入门级的了吧。简单介绍如下,其实就是根据当前点坐标求导数,乘以步长后加上当前的函数值即近似于下一个点的函数值,是一阶的,个人感觉在实用于导数变化很小的情况下导数变化大的情况下还是挺粗糙的,甚至有的时候还会跑飞。

对应的代码也挺简单的,如下:

#Eular Method
#欧拉公式,需要更改的地方用"####"标注
def eular_derivative(x0,y0):#返回x0,y0对应的导数值
  return 0-y0**2####此处需要修改,为对应的导数值
def eular_method(start,end,step,y0):#返回给定条件下的欧拉公式的x,y值
  y = [y0]
  x = [start]
  while x[-1] 
  • 改进的欧拉公式(improved Euler method)

欧拉公式其实不止前面所说的一种方式,出了上面所介绍的前向欧拉法外,还包括后向欧拉公式,中点欧拉公式等。但是这几种依旧是单步格式,即通过某一个点去推测另一个点的位置,本质上都类似,误差的可能性还是比较大的,他们也被成为显式欧拉公式,那么对应的,也就存在隐式欧拉公式。隐式欧拉公式其实就相当于将下一个点的值作为未知数代入方程中并求解,因此,其表达式如下:

 代入求解,其精度必然较高,但是其计算量增大,当面对较复杂的方程时更是如此,求解方程的形式也给代码的编写带来了难度,因此,这种方式也有其限制条件。

到此,我们就可以很明显看到,隐式欧拉公式计算量小但精度有限,显式欧拉公式精度较高但是计算量大,那么,有没有什么方法可以综合其优缺点使得计算量与精度均在可接受范围内呢?

这就是改进的欧拉方法,也称为预测-矫正欧拉法。即先利用显式欧拉公式预测下一个值,再将下一个值导入隐式欧拉公式进行纠正,其误差减小,精度提高。

公式如下

 通过公式,代码如下:

#improved Eular Method
#改进的欧拉公式,需要更改的地方用"####"标注
def derivative(x0,y0):#返回x0,y0对应的导数值
  return 0-y0**2####此处需要修改,为对应的导数值
def improved_eular_method(start,end,step,y0):#返回给定条件下的改进的欧拉公式的x,y值
  y = [y0]
  x = [start]
  while x[-1] 
  • 二者对比

那么,二者的精度等对比如何呢?下面举例进行对比.

以下面式子为例:

 其精确值为

 根据代码求解进行比较得:

 

好啦,哪个好不言而喻。

最后附上上面比较的代码,算是个代码总结:

#导数部分
def eular_derivative(x0,y0):
  return 0-y0**2

#Eular Method
#欧拉公式
def eular_method(start,end,step,y0):
  y = [y0]
  x = [start]
  while x[-1] 

第一次写文章,有用的话帮忙点个赞咯~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/580861.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号