ode

Область обыкновенных дифференциальных уравнений

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

ode(eq, y(x))
ode({eq, <inits>}, y(x))
ode({eq1, eq2, , …, <inits>}, {y1(x), y2(x), …})

Описание

ode(eq, y(x)) представляет обыкновенное дифференциальное уравнение (ODE) для функционального y(x).

ode({eq1, eq2, ...}, {y1(x), y2(x), ...}) представляет систему ОДУ для функций y1(x), y2(x) и т.д.

В уравнениях eq, eq1 и т.д., неизвестные функции должны быть представлены y(x), y1(x) и т.д. Производные могут быть представлены или функцией diff или дифференциальным оператором D. Обратите внимание на то, что маркерный ' обеспечивает удобный ярлык: y'(x) = D(y)(x) означает то же самое как diff(y(x), x).

Неизвестные функции должны быть одномерными в независимой переменной x. Многомерные выражения, такие как y(x, t) не приняты.

Функция ode не принимает вход piecewise.

Начальные и граничные условия заданы последовательностями уравнений, включающих неизвестные функции или их производные на левой стороне. Соответствующие значения должны быть заданы на правой стороне уравнений. В частности, дифференциальный оператор D (или маркерный ') должен использоваться, чтобы задать значения производных в какой-то момент. Например,

допустимая последовательность граничных условий для inits.

Граничные условия первого и второго вида позволены. Смешанные условия не приняты.

Начальная буква/граничные точки и соответствующая начальная буква/граничные значения могут быть символьными выражениями.

Для скалярного начального значения или краевых задач, используйте ode({eq, inits}, y(x)), чтобы задать условия.

Для систем ОДУ должно быть столько же уравнений сколько неизвестные функции.

Основная цель области ode состоит в том, чтобы обеспечить среду для перегрузки функционального solve.

В случае одного одного уравнения (возможно вместе с начальными или граничными условиями), solve возвращает набор явных решений или неявного решения. Каждый элемент набора представляет ответвление решения.

В случае системы уравнений solve возвращает набор списков уравнений для неизвестных функций. Каждый список представляет ответвление решения.

На символьный звонок solve отвечают, если никакое решение не найдено.

Примеры

Пример 1

В следующем мы показываем, как создать и решить скалярный ОДУ. Во-первых, мы задаем ОДУ. Мы используем лексему кавычки ', чтобы представлять производные:

eq := ode(x^2*y'(x) + 3*x*y(x) = sin(x)/x, y(x))

Мы получаем элемент доменного ode, который мы можем теперь решить:

solve(eq)

delete eq:

Пример 2

Задача с начальными значениями задана как набор, состоящий из ОДУ и начальных условий:

ivp := ode({f''(t) + 4*f(t) = sin(2*t), 
            f(0) = a, f'(0) = b}, f(t))

solve(ivp)

delete ivp:

Пример 3

С некоторыми ограничениями также возможно решить системы ОДУ. Во-первых, задайте систему:

sys := {x'(t) - x(t) + y(t) = 0, y'(t) - x(t) - y(t) = 0}

Вызов solve приводит к общему решению с произвольными параметрами:

solution := solve(ode(sys, {x(t), y(t)}))

Чтобы проверить результат, замените им назад в систему sys. Однако для замены, необходимо переписать систему в обозначение с помощью функции diff:

eval(subs(rewrite(sys, diff), op(solution)))

delete sys, solution:

Если вы имеете систему дифференциальных уравнений в матричной форме, извлекаете компоненты матрицы к набору дифференциальных уравнений:

Y:= matrix([x(t), y(t)]):
A:= matrix([[1, 2], [-1, 6]]):
s := ode({op(diff(Y, t) - A*Y)}, {x(t), y(t)})

Теперь, используйте функцию solve, чтобы решить систему:

solve(s)

Пример 4

В этом примере мы указываем, что различные форматы возврата ode решают средство. Во-первых, мы решаем ОДУ с начальным условием. Решение включает символьный интеграл:

solve(ode({y'(x) + x*y(x) = cos(x), y(0) = 3}, y(x)))

Для следующего уравнения мы получаем неявное решение:

solve(ode((x*y'(x) - y(x))^4*exp(x*y'(x) - y(x)) 
          - ln(x*y'(x) - y(x)), y(x)))

Это - алгебраическое уравнение для y. Его решение задает y как функцию x и произвольного параметра C, сопровождаемый номером, автоматически сгенерированным MuPAD® (постоянный из интегрирования). Однако алгебраическое уравнение не имеет решения в закрытой форме.

delete sys, solution:

Пример 5

Это может произойти, что MuPAD не может решить данное уравнение. В таком случае возвращена символьная команда solve:

solve(ode(x*diff(y(x),x)-y(x)*(x*ln(x^3/y(x))+2), y(x)))

Пример 6

Решатель ОДУ MuPAD содержит алгебраические алгоритмы для вычисления Liouvillian и non-Liouvillian решений линейных обыкновенных дифференциальных уравнений. Эти алгоритмы основаны на дифференциале теория Галуа и на дополнительных методах для нахождения решений линейных обыкновенных дифференциальных уравнений, данных с точки зрения специальных функций. Для примера известного Ковэкика

,

решение может быть найдено как:

solve(ode(y''(x) + (3/(16*x^2) + 2/(9*(x - 1)^2)
                    - 3/(16*x*(x - 1)))*y(x), y(x)))

MuPAD может найти Liouvillian и non-Liouvillian решения для уравнений высшего порядка также. Однако в случае решений Liouvillian, нет никакой гарантии, что все они найдены.

MuPAD также находит non-Liouvillian решения с точки зрения функции Бесселя, Эйри и функций Уиттекера:

eq := y'(x) + y(x)^2 + b + a*x

solve(ode(eq, y(x)))

Мы проверяем это решение:

simplify(eval(subs(rewrite(eq, diff), y(x) = op(%))))

Пример 7

Также возможно вычислить серийные решения обыкновенного дифференциального уравнения (cf. ode::series для получения дальнейшей информации):

series(ode(y''(x) + 4*y(x) = sin(w*x), y(x)), x = 0, 8)

Параметры

eq, eq1, eq2, …

Уравнения или арифметические выражения в неизвестных функциях и их производных относительно x. Арифметическое выражение рассматривается как уравнение с исчезающей правой стороной.

y, y1, y2, …

Неизвестные функции: идентификаторы

x

Независимая переменная: идентификатор

inits

Начальные или граничные условия: последовательность уравнений

Возвращаемые значения

Объект типа ode.

Ссылки

[1] Э. Камк. “Differentialgleichungen: Lösungmethoden und Lösungen”. Б.Г. Теубнер, Штутгарт, 1997.

[2] Г.М. Мерфи. “Обыкновенные дифференциальные уравнения и их решения”. Ван Нострэнд, Принстон, 1960.

[3] Д. Цвиллингер. “Руководство дифференциальных уравнений”. Сан-Диего: Academic Press, 1992.

[4] В. Фэклер. Algebraische Algorithmen zur Lösung von linearen Differentialgleichungen. Штутгарт, Лейпциг: Teubner, Отчеты Reihe MuPAD, 1999.

[5] М. ван дер Пут и М.Ф. Зингер. “Теория Галуа линейных дифференциальных уравнений”. Grundlehren der Mathematischen Wissenschaften, 328, Springer-Verlag, Берлин, 2003.

[6] Ф. Алмер и М.Ф. Зингер. Liouvillian и алгебраические решения вторых и третьих линейных дифференциальных уравнений порядка. “Дж. Симб. Аккомпанируйте”, 16:37-74, 1993.