matlab解微分方程

news2024/11/14 20:31:19

1.匿名函数

1.1创建

f=@(变量) 表达式;

f=@(x1,x2) x1.^2+x2;

1.2 求解

x1为2 3 4 5;x2为3 4 5 6的情况下求解函数f的值

f=@(x1,x2) x1.^2+x2;
y=f(2:5,3:6);
subplot(121);%选择子图位置
plot(y)%画图

在这里插入图片描述

2.一阶微分方程

用“dsolve”

2.1例 y.-y=0

step1: 申明自变量和因变量

  • syms y(x)

step2:编程

clear all;
syms y(x)
ode=diff(y,x)-y==0;				%注意是==
cond=[];
dsolve(ode,cond);

得到:

ans =
 
C1*exp(x)

2.2例 y.-y=x

step1: 申明自变量和因变量

  • syms y(x)

step2:编程

clear all;
syms y(x)
ode=diff(y,x)-y==x;				%注意是==
cond=[];
dsolve(ode,cond);

得到

ans =
 
C1*exp(x) - x - 1

2.3例dy/dx=sinx

step1.写函数文件

function dy = ST1(x,y)
dy= sin(x);
end

step2.主函数

clear all;
[X,Y]=ode45('ST1',[2*pi],[1]);
plot(X,Y(:,1))

在这里插入图片描述

3.二阶微分方程

相当于定义了一个新向量y,然后列匿名函数,方程的左边都是一阶导数,如y(1).;y(2).等等,右边直接打公式。

3.1例,x… = -x,x初值0,x.初值2

step1:改写

  • y(1)=x;
  • y(2)=x.

step2:得y的导数

  • y(1).=x.=y(2)
  • y(2).=x…=-x=-y(1)

step3:编程

clear;
F=@(t,y) [0,1;-1,0]*y;
ode45(F,[0,10],[0,2])%[0,10]表示t的范围,02表示积分初值

3.2例 ax…+bsin(x)=0

step1:改写

  • y(1)=x;
  • y(2)=x.;

step2:得y的导数

  • y(1).=x.=y(2) ;
  • y(2).=x…=-bsin(x)/a;

step3:编程

clear;
F=@(t,y)[y(2);-9.8*sin(y(1))];
[t,y]=ode45(F,[0,20],[9.5*pi/10,0]);%注意这里加了[t,y]
plot(y(:,1),y(:,2));%这样才能输出y的值

3.3例洛伦兹方程

在这里插入图片描述
step1:改写

  • y(1)=x
  • y(2)=y
  • y(3)=z

step2:得y的导数

  • y(1).=-ay(1)+ay(2);
  • y(2).=b*y(1)-y(2)-y(1)*y(3);
  • y(3).=y(1)y(2)-cy(3);

step3:编程

clear;
a=10;
b=35;
c=8/3;
F=@(t,y)[-a*y(1)+a*y(2);
    b*y(1)-y(2)-y(1)*y(3);
    y(1)*y(2)-c*y(3)];
[t,y]=ode45(F,[0,20],[-0.01,0.0,0.001]);
plot3(y(:,1),y(:,2),y(:,3));

在这里插入图片描述

3.4 耦合

在这里插入图片描述
step1:改写

  • y(1)=r
  • y(2)=r.
  • y(3)=xita
  • y(4)=xita.

step2:得y的导数

  • y(1).=y(2)
  • y(2).=-a/y(1)2+y(1) y(4)2
  • y(3).=y(4)
  • y(4).=-b*y(2)*y(4)/y(1)

step3:编程

clear;
a=5.965*6.67295;
b=2;
F=@(t,y)[y(2);
    -a/(y(1)^2)+y(1)*y(4)^2;
    y(4);
    -b*y(2)*y(4)/y(1)];
[t,y]=ode45(F,[0,1500],[63.71,0.0,0.001,0.79/63]);
[x,y]=pol2cart(y(:,3),y(:,1));%极坐标转化为直角坐标
plot(x,y)

在这里插入图片描述

4.混合求导的耦合微分方程

这个叫法肯定不太专业,主要是求导变量换了。

4.1例1

在这里插入图片描述
step1.写函数文件

function dy = ST1(x,y)
dy=zeros(2,1);%一定要写!!!!,声明列向量的维度!!!!
dy(1)= y(1)+y(2)/x;
dy(2)= sin(y(1))+x;
end

step2:主程序ode求解

clear all;
[X,Y]=ode45('ST1',[2*pi,3*pi],[1,1]);
plot(X,Y(:,1),X,Y(:,2))

4.2例

在这里插入图片描述

step1:改写

  • y(1)=x
  • y(2)=y

step2:得y的导数

  • y(1).=r1 y(1) (1-y(1)/n1-s1*y(2)/n2)
  • y(2).=r2 y(2) (1-y(2)/n2-s2*y(1)/n1)

step3:编程

clear;
r1=1;
r2=0.2;
n1=100;
n2=100;
s1=0.5;
s2=2;
F=@(t,y)[r1*y(1)*(1-(y(1)/n1)-s1*(y(2)/n2));
    r2*y(2)*(1-(y(2)/n2)-s2*(y(1)/n1))];
[t,y]=ode45(F,[0,20],[10,10]);
plot(t,y(:,1),t,y(:,2))

在这里插入图片描述

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

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

相关文章

一文2000字从0到1用Jmeter全流程性能测试实战

项目背景: 我们的平台为全国某行业监控平台,经过3轮功能测试、接口测试后,98%的问题已经关闭,决定对省平台向全国平台上传数据的接口进行性能测试。 01、测试步骤 1、编写性能测试方案 由于我是刚进入此项目组不久&#xff0c…

Linux--调试器:gdb

gcc与g默认动态链接形成的可执行程序(比如a.out)是release 版本,不可调试!!! 如何搞成debug可调试版本? gcc 程序名 -o 可执行程序名 -g //添加了-g就表明该程序是debug方式发布的 查看可执行…

归并排序和基数排序包含完整程序和结果

一,归并排序 1.定义:将两个或者两个以上的有序表合并成一个新的游戏表的过程。 2路归并排序:假设排序表中有n个记录,则可以将其视为n个有序子表,每个子表的长度为1,然后两两合并,得到n/2&…

前端vue入门(纯代码)24_Modules

穷不怪父,苦不责妻,方为真男人! 【23.Vuex中的模块化和命名空间】 [可以去官网看看Vuex3文档](Module | Vuex (vuejs.org)) 由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,sto…

SQLServer2005位安装教程(图解)

进入下载的文件中,双击打开 :splash.hta 文件进行安装 根据自己的系统来选择性进行安装,这里我们选择第二项:基于 x64 的操作系统(6)。 然后在安装中选择“服务器组件、工具、练级丛书和示例©”的选项进行安装。 此处的注册信息可以忽略,非必填选项

第二章 模型评估和选择

文章目录 第二章 模型评估和选择2.1经验误差与过拟合2.2评估方法2.2.1留出法2.2.2交叉验证法2.2.3自助法2.2.4调参与最终模型 2.3性能度量2.3.1错误率与精度2.3.2查准率、查全率和F12.3.3ROC与AUC2.3.4代价敏感错误率与代价曲线 第二章 模型评估和选择 2.1经验误差与过拟合 通…

Unity-3d小游戏开发-----走迷宫

本人是在学习完c,c,数据结构算法,操作系统网络这些基础的课程之后,打算学习自己喜欢的游戏开发方向的东西,然后在B站上自学了几天unity,用到unity的触发器,碰撞,刚体,以及…

图像处理入门教程:从Python到Opencv

Python编程 这里主要针对有一定基础的读者,在Python编程中,掌握基础语法和数据类型是非常重要的。它们是构建程序的基石,是提供解决问题和开发应用的工具。在这里,我将简单介绍一些常用的语法和数据类型。 一、环境搭建 详细请…

14 - 信号优先级与安全性

---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接:(更新中)Linux系统编程训练营 - 目录 文章目录 1. 信号优先级1.1 问题1.2 信号优先级的概念1.3 信号优先级实验设计1.3.1 发送端1.3.2 接收端1.3.3 编程实验:信号优先级实验 …

普通索引VS唯一索引

查询性能 假设 我们有一列int 类型的value 对它进行查询 (VALUE无重复字段) SELECT value FROM table where value 8; 如过是普通索引 找到value 8 的记录后还会继续找,直到碰到第一个不满足 k5 条件的记录。 如过是唯一索引 找到value 8这条记录就不会往下找…

百望股份高级PMO专家赵雅婧受邀为第十二届中国PMO大会演讲嘉宾

百望股份有限公司项目管理部高级PMO专家赵雅婧女士受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾,演讲议题:PMO的组织建设与持续运营。大会将于8月12-13日在北京举办,敬请关注! 议题简要: 众所周知&#xff…

图像全景拼接

TODO: 实现图片的全景拼接 流程: (1)检测左右2图片的SIFT关键特征点,并计算特征描述 (2)使用KNN检测来自左右2图的SIFT特征,进行匹配 (3)计算视角变换矩阵H&#xff0c…

目标跟踪基础:距离度量

本文来自公众号“AI大道理” —————— 距离度量在CV 、NLP以及数据分析等领域都有众多的应用。 距离度量可以当做某种相似度,距离越近,越相似。 在目标跟踪领域中,需要判断目标之间的距离或相似度,从而判断前后帧的目标是否…

Redis实战案例13-集群下的并发安全问题

在解决一人一单的问题上面,采用了悲观锁的方案,但是这种方案只适合单机情况,在集群的模式下就不适用了; 覆盖yaml文件中的端口号 修改nginx中conf,这样就可以反向代理到两个节点上去,轮询的负载均衡规则&am…

git bash---打开当前路径所在文件夹

0 Preface/Foreword 在Windows操作系统中使用git bash时,可以通过命令直接打开当前路径下的文件夹,命令如下 explorer .

MS17-010漏洞复现

官方描述:Microsoft Security Bulletin MS17-010 - Critical | Microsoft Learn漏洞描述: Microsoft Windows SMB Server远程代码执行漏洞,Microsoft Server Message Block 1.0 (SMBv1)服务器处理某些请求时,在实现上存在远程代码…

Mockplus Cloud - June 2023crack

Mockplus Cloud - June 2023crack 添加便签以澄清情节提要上的任何设计概念。 新的流程图工具直接在情节提要上可视化任何设计流程和过程。 添加了在发布到Mockplus Cloud时删除RP页面的功能。 添加设计注释时包括图像和链接。 添加了一个新的提示,用于在断开互联网…

MySQL练习题(1)

1,创建如下学生表 mysql> create table student( -> id int, -> name varchar(20), -> gender varchar(20), -> chinese int, -> math int, -> english int -> ); 插入如图数据 1-- 查询表中所有学生的信息 select *from student;2-- 查询表中所有学…

mysql语句练习题,创建表,枚举中文字符集设置,修改(update)

作业: 1.创建表: 创建员工表employee,字段如下: id(员工编号),name(员工名字),gender(员工性别),salary(员工薪…

厄尔尼诺,“烤热”新能源汽车市场?

在高温极端天气中,买新能源汽车的人变多了还是变少了? 7月4日,世界气象组织宣布,热带太平洋七年来首次形成厄尔尼诺条件,这可能导致全球气温飙升、破坏性天气和气候模式的出现。 注:1月底至6月初&#xff…