matlab数值计算函数--ode45
当难以求得微分方程的解析解时,可以求其数值解,Matlab中求微分方程数值解的函数有七个:ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb。本文讲解ode45,其实原理都是相似的。
一、函数语法
ode45函数的形式张下面的样子
[T,Y] = ode45(odefun,tspan,y0,options)
- odefun: 函数句柄,用于表示ODE的右侧,例如:dy/dt=f(t,y),可以写为f。函数句柄可以是函数,也可以是匿名函数或者内联函数
- tspan: 时间区间,可以是一个向量,也可是一个区间(如[t0,tf])。
- y0: 初始条件,可以是一个向量。
- options: 可选参数,常用于控制ODE45的行为,如精度、步长等。
二、示例
我们举一个自由落体的例子来讲解ode45这个函数
{ x ˙ = v v ˙ = g \begin{cases} \dot x = v \\ \dot v = g \\ \end{cases} {x˙=vv˙=g
其中 x x x 为位置, v v v 为速度, g g g 为重力加速度,设置初始值均为 0
clc;clear;% 初始状态
state0 = [0,0];
% 时间区间
t = [0,10];
% 运算,得到T为时间点,Y为对应时间点的状态
[T,Y] = ode45(@odefunc, t, state0);% 绘图
figure(1)
plot(T,Y(:,1));
xlabel('t(s)');
ylabel('x')figure(2)
plot(T,Y(:,2));
xlabel('t(s)');
ylabel('v')% 写微分方程
function dy = odefunc(t, y)g = 9.8;dy = zeros(2,1);% 这里也就是求出微分方程中状态的导数dy(1) = y(2);dy(2) = g;
end
其中在 odefunc 函数中, y y y 就可以认为是状态,而我们要给出的是下一拍状态的导数。 t t t 是时间范围,这里我们指定为0-10秒,state0 指的是初始状态,这里全部设定为0。T 是返回的时间点,因为ode45每一拍之间的时间间隔并不相同,他会自适应,所以需要记录下时间间隔,Y 是返回的每个时间下的状态,由于我们有两个状态,所以Y有两列。
得到位置和速度的图像


三、参数
设置参数就是设置 options ,这是一个结构体,
- ‘RelTol’: 相对精度,默认为1e-3。
- ‘AbsTol’: 绝对精度,默认为1e-6。
- ‘InitialStep’: 初始步长。
- ‘MaxStep’: 最大步长。
- ‘Events’: 事件函数,用于检测ODE的事件点,如极值点、零点等。
如果我们想自己设置的话就是
options = odeset('RelTol',1e-4,'AbsTol',1e-8);[T,Y] = ode45(@odefunc, t, state0);
相关文章:
matlab数值计算函数--ode45
当难以求得微分方程的解析解时,可以求其数值解,Matlab中求微分方程数值解的函数有七个:ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb。本文讲解ode45,其…...
Vue3地图选点组件
Vue3地图选点组件 <template><div style"width: 100%; height: 500px"><div class"search-container"><el-autocompletev-model"suggestionKeyWord"class"search-container__input"clearable:fetch-suggestion…...
JS之注册事件兼容性解决方案
本章介绍注册事件兼容性的解决方案 废话不多说,直接上代码: function addEventListener(element, eventName, fn) {//判断当前浏览器是否支持 addEventListener 方法if (element.addEventListener) {element.addEventListener(eventName, fn); // 第三个…...
C#中使用as关键字将对象转换为指定类型
目录 一、定义 二、示例 三、生成 使用as关键字可以将对象转换为指定类型,与is关键字不同,is关键字用于检查对象是否与给定类型兼容,如果兼容则返回true,如果不兼容则返回false。而as关键字会直接进行类型转换,如果…...
【Spring实战】21 Spring Data REST 常用功能详细介绍
文章目录 1. 资源导出(Resource Exporting)2. 查询方法(Query Methods)3. 分页和排序(Pagination and Sorting)4. 关联关系(Associations)5. 事件(Events)6. …...
05-微服务-RabbitMQ-概述
RabbitMQ 1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应。 异步通讯:就像发邮件,不需要马上回复。 两种方式各有优劣,打电话可以立即得到响应&am…...
jmeter参数化的三种方式
1.用户定义变量 使用变量: ${变量名} 这个变量是全局变量,也就是在下面子节点中都可以使用; 使用场景:两个账号分别有不同的权限,A经办,B审核。等。。。 2.CSV数据文件设置 3.函数...
java基础之Java8新特性-Lambda
目录 什么是Lambda表达式 Lambda表达式规范 基本语法 参数列表 函数体 注意事项 如何定义函数接口 1.保证接口中只能有一个抽象方法 2.使用FunctionalInterface注解标记该接口为函数接口 使用Lambda调用无参函数 使用Lambda调用有参函数 使用Lambda的精简写法 使用…...
入门使用mybatis-plus
第一步:pom文件带入依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version> </dependency> 第二步:创建实体对象 TableName(&…...
ubuntu安装和配置ssh教程
一、前言 ssh服务类似于windows的远程桌面服务,可以实现对linux系统的远程管理,ssh默认端口为22端口。后面博主进行操作以ubuntu2020操作系统为例进行操作。 二、安装ssh服务 Ubuntu 2020 默认不安装 SSH 服务。它只安装了 SSH 客户端,可以用于连接到其他计算机上的 SSH 服…...
每天刷两道题——第六天
1.1字母异位词分组 给你一个字符串数组,将字母异位词组合在一起。可以按任意顺序返回结果列表。字母异位词指的是由重新排列源单词的所有字母得到的一个新单词。 输入: strs [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] 输出: [[“bat”],[“nat”,…...
时间序列平稳性相关检验方法
理解平稳性 一般来说,平稳时间序列是指随着时间的推移具有相当稳定的统计特性的时间序列,特别是在均值和方差方面。平稳性可能是一个比较模糊的概念,将序列排除为不平稳可能比说序列是平稳的更容易。通常不平稳序列有几个特征: …...
<leetcode修炼>双指针训练-移动零
题目: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 方法1: 快慢指针 快指针负责遍历数组中所有元素,慢指针负责记录不为0的…...
Python初探:从零开始的编程奇妙之旅
一、Python是什么 Python是一门多用途的高级编程语言,以其简洁、易读的语法而脱颖而出。在深度学习领域,Python扮演着至关重要的角色。其丰富的科学计算库(如NumPy、Pandas、Matplotlib)和强大的深度学习框架(如Tenso…...
算法与数据结构之链表<一>(Java)
目录 1、链表的定义 2、链表的特点 3、为何要使用链表 4、数组与链表的区别 5、链表的增删查 5.1、在头部插入链表 5.2、在中间插入链表 5.3、删除头节点 5.4、删除中间节点 5.5、查询某个值 6、链表的应用 6.1 如何设计一个LRU缓存算法? 6.2 约瑟夫问题 1、链表的定…...
目标检测COCO数据集与评价体系mAP
1.mAP 2.IoU IoU也就是交并比,也称为 Jaccard 指数,用于计算真实边界框与预测边界框之间的重叠程度。它是真值框与预测边界框的交集和并集之间的比值。Ground Truth边界框是测试集中手工标记的边界框,用于指定对象图像的位置以及预测的边界框…...
2024最全面且有知识深度的web3开发工具、web3学习项目资源平台
在Web3技术迅速发展的时代,寻找一个综合且深入的Web3开发工具和学习项目资源平台变得至关重要。今天,我将向大家介绍一个非常有价值的网站,它就是https://web3x.world 。 Web3X是一个全面而深入的Web3开发者社区,为开发者们提供了…...
Golang - defer关键字 深入剖析
defer关键字 defer和go一样都是Go语言提供的关键字。defer用于资源的释放,会在函数返回之前进行调用。一般采用如下模式: f,err : os.Open(filename) if err ! nil {panic(err) } defer f.Close()如果有多个defer表达式,调用顺序类似于栈&a…...
如何在Spring Boot中使用@Scheduled写定时任务判断数据量是否过大,过大则进行分表操作,多张表使用临时视图查询
当数据量过大,在定时任务中执行分表操作 1、复制表结构及数据 在xml中编写复制表结构及数据(newTableName为新表名、originalTableName为原始表名) 只复制表结构: CREATE TABLE ${newTableName} AS SELECT * FROM ${originalTa…...
使用jieba库进行中文分词和去除停用词
jieba.lcut jieba.lcut()和jieba.lcut_for_search()是jieba库中的两个分词函数,它们的功能和参数略有不同。 jieba.lcut()方法接受三个参数:需要分词的字符串,是否使用全模式(默认为False)以及是否使用HMM模型&…...
智能排错助手:让快马AI分析你的openclaw安装错误并生成解决方案
最近在折腾openclaw这个工具时,遇到了不少安装报错的问题。作为一个经常在各类开发环境中摸爬滚打的程序员,我发现这类开源工具的安装过程往往隐藏着不少坑。不过这次尝试用AI辅助诊断后,整个排错效率提升了不少,这里记录下我的实…...
别再手动算置信区间了!ArcGIS里用Python脚本批量计算FVC,效率提升90%
遥感植被覆盖度自动化计算:用Python脚本解放ArcGIS生产力 当面对数百景遥感数据需要计算植被覆盖度(FVC)时,手动操作ArcGIS界面不仅耗时费力,还容易因人为失误导致结果不一致。我曾在一个省级生态评估项目中,需要处理3年共36期Lan…...
基于ATP的10kV并联电容暂态过程仿真
基于ATP的10kV并联电容暂态过程仿真在电力系统中,10kV并联电容装置起着至关重要的作用,比如提高功率因数、改善电压质量等。然而,其暂态过程却较为复杂,需要深入研究。ATP(Alternative Transients Program)…...
高防服务器怎么选?360CDN 高防性价比分析
作为运维中小站点3年的老站长,前阵子被DDoS攻击搞得焦头烂额,网站频繁卡顿、宕机,损失不少流量。试过普通服务器加防护插件,基本形同虚设,后来陆续测试了360CDN高防以及其他几款主流高防产品,全程实测不吹不…...
YOLOv11自定义数据集训练避坑指南:从data.yaml配置到模型选择(实测对比v8)
YOLOv11自定义数据集训练实战:从数据配置到模型调优的深度解析 在计算机视觉领域,目标检测技术的迭代速度令人目不暇接。作为YOLO系列的最新成员,YOLOv11凭借其优化的网络结构和训练策略,正在成为工业界和学术界的热门选择。然而&…...
大疆L1点云数据导出后,用CloudCompare做可视化与简单分析的完整流程
大疆L1点云数据从导出到分析:CloudCompare实战全流程指南 当你从DJI Terra中导出L1激光雷达的LAS文件时,真正的数据价值挖掘才刚刚开始。作为测绘工程师或三维建模从业者,如何将这些原始点云转化为可操作的洞察?本文将带你用开源神…...
MXNet多语言生态:Python到Java/C++的跨平台部署
MXNet多语言生态:Python到Java/C的跨平台部署 文章详细介绍了MXNet深度学习框架的多语言支持能力,重点阐述了从Python训练环境到Java/C生产环境的完整部署流程。内容涵盖Python API的深度使用指南,包括NDArray高效张量计算、Symbolic编程的计…...
终极指南:Fn与云原生生态的完美集成,如何与Istio、Prometheus等工具无缝协作
终极指南:Fn与云原生生态的完美集成,如何与Istio、Prometheus等工具无缝协作 【免费下载链接】fn The container native, cloud agnostic serverless platform. 项目地址: https://gitcode.com/gh_mirrors/fn/fn Fn是一款容器原生的无服务器平台&…...
如何快速掌握Framer.js:现代原型设计框架的核心模块解析
如何快速掌握Framer.js:现代原型设计框架的核心模块解析 【免费下载链接】Framer Framer - Design Everything 项目地址: https://gitcode.com/gh_mirrors/fr/Framer Framer.js是一款功能强大的现代原型设计框架,它允许设计师和开发者创建高保真的…...
Vue项目实战:集成Cesium加载天地图与高德地图的完整指南
1. 环境准备与项目初始化 在开始集成Cesium之前,我们需要先搭建好Vue的开发环境。这里我推荐使用Vue 3的组合式API,因为它的模块化特性与Cesium的集成更加契合。不过Vue 2的用户也不用担心,大部分代码都是兼容的。 首先创建一个新的Vue项目…...
