【问题标题】:Plotting a function defined by a system of ODEs with MATLAB使用 MATLAB 绘制由 ODE 系统定义的函数
【发布时间】:2018-06-06 19:33:58
【问题描述】:

我正在尝试用 MATLAB 求解一阶 ODE 系统,

$$\left\{
\begin{array}{l}
x_{1}^{\prime }=-\frac{1}{t+1}x_{1}+x_{2} \\
x_{2}^{\prime }=-(1+e^{-2t})x_{1}-\frac{1}{t+1}x_{2}+\frac{e^{-3t}}{t+1}x_{3}
\\
x_{3}^{\prime }=-\frac{1}{t+1}x_{3}+x_{4} \\
x_{4}^{\prime }=e^{-3t}\left( t+1\right) x_{1}-\left( 1+e^{-2t}\right) x_{3}-%
\frac{1}{t+1}x_{4}-\frac{1}{t+1}x_{3}^{2}%
\end{array}%
\right. $$

我已经定义了函数:

   function dzdt=odefun(t,z)
        dzdt=zeros(4,1);
        dzdt(1)=-(1/(t+1))*z(1)+z(2);
        dzdt(2)=-(1+exp(-2*t))*z(1)-(1/(t+1))*z(2)+(exp(-3*t))/(t+1)*z(3);
        dzdt(3)=z(4)-(1/(t+1))*z(3);
        dzdt(4)=(exp(-3*t))*(t+1)*z(1)-(1+exp(-2*t))*z(3)-(1/(t+1))*z(4)-(1/(t+1))*z(3)^2;
        end 

时间间隔为[0,100],初始条件为z0 = [0.01 0.01 0.01 0.01]

使用ode45 求解器,我使用了以下命令:

>> tspan = [0 100];
>> z0 = [0.01 0.01 0.01 0.01];
>> [t,z] = ode45(@(t,z) odefun(t,z), tspan, z0);
>> plot(t,z(:,1),'r')

我很容易得到z(1)=x_1的图表。

但我想绘制函数f(t)=(t+1)*x_1(t)t\in [0,100],其中x_1=z(1) 是系统的第一个未知数。我怎么能这样做?

【问题讨论】:

    标签: matlab ode45


    【解决方案1】:

    只需使用每个元素乘法.*

    plot((t+1).*z(:,1))
    

    【讨论】:

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