我们求解的微分方程对象是如下这样的,左边是导数,右边是f(x,y)f(x,y)f(x,y)。例如:

那么显式欧拉法的迭代步骤如下:(注意,显式欧拉法不是求解y(x)y(x)y(x)的,而是求解一系列的点(xi,yi)(x_i,y_i)(xi​,yi​),这些和真实函数中的点非常接近。)

其思想如下:

我们要解形如y′=f(x,y)y'=f(x,y)y′=f(x,y)这样的微分方程。

上如揭示了其奥秘。

一般你自己做微分方程的题的时候,我们都有初值,例如y(1)=1y(1)=1y(1)=1,那么在我们这里就令x0=1,y0=1x_0=1,y_0=1x0​=1,y0​=1。然后你随便确定一个hhh,得到x1=x0+hx_1=x_0+hx1​=x0​+h,计算一下这个点的函数值yyy,即计算y(x1)y(x_1)y(x1​),记为y1y_1y1​。

但是没这么容易计算,所以我们来一个近似。

即y1=y0+hf(x0,y0)y_1=y0+hf(x_0,y_0)y1​=y0+hf(x0​,y0​),从而我们得到了(x1,y1)(x_1,y_1)(x1​,y1​)。

当然啦,有人问这个迭代式子是怎么来的,首先你要明白,给定真实曲线上的一点(x0,y0)(x_0,y_0)(x0​,y0​),其切线斜率为f(x0,y0)f(x_0,y_0)f(x0​,y0​),为什么?因为微分方程告诉你了,y′=f(x,y)y'=f(x,y)y′=f(x,y),左边不就是导数吗?所以等于右边。

你再看看图,就知道了,那个y1y_1y1​是近似的,并不是真正的y(x1)y(x_1)y(x1​),然后你再看看那个更新式子,就应该明白我是如何近似计算y(x1)y(x_1)y(x1​)了,以直代曲嘛。

一般,我们可以通过减小hhh来减小误差,那么两者就更加接近了。


我们回到开头这个问题,用这个方法来求解一下,看一下效果怎么样。


这个方程我们可以求得真实函数为:

我们比较一下,用上述显式欧拉法得到的一系列点和真实函数的差别,为了效果好一点,我们取h=0.01h=0.01h=0.01,从x0=0x_0=0x0​=0,一直计算到x=1x=1x=1,也就是计算100个点,看能不能模拟出[0,1]区间上的真实函数。

h=0.01
x0=0
y0=0.5
x_last=1
y=[]
x=[]
x.append(x0)
y.append(y0)
nowx=x0
while(x0<x_last):y0=y0+h*(-50*y0+50*x0*x0+2*x0)y.append(y0)x0=x0+hx.append(x0)
##绘制图像
testx=np.linspace(0,1,101)
testy=0.5*np.power(np.e,-50*testx)+testx*testx
figure=plt.figure(figsize=(20,8),dpi=80)
plt.plot(testx,testy,label="true")
plt.plot(x,y,label="h=0.01")
plt.legend()

发现,当h比较小的,效果还是不错的。

显式欧拉法求解常微分方程相关推荐

  1. 数值分析27 - 常微分方程迭代解法之 显式欧拉法、隐式欧拉法、中点欧拉法、梯形欧拉法

    显式欧拉法 隐式欧拉法 中点欧拉法 梯形欧拉法 误差 例子

  2. 【JY】知名显式动力学求解器Radioss宣布开源

    网址 www.openradioss.org Altair旗下的知名商用显式动力学求解器Radioss,今天发布开源版本. 作者 | 毕小喵 这篇文章简单翻译一下OpenRadioss官网上的一些信息 ...

  3. matlab 前向欧拉法,前向后项差分和显式隐式欧拉法

    摘要: 本文主要介绍前向后向差分,显式隐式欧拉法及其稳定性分析. 前向差分对应显式方法,后向差分对应隐式方法.显式欧拉法是比较流行的显式方法,隐式欧拉法是比较流行的隐式方法. 显式欧拉法条件稳定,对积 ...

  4. matlab显式差分离散,第9章期权定价的有限差分法.doc

    第9章期权定价的有限差分法.doc 金融衍生工具(第2版) 金融衍生工具(第2版) STYLEREF "标题 1,部分标题 1,章" \* MERGEFORMAT STYLEREF ...

  5. keil 生成三角波dac0832_弹性波,时域显式接口简介

    COMSOL Multiphysics® 软件 5.5 版本中提供了一个节省内存的物理场接口,用于模拟弹性波在固体中的传播(结构中的振动).该弹性波,时域显式接口基于时域显示时间积分方案的高阶间断伽辽 ...

  6. 弹道分析软件_5分钟读懂显式有限元分析工具Ansys LS-DYNA

    LS-DYNA是LSTC的旗舰产品,专注于计算速度和精度,数十年来一直是汽车行业耐撞性和乘客安全仿真的黄金标准,其擅长仿真材料在承受短时高强度载荷时的响应,如碰撞.跌落以及金属成型过程中发生的情况.2 ...

  7. 4阶显式Runge-Kutta法解常微分方程的通用程序--python实现

    对于常微分方程,RK方法速度快,精度高,代码简单,是最为实用的数值方法之一.RK方法很简单,类似梯形法,RK法也是根据前一步点的值推算后一步点.具体算法见以下链接 https://wenku.baid ...

  8. 一阶常微分方程的数值解法(二阶显式、隐式 Adams 公式及 Milne 方法)

    一阶常微分方程的数值解法 这里我们介绍二阶显式.隐式 Adams 公式及 Milne 方法求解方程. 题目: 对初值问题 u ′ = u − t 2 , 0 ≤ t ≤ 1 , u ( 0 ) = 0 ...

  9. 用Matlab求解一维非稳态导热问题(有限差分法+显式离散)

    章熙民的第六版<传热学>里,较为简单的介绍了非稳态导热的数值计算,本文根据此书,以计算一个可视为无限大平壁的复合墙体传热过程为例,讨论一维非稳态导热问题数值求解的问题. 这里把参考书目的P ...

最新文章

  1. php如何调用c接口无错版
  2. django定时任务实现(言简意赅) Django折腾记之启动定时任务(转)
  3. 一个有趣的数学问题:万有覆叠问题
  4. [20160513]Restrict Session与静态监听.txt
  5. python判断字母左右两边的大写字母有_python习题,,1.26个字母大小写
  6. dragloader.js帮助你在页面原生滚动下实现Pull Request操作
  7. java 依赖其他项目时如何导出_使用Eclipse将具有外部依赖性的Java项目导出到jar...
  8. linux多线程学习(七)——实现“生产者和消费者”
  9. vscode插件推荐
  10. Java 10 var关键字详解和示例教程
  11. Android多渠道打包APK
  12. vue打包后路径404问题解决方法
  13. 外部表不是预期的格式怎么解决_1分钟拆解:如何将10多个工作表sheet,合并成一张?...
  14. 使用paramiko在eNSP的交换机中批量创建VLAN
  15. C语言的主要用途以及前景开展
  16. 019 [工具软件]窗体置顶 DeskPins
  17. 适配层java接口_Linux Framebuffer适配层释疑
  18. php 固定表头,PHPExcel如何冻结(锁定)表头
  19. 从Hadder看蛋白质分子中的加氢算法
  20. 【小知识】TVS瞬态抑制二极管与齐纳二极管(稳压管)的差异点分析

热门文章

  1. JRuby:谁说鱼与熊掌不可兼得
  2. AUTOVC: Zero-Shot Voice Style Transfer with Only Autoencoder Loss代码调试过程
  3. 区块链论文:OmniLedger,一种区块链分片技术
  4. Kubernetes是什么
  5. Hue、Hive、Sentry、Airflow、Oozie
  6. 独家 | 为什么在CV(视觉识别)领域,Transformers正在缓慢逐步替代CNN?
  7. 旗帜鲜明地反对“码而优则仕”
  8. ML:教你聚类并构建学习模型处理数据(附数据集)
  9. 一切为了AI!黄仁勋GTC大会发布全新DPU处理器,计算吞吐量三年跨越1000倍
  10. 地表最强VLP模型!谷歌大脑和CMU提出极简弱监督模型