Я хочу решить ODE, где представляющая интерес переменная представляет собой комплексное число в терминах полярных координат, z = r*exp(i*p)
. Я использовал пример здесь , где они выбрали z = x + i*y
. Я примерно знаю, как должна выглядеть динамика системы (это хорошо известное сокращение модели Курамото), и я почти уверен, что она не должна иметь функций, вызывающих проблемы у ode45 (). Однако системы, кажется, взрываются. Я полагаю, что это из-за того, как я установил определения или возвращенные значения во втором функциональном файле, но я не уверен. У кого-нибудь есть предложения? Спасибо!
Второй функциональный файл и вызов:
% Set up ICs and t, then solve
zv0 = [0.8; 3];
tspan = [0 100];
[t, zv] = ode45(@imaginaryODE, tspan, zv0);
% Plot
plot(t,zv(:,1))
function fv = imaginaryODE(t, zv)
% Construct z from argument and angle
z = abs(zv(1)).*exp(1i.*angle(zv(2)));
% Evaluate for the function defined in complexf.m
zp = complexf(t, z);
% Return argument and angle
fv = [abs(zp); angle(zp)];
end
Первый функциональный файл:
function f = complexf(t, z)
% Constants
omega0 = 2.*pi/24;
gamma = 1/100;
k = 1;
% Function
f = (1i.*omega0 - gamma).*z + (k/2).*(z - (z^2).*conj(z));
end