【问题标题】:MatLab ode45 explanationMatLab ode45 解释
【发布时间】:2016-01-03 12:56:30
【问题描述】:

对于一个项目,我需要了解 matlab 代码,但由于我是新手,我并不真正了解正在发生的事情。我有一个函数文件和一个脚本文件。

功能:

function dxdt = sniffer_ode(t,x,par,tu)

X = x(1);

R = x(2);


k1 = par(1);

k2 = par(2);

k3 = par(3);

k4 = par(4);


S = interp1(tu(:,1),tu(:,2),t); 


dxdt(1) = k3*S-k4*X;

dxdt(2) = k1*S-k2*X*R;


dxdt = dxdt(:); %dxdt should be column

和脚本文件:

%sniffer
close all

%initial conditions:
X0=0; R0=0;
x0=[X0 R0];
%parameters:
k1=1; k2=1; k3=1; k4=1;
par=[k1 k2 k3 k4];
%input:
tu=[ 0   , 0
     1   , 0
     1.01, 1
    20   , 1];

[t,x] = ode45(@sniffer_ode,[0 20],x0, [],par,tu);

plot(t,x); 

所以问题是:发生了什么?我还需要将 S 绘制在与 X 和 R 相同的图中。我该怎么做?

感谢您的帮助!

【问题讨论】:

    标签: matlab project explain ode45


    【解决方案1】:

    这是一个非常基本的 Matlab 问题。关于您的requested topic,有tons of information。我认为这些slides 将帮助您走上正确的道路。

    但是,快速解释一下;您提供的第一个代码是描述您的常微分方程的函数。此函数必须始终采用x' = f(t,x,...) 的形式。这里t 是时间,x 是状态。在状态之后(在点 ... 的位置上)您可以定义其他输入参数,例如在您的 ode 函数中进行。此外,interp1函数interpolates提供的数据。

    您提供的第二个代码是您在 Matlab 中启动的代码。定义参数,然后求解并绘制常微分方程。

    如果您还有其他问题,我建议您首先尝试使用 search engine 找到答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多