Matlab求解微分方程(解析解与数值解)

news2024/9/30 17:31:48

matlab求解微分方程解析解和数值解

  • Matlab求微分方程解析解
    • 例题1
    • 例题2
    • 例题3
  • Matlab求微分方程数值解
    • 一阶微分方程
      • 例题一
      • 例题二
    • 高阶微分方程
      • 例题

Matlab求微分方程解析解

dsolve(eqns,conds,options) eqns:微分方程(组)、conds:初值条件、options:精度设置

例题1

%例题一:y-Dy=2x(Dny表示y的n阶导),y(0)=3
dsolve('y-Dy=2*x','y(0)=3','x')

在这里插入图片描述

这种求解形式虽然简单,但是警告内容说它会在未来版本中被移除,因此推荐使用下面的方法使用dsolve函数

syms y(x)
eqn1=(y-diff(y,x)==2*x)
cond1=(y(0)==3)
dsolve(eqn1,cond1)

例题2

%例题二:D2y+4Dy+29y=0,y(0)=0,Dy(0)=15
syms y(x)
eqn2=(diff(y,x,2)+4*diff(y,x)+29*y==0)
Dy=diff(y,x)
cond2=[(y(0)==0),(Dy(0)==15)]
dsolve(eqn2,cond2)

例题3

在这里插入图片描述

syms x(t) y(t) z(t)
eqn3=[(diff(x,t)==2*x-3*y+3*z+t),(diff(y, t)==4*x-5*y+3*z+t),(diff(z,t)==4*x-4*y+2*z+t)]
ans3=dsolve(eqn3)

Matlab求微分方程数值解

一阶微分方程

[x,y]=solver('f',ts,x0,options)

①solver:求解器(以具体求解器作为函数名)
最常用的两个求解器包括ode45和ode15s。ode45采用4-5阶Runge-Kutta法,适用于求解非刚性问题(求解出的函数图像不发生突变);ode15s基于数值差分公式,适用于求解刚性问题(求解出的函数图像发生突变)。
因此在实际操作中,通常先采用ode45作为求解器,如果运行过程卡顿,说明面临刚性问题,应切换ode15s。

②f:包含微分方程的函数文件名f.m,除了使用字符串‘f’外可传入@f,标准形式dy=f(x,y)(dy;一阶微分)

③ts=[ t a , t b t_a,t_b ta,tb],表示自变量的范围,可使用 t a : s t e p : t b t_a:step:t_b ta:step:tb设置步距

④x0:函数的初值,n个函数对应n个初值

⑤options:设置求解精度,options=odeset(‘reltol’,rt,‘abstol’,at),默认相对误差rt=1e-3,绝对误差at=1e-6

⑥[x,y] x:返回所取自变量的离散值 y:返回各个函数对应于x的函数值

例题一

%df1.m
function dy=df1(x,y) 
    dy=y-2*x;
end

%练习一
[x1,y1]=ode45(@df1,[0,2],3)
figure(1)
plot(x1,y1,'r*-')

例题二

在这里插入图片描述

function dy=df2(x,y)
   dy=zeros(3,1);
   dy(1)=y(2)*y(3);
   dy(2)=-y(1)*y(3);
   dy(3)=-0.51*y(1)*y(2);
end

%练习二
[x2,y2]=ode45(@df2,[0 4*pi],[0 1 1])
figure(2)
plot(x2,y2(:,1),'o',x2,y2(:,2),'*',x2,y2(:,3),'+')
legend('y1','y2','y3')
axis([0 4*pi -inf inf])

高阶微分方程

处理高阶微分方程,需要先通过变量转化将问题转变为一阶微分方程,然后使用solver求解

例题

在这里插入图片描述

设置 y 1 = y ′ , y 2 = y , 则( 1 + x 2 ) y 1 ′ = 2 x y 1 , y 2 ′ = y 1 , 二阶微分方程转化为一阶微分方程组 设置y_1=y^{'},y_2=y,则(1+x^2)y_1^{'}=2xy_1,y_2^{'}=y_1,二阶微分方程转化为一阶微分方程组 设置y1=y,y2=y,则(1+x2y1=2xy1,y2=y1,二阶微分方程转化为一阶微分方程组

%df3.m
function dy=df3(x,y)
    dy=zeros(2,1)
    dy(2)=y(1)
    dy(1)=(2*x*y(1))/(1+x^2)
end

%高阶微分方程例题 y1=y',y2=y
[x,y]=ode45(@df3,[-2,2],[4 3])
figure(1)
plot(x,y(:,2),'r*')

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

萌宠宜家商城系统

摘 要 随着现在经济的不断发展和信息技术性日益完善和优化,传统式数据信息的管理升级成手机软件存放、梳理和数据信息集中统一处理的管理方式。本萌宠物宜家商城系统软件起源于这个环境中,能够帮助管理者在短期内进行庞大数据信息。使用这个专业软件能够…

【开源免费】基于SpringBoot+Vue.JS购物商城网站(JAVA毕业设计)

本文项目编号 T 032 ,文末自助获取源码 \color{red}{T032,文末自助获取源码} T032,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

文字识别多功能工具箱 | eSearch v13.1.6

eSearch v13.1.6 是一款开源的截屏识屏搜索工具,它提供了丰富的功能,包括截屏、OCR识别、搜索翻译、贴图、以图搜图和录屏等一体化实用工具。该软件基于 Electron 框架开发,适用于 Linux、Windows 和 macOS 平台。 软件的主要特点和功能包括…

Lua发邮件:实现自动化邮件发送教程指南!

Lua发邮件高级技巧有哪些?如何利用Lua发送电子邮件? 自动化邮件发送是一个非常实用的功能,广泛应用于各种场景,如通知、提醒、报告生成等。Lua作为一种轻量级脚本语言,因其简洁和高效而受到广泛欢迎。AokSend将详细介…

金钥匙系列:Kubernetes (K8s) 服务集群技术栈学习路线

维护Kubernetes (K8s) 服务集群是一个复杂且多层次的技术任务,涉及容器化技术、集群管理、网络、安全、监控等多个领域。为了成为一名优秀的K8s集群维护工程师,技术栈需要广泛且深入。本文将为你详细介绍从零开始到深入掌握K8s集群维护的职业技术栈学习路…

在 Mac 上安装双系统会影响性能吗,安装双系统会清除数据吗?

在 Mac 系统安装并使用双系统已经成为了许多用户办公的选择之一,双系统可以让用户在 Mac 上同时运行 Windows 或其他操作系统。然而,许多用户担心这样做会对 Mac 的性能产生影响。 接下来将给大家介绍 Mac 装双系统会影响性能吗,Mac装双系统…

【Hue导入Hive文件类型数据(自动建表)】

1、进入Hue访问界面,点击要导入表的schema,点击号,上传要导入的文件。 2、本次测试文件数据用逗号分隔,也可根据文件分隔符选择具体格式 3、点击下一步,可自定义表名,以及选择字段数据类型,定…

【PyCharm】常用快捷键

此篇文章内容会不定期更新,仅作为学习过程中的笔记记录 PyCharm的所有快捷键,其实均可以自定义,在位于Settings -> Keymap的目录下(如图),可以自行改写为自己熟悉的键位组合。 若更改为PyCharm已存在的键…

【网络安全】PHP配置注入漏洞

未经许可,不得转载。 文章目录 正文 正文 前提:通过探测等方式发现某个 PHP 文件存在 PHPRC 参数: curl "https://xxx.com/about.php?PHPRC/dev/fd/0" --data-binary auto_prepend_file"/etc/passwd"PHPRC 用于指定 P…

灵雀云DevOps:加速应用交付,点燃业务创新引擎

导语 近日,国际知名咨询机构Gartner发布了2024年度DevOps平台魔力象限报告(Gartner Magic Quadrant for DevOps Platforms),为信息化决策者在技术战略层面提供了选型和评估DevOps平台供应商的全面视角。报告中,中国云…

el-table 如何实现行列转置?

在某些需求里需要用到 行列转置 的表格,但 el-table 提供的基本表格是不支持行列转置的,这样就需要对这个表格进行二次开发。下面来看具体实现的效果: 具体实现方式 基本原理就是对原有的可渲染的数据结构进行处理,表头与表格数…

Linux学习笔记8 理解Ubuntu网络管理,做自己网络的主人

本文讲解了Ubuntu下网络由什么管理,介绍了临时ip和路由的设置方法,介绍了静态持久化网络配置的方法以及各网络管理软件之间的关系。 来看看Ubuntu网络管理。 序言 原本学习ubuntu网络管理就是为了检查nginx安装过程中使用wget获取压缩包为什么解析不出…

python + ssh+ rich 升级和备份脚本

升级版本 (根据AI提供的脚本,修改后) import os import paramiko from scp import SCPClient from rich.progress import (BarColumn,DownloadColumn,Progress,TaskID,TextColumn,TimeRemainingColumn,TransferSpeedColumn, )def get_file_size(file_pat…

【mujoco( DeepMind )】入门学习记录1

更新日期:202409 前言: 记录下自己学习Mujoco历程,直接使用deepMind官方给的python使用方案。 平台: python 3.12: DeepMind维护的Mujoco可以直接在3.8版本以后的python中直接安装。 Anacoda:利用anacoda管理的自己p…

删除字符串末尾的*(星号)

要求 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除, 例如,字符串中的内容为:****A*BC*DEF*G******,删除后,字符串中的内容应当是:***A*BC*DEF*G。…

用Python获取PDF页面的大小、方向和旋转角度

在文档管理和自动化领域,了解PDF文档的内在属性(如页面大小、方向和旋转角度)对于确保一致的文档处理和布局保真度至关重要。这些属性在内容重用、归档以及PDF无缝集成到网络环境或其他数字工作流程中起着关键作用,因为它们直接影…

Leetcode面试经典150题-162.寻找峰值

解法都在代码里,不懂就留言或者私信 想清楚的话会特别简单,你可能想不到这是个二分。。。 class Solution {/**本题题目规定我们只能用O(logN)的时间复杂度来解题,这显然就是让二分嘛而题目给的数组本身是无需,怎么二分呢其实我…

《网络协议 - HTTP传输协议及状态码解析》

文章目录 一、HTTP协议结构图二、HTTP状态码解读1xx: 信息响应类2xx: 成功响应类3xx: 重定向类4xx: 客户端错误类5xx: 服务器错误类 一、HTTP协议结构图 二、HTTP状态码解读 HTTP状态码(英语:HTTP Status Code)是用以表示网页服务器超文本传…

『功能项目』战士的位移型技能【46】

我们打开上一篇45战士的伤害型技能的项目, 本章要做的事情是制作技能按钮,点鼠标点击时释放如果20米内存在敌人会移动到敌人身边(对多个敌人逻辑暂未写)并对怪物造成一定伤害 首先对战士职业的动画控制器增加一个新的技能2动画 设…

镜像问题(k8s部署考试系统)

如果使用containerd拉取不到镜像的话,就使用docker 1.修改decker的镜像源 [rootk8s-master ~]# vim /etc/docker/daemon.json { "registry-mirrors": [ "https://do.nark.eu.org", "https://dc.j8.work", …