Matlab通过ode求解微分方程

MATLAB有很多用于求解微分方程的内置功能。MATLAB包含了用于求解常微分方程(ODE)的函数

高阶微分方程必须重新表述为一个一阶系统微分方程。

并不是所有的微分方程都可以用同样的方法求解,所以MATLAB提供了许多不同的常微分方程求解器,如ode45、ode23、ode113等。

考虑一个细菌种群数学模型

 b=1p=0.5

function dx = bacteriadiff(t,x)
b=1;
p=0.5;
dx = b*x - p*x^2;
clear
clc
tspan=[0 1];
x0=100;
[t,y]=ode45(@bacteriadiff, tspan,x0);
plot(t,y) 

传递参数导数学模型方法

 

a = 1/T,T是仿真的时间

b = 1,x(0) = 1, T = 5

 

function dx = mysimplediff(t,x,param)
a=param(1);
b=param(2);
dx=a*x+b;
tspan=[0 25];
x0=1;
a=-1/5;
b=1;
param=[a b];
[t,y]=ode45(@mysimplediff, tspan, x0,[], param);
plot(t,y)

使用ode23函数求解并绘制[t0,tf]区间上的微分方程

 

function dw = diff_task3(t,w)
dw = -(1.2 + sin(10*t))*w;
tspan=[0 5];
w0=1;
[t,w]=ode23(@diff_task3, tspan, w0);
plot(t,w)

 

求解二阶的微分方程

令 

 

 

 

function dx = diff_secondorder(t,x) [m,n] = size(x);
dx = zeros(m,n)
dx(1) = x(2);
dx(2) = (2-2*t*x(2)-3*x(1))/(1+t^2);
tspan=[0 5];
x0=[0; 1];
[t,x]=ode23(@diff_secondorder, tspan, x0);
plot(t,x)
legend('x1','x2')
tspan=[0 5];
x0=[0; 1];
[t,x]=ode23(@diff_secondorder, tspan, x0);
plot(t, x(:,2))

 

  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值