0

У меня есть ОДУ:MATLAB: Как решить высокоразмерные нелинейные ODE?

х»= х + Р (х)

выглядит достаточно просто, но х 100 мерная т.е.

х = [x1, ..., x100]

Кроме того,

ц (х) = Ln (XI)/(п (х1) + ... Ln (х100))

, где я находится в диапазоне от 1 до 100 и F (X) = [f1 (х), ..., f100 (х)]

на сайте MATLAB, он говорит, что я должен сначала создать функцию, как:

enter image description here

Но как я могу это сделать? У меня есть 100 переменных, и все мои переменные связаны через эту высоко нелинейную функцию.

Любая помощь очень ценится!

ответ

1

Функция может использовать возможности векторизации MATLAB, поскольку, из ode45 documentation, «функции dydt = odefun(t,y), для скаляра t и вектора-столбца y, должна возвращать вектор-столбец dydt». Так что ваши odefun можно выразить просто как

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

и пусть ode45, или другой соответствующий интегратор, справиться с остальными.