matlab 数值计算课 二阶微分方程-龙格库塔方法 & ODE45

2023-05-16

详见mathworks

龙格库塔方法

在这里插入图片描述
写成矩阵(状态方程)的形式更简洁一点(其实这两种方法结果是一样的,如果C是[1,0,0]的话,就很明显了)
在这里插入图片描述
例如:求系统在0-5s内的单位阶跃相应,已知传递函数:
在这里插入图片描述
状态方程:
在这里插入图片描述

clear
%状态方程
A=[0,1
    -100,-10];
B=[0;
    1];
C=[100,0];
%初值
x=[0;0];y=0;t0=0;tf=5;  
h=0.05;%步长
t=t0;%从t0开始迭代,储存时间
N=round((tf-t0)/h);     %迭代步数
r=1;%单位阶跃输入
for i=1:N   
    k1=A * x+B*r;
    k2=A * (x+h*k1/2)+B*r;
    k3=A * (x+h*k2/2)+B*r;
    k4=A * (x+h*k3)+B*r;
    x=x+h*(k1+2*k2+2*k3+k4)/6;                    %采用四阶龙格库塔法
    y=[y,C*x];                                    %输出值
    t=[t,t(i)+h];
end
plot(t,y);

结果:
在这里插入图片描述

  • matlab中传函转化状态空间方程的函数

构造传函:

M=100;%分子
N=[1,10,100];%分母
G=tf(M,N);%传函

转换:

    g=ss(G);%状态方程
    A=g.A;%各个系数矩阵
    B=g.B;
    C=g.C;

ODE45

  • 函数句柄的创建

1、 直接@

A=@sin(x);
A(pi)

2、创建匿名函数

%定义函数f(x)=x^2
f = @(x) x^2;
f(2)
  • ODE45使用
    [t,y] = ode45(odefun,tspan,y0)
    t:自变量
    y(t):因变量
    odefun:函数句柄(自动y’=)
    tspan:t的范围,如[0,10]
    y0:初值

1、一阶方程
在这里插入图片描述

a=@(t,y) 2*t;
[t,y] = ode45(a, [0 5], 0);
plot(t,y)

2、二阶方程
在这里插入图片描述
先转化为两个一阶微分:
在这里插入图片描述
创建m文件:

function dydt = vdp1(t,y)
dydt = [y(2); 
		(1-y(1)^2)*y(2)-y(1)];%括号不可省,不是变量,y是2x1列向量

调用ode45

[t,y] = ode45(@vdp1,[0 20],[2; 0]);
plot(t,y)

输出y两列,分别为y(1)和y(2)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matlab 数值计算课 二阶微分方程-龙格库塔方法 & ODE45 的相关文章

  • 检查图像中是否有太薄的区域

    我正在尝试验证雕刻机的黑白图像 更多的是剪贴画图像 不是照片 我需要考虑的主要事情之一是区域的大小 或线条的宽度 因为机器无法处理太细的线条 所以我需要找到比给定阈值更细的区域 以此图为例 竖琴的琴弦可能太细而无法雕刻 我正在阅读有关 Ma
  • MATLAB 可执行文件太慢

    我使用以下命令将 MATLAB 程序转换为基于控制台的应用程序deploytool在 MATLAB 中 MATLAB m文件执行大约需要 2 秒 但在我将其转换为可执行文件并调用 exe 执行需要45秒 太长了 我想将 MATLAB 程序与
  • 平衡两轮机器人而不使其向前/向后漂移

    我正在尝试设计一个控制器来平衡 2 轮机器人 约 13 公斤 并使其能够抵抗外力 例如 如果有人踢它 它不应该掉落 也不应该无限期地向前 向后漂移 我对大多数控制技术 LQR 滑模控制 PID 等 都很有经验 但我在网上看到大多数人使用 L
  • 如何为已编译的 MATLAB 创建安装程序并要求用户接受我们的许可条款?

    我正在 MATLAB 中编写程序分发给 Windows 用户 我使用 MATLAB 编译器和 MATLAB r2014a 版本来创建程序 我可以使用 MATLAB 应用程序编译器创建 Windows 安装程序 并且它的工作效果可以接受 但是
  • 在Matlab中对字符进行分组并形成矩阵

    我有 26 个字符 A 到 Z 我将 4 个字符组合在一起 并用空格分隔以下 4 个字符 如下所示 abcd efgh ijkl mnop qrst uvwx yz 我的Matlab编码如下 str abcdefghijklmnopqrst
  • Matlab 一个图上有多个图例 2014b

    我想在一个地块上有多个传说 该解决方案在 2014b 版本之前完美运行 我试图弄清楚如何使用手柄优雅地制作它 但到目前为止还没有成功 欢迎任何想法 2013b 的示例 x 1 50 y1 sin x 2 y2 cos x 2 f figur
  • Numpy 相当于 MATLAB 的 hist [重复]

    这个问题在这里已经有答案了 由于某种原因 Numpy 的 hist 总是返回比 MATLAB 的 hist 少 1 个 bin 例如在 MATLAB 中 x 1 2 2 2 1 4 4 2 3 3 3 3 Rep Val hist x un
  • 在matlab中不使用for循环检查数组中的成员资格

    我想简化这段代码 使其无需 for 循环即可工作 for i 1 N for j 1 N if ismember j A PID i i TFP i j PID i i end end end 其中A是一个包含一些标签的矩阵 我之前存储的T
  • FMINCON 的替代方案

    除了 fmincon 之外还有其他更快 更高效的求解器吗 我正在使用 fmincon 来解决特定问题 但对于中等大小的向量变量来说 我的内存不足 我也没有任何超级计算机或云计算选项可供使用 我知道任何替代解决方案仍然会耗尽内存 但我只是想看
  • MATLAB:将当前文件夹设置为脚本位置

    我在不同的文件夹中有一些脚本和数据 我使用addpath和相对路径经常 我的问题是 只有当我的当前文件夹是我执行的脚本所在的位置时 这才有效 例如 如果我执行添加路径 X 的脚本 A 然后执行位于路径 X 中的脚本 B 则 Matlab 不
  • Deploytool for MATLAB R2013b 不起作用,发生了什么变化?

    多年来我一直在使用集成deploytool为我的同事创建易于分发的 exe 文件 我几天前安装了R2013b 但无法使用deploytool不再了 尝试打包时的日志文件给出了以下内容 ant
  • 保存符号方程以供以后使用?

    From here http www mathworks com help releases R2011a toolbox symbolic brvfu8o 1 html brvfxem 1 我正在尝试求解这样的符号方程组 syms x y
  • 更新:随机将行添加到矩阵中,但遵循严格的规则

    以下是一个更大的矩阵的一部分 0 1 0000 1 0000 77 0000 100 0000 0 0 2500 0 1 0000 1 0000 72 0000 100 0000 0 2500 0 2500 0 1 0000 1 0000
  • 通过颜色渐变修补圆

    我正在尝试绘制一个颜色渐变 我希望它沿轴均匀 在下图由角度定义的情况下 pi 7 当我使用patch命令 绘图与所需的梯度方向匹配 但沿其方向并不均匀 沿圆的点之间形成各种三角形 这是代码 N 120 theta linspace pi p
  • 轴标注问题

    通过运行我编写的以下 matlab 函数 可以互换图中的 x 轴和 y 轴 谁能告诉我问题出在哪里或者帮我解决它吗 预先感谢您的任何帮助 function axislabeling n x 1 1 n y 1 1 n z zeros n n
  • 如何从 matlab 调用 Qtproject?

    我在 matlab 中有一个函数可以写入一个 file txt 我在 qt 项目中使用它 So 当我使用 unix 获取要运行的 qt 编译可执行文件时 我有一个 Matlab 文件 但出现错误 代码 unix home matt Desk
  • 2D 网格的纹理贴图

    我有一组点 x y meshgrid 1 N 1 M 在常规二维上定义 N x M网格 我还有另一组要点 u v 这是原始网格的一些变形 即 u v f x y 但是我没有实际的f导致变形 如何将纹理映射到由定义的 变形 网格u v 即 给
  • 像matlab一样在python中连接数组而不知道输出数组的大小

    我正在尝试在 python 中连接数组 类似于 matlab array1 zeros 3 500 array2 ones 3 700 array array1 array2 我在 python 中做了以下操作 array1 np zero
  • 计算给出数组中最小标准差的子集

    让我们有一个大小的向量N 例如 x rand N 1 我想计算长度子集的最小标准差K在向量中 When N and K很小 很容易找到最好的子集 因为我可以使用nchoosek N K 枚举所有可能的子集 但是当值N and K比我们说的要
  • 如何从 Matlab 运行 R 脚本 [重复]

    这个问题在这里已经有答案了 我有 m 文件 我想用它来运行 R 脚本 我怎样才能做到这一点 Matlab文件 caller m some matlab code need to call a R script some matlab cod

随机推荐

  • vins博客的一部分4

    processMeasurements 取出数据 将 featureBuf中 xff0c 最早帧的feature取出 xff1a feature 61 featureBuf front 节点的接收IMU的消息再imu callback中被放
  • vins博客的一部分5

    目录 initFirstIMUPose xff08 xff09 processIMU propagate initFirstIMUPose xff08 xff09 得到IUM的Z与重力对齐的旋转矩阵 xff1a IMU开始很大可能不是水平放
  • vins博客的一部分6

    processImage 输入是本帧的特征点 id cam id xyz uv vxvy 包含了检测关键帧 估计外部参数 初始化 状态估计 划窗等等 检测关键帧 选择margin帧 addFeatureCheckParallax 检测和上一
  • vins博客的一部分7

    目录 initFramePoseByPnP frame count Ps Rs tic ric triangulate frame count Ps Rs tic ric initFramePoseByPnP frame count Ps
  • vins博客的一部分8

    目录 optimization slideWindow optimization 优化先验残差 重投影残差 预积分残差 xff08 即要拟合的目标是 xff0c 之前边缘化后的先验值 xff0c 前后帧之间的IMU的预积分值 xff0c 每
  • 以下为WindowsNT下32位 C++程序,请计算sizeof的值

    转帖地址 xff1a http hi baidu com hikeba blog item 68ad9f10a7dd8003213f2ecf html char str 61 34 hello 34 char p1 61 str int n
  • vins博客的一部分9

    目录 IMUFactor xff08 imu约束 xff09 ProjectionTwoFrameOneCamFactor xff08 视觉约束 xff09 marginalize 边缘化约束 IMUFactor xff08 imu约束 x
  • fiesta论文翻译和代码

    论文 体素信息结构 VIS Namemean符号position体素坐标posoccupancy占用概率occESDF到最近障碍物的欧几里得距离disClosest Obstacle Coordinate最近障碍物的体素坐标cocobser
  • ROS中四元数、欧拉角、旋转矩阵等格式转换

    未完 ROS接收到odometry格式消息 xff1a nav msgs span class token operator span Odometry pos msg 具有 xff1a pos msg span class token p
  • lio-sam中雅克比推导

    lio sam做的是scan map xff0c 点变到世界系下 xff0c 优化本帧在是世界系下的位姿 xff0c 和loam有所不同 符号 xff1a 本帧特征点云 xff08 相对机体系 xff09 P s c a
  • Xavier瑞泰载板烧录系统与CUDA环境安装

    实验室瑞泰载板的Xavier刷机过程 xff0c 不可用nvidia官方刷机方法 xff0c 以下部分基本和瑞泰教程类似 xff1a 下载文件 下载前 xff0c 需要注意版本对应关系 xff0c 这里安装L4T 32 4 3 和 JetP
  • xavier nx 安装realsense

    1 安装realsense viewer git clone https github com jetsonhacks installRealSenseSDK cd installRealSenseSDK sudo installLibre
  • 【草稿】已有ubuntu,安装win10遇到的问题记录

    磁盘分区 xff1a 把 home拆分一块安装win10 xff0c 需要在临时系统中分区 xff0c 不然已经挂载的磁盘会带锁 xff0c 没法拆分卷 xff1a 使用ubuntu启动盘启动系统 xff0c try Ubuntu with
  • 欧拉角顺序与转换

    更多转换见 xff1a 基于eigen实现 基于python实现 这里就记录下顺序 xff1a 运算是左乘 xff0c 下面方式记作Z Y X顺序 xff0c 先绕x轴roll 再绕y轴pitch 最后绕z轴yaw xff0c 即为RPY
  • ubuntu20.04 python pycharm使用cv_bridge的问题

    1 终端python运行下面会报错 xff1a from cv bridge boost cv bridge boost import getCvType ImportError lib libgdal so 26 undefined sy
  • demo:图像处理 matlab实现迭代法全局阈值分割和局部自适应阈值分割

    全局阈值分割 迭代法阈值获取方法 xff1a 1 xff09 选取一个的初始估计值T xff08 128 xff1b 2 xff09 用T分割图像 这样便会生成两组像素集合 xff1a G1由所有灰度值大于T的像素组成 xff0c 而G2由
  • Ubuntu 实用内核更新实录

    1 更新软件及内核源码 xff1a sudo apt get install gcc make libncurses5 dev openssl libssl dev sudo apt get install build essential
  • matlab工具箱下载权限受限:您的管理员限制了您对此mathworks产品的下载权限

    我也不知道我为啥安装的时候audio toolbox没安 xff0c 可能有的同学安装matlab时也没有全选所有组件 xff0c 后来用的时候发现下载不了 xff1a 在附加功能管理器中 xff0c MathWorks 工具箱和产品这一部
  • demo:用matlab app designer做一个简易app

    GUI xff08 guide xff09 的教程挺多 xff0c 但app designer是matlab后续版本中才添加的 xff0c 界面更友好但度娘资源比较少 1 点击新建 APP设计工具 xff0c 或者直接在命令行输入appde
  • matlab 数值计算课 二阶微分方程-龙格库塔方法 & ODE45

    详见mathworks 龙格库塔方法 写成矩阵 xff08 状态方程 xff09 的形式更简洁一点 xff08 其实这两种方法结果是一样的 xff0c 如果C是 1 0 0 的话 xff0c 就很明显了 xff09 例如 xff1a 求系统