在 Matlab 中使用 Simulink 求解 ODE

Solving ODE with Simulink in Matlab

我需要使用 Simulink 求解此 ODE,但我不知道如何求解。 我只知道如何使用 ODE 求解器。

y'' - y' - 2y = e^(3x)

y(0)=1, y'(0)=2.

我重写了获得 ODE 的方程:

y' = f(x,y)

y(x0) = y0

y'1 = y2

y2= e^(3*x) + y' + 2y 

使用 ODE 求解器。

如果有人可以使用 Simulink 模型帮助我解决这个问题,我将不胜感激。

我知道如何在 Matlab 中使用 ODE 求解器作为 ode23 和 ode23s 来求解它,但我不知道如何使用 Simulink 模型来求解。

提前致谢

你能用闭式求解吗?对我来说看起来可行。我建议任何人在开始数值解决方案之前,如果可能的话,手头都有答案。

这是我得到的。检查我:

y(x) = e^(-x)*(8e^3x + 3e^4x + 1)/12

Wolfram Alpha 说这是正确的。

(注意:x 值较大时会出现问题 - 此响应将以 e^3 倍的速度增长。)

您需要将其表示为一组耦合的一阶 ODE。

y' = z

z' = z + 2y + e^(3x)

边界条件变为:

y(0) = 1
z(0) = 2

您可以自己在Simulink中逐项设置方程,通过双击并设置相应的字段将初始条件添加到积分器中。

所以快速实现看起来像

我假设你的 x 是一个类似时间的量,因此我放置了一个斜坡函数。时钟等也可以。

或者,您可以在明确考虑初始条件的情况下形成状态 space 系统或传递函数。