Численное решение ДУ / систем ДУ

Форум пользователей пакета Maple

Модератор: Admin

fedigen
Сообщения: 9
Зарегистрирован: Вт янв 13, 2009 9:06 pm

Численное решение ДУ / систем ДУ

Сообщение fedigen » Вт янв 13, 2009 10:17 pm

Вот такая проблема...
Численно решаю дифференциальное уранение типа:

dy(t)/dt=a(t)*y(t)*y0-b(t)*(y(t))^2
y(0)=0
a(t),b(t) - известные функции.

Решательно Maple честно и добросовестно находит решение. Но в моей задаче необходимо выполнение условия, решение y(t) не должно превышать некую известную величину y0, т.е. y(t)<=y0. Т.е., логично, что при достижении решения значения y0, необходимо обнулять коэффициент a(t), отвечающий за рост y(t).
Для этого в каждой итерации численного интегрировнаия необходимо сравнивать мгновенное значение y(t) с y0.

Ребята, возникает вопрос: можно ли в Maple цеплять промежуточные значения численного интегрирования в процессе решения? Или же мне самому придется писать алгоритм численного интегрирования дифференциального уравнения?
Не хотелось бы, потому что в планах решать систему таких ДУ, где необходимо будет задавть множества таких ограничений на искомые величины, которые будут еще и зависеть друг от друга.

fedigen
Сообщения: 9
Зарегистрирован: Вт янв 13, 2009 9:06 pm

Сообщение fedigen » Пт янв 16, 2009 10:50 pm

Что, никто не решал численно дифференциальные уравнения? Или я вопрос не четко озвучил? :?

launcher
Сообщения: 66
Зарегистрирован: Ср дек 10, 2003 7:22 pm

Сообщение launcher » Пт янв 30, 2009 6:26 pm

Численно ДУ многие решали

В той системе можно пробовать искусственно добавить фактор, зануляющий решение, если x>x0
(или что-то вроде) Это ф-я Хевисайда, или самостоятельно, что-ниб. на базе арктангенса