【学习总结】动力学方程的龙格库塔积分法(含具体例子与代码)

本文仅用于个人学习总结,如有错误请批评指正。

参考资料

徐超江等,常微分方程基础教程,高等教育出版社,2023年。

1、欧拉法

1.1 前向欧拉

欧拉积分部分不用展开介绍,较为简单。直接拍照课本。

在这里插入图片描述

1.2 梯形法/隐式格式的迭代计算

欧拉法是左侧的数值作为”高度“,所以是一阶的,精度不高。要想高,采用梯形法。

在这里插入图片描述
梯形法是隐式求解,和后面龙格库塔的思路有些相像,所以摆在了这里。

2、龙格库塔积分

先放课本:

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
课本给出了Runge-Kutta的提出思路:避免Taylor展开积分的高阶项造成计算量过大,而是采用这个区间的几个点来对积分进行估计,根据截断误差的阶数,求解对应的系数。可以看出系数是递归计算出来的。

3、高阶常微分方程组的求解

上述例子,都是对于:一元一阶微分方程进行的积分,如果出现了多个变量、或者高阶微分,怎么处理?

处理方法,就是引入中间变量,将高阶微分方程变为多个一阶微分方程,进行求解。参考书籍如下:

在这里插入图片描述注意这里的 f ( x , y , z , w ) f(x,y,z,w) f(x,y,z,w),就是最高阶数求导对应的方程。仔细观察这组式子,每个等式左侧都是变量/中间变量的一阶导数,右侧都没有导数,因此可以直接积分。

具体的积分方法,就套用上面的Runge-Kutta方法即可,写成下方这种向量形式只是表达简练,但计算时依然每个方程依此计算。

在这里插入图片描述在这里插入图片描述

4、具体例子

下面给出一个具体的动力学方程计算例子:

在这里插入图片描述
可以看出,需要计算的是 θ \theta θ x x x 随时间变化的方程,但原方程中出现了二阶导数。为了敲字方便,导数采用一撇 ′ ' 进行标识。

定义变量如下: y = [ θ ′ , x ′ , θ , x ] y=[\theta', x', \theta, x] y=[θ,x,θ,x],则原方程可以全部换成 y ( ) y() y() 进行表示:
m L 2 d y 1 d t + m L d y 2 d t + m g L y 3 = 0 mL^2 \frac{dy_1}{dt} + mL \frac{dy_2}{dt} + mgL y_3 = 0 mL2dtdy1+mLdtdy2+mgLy3=0 m L d y 1 d t + ( m + M ) d y 2 d y + c y 2 + k y 4 = F ( t ) mL \frac{dy_1}{dt} + (m+M) \frac{dy_2}{dy} + c y_2 + k y_4 = F(t) mLdtdy1+(m+M)dydy2+cy2+ky4=F(t) 以及两个中间变量的定义方程: d y 3 d t = y 1 \frac{dy_3}{dt}=y_1 dtdy3=y1 d y 4 d t = y 2 \frac{dy_4}{dt}=y_2 dtdy4=y2

这时候,为了凑出来龙格库塔积分时,方程的形式,即左侧是变量的一阶导数,右侧没有微分项。3式和4式是符合的,但1和2并不是。我们发现,如果1式将除了 d y 1 d t \frac{dy_1}{dt} dtdy1 全部外都移动到右侧,右侧存在一个 d y 2 d t \frac{dy_2}{dt} dtdy2,并不符合基本形式。

因此,我们对1式进行变换,得到: d y 1 d t = − 1 L ( d y 2 d t + g y 3 ) \frac{dy_1}{dt}= -\frac{1}{L} (\frac{dy_2}{dt} +g y_3) dtdy1=L1(dtdy2+gy3),将这个式子带入2式,得到: d y 2 d t = 1 M ( m g y 3 − c y 2 − k y 4 + F ( t ) L ) \frac{dy_2}{dt} = \frac{1}{M}(mgy_3-cy_2-ky_4+ \frac{F(t)}{L}) dtdy2=M1(mgy3cy2ky4+LF(t)) 同理,利用1式求出 d y 2 d t = − L d y 1 d t − g y 3 \frac{dy_2}{dt}=-L\frac{dy_1}{dt}-gy_3 dtdy2=Ldtdy1gy3 后带入2式,得到: d y 1 d t = 1 M L ( c y 2 + k y 4 − ( m + M ) g y 3 − F ( t ) L ) \frac{dy_1}{dt}=\frac{1}{ML}(cy_2+ky_4-(m+M)gy_3- \frac{F(t)}{L}) dtdy1=ML1(cy2+ky4(m+M)gy3LF(t))

此时,修改后的2个式子符合了上述龙格库塔积分的形式。
之后带入书本的式(8.46),依此计算出第 n n n 步的 y i , n y_{i,n} yi,n 即可。

Matlab代码

main函数如下:

clc; clear; close all;
y_init = [0, -1, 0, 0];
tb = 0;
te = 50;
step = 0.1;
[T, R] = rk4(@my_ode, tb, te, y_init, 1000);
figure(1);
plot(T, R(3,:), LineWidth=1)
xlabel("t");
ylabel("\theta");

其中rk4即Runge-Kutta的4阶积分。具体实现如下:

# rk4 的具体计算方法
function [T, R] = rk4(f, a, b, y_init, M)
	h = (b-a)/M;
	Y = zeros(4, M+1);
	T = a:h:b;
	Y(:, 1) = y_init';
	for j = 1:M
		k1 = h*feval(f, T(j), Y(:, j));
		k2 = h*feval(f, T(j) + h/2, Y(:,j)+k1/2);
		k3 = h*feval(f, T(j) + h/2, Y(:,j)+k2/2);
		k4 = h*feval(f, T(j) + h, Y(:, j)+k3);
		Y(:, j+1) = Y(:,j)+(k1 + 2*k2 + 2*k3 + k4)/6;
	end
	R = Y;
end

其中,my_ode 为具体的微分方程:

function eq = my_ode(t, y)
	m=0.4;
	M=1;
	L=0.5;
	g=9.81;
	k=1;
	c=1;
	# da/dt
	dy1_dt = (c*y(2)/M + k*y(4)/M - m*g*y(3)/M - g*y(3) - ft(t)/(M*L)) / L;
	dy2_dt = m*g*y(3)/M - c*y(2)/M - k*y(4)/M + ft(t)/M/L;
	dy3_dt = y(1);
	dy4_dt = y(2);
	eq = [dy1_dt; dy2_dt; dy3_dt; dy4_dt];
end

# ft为外部激励
function y = ft(x)
	y = exp(-x/2);
end

最终画出来的结果:

在这里插入图片描述

小结

花了一天时间,折腾半天,算是对求解有了更深入的理解。
感慨数学学了多少年,用的时候还是毛都不会。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/331147.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4D毫米波雷达——原理、对比、优势、行业现状

前言 4D 毫米波雷达是传统毫米波雷达的升级版,4D指的是速度、距离、水平角度、垂直高度四个维度。 相比传统 3D 毫米波雷达,4D 毫米波雷达增加了“高度”的探测,将第四个维度整合到传统毫米波雷达中。 4D毫米波雷达被视为未来车载雷达的一…

eBPF运行时安全

引言 eBPF作为当前linux系统上最为炙手可热的技术,通常被用于网络流量过滤和分析、系统调用跟踪、性能优化、安全监控,当下比较知名的项目有Cilium、Falco等。 Cilium 是一个开源的容器网络和安全性项目,致力于提供高效的容器通信和强大的安…

【备战蓝桥杯】探索Python内置标准库collections的使用

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-q0zvWxZtAIdSGZ8R {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

大模型学习之书生·浦语大模型5——基于LMDeploy大模型量化部署实践

目录 大模型部署背景 LMDeploy部署 量化 TurboMind API server 动手实践环节 1.创建开发机 2.创建虚拟环境 3.服务部署 在线转换模型 离线转换 4.TurboMind推理 TurboMindAPI服务 提供了一些API的接口 Gradio Demo演示 API server作为后端 注意这里要同时启动API serv…

7款值得收藏的前端动画特效(附效果图在线预览)

分享7款有趣也实用的前端动画特效 其中有CSS动画、canvas动画、js小游戏等等 下面我会给出特效样式图或演示效果图 但你也可以点击在线预览查看源码的最终展示效果及下载源码资源 canvas粒子空间特效 基于canvas实现的一款粒子空间特效 该特效初始时会从四周扩散粒子并随时间…

Java_二叉树详解

前言 程序员优劣之间最明显的就是数据结构和算法的掌握程度,二叉树作为数据结构中不可缺少的一员,可见其重要程度.我们一起来简单地学习二叉树吧~ 树型结构 在我们学习二叉树前先了解一下树型结构(二叉树是树型结构中的一种) 树是一种非线性的数据结构,它是有n (n>0) 个…

条码WMS仓储管理系统的价值与优势

在全球化和数字化的时代,企业面临着诸多挑战。在复杂的运营环境中,如何提高运营效率和效果,降低成本,增强竞争力,成为企业关注的焦点。而库存管理作为企业运营的关键环节,其重要性不言而喻。本文将深入探讨…

【PyTorch】PyTorch之Tensors索引切片篇

文章目录 前言一、ARGWHERE二、CAT、CONCAT、CONCATENATE三、CHUNK四、GATHER五、MOVEDIM和MOVEAXIS六、PERMUTE七、RESHAPE八、SELECT九、SPLIT十、SQUEEZE十一、T十二、TAKE十三、TILE十四、TRANSPOSE十五、UNBIND十六、UNSQUEEZE十七、WHERE 前言 介绍常用的PyTorch之Tenso…

【DC-DC】APS54085降压恒流 高辉度调光降压恒流芯片

产品描述 APS54085 是一款 PWM 工作模式,高效率、 外围简单、内置功率 MOS 管,适用于 5-100V 输入的高精度降压 LED 恒流驱动芯片。最大电流 2.0A。 APS54085 可实现线性调光和 PWM 调光, 线性调光有效电压范围 0.52-2.55V. PWM 调光频率范围 100…

山西电力市场日前价格预测【2024-01-19】

日前价格预测 预测说明: 如上图所示,预测明日(2024-01-19)山西电力市场全天平均日前电价为499.01元/MWh。其中,最高日前电价为898.49元/MWh,预计出现在18:00。最低日前电价为373.35元/MWh,预计…

elasticsearch 中热词使用遇到的坑

在使用es检索时,一般会创建索引以及索引下mapping和setting一样配置,如下: 命令创建配置方式: PUT /my_index { "settings": { "number_of_shards": 1 }, "mappings": { "properties": { "title": { …

k8s的对外服务--ingress

service作用体现在两个方面 1、集群内部 不断跟踪pod的变化,更新endpoint中的pod对象,基于pod的IP地址不断变化的一种服务发现机制 2、集群外部 类似负载均衡器,把流量ip端口,不涉及转发url(http,https&a…

Docker-02-镜像项目部署

Docker-02-镜像&项目部署 文章目录 Docker-02-镜像&项目部署一、镜像①:镜像结构②:Dockerfile③:构建镜像01:构建02:查看镜像列表03:运行镜像 二、网络①:容器的网络IP地址②&#xff…

《如何制作类mnist的金融数据集》——0.背景

0.背景 最近在金融人工智能领域进行了研究。由于金融领域数据集的欠缺,因此需要根据其领域中的各种数据的特征进行相应数据集的制作。 下图所示是一篇关于金融与预测的论文,题目为:《预测自动交易的财务信号:一个可解释的方法》。…

分享用is_sorted()解决单调数列问题

题目名称 896. 单调数列 目录 题目名称 896. 单调数列 1.题目 2.题目分析 3.题目知识 3.1 is_sorted() 3.2.迭代器与反向迭代器 3.2.1理解迭代器 3.2.2正向迭代器 3.2.3反向迭代器 最后🍨 推荐阅读顺序: 1.题目->2.题目分析->3.题目知识点 1.题目 如…

AI新工具(20240118):AlphaGeometry解答国际数学奥林匹克竞赛中的几何问题

AlphaGeometry AlphaGeometry是由谷歌旗下的DeepMind团队开发的一款人工智能系统,它能够解决国际数学奥林匹克竞赛(IMO)的几何题。AlphaGeometry模型通过神经语言模型和符号推理引擎相结合的方式,实现了复杂的几何定理证明。该模…

My CUDA Note

1. CUDA中的grid和block基本的理解 Kernel: Kernel不是CPU,而是在GPU上运行的特殊函数。你可以把Kernel想象成GPU上并行执行的任务。当你从主机(CPU)调用Kernel时,它在GPU上启动,并在许多线程上并行运行。 Grid: 当你…

Chondrex:Glycosaminoglycans Assay Kit(糖胺聚糖检测试剂盒)

糖胺聚糖(glycosaminoglycans,GAGs)是一种携带负电荷的多糖链,位于大多数结缔组织和许多不同类型细胞的细胞外基质(extracellular matrices, ECM)中以及细胞表面上。由重复双糖单位复合构成的糖胺聚糖可分为…

动态住宅代理IP是什么?如何配置使用?

动态住宅代理IP,作为一种高效的网络工具,不仅能够为您的在线活动提供额外的保护层,还能增强匿名性和数据安全。接下来将深入探讨动态住宅代理IP的定义、设置步骤、以及它如何有效保护您的网络隐私和安全。 一、动态住宅代理是什么&#xff1f…

尚硅谷Nginx高级配置笔记

写在前面:本笔记是学习尚硅谷nginx可成的时候的笔记,不是原创,如有需要,可以去官网看视频,以下是pdf文件 Nginx高级 第一部分:扩容 通过扩容提升整体吞吐量 1.单机垂直扩容:硬件资源增加 云…
最新文章