常见的数值积分方法 (欧拉、中值、龙格-库塔,【常用于IMU中】)

article/2025/10/22 3:51:13

 

1. 积分基本概念

设F(x)为函数f(x)的一个原函数,我们把函数f(x)的所有原函数F(x)+C(C为任意常数)叫做函数f(x)的不定积分(indefinite integral)。

非线性微分方程:

在这里插入图片描述

在有限的时间间隔Δt积分:

在这里插入图片描述

连续时间内积分:

在这里插入图片描述

 

工程上最常见的有三种:欧拉积分(Euler method)、中值积分(Midpoint method)和龙格-库塔法积分(Runge–Kutta methods)。他们的区别就是如何用数值方法模拟一个斜率。这里简单总结如下:

 

2. 欧拉积分

设有如下微分方程:

欧拉方法假设导数在区间内是恒定的,作为一般的RK方法,这对应于单阶段方法,计算初始点的导数,并用它来计算终点的积分值

 

在这里插入图片描述

 

3. 中值积分

中值积分法假设导数是间隔中点的导数,并进行一次迭代来计算此中点的fx值。

设有如下微分方程:

欧拉积分与中值积分都是一阶近似并没有本质不同,二者只是一阶导数所取位置不同,他们的性能也有差别,如下图所示,作为一阶积分近似方法来讲,中点积分有时会稍好一些(带来更快的收敛速度)。

图示为方程 <span class="katex-eq" data-katex-display="false">y'=y, y(0)=1</span> 的数值积分。蓝色为欧拉法,绿色为中点法,红色为精确解 <span class="katex-eq" data-katex-display="false">y=e^{t}</span>。所用步长为 h=1.0。

 

4.RK4积分(4阶龙格库塔法)

龙格-库塔法(Runge-Kutta methods)是用于非线性常微分方程的解的重要的一类隐式或显式迭代法。在工程中最常用的是 四阶龙格-库塔积分,也就是 RK4 积分,它的计算方式如下:

设有如下微分方程:

其中:

k1 是时间段开始时的斜率;
k2 是时间段中点的斜率,通过欧拉法采用斜率k1来决定y在点tn + h/2的值;
k3 也是中点的斜率,但是这次采用斜率k2决定y值;
k4 是时间段终点的斜率,其y值用k3决定。
其数学公式如下:

从公式中可以看出两个中点的斜率具有更大的权重。龙格-库塔法的示意图如下,它也是一种更高阶的逼近方法,通常也具有更好的逼近效果,总累计误差为 Δt4 阶。

image399

Runge-Kutta4假定评估值,对于 f()​在间隔的开始,中点,中点的中点和结束。它使用四个阶段迭代计算积分,用四个导数k 1~k 4,顺序获得。然后对这些导数进行加权平均,以获得4阶估计值间隔中的导数。
RK4方法更好地指定为一个小算法而不是一步式公式。

龙格-库塔方法的推导基于Taylor展开方法,因而它要求所求的解具有较好的光滑性。如果解的光滑性差,那么,使用四阶龙格-库塔方法求得的数值解,其精度可能反而不如改进的欧拉方法。在实际计算时,应正对问题的具体特点选择适合的算法。对于光滑性不太好的解,最好采用低阶算法而将步长取小。

参考代码

 
#include "stdio.h"
#include "stdlib.h"void RKT(t,y,n,h,k,z)
int n;              /*微分方程组中方程的个数,也是未知函数的个数*/
int k;              /*积分的步数(包括起始点这一步)*/
double t;           /*积分的起始点t0*/
double h;           /*积分的步长*/
double y[];         /*存放n个未知函数在起始点t处的函数值,返回时,其初值在二维数组z的第零列中*/
double z[];         /*二维数组,体积为n x k.返回k个积分点上的n个未知函数值*/
{extern void Func();             /*声明要求解的微分方程组*/int i,j,l;double a[4],*b,*d;b=malloc(n*sizeof(double));     /*分配存储空间*/if(b == NULL){printf("内存分配失败\n");exit(1);}d=malloc(n*sizeof(double));     /*分配存储空间*/if(d == NULL){printf("内存分配失败\n");exit(1);}/*后面应用RK4公式中用到的系数*/a[0]=h/2.0;                     a[1]=h/2.0;a[2]=h; a[3]=h;for(i=0; i<=n-1; i++) z[i*k]=y[i];                /*将初值赋给数组z的相应位置*/for(l=1; l<=k-1; l++){Func(y,d);for (i=0; i<=n-1; i++)b[i]=y[i];for (j=0; j<=2; j++){for (i=0; i<=n-1; i++){y[i]=z[i*k+l-1]+a[j]*d[i];b[i]=b[i]+a[j+1]*d[i]/3.0;}Func(y,d);}for(i=0; i<=n-1; i++)y[i]=b[i]+h*d[i]/6.0;for(i=0; i<=n-1; i++)z[i*k+l]=y[i];t=t+h;}free(b);            /*释放存储空间*/free(d);            /*释放存储空间*/return;
}
main()
{int i,j;double t,h,y[3],z[3][11];y[0]=-1.0; y[1]=0.0; y[2]=1.0;t=0.0; h=0.01;RKT(t,y,3,h,11,z);printf("\n");for (i=0; i<=10; i++)           /*打印输出结果*/{t=i*h;printf("t=%5.2f\t   ",t);for (j=0; j<=2; j++)printf("y(%d)=%e  ",j,z[j][i]);printf("\n");}
}void Func(y,d)
double y[],d[];
{d[0]=y[1];      /*y0'=y1*/d[1]=-y[0];     /*y1'=y0*/d[2]=-y[2];     /*y2'=y2*/return;
}

 

参考文章附录A:四元数误差状态卡尔曼滤波
参考亮哥的博客说明:http://www.xinliang-zhong.vip/msckf_notes/

 


http://chatgpt.dhexx.cn/article/4Hny7T8Y.shtml

相关文章

欧拉积分法

数值积分法是求定积分的近似值的数值方法。即用被积函数的有限个抽样值的离散或加权平均近似值代替定积分的值。 数值积分法也是计算机仿真中常用的一种方法。在已知函数的微分方程时&#xff0c;求解函数下一时刻的值&#xff0c;我们主要有欧拉法、梯形法和龙格库塔法。 欧拉…

欧拉积分

欧拉积分 两个公式&#xff1a; $\Gamma(s)\int_{0}^{\infty}x^{s-1}e^{-x}dx,s>0$ (1) $B(p,q)\int_{0}^{1}x^{p-1}(1-x)^{q-1}dx,p>0,q>0$ (2) 一 、$\Gamma(Gamma)$函数 性质&#xff1a; 1.$\Gamma(s)$在定义域…

Oracle现使用CVSS 3.0对漏洞进行评级

Oracle今年4月关键补丁更新(Critical Patch Update)涉及多款产品中的136个漏洞&#xff0c;其中最大的变化是切换到通用安全漏洞评分系统3.0版本或者说CVSSv3&#xff0c;该版本可更准确反映漏洞带来的影响。 Oracle公司在其补丁公告中指出&#xff0c;这个关键补丁更新中的漏洞…

Cvss v2 complete documentation

通用漏洞计分系统&#xff08;CVSS&#xff09;为沟通IT漏洞的特征和影响提供了一个开放的框架。 CVSS由3组组成&#xff1a;基础&#xff0c;时间和环境。 每个组产生的范围从0到10的数字分数&#xff0c;以及Vector&#xff0c;一个反映用于得出分数的值的压缩文本表示。 基础…

东莞dell服务器维修上门服务,CVSS 10分漏洞影响Dell Wyse Thin客户端设备

近日&#xff0c;CyberMDX 研究人员公开了今年6月在Dell Wyse Thin客户端中发现了2个安全漏洞&#xff0c;漏洞CVE编号为CVE-2020-29491 和 CVE-2020-29492&#xff0c;这两个漏洞CVSS 评分都为10分&#xff0c;漏洞影响运行ThinOS v8.6及更低版本的所有设备。攻击者利用这两个…

通用漏洞评估方法CVSS3.0简表

CVSS3.0计算分值共有三种维度&#xff1a; 1. 基础度量。 分为 可利用性 及 影响度 两个子项&#xff0c;是漏洞评估的静态分值。 2. 时间度量。 基础维度之上结合受时间影响的三个动态分值&#xff0c;进而评估该漏洞的动态分值。 3. 环境度量。 根据用户实际环境需求结合时间…

通用漏洞评估方法CVSS3.0详解

CVSS(Common Vulerability Scoring System, 通用漏洞评估方法)&#xff0c;是由NIAC 发布、FITST维护的开放式行业标准&#xff0c;CVSS 的发布为信息安全产业从业人员交流网络中所存在的系统漏洞的特点与影响提供了一个开放式的评价方法。 1.度量&#xff08;Metrics&#xf…

通用漏洞评估方法CVSS3.0介绍

CVSS(Common Vulerability Scoring System, 通用漏洞评估方法)&#xff0c;是由NIAC 发布、FITST维护的开放式行业标准&#xff0c;CVSS 的发布为信息安全产业从业人员交流网络中所存在的系统漏洞的特点与影响提供了一个开放式的评价方法。 1.度量&#xff08;Metrics&#xf…

通用漏洞评估方法CVSS 3.0 计算公式及说明

CVSS 3.0 计算公式及说明 一、基础评价 1. 基础评价公式为: 当 影响度分值 <= 0: 基础分值 = 0 当 0 < 影响度分值 + 可利用度分值 < 10: 作用域 = 固定: 基础分值 = Roundup(影响度分值 + 可利用度分值) 作用域 = 变化: 基础分值 = Roundup[1.08 (影响度分值 + 可…

漏洞评估-CVSS3

详细可以参考ITU-T X.1521 Exploitability Attack Vector&#xff08;AV&#xff09; Attack Complexity(AC) Priviliages required(PR) User Interation&#xff08;UI&#xff09; Scope(S) 范围指的是计算授权主体&#xff08;如应用、操作系统或沙盘环境&#xff09;在授…

基于CVSS3.1的一种评估框架

原文 Vulnerability Modelling for Hybrid Industrial Control System Networks 出版 Springer Nature B.V. 2020June 2020https://doi.org/10.1007/s10723-020-09528-w 文章目录 一、摘要二、相关技术介绍&#xff08;一&#xff09;CVSS3.1计算&#xff08;二&#xff09;…

【CVSS V3.1漏洞评分计算方法】

​ 漏洞计算的官网CVSSV3.1 &#xff1a;Common Vulnerability Scoring System Version 3.1 Calculator 1、使用方法&#xff1a; 用鼠标移到对应的字符即可了解相应的含义。选中后即可得到一个分值。2、严酷度评估&#xff1a; 严重程度分值范围9.0-10致命7.0-8.9严重4.0-6…

【文献翻译】基于CVSS的IT系统网络安全风险定量评估方法-A Quantitative CVSS-Based Cyber Security Risk Assessment Methodology

基于CVSS的IT系统网络安全风险定量评估方法 A Quantitative CVSS-Based Cyber Security Risk Assessment Methodology For IT Systems 摘要 由于我们不断增长的IT系统中网络威胁不断增加&#xff0c;IT系统风险评估是必不可少的。此外&#xff0c;法律法规敦促组织定期进行风…

cvss评分及漏洞矢量

CVSS CVSS全称为Common Vulnerability Scoring System&#xff0c;即“通用漏洞评分系统”&#xff0c;是一个行业公开的标准。其被设计用来评测漏洞的严重程度&#xff0c;并帮助确定所需反应的紧急度和重要度。通过漏洞难易程度以及对机密性、完整性、可用性的影响综合评估后…

cvss(cvss)

nt最近领土存在感很低&#xff1f;nt最近领土存在感很低&#xff0c;多半是废了从布 SS特5红颜101都是一打一个准只有赤那V韧性十足看空投布局SS特5红颜后方种地我以为赤那V没这么2 漏洞扫描软件Nessus怎么用&#xff1f; 装完后&#xff0c;在菜单选择&#xff1a; 当然&#…

CVSS评分策略分析及近年来满分漏洞盘点

01 引言 近两年正如许多安全公司的研究员亲身经历的那样&#xff0c;网络攻击量显著增加&#xff0c;重大漏洞被相继爆出并伴随着在野利用。如去年年底的log4shell&#xff08;CVE-2021-44228&#xff09;和今年爆出的spring4shell&#xff08;CVE-2022-22965&#xff09;在安…

解读 CVSS 通用评分系统中最具争议的 Scope

CVSS, Common Vulnerability Scoring System, 即通用漏洞评分系统&#xff0c;简言之就是一个对安全漏洞进行打分的标准。网络安全人员按照 CVSS 评分的维度对漏洞打分&#xff0c;截至到今天&#xff0c;CVSS 已经升级到 3.1 版本。实际上 CVSS 评分还有一些令人模糊的灰色地带…

揭开CVSS的神秘面纱

一、CVSS到底是什么&#xff1f; 虽然软件漏洞的潜在影响不应该被低估&#xff0c;但是对每个漏洞给予同等重要性是不科学的&#xff0c;同时也是不合理的。因此&#xff0c;我们需要一个专业评分标准对每个漏洞的严重程度进行优先级排序&#xff0c;以便企业和安全团队可以从…

【网络安全常用术语解读】CVSS详解

什么是CVSS&#xff1f;CVSS是由哪个组织定义和维护的&#xff1f;CVSS主要用途是什么&#xff1f;CVSS 3.X与2.X版本主要有哪些区别&#xff1f;如何给一个CVE漏洞进行评分&#xff1f;读完本文你将收获所有答案。如还有其他相关疑问&#xff0c;欢迎留言讨论。 1. 简介 CVSS…

软件项目管理 第七章 进度计划

目录 一、进度管理基本概念 任务定义 任务关系 进度管理图示 网络图 甘特图 里程碑图 资源图 燃尽图 燃起图 二、任务历时估算 定额估算法 经验导出模型 Walston-Felix模型&#xff1a; ​ 基本COCOMO &#xff1a; ​ PERT(工程评估评审技术) PE…