万物皆数——用matlab求解二阶微分方程

一、背景

毕达哥拉斯的“万物皆数”哲学观点表达了一个理念,即宇宙万物都可以通过数学语言来描述,数是万物的本原。
勾股定理就是毕达哥拉斯提出,因此在西方勾股定理也被叫做毕达哥拉斯定理。

工科类的专业,越到后面越感觉到数学的重要性,无论是控制,计算机还是机器人专业,都需要很好的数学功底。

最近在做DMP相关的内容时,需要求解二阶微分方程,无奈早已把学的还给老师,可惜当时高数白考九十多分。但很感谢当时的高数老师于朝霞教授,讲课讲的真好,所以重新翻看高等数学第六版同济大学编著的微分方程章节时,很快捡起来之前学到的内容。

现在有了matlab,不需要自己手算了,下面记录一下使用matlab求解二阶微分方程的过程。

Matlab版本:2023a

二、Matlab求解二阶常系数微分方程

1、问题描述

二阶常系数微分方程:
y ¨ + 10 y ˙ + 25 y = 250 (1) \begin{aligned} \ddot y+10\dot y+25y=250 \\ \end{aligned}\tag{1} y¨+10y˙+25y=250(1)
二阶微分方程如果没有初始条件,其通解会含有两个任意常数,所以不能完全反应某一客观实物的规律。
这里设置初始条件为:
y ( 0 ) = 15 , y ˙ ( 0 ) = 0 (2) \begin{aligned} y(0)=15, &&\dot y(0)=0 \\ \end{aligned}\tag{2} y(0)=15,y˙(0)=0(2)

2、matlab求解微分方程,并绘制解的曲线
clear; close all; clc;
% 定义符号变量
syms x y(x);

% 定义二阶微分方程
eqn = diff(y, x, 2) + 10*diff(y, x) + 25*y == 250;

% 设置初始条件
initial_condition1 = y(0) == 0; % 初始值 y(0) = 0
initial_condition2 = subs(diff(y), 0) == 0; % 初始导数值 y'(0) = 0

% 求解微分方程
sol = dsolve(eqn, [initial_condition1, initial_condition2]);

% 显示解
disp('解:');
disp(sol);

% 将解转换为函数句柄
ySol = matlabFunction(sol);

% 定义 x 范围
x = linspace(0, 5, 100); % 这里的范围可以根据需要调整

% 计算对应的 y 值
y = ySol(x);

% 绘制曲线图
figure;
a1 = subplot( 1, 1, 1 );
hold( a1, 'on' );
plot(a1, x, y, 'linewidth', 3, 'color', [0.0000, 0.4470, 0.7410] );
xlabel('x');
ylabel('y');
title('二阶微分方程的解曲线');
scatter( 0, ySol(0), 'filled', 'linewidth', 3, 'markerfacecolor', 'y', 'markeredgecolor', 'k'  );
grid on;


在这里插入图片描述

3、matlab求解加速度函数,并绘制解的曲线

经过步骤2,其实我们得到的是位置和速度的关系,即解为:
y = − 10 e − 5 x − 50 x e − 5 x + 10 (2) \begin{aligned} y=-10e^{-5x}-50xe^{-5x}+10 \\ \end{aligned}\tag{2} y=10e5x50xe5x+10(2)

有时我们还需要观察加速度和时间的关系。
因此对公式(2)求二阶导,得到加速度:
y ¨ = 250 e − 5 x − 1250 x e − 5 x (2) \begin{aligned} \ddot y=250e^{-5x}-1250xe^{-5x} \\ \end{aligned}\tag{2} y¨=250e5x1250xe5x(2)

matlab里求解加速度与时间的关系,及画出曲线图:

clear; close all; clc;
% 定义符号变量
syms x;

% 定义函数
y = 10 - 50*x*exp(-5*x) - 10*exp(-5*x);

% 计算二阶导数
second_derivative = diff(y, x, 2);
% 显示解
disp('二阶导:');
disp(second_derivative);
% 将二阶导数转换为函数句柄
second_derivative_func = matlabFunction(second_derivative);

% 定义 x 范围
x_values = linspace(0, 5, 100); % 这里的范围可以根据需要调整

% 计算对应的二阶导数值
y_second_derivative = second_derivative_func(x_values);

% 绘制二阶导数曲线图
figure;
plot(x_values, y_second_derivative);
xlabel('x');
ylabel('y的二阶导数');
title('y=5*exp(-5*x) + 25*x*exp(-5*x) + 10 的二阶导数曲线');
grid on;

在这里插入图片描述

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

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

相关文章

从开源项目聊鱼眼相机的“360全景拼接”

目录 概述 从360全景的背景讲起 跨过参数标定聊透视变化 拼接图片后处理 参考文献 概述 写这篇文章的原因完全源于开源项目(GitHub参阅参考文献1)。该项目涵盖了环视系统的较为全貌的制作过程,包含完整的标定、投影、拼接和实时运行流程。该篇文章主要是梳理全…

Wincc flexible SMART v4 报警蜂鸣器的基本使用方法示例

Wincc flexible SMART v4 报警蜂鸣器的基本使用方法示例 WinCC flexible SMART V4 SP1 软件针对SMART LINE V4 面板新增了触发蜂鸣器报警功能,但要注意该功能仅支持固件版本为 4.0.1.0 及以上的设备。 可通过配置以下两个系统函数来触发蜂鸣器: 举例说明: 组态离散量报警,在…

xss 通过秘籍

终极测试代码 <sCr<ScRiPt>IPT>OonN"\/(hrHRefEF)</sCr</ScRiPt>IPT> 第一关&#xff08;没有任何过滤&#xff09; 使用终极测试代码&#xff0c;查看源码 发现没有任何过滤&#xff0c;直接使用javascrupt中的alert弹框 <script>aler…

树之二叉排序树(二叉搜索树)

什么是排序树 说一下普通二叉树可不是左小右大的 插入的新节点是以叶子形式进行插入的 二叉排序树的中序遍历结果是一个升序的序列 下面是两个典型的二叉排序树 二叉排序树的操作 构造树的过程即是对无序序列进行排序的过程。 存储结构 通常采用二叉链表作为存储结构 不能 …

口水战,余承东从没输过,小鹏最终只能低头和解

小鹏汽车创始人何小鹏近日发言称与余承东握手言和&#xff0c;感谢余总的大度&#xff0c;还表示与余承东探讨了技术路线&#xff0c;双方成为好朋友&#xff0c;可以看出这场口水战最终的赢家还是余承东。 这场口水战先以何小鹏吐槽友商的AEB误触太多&#xff0c;还声言99%是假…

基于springboot实现家具商城管理系统项目【项目源码】计算机毕业设计

基于springboot实现家具商城管理系统演示 Java语言简介 Java是由SUN公司推出&#xff0c;该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称&#xff0c;也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备了显著的…

VMware部署CentOS7

一、创建虚拟机 1、点击新建虚拟机 2、选择自定义 下一步 3、点击下一步 4、选择稍后安装操作系统 5、选择linux 下一步 6、选择要安装的centos 版本 这里选择centos7 7、自定义虚拟机名称 设置虚拟机运行空间 8、配置处理器&#xff0c;使用默认 1个处理器 1核 9、修改虚拟机…

企业级操作之STM32项目版本管理方法

在MCU开发过程中&#xff0c;有时候需要软件的迭代&#xff0c;比如从V1.9升级到V1.10&#xff0c;或者从V23.09.23升级到V23.09.24&#xff0c;我们常常通过手动改动字符串或者数组来实现这个功能&#xff0c;从现在开始&#xff0c;我们会使用Keil的内置宏__DATE__和__TIME__…

wav格式如何转mp3?

wav格式如何转mp3&#xff1f;WAV格式是一种高品质的音频文件格式&#xff0c;其采用无损压缩技术存储音频数据。通常&#xff0c;WAV文件使用PCM编码方式将声音信号转换为数字信号&#xff0c;并按照一定规则存储到文件中。这种编码方式可以确保音频数据的完整性和准确性&…

python注释(快捷键)

首先介绍以下三种注释方式&#xff1a; # 123&#xff08;单行注释&#xff09; """123"""&#xff08;多行注释&#xff09; 123&#xff08;多行注释&#xff09; 下面介绍一下快捷键&#xff1a; Ctrl/ 注释单行&#xff1a;指针只要在这行代…

关于近期360自动屏保导致的问题

本身是一个好产品 但是对于某些应用就有点画蛇添足了 1、导致K3无法使用 K3中间层需要用户持续登入系统 2、导致系统停止工作 3、停止网络 4、占用系统资源 5、占用网络资源 6、占用硬件资源 。。。。。。 对于24小时开机的用户影响巨大 对于局域网信息点多的网络影响巨…

c语言:用指针解决有关字符串等问题

题目1&#xff1a;将一个字符串str的内容颠倒过来&#xff0c;并输出。 数据范围&#xff1a;1≤len(str)≤10000 代码和思路&#xff1a; #include <stdio.h> #include<string.h> int main() {char str1[10000];gets(str1);//读取字符串内容char* p&str1[…

无需标注海量数据,目标检测新范式OVD

当前大火的多模态GPT-4在视觉能力上只具备目标识别的能力&#xff0c;还无法完成更高难度的目标检测任务。而识别出图像或视频中物体的类别、位置和大小信息&#xff0c;是现实生产中众多人工智能应用的关键&#xff0c;例如自动驾驶中的行人车辆识别、安防监控应用中的人脸锁定…

Hbase 迁移小结:从实践中总结出的最佳迁移策略

在数据存储和处理领域&#xff0c;HBase作为一种分布式、可扩展的NoSQL数据库&#xff0c;被广泛应用于大规模数据的存储和分析。然而&#xff0c;随着业务需求的变化和技术发展的进步&#xff0c;有时候我们需要将现有的HBase数据迁移到其他环境或存储系统。HBase数据迁移是一…

Im即时通讯软件开发流程

一、需求分析 在进行软件开发之前&#xff0c;首先需要对需求进行分析&#xff0c;明确软件的功能和用户群体。即时通讯软件作为一款通讯工具&#xff0c;需要具备基本的通讯功能&#xff0c;例如聊天、文件传输、群聊等。除此之外&#xff0c;还需具备更多的特色功能以满足不…

​做好研发管理的三个条件​

1.制造鼓励创新的环境 要做好研发管理&#xff0c;首先要制造一个鼓励创新、适合研发的环境&#xff0c;必须采取弹性而目标化的管理&#xff0c;不以死板的制度限制员工的创意&#xff0c;必须要求实质的成果。 2.融入行销观念 将行销的观念融入研发中&#xff1a;为使有限的…

Linux系统编程——文件的光标移动

光标移动(lseek) 主要用于不断对文件写入数据或读取数据的的用法&#xff0c;每次写入数据后光标在数据尾&#xff0c;若要进行读取则只会没法读取到光标前的数据&#xff0c;这个时候就不需要重启文件&#xff0c;只需对光标位置做出调整就可以读取数据 使用lseek函数需要包…

十个使用Spring Cloud和Java创建微服务的实践案例

在使用Java构建微服务时&#xff0c;许多人认为只要学习一些微服务设计模式就足够了&#xff0c;比如CQRS、SAGA或每个微服务一个数据库。虽然这是正确的&#xff0c;但同时学习一些通用的最佳实践也是很有意义的。本文分享一些最佳实践。 1 设计模块化的微服务 微服务应该专…

仙侠类型游戏开发2D3D仙侠古风游戏

仙侠类游戏是一种以仙侠文化为背景的角色扮演游戏&#xff0c;玩家在游戏中扮演修仙者或武侠&#xff0c;通过修炼技能、完成任务和与其他玩家互动&#xff0c;逐步提升角色的实力和境界。这类游戏通常融合了仙侠小说中的幻想元素、武侠的武技和修仙的奇遇&#xff0c;创造了一…

数字化工厂管理系统的三个关键技术是什么

随着科技的飞速发展&#xff0c;数字化工厂管理系统已经成为了现代制造业的重要发展方向。数字化工厂管理系统通过充分运用建模技术、仿真技术和单一数据源技术&#xff0c;实现了产品设计和生产的虚拟化&#xff0c;为制造业带来了前所未有的效率和创新能力。本文将深入探讨这…