O thers указали, что у вас проблемы с наном/инф, что верно, но вот как исправить ваш код, чтобы дать вам результаты, которые, как я считаю, вы ищете.
Поскольку никто другой не указал на это (я заметил), вы пытаетесь решить систему дифференциальных уравнений, используя Euler method.В сочетании дифференциальных уравнений, которые вы решаете являются:
dy/dt = e*(1 - x * x) * y - x + f * cos(w * t)
dx/dt = y
Однако, ваше решение является дефектным, который дает огромную численную нестабильность (и неправильный ответ). Эти две линии:
y = y + ((e*(1 - x*x)*y) - x + f*cos(w*t))*t;
x = x + y*t;
должно быть:
y = y + ((e*(1 - x*x)*y) - x + f*cos(w*t))*.01;
x = x + y*.01;
где я изменил т к вашей дельта т (шаг времени), потому что это то, что метод Эйлера требует. Я бы сделал новую переменную под названием delt или что-то в этом роде, чтобы вы могли легко изменить временной шаг. Теперь решение красиво стабилизируется, и график x vs. t и y vs. t дает некоторые очень приятные сюжеты. Я бы опубликовал их, но у меня есть ощущение, что это может быть домашнее задание.
Кроме того, если с помощью разных уравнений вам требуется больше стабильности, вы можете использовать меньшие временные шаги или некоторые более совершенные числовые методы ODE, такие как Runge-Kutta или неявные методы.
Хотя это был помечен C++, не так ли C99? Я не вижу ни одной используемой функции C++ ... – Yacoby
, но будет ли это иметь значение для вывода? – Hick
Не могли бы вы использовать более значимые имена переменных? Нам будет полезно лучше понять ваш код. –