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
或其他合适的集成商处理剩下的事情。
我有一个 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
或其他合适的集成商处理剩下的事情。