Главная страница
Навигация по странице:

  • Листинг 11.2. Решение задачи Коши для ОДУ первого порядка вторым способом

  • Кирьянов. Самоучитель MathCad 11. Кирьянов д в


    Скачать 10.75 Mb.
    НазваниеКирьянов д в
    АнкорКирьянов. Самоучитель MathCad 11.pdf
    Дата28.04.2017
    Размер10.75 Mb.
    Формат файлаpdf
    Имя файлаКирьянов. Самоучитель MathCad 11.pdf
    ТипРеферат
    #6148
    КатегорияИнформатика. Вычислительная техника
    страница20 из 36
    1   ...   16   17   18   19   20   21   22   23   ...   36

    Обыкновенные
    дифференциальные
    уравнения
    Дифференциальные уравнения — это уравнения, в которых неизвестными являются не переменные (те. числа, а функции одной или нескольких переменных. Эти уравнения (или системы) включают соотношения между искомыми функциями и их производными. Если в уравнения входят производные только по одной переменной, то они называются обыкновенными дифференциальными уравнениями (далее чаше используется сокращение ОДУ противном случае говорят об уравнениях в частных производных (см. гл. 13).
    Таким образом, решить (иногда говорят проинтегрировать дифференциальное уравнение значит определить неизвестную функцию на определенном интервале изменения ее переменных.
    Как известно, одно обыкновенное дифференциальное уравнение
    (см. разд или система ОДУ (см. разд. 11.3) имеет единственное решение, если помимо уравнения определенным образом заданы начальные

    или граничные условия. В соответствующих курсах высшей математики доказываются теоремы о существовании и единственности решения в зависимости от тех или иных условий. Имеются два типа задач, которые возможно решать с помощью задачи Коши — для которых определены начальные условия на искомые функции, те. заданы значения этих функций в начальной точке интервала интегрирования уравнения краевые задачи —
    для которых заданы определенные соотношения сразу на обеих границах интервала (они рассматриваются в гл. Как правило, решение задач Коши для ОДУ и их систем — задача хорошо разработанная и с вычислительной точки зрения не слишком сложная.
    Большое значение здесь имеет представление результатов и анализ зависи-

    268 Часть III. Численные методы
    мостей решения от различных параметров системы (см. разд. 11.4). Между тем, имеется целый класс ОДУ, называемых жесткими который не поддается решению стандартными методами, типа методов Для них в Mathcad имеются специальные возможности (см. разд. 11.5).
    11.1. ОДУ первого порядка
    Дифференциальное уравнение первого порядка может по определению содержать, помимо самой искомой функции y{t), только ее первую производную В подавляющем большинстве случаев дифференциальное уравнение можно записать в стандартной форме (форме Коши ( y ( t )

    , ( 1 и только с такой формой умеет работать вычислительный процессор Правильная с математической точки зрения постановка соответствующей задачи Коши для ОДУ первого порядка должна, помимо самого уравнения,
    содержать одно начальное условие — значение функции в некоторой точке Требуется явно определить функцию y(t) на интервале от до
    По характеру постановки задачи Коши называют еще задачами с начальными
    условиями (initial value problem), в отличие от краевых задач.
    Для численного интегрирования одного ОДУ у пользователя Mathcad начиная с версии Mathcad 2000 Pro) имеется выбор — либо использовать вычислительный блок либо встроенные функции, как в прежних версиях Mathcad. Первый путь предпочтительнее из соображений наглядности представления задачи и результатов, а второй дает пользователю больше рычагов воздействия на параметры численного метода. Рассмотрим последовательно оба варианта решения Вычислительный блок
    Вычислительный блок для решения одного ОДУ, реализующий численный метод Рунге-Кутты, состоит из трех частей Given — ключевое слово ОДУ и начальное условие, записанное с помощью логических операторов, причем начальное условие должно быть в форме y(to)=b;
    — встроенная функция для решения ОДУ относительно переменной t на интервале
    Примечание
    Допустимо, и даже часто предпочтительнее, задание функции (t, t 1 , step) стремя параметрами, где внутренний параметр численного метода, определяющий количество шагов, в которых метод Рунге-
    Глава 11. Обыкновенные дифференциальные уравнения 269
    Кутты, будет рассчитывать решение дифференциального уравнения. Чем больше step, тем с лучшей точностью будет получен результат, но тем больше времени будет затрачено на его поиск. Помните, что подбором этого параметра можно заметно (в несколько раз) ускорить расчеты без существенного ухудшения Пример решения задачи Коши для ОДУ первого порядка посредством вычислительного блока приведен в листинге Листинг 11.1. Решение задачи Коши для ОДУ первого порядка i v e n у у f t )
    ( t )
    d t
    = 0 . у := O d e s o l v e
    , 10 )
    забывайте о том, что вставлять логические операторы следует при помощи панели инструментов Boolean
    (Булевы операторы. При вводе с клавиатуры помните, что логическому знаку равенства соответствует сочетание клавиш +<=>. Символ производной можно ввести как средствами панели Calculus
    (Вычисления, как это сделано в листинге таки в виде штриха, набрав его с помощью сочетания клавиш (соответствующий пример будет приведен ниже в листинге) Выбирайте тот или иной способ представления производной из соображений наглядности представления результатов — на ход расчетов он не влияет требует, чтобы конечная точка интегрирования ОДУ лежала правее начальной (в листинге 11.1
    иначе будет выдано сообщение об ошибке. Как можно заметить, результатом применения блока является функция у определенная на промежутке Следует воспользоваться обычными средствами Mathcad, чтобы построить ее график или получить значение функции в какой-либо точке указанного интервала, например Пользователь имеет возможность выбирать между двумя модификациями численного метода Рунге-Кутты. Для смены метода необходимо нажатием правой кнопки мыши на области функции odesolve вызвать контекстное меню и выбрать в нем один из двух пунктов Fixed (Фиксированный шаг)
    или Adaptive (Адаптивный. По умолчанию применяется первый из них, т. е.
    метод Рунге-Кутты с фиксированным шагом Подробнее о различии этих методов сказано в разд

    270 Часть III. Численные методы Встроенные функции Альтернативный метод решения ОДУ перешел из прежних версий Он заключается в использовании одной из встроенных функций rkfixed,
    Rkadapt или Bulstoer. Этот способ несколько первому ив простоте, ив наглядности. Поэтому я советую предпочесть вычислительный блок Однако иногда приходится решать ОДУ первого порядка с помощью второго способа, например, при следующих обстоятельствах одно ОДУ решается в контексте решения более сложных задач, в которые входят системы дифференциальных уравнений (для которых вычислительный блок неприменим в этом случае может потребоваться единый стиль программирования ответ предпочтительнее получить в виде вектора, а не функции Вы привыкли к записи ОДУ в старых версиях Mathcad, у Вас много документов, созданных сих помощью и т. п.
    Поскольку решение вторым способом одного ОДУ мало чем отличается отрешения систем ОДУ (см. разд приведем пример его использования в задаче из листинга 11.1 практически без комментариев (см. листинги с помощью одной из трех существующих для этих целей встроенных функций rkfixed. Обратите внимание только на необходимость явного задания количества точек интегрирования ОДУ в третьей строке листинга, а также на получение результата, в отличие от вычислительного блока, не в виде функции, а в виде матрицы размерности Она состоит из двух столбцов водном находятся значения аргумента t (от to до включительно, а в другом соответствующие значения искомой функции
    Листинг 11.2. Решение задачи Коши для ОДУ первого порядка
    вторым способом
    у := 0.1
    D
    , ум := 100
    у
    Совет
    В листинге 11.2 приведен пример не лучшего стиля вания. Сначала переменной у присвоено значение скаляра а затем этой же переменной присвоено матричное значение (результат решения ОДУ. Старайтесь избегать такого стиля, который ухудшает читаемость программы и может приводить, в более сложных случаях, к трудно опознаваемым ошибкам.
    Неплохим решением было бы назвать результат по-другому, например и
    Глава Обыкновенные дифференциальные уравнения
    271
    График решения рассматриваемого уравнения показан на рис Обратите внимание, что он соответствует получению решения в матричном виде
    (листинг 11.2), поэтому по осям отложены соответствующие столбцы, выделенные из матрицы у оператором <>.
    Примечание
    Пример, решенный в листингах взят из области математической экологии и описывает динамику популяций с внутривидовой конкуренцией.
    Сначала происходит рост численности популяции, близкий к экспоненциальному, а затем выход на стационарное состояние.
    Рис.
    Решение уравнения (листинг ОДУ высшего порядка
    Обыкновенное дифференциальное уравнение с неизвестной функцией y ( t ) в которое входят производные этой функции вплоть до называется
    ОДУ ГО порядка. Если имеется такое уравнение, то для корректной постановки задачи требуется задать начальных условий на саму функцию) и ее производные от первого до порядка включительно.
    В Mathcad можно решать ОДУ высших порядков как с помощью вычислительного блока таки путем сведения их к системам уравнений первого порядка.
    Внутри вычислительного блока ОДУ должно быть линейно относительно старшей производной, т. е.
    фактически должно быть поставлено в стандартной форме;
    • начальные условия должны иметь форму или а небо- лее сложную (как, например, встречающаяся в некоторых математических приложениях форма у
    Часть III. Численные методы
    В остальном, решение ОДУ высших порядков ничем не отличается отрешения уравнений первого порядка (см. разд. 11.1), что иллюстрируется листингом. Как Вы помните, допустимо написание производной как в виде знака дифференциала (так в листинге введено само уравнение, таки с помощью штриха (так введено начальное условие для первой производной. Не забывайте пользоваться булевыми операторами при вводе уравнений и начальных условий. Полученное решение y(t) показано на рис.
    Листинг
    Решение задачи Коши для ОДУ второго порядка = у' (0) = у :=
    ( t , 50
    Решение уравнения осциллятора (листинг
    Примечание
    В листинге решено уравнение затухающего гармонического осциллятора,
    которое описывает, например, колебания маятника. Для модели маятника y ( t описывает изменения угла его отклонения от вертикали, y ' ( t ) — угловую скорость маятника, y " ( t )
    а начальные условия, соответственно, начальное отклонение маятника у и начальную скорость у = Второй способ решения ОДУ высшего порядка связан со сведением его к эквивалентной системе ОДУ первого порядка. Покажем на том же примере из листинга как это делается. Действительно, если формально обозна-
    Глава 11. Обыкновенные дифференциальные уравнения 273
    чить a
    ( t ) , то исходное уравнение запишется через функции ив виде системы двух ОДУ •
    + 1 •
    Именно эта система решается в качестве примера в разд. 11.3. Таким образом, любое ОДУ ГО порядка, линейное относительно высшей производной, можно свести к эквивалентной системе N дифференциальных уравнений Системы ОДУ первого порядка требует, чтобы система дифференциальных уравнений была представлена в стандартной форме , t ) ,
    , . . .
    , t ) О , t Задание системы (1) эквивалентно следующему векторному представлению:
    У < t ) = F < Y ( t >
    ( 2 где Y и — соответствующие неизвестные векторные функции переменной t размера векторная функция того же размера и {N+1} количества переменных (N компонент вектора и, возможно, t). Именно векторное представление (2) используется для ввода системы ОДУ в среде Для того чтобы определить задачу для системы ОДУ, следует определить еще начальных условий, задающих значение каждой из функций в начальной точке интегрирования системы to. В векторной форме они могут быть записаны в виде (где в — вектор начальных условий размера составленный из
    Примечание
    Как Вы заметили, задача сформулирована для систем ОДУ первого порядка.
    Однако если в систему входят и уравнения высших порядков, то ее можно свести к системе большего числа уравнений первого порядка, подобно тому как это было сделано на примере уравнения осциллятора (см. разд.
    Обратите внимание на необходимость векторной записи как самого уравнения, таки начального условия. В случае одного ОДУ соответствующие векторы имеют только один элемента в случае системы уравнений — N.

    Часть III. Численные методы Встроенные функции для решения систем ОДУ
    В Mathcad имеются три встроенные функции, которые позволяют решать поставленную в форме задачу Коши различными численными методами метод Рунге-Кутты с фиксированным шагом t o ,
    — метод Рунге-Кутты с переменным шагом — метод —
    вектор начальных значений в точке to размера — начальная точка расчета — конечная точка расчета — число шагов, на которых численный метод находит решение — векторная функция размера двух аргументов — скалярного t и векторного у. При этому искомая векторная функция аргумента t того же размера
    Внимание!
    Соблюдайте регистр первой буквы рассматриваемых функций, поскольку это влияет на выбор алгоритма счета, в отличие от многих других встроенных функций Mathcad, например (см. разд. Каждая из приведенных функций выдает решение в виде матрицы размера В ее левом столбце находятся значения аргумента t, делящие интервал на равномерные шаги, а в остальных столбцах — значения искомых функций рассчитанные для этих значений аргумента. Поскольку всего точек (помимо начальной то строк в матрице решения будет всего
    В подавляющем большинстве случаев достаточно использовать первую функцию rkfixed, как это показано и листинге на примере решения системы ОДУ модели осциллятора с затуханием (см. разд. Листинг 11.4. Решение системы двух ОДУ ( t , у ) :=
    -УО - 0 . 1
    :=
    1 0 и ( у О , О ,
    Глава Обыкновенные дифференциальные уравнения
    275
    Самая важная — это первая строка листинга, в которой, собственно, определяется система ОДУ. Сравните рассматриваемую систему (разд.
    записанную в стандартной форме, с формальной ее записью в чтобы не делать впоследствии ошибок. Во-первых, функция D, входящая в число параметров встроенных функций для решения ОДУ, должна быть функцией обязательно двух аргументов. Во-вторых, второй ее аргумент должен быть вектором того же размера, что и сама функция в. В-третьих, точно такой же размер должен быть и у вектора начальных значений уо (он определен во второй строке листинга).
    Не забывайте, что векторную функцию) следует определять через компоненты вектора ус помощью кнопки нижнего индекса (Subscript)
    с наборной панели Calculator (Калькулятор) или нажатием клавиши <[>. В третьей строке листинга определено число шагов, на которых рассчитывается решение, а его последняя строка присваивает матричной переменной и результат действия функции Решение системы ОДУ будет осуществлено на промежутке
    Как выглядит все решение, показано на рис. 11.3. Размер полученной матрицы будет равен Т е.
    Просмотреть все компоненты матрицы которые не помещаются на экране, можно с помощью вертикальной полосы прокрутки. Как нетрудно сообразить, на этом рисунке отмечено выделением расчетное значение первого искомого вектора нам шаге
    Это соответствует, с математической точки зрения, найденному значению .07. Для вывода элементов решения в последней точке интервала используйте выражения типа .523хю


    3
    Внимание!
    -I
    у
    2
    а
    •4
    7
    га и 3
    35 5
    55 6
    65 7
    75 01 0 056
    -0
    -0
    -0 В 057
    -0 021 В 051
    ЮМ
    0 071 0 056
    -0 047
    -0
    -0
    -0 082
    -0
    -0 013 0
    0 078 0 075 0 054 0 021 А •
    11.3. Матрица решений системы уравнений (листинг
    Обратите внимание на некоторое разночтение в обозначении индексов вектора начальных условий и матрицы решения. В ее первом столбце собраны значения нулевой компоненты искомого вектора, во втором первой компоненты и т. д.
    Чтобы построить график решения, надо отложить соответствующие компоненты матрицы решения по координатным осям значения аргумента вдоль оси ха и — вдоль оси у (рис Как известно, решения обыкновенных дифференциальных уравнений часто удобнее изображать не
    Часть Численные методы
    в таком виде, а в фазовом пространстве, по каждой из осей которого откладываются значения каждой из найденных функций. При этом аргумент входит в них лишь параметрически. В рассматриваемом случае двух ОДУ такой график — фазовый портрет системы — является кривой на фазовой плоскости и поэтому особенно нагляден. Он изображен на 11.5 (слева, и можно заметить, что для его построения потребовалось лишь поменять метки осей на и соответственно.
    Примечание
    Фазовый портрет типа, изображенного на рис имеет одну стационарную точку (аттрактор на которую "накручивается" решение. В теории динамических систем аттрактор такого типа называется фокусом График решения системы ОДУ (листинг 0.1
    11.5. Фазовый портрет решения системы ОДУ при (слева)
    и
    (справа) (листинг В общем случае, если система состоит из ОДУ, то фазовое пространство является мерным. При N>3 наглядность теряется, и для визуализации фазового портрета приходится строить его различные проекции
    Глава Обыкновенные дифференциальные уравнения На том же рис справа, показан для сравнения результат расчета фазового портрета с большим числом шагов. Видно, что в этом случае обеспечивается лучшая точность ив результате, решение получается более гладким.
    Конечно, при этом увеличивается и время расчетов.
    Внимание!
    При решении систем ОДУ многие проблемы могут быть устранены при помощи простой попытки увеличить число шагов численного метода. В частности, сделайте так при неожиданном возникновении ошибки "Found a number with a
    magnitude greater than
    (Найдено число, превышающее значение. Данная ошибка может означать не то, что решение в действительности расходится, а просто недостаток шагов для корректной работы численного ал- горитма.
    В заключение следует сказать несколько слов об особенностях различных численных методов. Все они основаны на аппроксимации дифференциальных уравнений разностными аналогами. В зависимости от конкретной формы аппроксимации, получаются алгоритмы различной точности и быстродействия. В Mathcad использован наиболее популярный алгоритм Рунге-
    Кутты четвертого порядка, описанный в большинстве книг по методам вычислений. Он обеспечивает малую погрешность для широкого класса систем
    ОДУ за исключением жестких систем. Поэтому в большинстве случаев стоит применять функцию rkfixed. Если по различным причинам время расчетов становится критичным или точность неудовлетворительна, стоит попробовать вместо другие функции, благо сделать это очень просто,
    благодаря одинаковому набору параметров. Для этого нужно только поменять имя функции в программе.
    Функция Rkadapt может быть полезна в случае, когда известно, что решение на рассматриваемом интервале меняется слабо, либо существуют участки медленных и быстрых его изменений. Метод с переменным шагом разбивает интервал не на равномерные шаги, а более оптимальным способом. Там, где решение меняется слабо, шаги выбираются более редкими, а в областях его сильных изменений — частыми. В результате, для достижения одинаковой точности требуется меньшее число шагов, чем для rkfixed. Метод Булирша-Штера часто оказывается более эффективным для поиска гладких решений Решение систем ОДУ
    в одной заданной точке
    Зачастую при решении дифференциальных уравнений требуется определить значения искомых функций не на всем интервале а только водной его последней точке. Например, весьма распространены задачи поиска аттракторов динамических систем. Известно, что для широкого класса ОДУ
    одна и та же система при разных (или даже любых, как рассмотренный выше пример осциллятора с затуханием) начальных условиях при прихо-

    278 Часть III. Численные методы
    дит в одну и туже точку (аттрактор. Поэтому часто нужно определить именно эту точку.
    Такая задача требует меньше ресурсов компьютера, чем решение системы
    ОДУ на всем интервале, поэтому в имеются модификации встроенных функций и Bulstoer. Они имеют несколько другой набор параметров и работают быстрее своих аналогов rkadapt to,
    s) — метод с переменным шагом метод — вектор начальных значений в точке to;

    — начальная и конечная точки расчета — погрешность вычисления (чем она меньше, тем с лучшей точностью будет найдено решение рекомендуется выбирать значения погрешности в районе — векторная функция, задающая систему ОДУ;
    • к — максимальное число шагов, на которых численный метод будет находить решение — минимально допустимая величина шага.
    Как легко заметить, вместо числа шагов на интервале интегрирования ОДУ,
    в этих функциях необходимо задать точность расчета численным методом значения функций в последней точке. В этом смысле параметр похож на константу которая влияет на большинство встроенных алгоритмов Mathcad. Количество шагов и их расположение определяется численным методом автоматически, чтобы обеспечить эту точность. Два последних параметра нужны для того, чтобы пользователь мог искусственно повлиять на разбиение интервала на шаги. Параметр к служит для того,
    чтобы шагов не было чрезмерно много, причем, нельзя сделать к>юоо. Параметр для того чтобы ни один шаг не был слишком малым для появления больших погрешностей при разностной аппроксимации дифференциальных уравнений внутри алгоритма. Эти параметры следует задавать явно,
    исходя из свойств конкретной системы ОДУ. Как правило, проведя ряд тестовых расчетов, можно подобрать их оптимальный набор для каждого конкретного случая.
    Пример использования функции b u l s t o e r для того же примера (приведен в листинге В его первых двух строках, как обычно, определяется система уравнений и начальные условия в следующей строке матрице присваивается решение, полученное с помощью Структура этой матрицы в точности такая же, как ив случае решения системы ОДУ посредством уже рассмотренных нами ранее встроенных
    Глава 11. Обыкновенные дифференциальные уравнения
    279
    функций (см. разд. 11.3.1). Однако в данном случае нам интересна только последняя точка интервала. Поскольку сделанное численным методом количество шагов, те. размер матрицы и, заранее неизвестно, то его необходимо предварительно определить. Это сделано в четвертой строке листинга, присваивающей это число переменной в этой же строке оно выведено на экран. В предпоследней строке листинга осуществлен вывод решения системы ОДУ на конце интервала, те. в точке t 50 в виде вектора. В последней строке для примера еще раз выводится искомое значение первой функции из системы ОДУ (сравните его с соответствующим местом вектора из предыдущей строки).
    Листинг 11.5. Решение системы двух ОДУ , у) У -
    1   ...   16   17   18   19   20   21   22   23   ...   36


    написать администратору сайта