【算法基础学习 6】龙格库塔法 求微分方程
龙格库塔法
龙格库塔法对于一个工科学生来说估计并不陌生,因为我们做项目的时候或多或少会接触到微分方程,解微分方程的数值解是就需要用到龙格库塔方程了。我第一次接触到该方法是对四轴姿态角进行四元数解算的时候,当时用的是一阶龙格库塔,当时的理解就是这不就是泰勒展开式取一阶嘛,然后觉得二阶龙格库塔应该就是取二阶了,依次类推,所以当时没有深入的了解,现在因为遇到这方面的问题所以重新把他学了一遍。
准确的说,高阶龙格库塔法是借用了泰勒展开式的思想,但是和泰勒展开式还是有区别的。下面我对龙格库塔法讲讲我的理解。
首先,龙格库塔的一般形式如下:
首先,我们可以知道一阶龙格库塔法的表达式
上述式子可以改写成如下式子
这里我们可以看成k是在步长为h情况下,函数的增长量,f(x,y)为函数y的斜率。这个式子其实比较好理解的。
然后我们来看二阶龙格库塔的推导过程:
二阶情况下一般表达式中就只有k1和k2了,二阶龙格库塔我们可以看成是一阶表达式的一个变形,由原来的一个k变成了k1,k2,用k1,k2来表示k,c1和c2相当于k1和k2所占的权重一样,这样理解是不是好一点。那k1和k2分别表示什么??其实k1表示xi点处的增长量,k2表示的是xi+a2*h处的增长量。在这基础上,因为c1、c2、a2和是未知量。我们需要将其求出来,下面是我的推导过程:
这样二阶龙格库塔的迭代式子就可以表达出来了,写完收工。
然而如果你想你的数值解更加精确的话,你就需要更高 阶次的龙格库塔迭代式,一般而言,四阶是最经典的,用的也是最多的。本来我想把四阶的参数也算一遍,但是工程量巨大,我放弃了。我尝试了一下3阶的参数推导,推导一半,我还是放弃了,我把我推到一半的过程也写出来,希望有人帮我弄出来,本人实在没有勇气。
这里把k1,k1k2,k2平方带入式子中,我感觉非常人能及的,高中学的解析几何感觉都不算什么??
这里有一个需要注意的地方,图片中我用红笔标注了,由于三阶龙格库塔的阶段误差为,意思就是多项式中存在h的次数大于等于4的都可以忽略,这可能会大大减少我们的计算量,但是还是好难。
最后给出一个四阶龙格库塔算迭代表达式:
【算法基础学习 6】龙格库塔法 求微分方程相关推荐
- 数据结构与算法基础-学习-19-哈夫曼解码
一.个人理解 哈夫曼树和哈夫曼编码相关概念.代码.实现思路分享,请看之前的文章链接<数据结构与算法基础-学习-17-二叉树之哈夫曼树>.<数据结构与算法基础-学习-18-哈夫曼编码& ...
- 《iOS面试之道》算法基础学习(上)
前言 道长和唐巧的面试之道,刚出来第一时间就入手了,也是趁着公司目前不是很忙,能好好静下心来细读这本书.笔者认为这本书的最大亮点就在第二章的算法基础,所以想通过笔记的形式来记录算法的学习过程,同时在忘 ...
- 【算法基础15】如何求约数?约数个数?约数之和?最大公约数?
一.试除法求约数 主要思想:由于当n/a=b时,a和b都是n的约数,即约数总是成对出现,可以在一次循环中同时找到i和n/i两个约数,只需要循环n/i次就能找到所有约数. 例题:求一个数的所有约数,并将 ...
- 龙格库塔法求微分方程
龙格库塔法 龙格库塔法对于一个工科学生来说估计并不陌生,因为我们做项目的时候或多或少会接触到微分方程,解微分方程的数值解是就需要用到龙格库塔方程了.我第一次接触到该方法是对四轴姿态角进行四元数解算的时 ...
- 数据结构与算法基础学习(一)
http://www.cnblogs.com/yangwujun/archive/2012/12/29/2839038.html 基本概念和术语 1.数据(Data) 数据是外部世界信息的载体,它能够 ...
- 【算法基础学习 5】 欧拉角 方向余弦 四元数
SLAM中三维空间的刚体运动描述方式 1. 旋转矩阵 1.点和向量,坐标系 点:在几何学上点是 没有大小而只有位置,即点存在于三维空间中的某一个位置. 向量: 可以形象化地表示为 带箭头的线段.箭头所 ...
- 视频教程-数字图像处理实战-算法基础
数字图像处理实战 河海大学计算机硕士毕业,现就职于南京华为研究所,从事嵌入式软件开发工作.热爱模式识别及机器学习算法. 金圣韬 ¥70.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+ ...
- 抛物线的中点生成算法_零基础学习梯度下降算法
零基础学习梯度下降算法 作者:Philipp Muens 翻译:老齐 与本文相关的图书推荐:<数据准备和特征工程> 梯度下降法是机器学习中最基本的优化技术之一.那么,什么是梯度? 下降的是 ...
- 数据结构与算法——从零开始学习(一)基础概念篇
系列文章 第一章:基础知识 第二章:线性表 第三章:栈和队列 第四章:字符串和数组 第五章:树和二叉树 第六章:图 第七章:排序算法 前言 数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合 ...
最新文章
- python怎么编程上传资料_Python实现文件上传
- Zuul1.0和2.0我们该如何选择?
- [MySQL优化案例]系列 -- 用TIMESTAMP类型取代INT和DATETIME
- 监督学习和无监督学习_机器学习的要素是什么? 有监督学习和无监督学习两大类...
- hive 导出json格式 文件_Magicodes.IE在.NET Core中通过请求头导出多种格式文件
- 华为P30系列机身侧面照曝光 摄像头仍然“凸起”...
- java textarea append_JavaFX TextArea.append()导致java.lang.NullPointerException
- visualvm远程监控jvm_别再说你不会 JVM 性能监控和调优了,看完这篇再发言
- Flutter高级第7篇:点击穿透问题、页面禁止左右滑动
- 如何在Pages for Mac中添加页眉、页脚和页码?
- 一元线性回归的前因后果
- PowerDesigner将PDM导出生成WORD文档(rtf文档)
- ps还原上一步快捷键,ps返回上一步快捷键是什么
- linux智能英文输入法,Linux_Ubuntu下安装智能拼音输入法,一、安装scim中的智能拼音 
更 - phpStudy...
- 不能设置一个python sdk_【君奉天|开发日记】Python SDK换唤醒词及设置服务配置
- 模拟量转数字量的本质
- HTML结构及常用的标签
- uc浏览器设置里面的的浏览器ua是什么意思
- java实现打字母小游戏
- 利用Civil3d导入桥梁中线至Revit中建立桥梁上部结构