Глава 5. Решение  дифференциальных уравнений

       5.1 Вычислительный блок Given– Odesolve


          Применение функции Odesolve требует записи вычислительного блока, состоящего из трех частей:

1) ключевого слова Given (Дано);

2) дифференциального уравнения и начальных или граничных условий к нему;

3) функции оdesolve(x, xk, n) (решение ОДУ), где  x – имя переменной, относительно которой решается уравнение; xk – конец интервала интегрирования (начало интервала интегрирования указано ранее, в начальных условиях); n – необязательный внутренний параметр, определяющий число шагов интегрирования, на которых решается дифференциальное уравнение.

Примеры использования функции Odesolve приведены на рис. 5.2–5.5.

                                                                                  

                                                                               Given      

                                                                                      

                                                                                               граничные условия можно задавать лишь в двух точках:

                                                                                                в начале и в конце интервала интегрирования

                                                                                                     

                                                                  Рис. 5.2  Решение уравнения с граничными условиями

 

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

MathCAD позволяет записать условие несколькими способами:

– с использованием булевых операторов:

;

– с использованием функции if:

.

В данном случае невозможно записать условие с использование условного оператора программирования if, так как вертикальной черте (обязательному признаку программирования) должен предшествовать оператор присваивания :=, тогда как в нашем случае использован знак + или знак логического равенства =.

                                                                               поменяйте местами закрашенные выражения

                                                                                      

                                                                                       Given  

                                                                                                

                                                                                        

         Рис. 5.3    Объединение двух дифференциальных уравнений в одно

 

В MathCAD все встроенные функции для решения дифференциальных уравнений требуют записи производной высшего порядка в явном виде. Однако, как показано на рис. 5.2, присутствие коэффициента (постоянного или переменного) перед производной высшего порядка – не помеха при решении ОДУ. Если уравнение есть сложная функция от высшей производной, предварительно надо решить это уравнение алгебраически относительно высшей производной. На рис. 5.4. исходное уравнение решено символьно относительно у'(х). Для выполнения этой операции надо выделить переменную, затем в главном меню выбрать команду SymbolicsVariableSolve (Символьные вычисления→Переменная→Решить). Найденный результат подставлен в дифференциальное уравнение, которое решено с помощью функции Odesolve.

В MathCAD 2001i возможности функции Odesolve были расширены. Теперь она может решать и системы дифференциальных уравнений. При этом несколько изменяется обращение к ней.

                                                                                                Дано уравнение    

                                                                                               решим его относительно у'(х)

                                                                                             has solution(s)  

                                                                                      уравнение в стандартном виде подставим в блок Given - Odesolve

                                                                                      два корня уравнения дают решение ОДУ

                                                                                      Given       

                                                                                            

                                                                                      

                                          Рис. 5.4 Приведение дифференциального уравнения к стандртному виду и его решение

 

Обращение к функции для решения одного уравнения выглядит так:

оdesolve(x, xk, n),

для решения системы дифференциальных уравнений–

оdesolve((вектор имен неизвестных),x, xk, n).

На рис. 5.5 приведено решение системы из трех дифференциальных уравнений первого порядка. соответственно, вектор имен неизвестных содержит имена трех неизвестных, х, у и z. Граничные условия заданы в точке t= –1. конечная точка интервала интегрирования t=3. Следовательно, интервал интегрирования от –1  до 3. Конечное значение всегда должно быть больше начального.

Если  график строится для значений, выходящих за пределы интервала интегрирования, MathCAD экстраполирует значения функции за пределы интервала интегрирования, получая чаще всего неправдоподобные результаты.

  Если в MathCAD 11 функция Odesolve решает системы уравнений только с начальными параметрами, то в MathCAD 12, 13, 14 – и с начальными, и с граничными условиями.

 

                                                                                Given

                                                                                                      

                                                                                                        

                                                                                                  

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

                                                                                              

                                                                                        

                                                               Рис. 5.5 Решение системы ОДУ функцией Odesolve

 

В MathCAD 2001i у функции Odesolve появилась возможность принимать в качестве ограничений алгебраические уравнения (рис. 5.6 и 5.7), но только в задачах с начальными условиями.

Рассмотрим механизм работы блока Odesolve: блок Odesolve преобразует заданные дифференциальные уравнения к стандартному виду, используемому функциями rkfixed и Rkadapt. С помощью указанных функций он решает систему ОДУ (или одно ОДУ) с начальными условиями. В результате расчета получают массив значений функции и ее производные.

Далее используются функции интерполяции lspline и interp, преобразующие массив решений системы ОДУ в функцию, которую затем можно дифференцировать или интегрировать. Необязательный параметр steps в обращении к функции Odesolve как раз и задает число точек интерполяции. Чем больше steps, тем выше точность интерполяции, но тем больше время решения задачи.

При решении системы ОДУ есть возможность выбрать метод решения. Для этого надо установить курсор на слове Odesolve и нажать правую кнопку мыши. В открывшемся контекстном меню выбрать Fixed (Решение с фиксированным шагом функцией rkfixed), Adaptive (Решение с переменным шагом функцией Rkadapt) или Stiff (Решение жесткой системы ОДУ функцией Radau), как показано на рис. 5.7.

                                                                                    Given

                                                                                                                        дифференциальные

                                                                                                                               уравнения       

                                                                                                                       алгебраическое уравнение

                                                                                                                    требуется 6 начальных условий:   

                                                                                                                         

                                                                                                                        

                                                                                                                      

                                                                                                                   

                              Рис. 5.6 Решение системы ОДУ с алгебраическими ограничениями функцией Odesolve

 

            Given           

                                                           

                                      

                     

               

Рис. 5.7 Выбор метода решения дифференциальных уравнений

 

НазадВперед

Оглавление   Глава 5