三维微分方程组四阶龙格库塔求解
利用c++ boost库求解一阶微分方程计算船舶运动_河北一帆的博客-CSDN博客_c++求解微分方程
这篇博文中利用boost库求解线性三自由度船舶运动模型。但是boost库非常庞大,达到好几个G,不如自己写一个龙格库塔求解。网上搜索到的例子大多数是一维微分方程的,推广到三维其实很容易。三自由度船舶运动模型如下所示。
一维微分方程
四阶龙格库塔计算公式为
是求解步长。 对于推广到三维,直接将三维向量替换
double h = 0.1;
double dt = 1;
Eigen::Vector3d nu_;
nu_ << this->nu[0], this->nu[1], this->nu[2];
for (int i = 0; i < 10; i++) {Eigen::Vector3d K1 = this->f(nu_, tau);Eigen::Vector3d K2 = this->f(nu_ + 0.5 * h * K1, tau);Eigen::Vector3d K3 = this->f(nu_ + 0.5*h*K2, tau);Eigen::Vector3d K4 = this->f(nu_ + h * K3, tau);nu_ = nu_ + h / 6 * (K1 + 2 * K2 + 2 * K3 + K4);
}Eigen::Vector3d mss::Vessel::f(Eigen::Vector3d y, Eigen::Vector3d F) {return this->M.inverse() * (-this->D * y + F);
}
三维微分方程组四阶龙格库塔求解相关推荐
- 龙格库塔法matlab求解微分方程组,微分方程组的龙格库塔公式求解matlab版.pdf
微分方程组的龙格库塔公式求解matlab版 微分方程组的龙格-库塔公式求解matlab版 南京大学 王寻 1. 一阶常微分方程组 考虑方程组 y'f x,y,z , y x y ...
- 一阶欧拉近似matlab,MATLAB改进欧拉法与四阶龙格-库塔求解一阶常微分方程.doc
MATLAB改进欧拉法与四阶龙格-库塔求解一阶常微分方程 姓名:樊元君 学号:2012200902 日期:2012.11.06 一.实验目的 掌握改进欧拉法与四阶龙格-库塔求解一阶常微分方程的初值问题 ...
- 四阶龙格库塔(Runge-Kutta)求解微分方程-多种编程语言
前期是分享了matlab下面实现四阶龙格库塔(Runge-Kutta)求解微分方程,这期分享一下C++.C.Java.Python下面的四阶龙格库塔(Runge-Kutta)求解微分方程. 前文传送门 ...
- 四阶龙格库塔方程(Rungekutta)解二阶常微分方程组并计算船舶在迎浪下的纵摇埀荡耦合运动方程-附Matlab代码
今年年初的时候给师姐做了DDPG算法的船舶减横摇控制算法,师姐还有想法要让我把纵摇-埀荡两个自由度的减摇也做出来,这个任务归我了.实际上不管是多少个自由度的减摇,其实都需要解运动方程,当初做单自由度横 ...
- matlab:使用四阶龙格库塔方法求解微分方程组
%书籍:常用数值算法及其matlab实现 %第10章 常微分方程初值问题的数值解法,例10.14使用 %四阶龙格库塔方法 function [t,z] = rk4symeq(fun, t0, tf, ...
- 用四阶龙格-库塔方法求微分方程组
最近一段时间再忙期末考试,小学期课程设计的东西,没怎么更新博客.... 更新一个用四阶龙格库塔方法求解脉冲微分方程,题目来源是一篇论文<Impulsive control of projecti ...
- 数值分析C++实现用四阶龙格-库塔(Runge-Kutta)方法求解常微分方程初值问题
问题:用四阶龙格-库塔(Runge-Kutta)方法求解常微分方程初值问题. 算法描述 算法的程序框图: 具体算法: (1)读取a,b,n,f (2)计算步长h = (b-a)/n,x0=a,y0=f ...
- 阿当姆斯方法求解微分方程初值问题:四阶龙格库塔提供出发值(C语言)
#include<stdio.h>float f1(float x,float y) //第一问 {return y*y;//方程 }float f2(float x,float y)// ...
- 四阶龙格库塔法的基本思想_四阶龙格库塔实验报告.docx
四阶龙格库塔实验报告 三.四阶Runge-Kutta法求解常微分方程一.龙格库塔法的思想根据第九章的知识可知道,Euler方法的局部截断误差是,而当用Euler方法估计出再用梯形公式进行校正,即采用改 ...
- 四阶龙格库塔算法用MATLAB写
四阶龙格-库塔算法可以使用 MATLAB 进行编写.您可以使用 MATLAB 的数值解法工具箱来解决常微分方程组,并使用相应的函数(例如 ode45)来实现四阶龙格-库塔算法.在编写代码时,您需要根据 ...
最新文章
- JavaScript 元编程
- windows下配置cvs服务端
- “分类垃圾桶”成交同比涨超七成 塑料概念股集体波动
- android viewpager原理,ViewPager不为人知的秘密
- 武汉大学2014年基础数学面试全过程
- c语言 牛顿方法计算平方根,sqrt()平方根计算函数的实现2——牛顿迭代法
- antd权限管理_Antd Pro的权限组件
- 黑市最流行的黑客匿名工具
- 二叉树层次遍历(自下而上)
- 匿名函数的disconnect方法 QTimer如何disconnect匿名函数
- API对接网关 code review
- 软件缺陷主要包含哪些要素?
- POST 还是 GET?
- 美股1周2次熔断,全球已在经济危机边缘,3周跌掉中国1年GDP
- WAS8.5.5集群部署全程图解
- 快速傅里叶变换FFT和逆变换的python编程
- 协变(covariance),逆变(contravariance)与不变(invariance)
- 马尔可夫链预测模型的应用——以个人图书借阅为例(改进2.0版)
- 玩转termux之基础配置二
- 微信小程序拍照截取取景框内容#canvas