当前位置: 首页 > news >正文

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);
http://www.lryc.cn/news/273393.html

相关文章:

  • Vue3地图选点组件
  • JS之注册事件兼容性解决方案
  • C#中使用as关键字将对象转换为指定类型
  • 【Spring实战】21 Spring Data REST 常用功能详细介绍
  • 05-微服务-RabbitMQ-概述
  • jmeter参数化的三种方式
  • java基础之Java8新特性-Lambda
  • 入门使用mybatis-plus
  • ubuntu安装和配置ssh教程
  • 每天刷两道题——第六天
  • 时间序列平稳性相关检验方法
  • <leetcode修炼>双指针训练-移动零
  • Python初探:从零开始的编程奇妙之旅
  • 算法与数据结构之链表<一>(Java)
  • 目标检测COCO数据集与评价体系mAP
  • 2024最全面且有知识深度的web3开发工具、web3学习项目资源平台
  • Golang - defer关键字 深入剖析
  • 如何在Spring Boot中使用@Scheduled写定时任务判断数据量是否过大,过大则进行分表操作,多张表使用临时视图查询
  • 使用jieba库进行中文分词和去除停用词
  • C语言之分支与循环【附6个练习】
  • 使用通用MCU实现无人机飞行任务的快速二次开发
  • 什么是Selinux
  • 计算机网络知识点
  • Qt 连接 Mysql
  • HarmonyOS4.0系统性深入开发14AbilityStage组件容器
  • 客服系统接入FastGPT
  • Hi5 2.0 虚拟手与追踪器(Tracker)的位置修正
  • 广播及代码实现
  • QT应用篇 三、QML自定义显示SpinBox的加减按键图片及显示值效果
  • 2022年全国职业院校技能大赛网络安全竞赛试题1-10-B模块总结