简单的MATLAB/Octave模拟

5
这应该对于在这个领域有经验的人来说是一个非常简单的问题,但我还是新手。
我有以下系统(或者这里有更好分辨率的图像): alt text http://img199.imageshack.us/img199/2140/equation1.png 给定以下输入:
u = min(2 - t/7.5, 2*(mod(t, 2) < 1));

我需要绘制系统y的输出

我用以下函数来描述该系统:

function xprime = func(t, x)
    u = min(2 - t/7.5, 2*(mod(t, 2) < 1));
    xprime = [
        x(2);
        x(3);
        0.45*u - 4*x(3)^2 - x(2)*x(1) - 4*x(2) - 2*x(1);
        x(5);
        sin(t) - 3*x(5)*x(1);
    ];

并且使用ode23模拟,就像这样:

[tout, xout] = ode23(@func, [0 15], [1.5; 3; -0.5; 0; -1])

模拟后,xout 将具有五列。我的问题是:我如何知道哪一个是 y 系统的输出?

编辑:好的,为了简单起见,我想像这样绘制解决方案:

a = 1 % what goes here? 1, 2, 3, 4 or 5?
plot(tout, xout(:,a))

2
原方程式中有项4y''^2,但您的函数中有4x(3)^3。我认为您想要它变成4x(3)^2。 - SCFrench
是的,那是个打错字。我刚刚修正了它。 - Attila O.
2个回答

3

当然,对应于y的是看起来像x(1)的。

如果将您的代码与方程式进行比较,您会发现在代码中,每个y出现的地方都有一个x(1)。这可能是最好的猜测。


1

[T,Y,TE,YE,IE] = ode23(odefun,tspan,y0,options)

下表列出了求解器的输出参数。

  • T 时间点的列向量。
  • Y 解数组。Y中的每一行对应于在T的相应行返回的时间处的解。
  • TE 事件发生的时间。
  • YE 事件发生时的解。
  • IE 消失的事件函数的索引i。

Isten fizesse!


这很清楚;但是对于每一行,我将有五个值(来自五列的值)。哪一个将对应于y系统的输出? - Attila O.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接