解微分方程数值解法(理论部分)
欧拉法
首先先来介绍欧拉法,如果对于一条曲线,用Δ\DeltaΔttt来将线段划分成许多小段,那么我们就可以近似认为每一段的斜率都是常数,且对于第iii段的斜率表示为
dyidt=yi+1−yiΔt\frac{dy_{i}}{dt}=\frac{y_{i+1}-y_{i}}{\Delta t} dtdyi=Δtyi+1−yi
以最为常见的一阶微分方程为例
dydt=a0y+f(t)\frac{dy}{dt}=a_{0}y+f(t) dtdy=a0y+f(t)
我们再利用欧拉法求解的时候需要第iii段的斜率,因此利用上式,带入(ti,yi)(t_{i},y_{i})(ti,yi)求得dyidt\frac{dy_{i}}{dt}dtdyi,综合可得
yi+1−yiΔt=a0yi+f(ti)\frac{y_{i+1}-y_{i}}{\Delta t}=a_{0}y_{i}+f(t_{i}) Δtyi+1−yi=a0yi+f(ti)
再变一下型
yi+1=(a0Δt+1)yi+f(ti)Δty_{i+1}=(a_{0}\Delta t+1)y_{i}+f(t_{i})\Delta t yi+1=(a0Δt+1)yi+f(ti)Δt
这就是欧拉法,其误差的大小取决于你Δ\DeltaΔttt选择的大小。
改进的欧拉法
首先计算出第iii个点的斜率
dyidt=a0yi+f(ti)\frac{dy_{i}}{dt}=a_{0}y_{i}+f(t_{i}) dtdyi=a0yi+f(ti)
然后再利用
yi+1=dyidtΔt+yiy_{i+1}=\frac{dy_{i}}{dt}\Delta t+y_{i} yi+1=dtdyiΔt+yi
求出第i+1i+1i+1个点处的斜率
dyi+1dt=a0yi+1+f(ti)\frac{dy_{i+1}}{dt}=a_{0}y_{i+1}+f(t_{i}) dtdyi+1=a0yi+1+f(ti)
这样我们在计算这一段时就会有两个斜率可以用,所以就取这两个斜率的平均值来作为这个线段的斜率
yi+1=yi+Δt2(dyi+1dt+dyidt)y_{i+1}=y_{i}+\frac{\Delta t}{2}(\frac{dy_{i+1}}{dt}+\frac{dy_{i}}{dt}) yi+1=yi+2Δt(dtdyi+1+dtdyi)
四阶龙格-库塔积分法
为了方便这里设si=f(yi,ti)=a0yi+f(ti)s_{i}=f(y_{i},t_{i})=a_{0}y_{i}+f(t_{i})si=f(yi,ti)=a0yi+f(ti),那么先计算
si=f(yi,ti)s_{i}=f(y_{i},t_{i}) si=f(yi,ti)
再计算
si+1=f(yi+Δt2si,ti+Δt2)−−沿着si这个斜率向前走Δt2处的斜率s_{i+1}=f(y_{i}+\frac{\Delta t}{2}s_{i},t_{i}+\frac{\Delta t}{2})--沿着s_{i}这个斜率向前走\frac{\Delta t}{2}处的斜率 si+1=f(yi+2Δtsi,ti+2Δt)−−沿着si这个斜率向前走2Δt处的斜率
再计算
si+2=f(yi+Δt2si+1,ti+Δt2)s_{i+2}=f(y_{i}+\frac{\Delta t}{2}s_{i+1},t_{i}+\frac{\Delta t}{2}) si+2=f(yi+2Δtsi+1,ti+2Δt)
si+3=f(yi+Δtsi+2,ti+Δt)s_{i+3}=f(y_{i}+\Delta ts_{i+2},t_{i}+\Delta t) si+3=f(yi+Δtsi+2,ti+Δt)
得到这4个斜率后再用下式计算
yi+1=yi+Δt6(si+2si+1+2si+2+si+3)y_{i+1}=y_{i}+\frac{\Delta t}{6}(s_{i}+2s_{i+1}+2s_{i+2}+s_{i+3}) yi+1=yi+6Δt(si+2si+1+2si+2+si+3)
这种方法比前两种算法都来得精准,但是增加了计算量,以及计算程序变得复杂。
解微分方程数值解法(理论部分)相关推荐
- 微分方程数值解法(PID仿真用一阶被控对象库PLC算法实现)
微分方程除极特殊情况外,大部分不可能求出它的精确解,只能用各种近似方法得到满足一定精度的近似解,之前大家学过的教程知道微分方程有级数解法和Picard逐步逼近法,这些方法可以给出解的近似表达式,称为近 ...
- 微分方程数值解法(实际应用)
微分方程数值解法(实际应用) 假设有这样一种情况,关于人行走的,从A到B地,行走速度越来越慢,速度是关于时间1/(t+A)的函数,现在求当s和时间t的关系: 从微分的角度看,v=s'=1/(t+A) ...
- 微分方程数值解法(欧拉方法)
微分方程数值解法(欧拉方法) 假设y'=-x/y,这里采用分离变量法可以得到x^2+y^2=C,是一个圆: 现在假设C=4,并且有初始值为(-2,0),比较用数值方法获得的值与用公式计算的值之间的误差 ...
- 学习日记11--常微分方程数值解法
8.00 开始学习 常微分方程数值解法--龙格库塔法(RK法) RK法的K的个数就是其精度的阶数,常用的有四阶RK法 y(i+1) = y(i)+h*(K1+2*K2+2*K3+K4)/6 ...
- 微分方程的数值解法——常微分方程——差分法(1)
微分方程的数值解法--常微分方程--差分法 差分法思想: 差分就是讲解析解中的差分方程中的微分项用差分来代替,当取得变量步长足够小时可以无限逼近. 两大步骤: 1.建立差分格式 1.对解得存在区域划分 ...
- 微分方程的数值解法——常微分方程——欧拉法与改进欧拉法(2)
改进欧拉法 与上一篇中实例相比,改进欧拉法多了一步修正过程,正是应为有了该一步修正过程使得数值解法具有更高一级精度. 先看下面两幅图,第一幅是没有改进的欧拉法,第二幅是改进的欧拉法 两者相比误差有很大 ...
- python计算机器人运动学分析_V-rep学习笔记:机器人逆运动学数值解法(The Jacobian Transpose Method)...
机器人运动学逆解的问题经常出现在动画仿真和工业机器人的轨迹规划中:We want to know how the upper joints of the hierarchy would rotate ...
- 欧拉折线法解常微分方程C语言,第五章:常微分方程数值解法第一节欧拉法
<第五章:常微分方程数值解法第一节欧拉法>由会员分享,可在线阅读,更多相关<第五章:常微分方程数值解法第一节欧拉法(32页珍藏版)>请在人人文库网上搜索. 1.第五章 常微分方 ...
- 有确定项微分方程的matlab程序,微分方程的数值解法matlab四阶龙格—库塔法课件...
<微分方程的数值解法matlab四阶龙格-库塔法课件>由会员分享,可在线阅读,更多相关<微分方程的数值解法matlab四阶龙格-库塔法课件(36页珍藏版)>请在人人文库网上搜索 ...
- 二维非稳态导热微分方程_传热学--第四章 第三节 非稳态导热数值解法
§4-3非稳态导热问题的数值解法 由前可知:非稳态导热和稳态导热二者微分方程的区别在于控制方程中多了一个非稳态项,其中扩散项的离散方法与稳态导热一样. 本节重点讨论:( 1 )非稳态项离散的方法: ( ...
最新文章
- LaxTex---问题1: ! I can't write on file `***.pdf'.(Press Enter to retry, or Control-Z to exit; \ldots
- 自己动手写一个印钞机 第四章
- Assets.car 桌面解压工具
- 华为畅享8可以云闪付吗_华为畅享8、魅族16X、海信彩墨屏阅读手机A5C对比
- android 内置app,android9.0内置APP
- 防盗链测试01 - Jwplayer+Tengine2.3.1 mp4模块打造流媒体测试服务器
- 网络:forward和redirect的区别
- java-多线程安全-锁
- Apollo自动驾驶入门课程第⑥讲 — 预测
- MyEclipse配置Tomcat 6
- 从命令行参数中得到一个字符串,统计该字符串中字母 a 的出现次数。
- vs2010 “最近使用的项目”为空?解决办法!
- 字节跳动 CEO 张楠谈遭微信封禁;传蚂蚁集团将重组 ;Apache ECharts 5 发布| 极客头条...
- 有人说JavaScript是未来的编程语言?这是为什么?
- 初笔,JAVA.HelloWorld代码详解
- 1113 Integer Set Partition(25 分)
- 第八届蓝桥杯省赛C/C++本科B组真题解析
- 嵌入式linux入门六步曲
- 关于vs编译器的一些认识
- spss 安装包以及许可证