matlab解微分方程

这篇具有很好参考价值的文章主要介绍了matlab解微分方程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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)%画图

matlab解微分方程,Matlab,matlab,算法,机器学习

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))

matlab解微分方程,Matlab,matlab,算法,机器学习

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例洛伦兹方程

matlab解微分方程,Matlab,matlab,算法,机器学习
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));

matlab解微分方程,Matlab,matlab,算法,机器学习

3.4 耦合

matlab解微分方程,Matlab,matlab,算法,机器学习
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)

matlab解微分方程,Matlab,matlab,算法,机器学习

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

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

4.1例1

matlab解微分方程,Matlab,matlab,算法,机器学习
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例

matlab解微分方程,Matlab,matlab,算法,机器学习

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))

matlab解微分方程,Matlab,matlab,算法,机器学习文章来源地址https://www.toymoban.com/news/detail-537270.html

到了这里,关于matlab解微分方程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • matlab使用教程(29)—微分方程实例

            此示例说明如何使用 MATLAB® 构造几种不同类型的微分方程并求解。MATLAB 提供了多种数值算法来求解各种微分方程:         vanderpoldemo 是用于定义 van der Pol 方程的函数 function dydt = vanderpoldemo(t,y,Mu) %VANDERPOLDEMO Defines the van der Pol equation for ODEDEMO. % Copyright 1984-2

    2024年02月10日
    浏览(25)
  • 【Matlab】一、解常微分方程ODE

    ​ 在matlab中,我们可以求解常微分方程的 解析解 ,和 数值解 ,一般使用 dsolve 来求解常微分方程的解析解,使用类似于 ode45 的求解器来求解常微分方程的数值解。 求解解析解 ,例如求解该方程的解析解 d y d x = 3 x 2 + 1 frac{dy}{dx}=3x^2 + 1 d x d y ​ = 3 x 2 + 1 只需要在命令行中

    2024年02月07日
    浏览(31)
  • 【数学建模\MATLAB】掌握用Matlab求解微分方程问题

    d y d t = a y 2 cfrac{dy}{dt}=ay^2 d t d y ​ = a y 2 结果 d 3 y d t 3 = b y cfrac{d^3y}{dt^3}=by d t 3 d 3 y ​ = b y 结果 x 2 + y + ( x − 2 y ) y ′ = 0 x^2+y+(x-2y)yprime=0 x 2 + y + ( x − 2 y ) y ′ = 0 结果: d 2 y d t 2 = a y , 初 始 条 件 为 y ( 0 ) = 5 , y ′ ( 0 ) = 1 cfrac{d^2y}{dt^2}=ay, text初始条件为y(0)=5,yprime(

    2024年02月03日
    浏览(29)
  • Matlab偏微分方程拟合 | 完整源码 | 视频教程

    作者简介:工学博士,高级工程师,专注于工业软件算法研究 本文已收录于专栏:《 复杂函数拟合案例分享 》本专栏旨在提供 1.以 案例 的形式讲解各类复杂函数拟合的程序实现方法,并提供所有案例 完整源码 ;2. 复杂函数 包含:分段函数、积分函数、常/偏微分函数、隐

    2024年04月10日
    浏览(70)
  • 用MATLAB求一阶微分方程(组)数值解

    标准形式要先写成左边是y的导数右边是本身函数或者自变量,然后写成.m文件类似: 如果有多个微分方程,dy=zeros(3,1);% 一定要写成列向量 3、[0,1,1]都是方程(组)的初始值,并且初始值的x=0; 就会得到一系列x,y值; ode45(最常用) **问题类型:**非刚性 **精准度:**中等 ode15s

    2024年02月11日
    浏览(34)
  • matlab使用教程(25)—常微分方程(ODE)选项

            解算 ODE 经常要求微调参数、调整误差容限或向求解器传递附加信息。本主题说明如何指定选项以及每个选项与哪些微分方程求解器兼容。         使用 odeset 函数创建 options 结构体,然后将其作为第四个输入参数传递给求解器。例如,要调整相对和绝对误差容

    2024年02月11日
    浏览(42)
  • matlab求解时变系统的Riccati矩阵微分方程

    对于代数Riccati方程的求解网上能找到很多的资源,matlab也有成熟的函数,但是对于时变系统的Riccati矩阵微分方程,能找到的资料还比较少。 可以在网上找到很多资料,如 https://blog.csdn.net/m0_62299908/article/details/127807014 matlab也有相应的一系列函数 lqr、icare等。 对于这些函数不

    2024年02月05日
    浏览(31)
  • MATLAB求解偏微分方程【PDE和差分法】

    目录 前言  1.用差分法求解 显示差分 其他方程举例 : r是什么 2.PDETOOL 3.pdepe函数 示例:热方程 代码:   在我们处理一些公式时,常常会有偏微分方程出现,所以我今天整理了一下求解偏微分方程的常用方法,希望有所帮助 在1979年复旦大学学者的一篇论文里,谈到了偏微分

    2024年02月04日
    浏览(35)
  • 40.利用欧拉法求解微分方程组(matlab程序)

    1. 简述        求解微分方程的时候,如果不能将求出结果的表达式,则可以对利用数值积分对微分方程求解,获取数值解。欧拉方法是最简单的一种数值解法。前面介绍过MATLAB实例讲解欧拉法求解微分方程,今天实例讲解欧拉法求解一阶微分方程组。 本文理论部分来自知乎

    2024年02月14日
    浏览(43)
  • matlab使用教程(27)—微分代数方程(DAE)求解

            微分代数方程是一类微分方程,其中一个或多个因变量导数未出现在方程中。方程中出现的未包含其导数的变量称为代数变量,代数变量的存在意味着您不能将这些方程记为显式形式 y ′ = f t , y 。相反,您可以解算下列形式的 DAE:         • ode15s 和 ode23t

    2024年02月11日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包