MATLAB:如何求解高维非线性 ODE?

MATLAB: How to solve high dimensional nonlinear ODE?

我有一个 ODE:

x' = -x + f(x)

看起来很简单,但是 x 是 100 维的,即

x = [x1, ... , x100]

此外,

fi(x) = ln(xi)/(ln(x1)+...+ln(x100))

其中 i 介于 1 和 100 之间且 f(x) = [f1(x), ... , f100(x)]

在 MATLAB 的网站上,它说我应该首先创建一个函数:

但是我该怎么做呢?我有 100 个变量,所有变量都通过高度非线性函数耦合。

非常感谢任何帮助!

该函数可以利用 MATLAB 的矢量化功能,因为从 ode45 documentation 开始,"function dydt = odefun(t,y), for a scalar t and a column vector y, must return a column vector dydt"。所以你的 odefun 可以简单地表示为

function dxdt = odefun(~,x)
    logX = log(x);
    dxdt = -x + logX/sum(logX);
end

然后让 ode45 或其他合适的集成商处理剩下的事情。