Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебн. пособ. Сахарок.doc
Скачиваний:
50
Добавлен:
11.11.2018
Размер:
12.14 Mб
Скачать

6.4. Решение дифференциальных уравнений в символьной форме

Уравнение, содержащее производные неизвестной функции или неизвестных функций, называется дифференциальным уравнением. Вместо производных в уравнение могут входить дифференциалы.

В процессе моделирования динамических систем и электрических цепей часто приходится решать уравнения двух видов: обыкновенные дифференциальные уравнения и дифференциальные уравнения в частных производных.

Остановимся на рассмотрении решения в символьной форме обыкновенных дифференциальных уравнений, для которых характерна зависимость неизвестной функции от одного аргумента. Решение выполняется с помощью функции dsolve, которая возвращает результат в символьном виде. Согласно синтаксису функции, запись первой производной осуществляется посредством символа D, для второй производной используется D2, для третьей - D3 и т.д. В этой связи при объявлении символьных переменных не следует использовать букву D, если далее предполагается решать уравнения с помощью dsolve.

При выводе результата в решении должны содержаться постоянные интегрирования, которые представлены коэффициентами , и т.д. Их число равно порядку дифференциального уравнения. Порядком дифференциального уравнения называют порядок наивысшей производной, входящей в это уравнение.

В рассмотренных ниже примерах приводятся решения дифференциальных уравнений, выполненные с соблюдением синтаксиса функции-решателя dsolve. В первых двух примерах приведены решения линейных уравнений первого порядка без правой части и с правой частью. В третьем примере найдено общее решение линейного уравнения второго порядка с постоянными коэффициентами без правой части при вещественных корнях. В четвертом примере корни характеристического уравнения комплексно-сопряженные. Поэтому решение состоит из экспоненциальной и периодической составляющих. Разложение функции на простые множители выполнено в четвертом примере с помощью оператора факторизации factor, а решение представлено в формате, приближенном к математическому (использована функция pretty). Пятый пример содержит решение дифференциального уравнения второго порядка без правой части при мнимых корнях характеристического уравнения. Поэтому общее решение состоит из двух периодических составляющих, умноженных на постоянные интегрирования. В шестом и седьмом примерах представлен синтаксис решения линейного уравнения второго порядка с правой частью. В первом случае правая часть уравнения представляет собой экспоненту, а во втором – полином, приводящий к общему решению, состоящему из суммы экспоненциальной и полиномиальной составляющих. Наконец, в восьмом примере представлено общее решение дифференциального уравнения пятого порядка. Его характеристическое уравнение содержит однократный действительный корень и пару двукратных сопряженных мнимых корней. В решении в символьной форме представлены все составляющие, определяемые составом корней: экспоненциальная составляющая, периодические и множитель , появляющийся вследствие кратности мнимых корней.

Очевидно, аналогично можно получить решения для линейных уравнений любого порядка, в том числе – при наличии правых частей.

Примеры решения дифференциальных уравнений.

Пример1. Уравнение без правой части.

syms x t y

dsolve('Dy-t/(1+t^2)*y=0')

ans =

C1*(1+t^2)^(1/2)

Пример 2 . Уравнение с правой частью.

dsolve('Dy-t/(1+t^2)*y=t')

ans =

1+t^2+C1*(1+t^2)^(1/2)

Пример 3 . Уравнение второго порядка.

dsolve('D2y=-1/4*Dy+3/8*y')

ans =

C1*exp(-3/4*t)+C2*exp(1/2*t)

Пример 4 . Комплексно-сопряженные корни

характеристического уравнения.

f1=dsolve('D2y+Dy+y=0');

f2=factor(f1);

pretty(f2)

1/2 1/2

exp(- 1/2 t) (sin(1/2 3 t) C1 + C2 cos(1/2 3 t))

Пример 5. Мнимые корни характеристического

уравнения.

dsolve('D2y+y=0')

ans =

C1*cos(t)+C2*sin(t)

Пример 6 . Уравнение с правой частью.

dsolve('D2y-1/2*Dy-1/2*y=3*exp(1/2*t)')

ans =

-6*exp(1/2*t)+C1*exp(t)+C2*exp(-1/2*t)

Пример 7. Уравнение с правой частью, заданной полиномом.

dsolve('D2y-3*Dy=t^2+3*t')

ans =

-11/27*t-11/18*t^2-1/9*t^3+C1+C2*exp(3*t)

Пример 8 .Уравнение пятого порядка.

dsolve('D5y+D4y+2*D3y+2*D2y+Dy+y=0')

ans =

C1*cos(t)+C2*sin(t)+C3*exp(-t)+C4*cos(t)*t+C5*sin(t)*t

Для решения системы уравнений с помощью функции dsolve требуется использовать соответствующий синтаксис:

.

Функция возвращает решение в общем виде. Оно содержит соответствующее число постоянных интегрирования. Однако, если известны граничные условия, то их следует использовать для исключения постоянных интегрирования и получения из множества общих одного частного решения. Граничные условия записываются по следующей схеме:

,

Приведем несколько примеров.

Предположим, что необходимо в символьных выражениях решить систему дифференциальных уравнений

,

.

Собственные значения матрицы состояния eig(A) являются комплексно-сопряженными числами (), и решение имеет вид:

,

.

Аналогичный результат получим в пакете символьной математики (после объявления символьных величин):

>> [x,y]=dsolve('Dx=3*x+5*y','Dy=-5*x+3*y')

x =

exp(3*t)*(cos(5*t)*C1+sin(5*t)*C2)

y =

-exp(3*t)*(sin(5*t)*C1-cos(5*t)*C2)

>>

Предположим, что необходимо определить и при следующих граничных условиях , . В этом случае

,

.

Интегрирование дифференциальных уравнений с использованием dsolve при заданных начальных условиях позволяет получить тот же результат, что можно видеть из расположенного ниже текста.

>> [x,y]=dsolve('Dx=3*x+5*y','Dy=-5*x+3*y','x(0)=2','y(0)=0')

x =

2*exp(3*t)*cos(5*t)

y =

-2*exp(3*t)*sin(5*t)

Одним из замечательных свойств пакета символьной математики является возможность решения дифференциальных уравнений при расщепленных граничных условиях. Иначе говоря, решение может быть получено не только при заданных начальных условиях (в момент ), но и при других граничных условиях. Например, переменная может быть задана в момент , а в момент . В приведенном ниже фрагменте расчеты выполнены для двух граничных точек, расположенных на тех же траекториях и в моменты времени и : , .

>> [x,y]=dsolve('Dx=3*x+5*y','Dy=-5*x+3*y','x(0.5)=-7.1810','y(0)=0')

x =

-7181/1000*exp(3*t)*cos(5*t)/cos(5/2)/exp(3/2)

y =

7181/1000*exp(3*t)*sin(5*t)/cos(5/2)/exp(3/2)

>> -7181/1000/cos(5/2)/exp(3/2)

ans =

2.0000

>>

Граничные условия могут задаваться в символьной форме. Предположим, что в момент переменные состояния системы и . Тогда система уравнений имеет решение

,

,

что также подтверждается приведенным ниже фрагментом символьных вычислений:

>> [x,y]=dsolve('Dx=3*x+5*y','Dy=-5*x+3*y','x(0)=A','y(0)=B')

x =

exp(3*t)*(cos(5*t)*A+sin(5*t)*B)

y =

-exp(3*t)*(sin(5*t)*A-cos(5*t)*B)

>>

Построение графиков символьных функций осуществляется с помощью оператора ezplot, если функции не содержат таких неопределенных коэффициентов, например, как постоянные интегрирования , и т.п. По умолчанию, синтаксис ezplot(t) возвращает график заданной символьной функции в интервале [-2pi, 2pi] изменения независимой переменной . Диапазон изменения независимой переменной может быть задан пользователем. В этом случае применяется запись

,

позволяющая построить графики при изменении от минимального значения до максимума с нанесением координатной сетки. Примеры построения графиков приводятся в следующем параграфе.

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