Численное решение задачи Коши для скалярного обыкновенного дифференциального уравнения.
Найти численное решение обыкновенного дифференциального уравнения в MathCAD можно разными способами. Рассмотрим случай, когда задан отрезок, на котором требуется построить решение, и значение неизвестной функции в начальной точке (на левом конце отрезка).
I. Алгоритм решения задачи Коши обыкновенного дифференциального уравнения с использованием «блока решений»:
1. Ввести ключевое слово Given, с которого начинается блок решений.
2. Записать уравнение, используя знак логического равенства между правой и левой частями уравнения с панели управления Evaluation (Выражения).
3. Задать начальные значения переменной, которая есть в уравнении.
4. Ввести ключевое слово Odesolve, которым заканчивается блок решений, то есть присвоить функции, относительно которой решается уравнение, значение Odesolve с параметрами интервала интегрирования.
5. Определить значение найденной функции в точках интервала, для чего создать соответствующий цикл.
6. Построить и отформатировать график найденной функции в точках интервала.
II. Алгоритм решения задачи Коши для обыкновенного дифференциального уравнения с использованием встроенной функции (например rkfixed).
1. Задать начальные значения переменной, которая есть в уравнении.
2. Записать уравнения, используя знак логического равенства между правой и левой частями уравнения с панели управления Evaluation (Выражения).
3. Задать количество шагов интегрирования уравнения на интервале.
4. Присвоить функции, относительно которой решается уравнение, значение rkfixed с параметрами: функция, интервал интегрирования, количество шагов на интервале интегрирования, оператор дифференциального уравнения.
5. Определить значение найденной функции в точках интервала, для чего создать соответствующий цикл.
6. Построить и отформатировать график найденной функции в точках интервала.
Пример
I.Найдем решение обыкновенного дифференциального уравнения на интервале [0,100] с начальным условием у(0)=1, следуя алгоритму:
1. Ввести ключевое слово Given.
2. Записать уравнение, используя логический знак равенства:
.
3. Записать начальное условие, используя логический знак равенства:
у(0)=1.
4. Найти решение задачи с помощью функции Odesolve:
у:=Odesolve(x,100).
5. Создать цикл для построения графика решения:
x:=0,..100.
6. Построить график и отформатировать его.
II. Найдем для той же задачи решение с использованием встроенной функции rkfixed:
1. Задать начальное условие
у(0)=y0:=0.1.
2. Задать функцию, определяющую правую часть дифференциального уравнения .
3. Указать количество шагов интегрирования К:=100.
4. Найти решение задачи с помощью функции rkfixed. Знак равенства выбирается на панели Логика (Логические).
у=rkfixed(у0, х1,х2,К, D).
5. Создать цикл для построения графика решения:
х:=0,..100.
6. Построить график функции в точках интервала и отформатировать его.
Примечание: результаты решения дифференциального уравнения двумя подходами должны совпадать.
Отметим, что MathCAD содержит и другие встроенные функции для решения дифференциальных уравнений:
- Rkadapt – метод Рунге-Кутта с переменным шагом интегрирования (величина шага адаптируется к скорости изменения функции решения, то есть при быстром изменении шаг уменьшаем);
- Bulstoer – метод Булирша-Штера (более эффективен в случае, если решение является плавной функцией).
Эти функции имеют сходные параметры (y0, a, b, n, D):
- y0 – вектор начальных значений неизвестных функций, входящих в систему (в случае одного уравнений и одной неизвестной функции – это просто число);
- a – начало отрезка, на котором ищется решение (именно в этой точке задается значение вектора y0);
- b – конец отрезка интегрирования;
- n – количество частей, на которые разбивается отрезок интегрирования;
- D(x, y) – векторная функция, элементы которой содержат правые части уравнений системы в нормальной записи (когда левые части – производные от соответствующих функций, а в правых частях производные отсутствуют)