字节处发生读取错误 (成功)。 重试中前言:前几天在看px4中的关于姿态结算部分(q)运用到了龙哥库塔法迭代四元数。当时只是了解了他的作用,并没有去详细了解里面的算法,老师建议去详细学习下,于是便写下这个博客来学习龙哥库塔法。
一、他是用来干什么的?
龙哥库塔法是用来解常微分方程的,是一种数值解法。我们以前学过的欧拉法和改进的欧拉法也都是用来常微分方程的数值解法。
于是下面我们先来回顾欧拉法和改进的欧拉法:
二、欧拉法:
说明:
1.我们要先去理解求解微分方程的几何问题,就是:如果我们知道导数的方程(即如果给了点的坐标,就知道该点的斜率)以及初始的点的位置,如何去求这个函数的原始图像,即y(x)。
2.由图中的线可知,知道一个点的位置以及此处的斜率,在选去步长后就可以知道下一个点的坐标,当然,步长越短越精确,越长误差越大。
3.另外还要介绍一个概念,就是局部截断误差,精确解和近视解的差就是局部截断误差。也可以从上图中看出。
4.在这里定义一个规则,精确解的表示方法:y(xk),也就是带括号,如果不带括号就是近视解.
三、改进的欧拉法
说明:改进的欧拉方法就是不再使用该点的斜率来求下一个点的坐标,而是使用该点的斜率和下一个点的斜率的和的一半作为斜率。
四、龙哥库塔法
介绍完龙哥库塔法,下面就介绍源码中运用的龙哥库塔法
还记得我们之前提过的关于四元数表示旋转吗?就是下面这张图:
我们先将图中的四元数写成完整形式,即带虚部的形式: