пятница, 10 апреля 2015 г.

Maxima. Дифференциальные уравнения

Для решения обыкновенных дифференциальных уравнений в Maxima служит функция 
ode2(выражение, y, x),
где y - искомая функция, x - независимая переменная. Выражение может быть дифференциальным уравнением первого или второго порядка. Данная функция умеет находить решения для различных типов уравнений:
первого порядка
- линейные;
- с разделяющимися переменными;
- однородные;
- уравнения в полных дифференциалах;
- уравнения Бернулли;
- обобщённые однородные уравнения;
второго порядка
- с постоянными коэффициентами;
- в полных дифференциалах;
- однородные линейные с постоянными коэффициентами, которые могут быть сведены к уравнениям с постоянными коэффициентами;
- уравнения Эйлера;
- уравнения, разрешимые методом вариации постоянных;
- уравнения, свободные от независимой переменной, допускающие понижение порядка. [Е.А. Чичкарёв, "Компьютерная математика с Maxima"]


Чтобы найти частное решение задачи Коши для уравнения первого порядка используется функция ic1(выражение, значение x, значение y), для второго порядка - ic2().
Обратите внимание, что запись дифференциала начинается с апострофа, который "экранирует" действие функции diff().

Для численного решения ОДУ необходимо загрузить пакет "dynamics". Найти решение методом Рунге-Кутта позволяте функция
rk([выражения],[y],[y0],[x]),
где первый аргумент содержит список уравнений, [y] - список независимых переменных, [y0] - список начальных значений, [x] - список, содержащий символьное значение независимой переменной, её начальное и конечное значения, а также шаг интегрирования. Полученный результат возвращается в виде матрицы.
При визуализации результата использовано ключевое слово discrete, которое говорит программе, что график должен быть точечным.

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

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