среда, 6 августа 2014 г.

Scilab. ОДУ

Базовой функцией Scilab для решения обыкновенных дифференциальных уравнений (ОДУ) первого порядка является
   y = ode([type,] y0, t0, t, f)
где y0 - вектор начальных значений функции  y(t) в точке t0, t - координаты узлов расчётной сетки, f - связь значения функции с её производной dy/dt = f(y,t). Необязательный параметр type - метод поиска решения (adams - метод Адамса, stiff - жёсткая задача, rk - адаптивный метод Рунге - Кутта четвёртого порядка, rkf - пятиэтапный метод Рунге - Кутта четвёртого порядка, fix - rkf с фиксированным шагом). Хотя в функции ode() можно указать ещё ряд параметров (точность, якобиан и др.), я не стал их записывать, чтобы не перегружать вид выражения.


Здесь рассматривается решение уравнения dy/dt = y^2 - y*sin(t) + cos(t) на интервале от 0 до "пи", шаг сетки 0.1. Результат расчёта нагляднее всего отобразить на графике.
Помимо ОДУ Scilab умеет решать системы дифференциальных алгебраических уравнений (dae()), ОДУ с граничными проблемами (bvode()) и что-то ещё, оставшееся для меня неясным)

Комментариев нет:

Отправить комментарий