Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


ДИФФЕРЕНЦИРОВАНИЕ СРЕДСТВАМИ Mathcad.



ЛАБОРАТОРНАЯ РАБОТА № 4.

ДИФФЕРЕНЦИРОВАНИЕ СРЕДСТВАМИ Mathcad.

Символьные вычисления производных.

Производной, как известно, называется предел отношения приращения функции к приращению ее аргумента. Математически производная функ­ции f(x) в точке х определяется как:

f'(x)=

В Mathcad для вычисления производной предусмотрена команда Symbolics / Variable / Differentiate. Для того чтобы данная команда была доступна, в рабочем документе в дифференцируемом выражении предварительно сле­дует выделить переменную, по которой производная должна быть вычислена. Можно просто навести на эту переменную маркер ввода (для чего, например, достаточно на этой переменной щелкнуть кнопкой мыши).

Производная от выражения.

На Рис. 1 представлено выражение ax2 + sin(bx), которое будет дифферен­цироваться по переменной х . Это выражение было предварительно введено в рабочий документ, и в нем маркер ввода наведен на переменную х в ар­гументе синуса.

Рис. 1. Дифференцируемое выражение. Рис. 2. Результат вычисления производной по х

После того как переменная в выражении выделена, выбираем команду Symbolics / Variable/ Differentiate. Результат выполнения команды по умолчанию отображается под тем выра­жением, от которого вычисляется производная ( Рис. 2 ).

С полученным выражением можно работать так же, как и с обычным, вве­денным пользователем в рабочий лист. Например, от этого выражения можно вычислить еще одну производную. Например пускай это будет про­изводная по b . Выделяем эту переменную и в очередной раз вы­полняем команду Symbolics / Variable / Differentiate. В результате будет вычислена новая производная, которая отобразиться вни­зу под исходным выражением.


Таким образом, в документе можно вычислять производные практически от любых выражений. Хотя такой метод вычисления производных достаточно прост, он связан с рядом неудобств, которые становятся очевидными при ре­шении более сложных задач:

· Прежде всего, этот метод не пригоден для вычис­ления производной от функции, определенной пользователем в рабочем листе. При попытке вычислить производную с помощью команды Differentiate ре­зультат будет представлен как формальная запись производной от функции. Чтобы получить значение производной в явном виде, придется прибегнуть к другим методам (в частности, использовать оператор вычисления символь­ного значения).

· Еще один обширный класс задач связан с вычислением про­изводных высоких порядков. В этом случае придется несколько раз вызывать команду Differentiate, что не всегда приемлемо.

Поэтому на практике для вычисления производных часто обращаются не к помощи меню, а вводят команды непосредственно в рабочий лист. При этом очень удобны математи­ческие палитры Calculus и Evaluation.

Символьная производная

Вычислим производную от выражения, не прибегая к командам меню Symbolics. Для этого на палитре Calculus выберем кнопку с изображением символа производной ( Рис. 3 ). В результате этот символ с двумя заполнителями появляется в рабочем доку­менте ( Рис. 4 ).

 

Рис. 3. Вставка символа производной. Рис. 4. Символ производной.

На месте нижнего заполнителя вводится переменная, по которой вычисляется производная, а на месте второго — дифференцируемое выражение. Если не прибегать к помощи команд меню Symbolics, то после ввода диффе­ренцируемого выражения следует ввести оператор вычисления символьного значения ( стрелка вправо ). Это можно сделать, щелкнув на соответствующей кнопке палитры Evaluation. После ввода оператора вычисления символьного значения рабочий документ будет иметь вид, как на Рис. 5. Производная будет вычислена, если щелкнуть курсором мыши вне области вводимого выражения или нажать клавишу < Enter>. Результат вычисления производной представлен на Рис. 6.

 

 

Рис. 5. Ввод оператора вычисления Рис. 6. Результат вычисления производной

Несложно проверить, что точно такой же результат может быть получен, ес­ли воспользоваться командой Symbolics I Evaluate I Symbolically или на­жать комбинацию клавиш < Shift> +< F9>. Правда, в этом случае результат отображается не справа от вычисляемого выражения, а под ним. Кроме того, между вычислением символь­ного результата с помощью команд меню и ключевых слов (т. е. инструкций, вводимых непосредственно в вычисляемые или преобразуемые символьные выражения посредством палитры Evaluation или Symbolic ) существует одна принципиальная разница: если выражение вычислялось через команды меню и затем в документ были внесены изменения, то результат таких вычислений не пересчитывается. При использовании ключевых слов результат обновля­ется автоматически.

 

Часто бывает необходимо вычислить производную от функции, определен­ной ранее в рабочем документе. В качестве иллюстрации рассмотрим сле­дующий пример.

Производная от функции

Прежде всего, в рабочем листе определяем функцию пользователя f(z). В качестве такой функции рассмотрим зависимость:

f(z)=z ln(z) + exp(-az2).

В документе функция пользователя определяется следующим образом: сна­чала вводится название функции, а в скобках после него указывается аргу­мент (или аргументы). После этого вводится оператор присваивания, вслед за оператором присваивания вводится математи­ческое выражение, определяющее функциональную зависимость ( Рис. 7 ).

 

Рис. 7. Вычисление производной от функции пользователя.

Для вычисления производной функция указывается сразу после символа дифференцирования. Если затем ввести оператор вычисления сим­вольного значения и нажать клавишу < Enter>, производная от функции будет получена ( Рис. 7 ).

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

 

Рис. 8. Аргумент и параметр функции совпадают.

Кроме этого производную от функции можно вычислять по параметру, даже если он не указан явно как аргумент функции. Ситуация проиллюстрирована на Рис. 9 (последнее выражение). Там в качестве переменной, по которой вычисляется производная, указан параметр функции а.

 

Рис. 9. Вычисление производной по параметру функции

Рис. 10. Выбор символа производной Рис. 11. Ввод символа вычисления производной

Рис. 12. Результат вычисления сотой производной.

Рис. 13. Решение дифференциального уравнения с помощью процедуры odesolve ().

Рис. 14. Решение системы дифференциальных уравнений с помощью процедуры odesolve ().

 


Еще несколько замечаний относительно процедуры odesoive():

· Что касается ее аргументов, то последним из них можно указывать число шагов для поиска решения.

· Как отмечалось ранее, уравнения могут решаться различными математическими методами. По умолчанию в рамках процедуры odesoive() ре­шение ищется по методу Рунге-Кутта с переменным шагом. Можно задать адап­тивный метод или метод решения жестких уравнений. Для этого нужно выделить процедуру odesoive() и щелкнуть правой кнопкой мыши. В раскрывающемся списке есть несколько команд, позволяющих выбрать требуемый метод решения дифференциальных уравнений: команду Adaptive выбирают для адаптивного метода, а команда stiff полезна при решении жестких уравнений и систем. Процедура выбора команды для метода решения показана на Рис. 15.

Рис. 15. К объяснению метода Эйлера

Пусть дано дифференциальное уравнение:

с начальным условием у0 = у(х0) . Выбрав дос­таточно малый шаг h , построим, начиная с точки х0, систему равноотстоя­щих точек xi = x0 + ih (i = 0, 1, 2,...). Вместо искомой интегральной кривой на отрезке [ x0, xi ] рассмотрим отрезок касательной к ней в точке M0(x0, y0), уравнение которой:

у= у0 + f(x0, y0) • (х - х0).

При x=x1 из уравнения касательной получаем у1 = у0 + h f(х0, у0). Следова­тельно, приращение функции на первом шаге равно ∆ у0 = h f(х0, y0). Проведя аналогично касательную к интегральной кривой в точке (x1, y1), получим:

y = y1+f(x1, y1)*(x-x1),

что при х = х2 дает у21 + h f (x1, y1), т. е. у2 получается из у1 добавлени­ем приращения ∆ y1= hf(x1, y1).

Таким образом, вычисление таблицы значений функции, являющейся реше­нием ДУ, состоит в последовательном применении пары формул:

∆ yk=hf(xk, yk), yк+1=yк+∆ yк

Метод Эйлера, как видно из рисунка, имеет погрешность. Известны различные уточнения метода Эйлера. Модификации данных мето­дов направлены на уточнение направления перехода из точки i, уi) в точку (xi+1, yi+1). Например, в методе Эйлера—Коши (усовершенствованный метод) используют следующий по­рядок вычислений:

y*i+1 =yi+hf(xi, yi), yi+1=yi+ h ( f (xi, yi) + f(xi+1, y*i+1) ) /2,

Геометрически это означает, что определяется направление интегральной кривой в исходной точке i, уi, ) и во вспомогательной точке (xi+1, y*i+1) , а в качестве окончательного берется среднее значение этих направлений.

Пример 1. Решение дифференциального уравнения методом Эйлера.

Решить задачу Коши для ДУ y(x) = x + cos на отрезке [1, 7; 2, 7] при заданном НУ: y(1, 7) =5, 3 и шаге интегрирования h = 0, 1 методом Эйлера с шагом h и h/2.

Решение.

Ход решения задачи по методу Эйлера приведен на Рис. 16.

Рис. 16. Фрагмент программы с решением уравнения методом Эйлера с шагом с шагом h и h/2.

1. Составим программу, реализующую метод Эйлера (Рис. 17).

Рис. 17. Листинг программы, реализующий метод Эйлера.

2. Получим решение ДУ методом Эйлера с двумя шагами h и h/2( Рис. 18 ).

Рис. 18. Нахождение численного решения ДУ методом Эйлера.

3. Ответ: Решением ДУ y(x) = x + cos на отрезке [1, 7; 2, 7] с НУ y(1, 7) =5, 3 методом Эйлера с шагом h и h/2 будет таблица значений ES_h и ES_h2 (Рис. 21).

 

Пример 2. Решение дифференциальное уравнение усовершенствованным методом Эйлера.

1. Задание функции, реализующей метод Эйлера—Коши ( Рис. 19 ). Аргу­менты функции: у0 - значение решения в точке х0 ; х0, xl — левый и правый концы интервала вычисления численного решения; N — число сетки, на которой ищется решение ДУ; f — имя функции, стоящей в правой части ДУ. Функция возвращает таблицу, состоящую из двух столбцов, первый столбец— значения аргумента, второй столбец— зна­чения решения ДУ.

 

 

Рис. 19. Функция, реализующая метод Эйлера—Коши для ДУ первого порядка.

2. Нахождение численного решения ДУ на интервале [0, 5]:

А1: =Euler1(x0, y0, x1, N, f)

3. Визуализация численного решения ( Рис. 20 ).

 

 

Рис. 20. Численное решение ДУ y=x2 полученное методом Эйлера.

Дифференциальных уравнений.

На практике наиболее часто используют метод Рунге—Кутты четвертого порядка.

Пример 3.

Решить задачу Коши для ДУ y(x) = x + cos на отрезке [1, 7; 2, 7] при заданном НУ: y(1, 7) =5, 3 и шаге интегрирования h = 0, 1 методом Рунге-Кутты четвертого порядка с шагом h и 2h.

Решение.

1. Вводим данные задачи:

f(x, y): = x +cos а: = 1.7 b: = 2.7

h: = 0.1 п: =

у0: = 52

i: = 0..п

2. Составим функцию, возвращающую решение ДУ первого порядка методом Рунге—Кутты ( Рис. 21). Здесь: fn — заданная функ­ция; a, b — концы отрезка; h — шаг; у0 — начальное значение функции.

 

 

Рис. 21. Листинг функции, возвращающей численное решение ДУ методом Рунге-Кутты.

Ответ: Решением ДУ y(x) = x + cos на отрезке [1, 7; 2, 7] с НУ y(1, 7) =5, 3 методом Рунге-Кутты четвертого порядка с шагом h и 2h будет таблица значений RK_h и RK_2h (Рис. 21).

 

ЛАБОРАТОРНАЯ РАБОТА № 4.

ДИФФЕРЕНЦИРОВАНИЕ СРЕДСТВАМИ Mathcad.


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-05-03; Просмотров: 7837; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.041 с.)
Главная | Случайная страница | Обратная связь