Гурский Д., Турбина Е. - Вычисления в MathCad 12 (1077322), страница 99
Текст из файла (страница 99)
Проинтегрировать дифференциальное уравнениеxdy - ( l - \fx) dx = 0.Построить интегральную кривую, проходящую через точку М(1; 7/3)В два действия данное уравнение приводится к видуЛdxПроинтегрировав обе части, мы найдем общее решение, определяющее однопараметрическое семейство интегральных кривых:у(х) :=dx12у ( х ) - » l n ( x )- 6 - х122+ 3• х- - • х3222у ( х ) = 1п(х) - 6 - х + 3 - х-х + С14.2. Численное решение ОДУ в форме задачи Коши* 443Чтобы найти требуемое частное решение, необходимо определить фиксированное значение параметра С. Для этого подставим в последнее выражение координаты точки М, а затем разрешимполученное уравнение относительно С:I122- - 1п(1) + 6 • 1 - 3 + - 1 - С solve ,C -» 633Записываем функцию решения с численным значением параметра С:1у(х) := 1п(х) - 6 - х2+3•х212-х+6Строим интегральную кривую (рис.
14.2).10Рис. 14.2. Интегральная кривая решения, проходящая через точку М(1; 7/3)14.2. Численное решение ОДУ в формезадачи КошиОсновная форма задания исходных условий, которая используется при моделировании реальных процессов с помощью дифференциальных уравнений, связана с определением значений всех низших производных в начальной точке интервала измененияпеременной. Так, в физике ОДУ обычно описывают изменение изучаемой характеристики с течением времени, и начальные условия определяются в момент t=0.
Заданныетаким образом дифференциальные уравнения и системы дифференциальных уравнений называются задачами Коши.Методы численного решения ОДУ в форме задачи Коши разработаны весьма досконально. Самыми популярными из них заслуженно являются алгоритмы Рунге-Кутта,успешно используемые для решения подавляющего большинства дифференциальныхуравнений. Однако для некоторых задач (например, жестких систем химической кинетики) они неприменимы (или неэффективны), и тогда приходится применять болеетонкие и сложные методы. Функции, реализующие наиболее важные из них, являются в Mathcad системными, что позволяет очень быстро и просто находить решениепрактически для любого ОДУ или системы ОДУ.Решение линейных дифференциальных уравнений и их систем реализовано в Mathcadв двух формах: в виде вычислительного блока и в виде встроенных функций.
Перваяформа предпочтительнее с точки зрения наглядности представления решения и технической простоты, вторая же открывает куда более широкие возможности для влияния4 4 4 • Глава 14. Дифференциальные уравненияна ход его получения и изучения полученных результатов. Так как, вне зависимостиот выбора типа оформления, система использует для решения ОДУ одни и те же алгоритмы, то принципиального различия от того, какой из них вы предпочтете, в результатах вычислений не будет.Далее мы обсудим принципы решения ОДУ и систем ОДУ, заданных в форме задачиКоти обоими альтернативными методами, а также отдельно поговорим о жестких задачах.14.2.1.
Вычислительный блок Given -OdesolveС такой формой проведения расчетов, как вычислительный блок (Solve Block), мы ужевстречались, когда разбирали методы численного решения алгебраических уравнений(функция find), минимизации невязки системы (функция minerr), а также определенияэкстремумов (функции Maximize и Minimize). Самый простой и наглядный способ численного решения линейных ОДУ и систем линейных ОДУ в Mathcad также использует вычислительный блок.
Чтобы его реализовать, выполните следующую последовательность действий.• Задайте вводное слово Given (Дано).О Ниже вводного слова определите вид дифференциального уравнения или системыуравнений. Сделать это нужно, соблюдая следующие правила.• Дифференциальное уравнение (в том числе входящее в систему) должно бытьстрого линейным (то есть высшая производная в нем не должна иметь никаких сомножителей или степенных показателей). Подобное ограничение связанос особенностями используемого (по умолчанию) системой при решении ОДУв форме вычислительного блока Giveri-Odesolve метода Рунге-Кутта 4-го порядкаточности (о нем мы поговорим ниже).
Если же ваше уравнение нелинейное,то использовать вычислительный блок нельзя.• Производные в выражении дифференциального уравнения могут быть заданыс помощью специальных операторов панели Calculus (Вычисления) (Shift-*-/ дляоператора производной первого порядка и Shift+Ctrl+/ для оператора дифференцирования произвольного порядка). Подобная запись дифференциальных уравнений более принята в физике, а в математике традиционно производные в ОДУобозначаются с помощью специальных меток-штрихов, При задании вычислительного блока можно использовать и такую форму отображения дифференциальныхуравнений (соответствующий штрих вводится с помощью сочетания Ctrl+F7).• Искомые функции должны быть определены явно с указанием имени переменной, например f(x).• В качестве знака равенства внутри вычислительного блока следует использовать,как и в случае решения простых алгебраических уравнений, только логическоеравенство (Bold Equal — Ctrl+-)."•Q Помимо самого дифференциального уравнения, внутри вычислительного блоканеобходимо задать и соответствующие начальные или граничные (в случае решения краевых задач) условия.
В курсе высшей математики доказывается, что длятого, чтобы получить явное решение ОДУ n-го порядка, для него следует определить п начальных условий. В случае задачи Коши в качестве начальных условийнеобходимо задать значения производных порядков п-1,п-2,...,0 на левой границеинтервала изменения переменной. При определении производных в начальной точ-14.2. Численное решение ОДУ в форме задачи Коши* 445ке используются те же правила, что и при задании выражения самого дифференциального уравнения.• Когда ОДУ, начальные или граничные условия будут заданы, можно непосредственноприступать к вычислению значений искомой функции на нужном промежутке. Дляэтого следует задействовать специальную функцию odesolve([vector],t,b,[step]), где:• vector — вектор функций, относительно которых решается система дифференциальных уравнений. Вектор должен содержать имена функций без имени переменной.
Данный параметр используется, когда вы решаете систему ОДУ, в случае жерешения одиночного уравнения его следует опустить;• t — переменная, от которой зависит искомая функция. Необходимость заданияэтого параметра связана с тем, что, как это ни покажется странным, результатиспользования функции odesolve также является функцией, а не вектором некоторых числовых значений.
Те возможности, которые открывает это обстоятельство, мы продемонстрируем немного ниже;• b — правая граница интервала поиска решения. Соответственно левая границаопределяется вами при задании начальных условий. Обязательным условиемявляется то, что b должно лежать правее а — это общее требование для корректно заданной задачи Коши при использовании всех численных методов;• step — этот параметр определяет количество шагов, используемых численным методом Рунге-Кутта.
Задание step не является обязательным, и по умолчаниюэтот параметр определяется таким образом, чтобы длина шага была равна 0.1.В случае сложных уравнений правильное определение step может играть самуюпринципиальную роль для получения корректного решения. Однако стремитьсяво всех случаях сделать step минимальным не стоит, так как для большинстваОДУ это приведет лишь к резкому увеличению времени расчетов без значимогоповышения их точности.Наряду с дифференциальными уравнениями в блоке Given-Odesolve можно задаватьи алгебраические ограничения, например, y(t)+z(t)=w(t), что позволяет ввести в систему дополнительную неизвестную функцию w(t), которая должна быть определенаodesolve наряду с y(t) и z(t).
Ограничения же в виде неравенств задавать нельзя.Приведем пример решения ОДУ первого порядка. Выберем уравнение таким образом,чтобы оно было не решаемо аналитическими методами (следует заметить, что всевозможными символьными преобразованиями можно привести к удобному для интегрирования виду предельно ограниченную группу дифференциальных уравнений).Пример 14.7. Численное решение ОДУ первого порядка (рис. 14.3)GivenУ(0) = 1у :=odesolve(t,40)у(6.11115) = 2.5930254520046692у(39.89679) = 6.6616193367807526446 •Глава 14.
Дифференциальные уравненияРис. 14.3. График численного решения ОДУ первого порядкаОбратите внимание, что при решении дифференциального уравнения с помощью функции odesolve существует возможность определения значений искомой функции и в техточках, которые не являются узловыми (то есть непосредственно в ходе работы численного алгоритма эти значения просчитаны не были).
Достигается же это за счет заданиямежду каждой парой точек интерполирующего полинома (точнее, кубического сплайна). Очевидно, что точность такого предсказания будет тем выше, чем меньше величина шага и чем более плавно и предсказуемо изменяется функция решения.Кстати, и график решения ОДУ вычислительным блоком Given-Odesolve задается такимобразом, как будто оно является непрерывной функцией (см. рис. 14.3).Аналогичным образом, как и ОДУ первого порядка, решаются в Mathcad и линейныедифференциальные уравнения, содержащие производные более высокого порядка.Пример 14.8.