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

  • Листинг Символьное и численное функции пользователя f

  • Листинг Пример правильного и неправильного применения дифференцирования х := 0.5

  • Листинг Численное и символьное вычисление седьмой

  • Листинг 7.16. Символьное и численное вычисление

  • Default Derivative

  • Алгебраические уравнения и оптимизация

  • Одно уравнение с одним неизвестным

  • Листинг 8.1. Поиск корня нелинейного алгебраического уравнениях := О.Ь£ (х) := sin (x)solution := root ( f (x) , х- 2 / / / 0 2\ \

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


    Скачать 10.75 Mb.
    НазваниеКирьянов д в
    АнкорКирьянов. Самоучитель MathCad 11.pdf
    Дата28.04.2017
    Размер10.75 Mb.
    Формат файлаpdf
    Имя файлаКирьянов. Самоучитель MathCad 11.pdf
    ТипРеферат
    #6148
    КатегорияИнформатика. Вычислительная техника
    страница14 из 36
    1   ...   10   11   12   13   14   15   16   17   ...   36
    х:=1.
    2. Введите оператор дифференцирования нажатием кнопки
    (Производная) на панели Calculus
    (Вычисления) или введите с клавиатуры вопросительный знак .
    3. В появившихся местозаполнителях (рис. 7.3) введите функцию, зависящую от аргумента те, и имя самого аргументах. Введите оператор численного или символьного вывода для получения ответа.
    '•Ль
    d
    Derivative
    Рис. 7 . 3 . Оператор дифференцирования
    Пример дифференцирования функции приведен в листинге. Численное

    Часть
    и символьное
    Численные методы
    х
    0.01
    — cos (х = 1 0 0 . 0 4 1
    dx c o s ( х) •
    ( х) —* - s i n dx
    Внимание забывайте предварительно определять точку, в которой производится численное дифференцирование, как это сделано первой строке Иначе будет выдано сообщение об ошибке, показанное на рис. 7.4, гласящее,
    что переменная или функция, входящая в выражение, ранее не определена.
    Между тем, символьное дифференцирование не требует обязательного явного задания точки дифференцирования. В этом случае вместо значения производной (числа или числового выражения) будет выдана аналитическая зависимость (см. верхнюю часть рис. 7.4).
    s i n их. Ошибка в применении оператора дифференцирования
    Конечно, можно, как и при использовании других операторов, предварительно определить функцию в отдельном выражении, а затем посчитать ее производную (см. листинг или применить оператор дифференцирования для определения собственных функций пользователя (см. листинг
    Листинг
    Символьное и численное
    функции пользователя f
    dx x := 0 . 1
    d
    , ,
    (x)
    dx
    X
    -1 2
    X
    -100
    Глава 7. Интегрирование и дифференцирование 177
    dx
    Листинг функции через оператор дифференцирования эх В обоих листингах первой строкой определяется функция Во второй строке листинга 7.11 с помощью символьного процессора находится аналитическое выражение ее производной, а в оставшейся части, подобно листингу 7.10, сначала численно, а затем аналитически определяются значения этой производной в точке хо. В листинге 7.12 через производную от f (х) определяется еще одна пользовательская функция д<х) и затем находится ее конкретное значение в той же точке
    Как Вы заметили, оператор дифференцирования, в основном, соответствует его общепринятому математическому обозначению. Однако в некоторых случаях при его вводе следует проявить осторожность. Рассмотрим один показательный пример, приведенный в листинге 7.13. Его первые две строки вычисляют производную sin(x) в точке хо. Последняя строка демонстрирует неправильное применение оператора дифференцирования. Вместо вычисления производной sin(x) в той же точке, как этого можно было ожидать, получено нулевое значение. Это случилось потому, что аргумент функции sin(x) введен не в виде переменной ха в виде числа. Поэтому Mathcad воспринимает последнюю строку как вычисление сначала значения синуса в точке хо, а затем дифференцирование этого значения (те. константы) также в точке хо, в соответствии с требованием первой строки листинга. Поэтому ответ, на самом деле, неудивителен — в какой точке ни дифференцируй константу,
    результатом будет ноль.
    Листинг
    Пример правильного и неправильного
    применения дифференцирования
    х := 0.5
    — s i n
    = 0 . 8 7 8
    d x

    III. Численные методы s i n
    0
    d Для численного дифференцирования Mathcad применяет довольно сложный алгоритм, вычисляющий производную с колоссальной точностью до знака после запятой. Этот алгоритм (метод Риддера) описан во встроенной справочной системе Mathcad, доступной через меню Help

    Погрешность дифференцирования не зависит от констант TOL ИЛИ CTOL, В противоположность большинству остальных численных методов, а определяется непосредственно алгоритмом.
    Исключение составляют функции, которые дифференцируются в окрестности сингулярной точки например для рассмотренной нами функции f
    это будут точки вблизи хо. При попытке найти ее производную прибудет выдано сообщение об одной из ошибок деления на ноль divide by zero" (Деление на ноль невозможно) или "Found a singularity
    while evaluating this expression. You may be dividing by zero" (Найдена сингулярность при вычислении этого выражения. Возможно, Выделите на ноль. Если попробовать численно определить производную очень близко к нулю при х=ю то может появиться сообщение об ошибке converge to a solution" (Невозможно найти решение. Встретившись с одной из упомянутых ошибок, присмотритесь повнимательнее к дифференцируемой функции и убедитесь, что Вы не имеете дело сточкой сингулярности. Производные высших порядков позволяет численно определять производные высших порядков, от до го включительно. Чтобы вычислить производную функции
    N-ГО порядка в точке х, нужно проделать те же самые действия, что и при взятии производной (см. разд. 7.2.1),
    затем исключением, что вместо оператора производной необходимо применить оператор Й производной Этот оператор вводится стой же панели Calculus (Вычисления) либо с клавиатуры клавиши содержит еще два местозаполнителя, в которые следует поместить число N. В полном соответствии с математическим смыслом оператора, определение порядка производной водном из местозаполнителей приводит к автоматическому появлению того же числа в другом из них.
    "Производная" при N=O ПО определению равна самой функции, при получается обычная первая производная. Листинг 7.14 демонстрирует численное и символьное вычисление второй производной. Обратите внимание,
    что, как и при вычислении обычной производной, необходимо перед опера
    Глава 7. Интегрирование и дифференцирование
    тором дифференцирования присвоить аргументу функции значение, для которого будет вычисляться производная Листинг 7.14. Численное символьное вычисление второй производной
    х := 0.1
    d
    2
    cos
    =1.94
    d
    2 2
    cos f x) • x
    99 cos (.1) . 4 • sin ( . 1
    dx
    2
    Примечание
    Убедиться атом, что символьный процессор в последней строке листинга дает тот же результат, что и вычислительный процессор в предыдущей строке, можно, упростив его. Для этого следует выделить полученное последнее выражение и выбрать вменю (Символика) пункт
    (Упростить). После этого ниже появится еще одна строка счисленным результатом выделенного выражения.
    Чтобы вычислить производную порядка выше го, следует последовательно применить несколько раз оператор производной, подобно тому как вводились операторы кратного интегрирования (см. разд. 7.1.4). Однако для символьных вычислений этого не потребуется — символьный процессор умеет считать производные порядка выше го. Сказанное иллюстрирует листинг в котором сначала численно, а затем символьно вычисляется седьмая производная синуса в точке
    Листинг
    Численное и символьное вычисление
    седьмой
    х := 0
    ,5 ,2
    (x)
    dx dx s i n ( x)
    - c o s ( Расчет производных высших порядков производится тем же вычислительным методом Риддера, что и расчет первых производных. Причем для первой производной этот метод обеспечивает точность до 7—8 значащих разрядов числа, а при повышении порядка производной на каждую единицу точность падает примерно на один разряд

    Часть III. Численные методы
    Из сказанного ясно, что падение точности причисленном расчете высших производных может быть очень существенно. В частности, если попытаться определить девятую производную синуса, подобно идее листинга 7.15, тов качестве результата будет выдан нуль, в то время как истинное значение девятой производной равно cos
    7.2.3. Частные производные
    С помощью обоих процессоров Mathcad можно вычислять производные функций любого количества аргументов. В этом случае, как известно, производные по разным аргументам называются частными Чтобы вычислить частную производную, необходимо, как обычно, ввести оператор производной с панели Calculus (Вычисления) ив соответствующем местозаполнителе напечатать имя переменной, по которой должно быть осуществлено дифференцирование. Пример приведен в листинге 7.16, впервой строке которого определена функция двух переменных, а в двух следующих строках символьным образом вычислены ее частные производные по обеим переменным хи у — соответственно. Чтобы определить частную производную численным методом, необходимо предварительно задать значения всех аргументов, что и сделано в следующих двух строках листинга. Последнее выражение в листинге снова (как ив третьей строке) определяет символьно частную производную по у. Но поскольку переменным хи у уже присвоено конкретное значение, тов результате получается число, а не аналитическое выражение.
    Листинг 7.16. Символьное и численное вычисление
    частных производных ( , уху х , у )
    2
    • — - s i n
    - уху х ) + c o s ( x х := 1 уху 4
    Эу f ( х , у )
    ( 1 )
    Эу
    Частные производные высших порядков рассчитываются точно также, как и обычные производные высших порядков (см. разд. 7.2.2). Листинг 7.17
    Глава 7. Интегрирование и дифференцирование
    181
    иллюстрирует расчет вторых производных функции из предыдущего ра попеременным х, у и смешанной производной.
    Листинг
    Вычисление второй частной производной (
    ,
    )
    +
    ( х Эху У ( x ) ух 2-у)
    Возможно, Вы обратили внимание, что в обоих листингах и 7.17 оператор дифференцирования записан в форме частной производной. Подобно тому как существует возможность выбирать вид, например оператора присваивания, можно записывать операторы дифференцирования в виде обычной или частной производной. Запись оператора не влияет на вычисления,
    а служит лишь более привычной формой представления расчетов. Для того чтобы изменить вид оператора дифференцирования на представление частной производной, следует. Вызвать контекстное меню из области оператора дифференцирования нажатием правой кнопки мыши. Выбрать в контекстном меню верхний пункт View Derivative As (Показывать производную как. В появившемся подменю (рис. 7.5) выбрать пункт Partial Derivative (Частная производная у )
    0 . 5 4
    Default
    Derivative
    7 . 5 . Изменение вида оператора дифференцирования
    Часть III. Численные методы
    Чтобы вернуть вид производной, принятый по умолчанию, выберите в подменю пункт Default (По умолчанию) либо, для представления ее в обычном виде — Derivative (Производная).
    Завершим разговор о частных производных двумя примерами, которые нередко встречаются в вычислительной практике. Программная реализация первого из них, посвященная вычислению градиента функции двух переменных, приведена в листинге 7.18. В качестве примера взята функция, определяемая впервой строке листинга, график которой показан в виде линий уровня на рис. 7.6. Как известно, градиент функции f (x,y) является векторной функцией тех же аргументов, что и f (х,у), определенной через ее частные производные, согласно второй строке листинга. В оставшейся части этого листинга задаются ранжированные переменные и матрицы, необходимые для подготовки графиков функции и ее градиента Листинг 7.18. Вычисление градиентах, уху. Эх ( х , у )
    j := 0 .. 2 -N
    := g r a d ( i N , j -Векторное поле рассчитанного градиента функции f(x,y} показано на рис. 7.7. Как можно убедиться, сравнив рис. 7.6 и 7.7, математический смысл градиента состоит в задании в каждой точке (х,у) направления на плоскости, в котором функция f (x,y) растет наиболее быстро.
    До сих пор в данной главе мы рассматривали скалярные функции, к которым, собственно, и можно применять операторы дифференцирования. Часто приходится иметь дело с вычислением производных векторных функций.
    Например, в различных областях математики (см. разд. "Жесткие системы
    ОДУ" гл. 11) мы сталкиваемся с проблемой вычисления якобиана (или матрицы Якобы — матрицы, составленной из частных производных векторной функции по всем ее аргументам. Пример вычисления якобиана векторной функции f (x) векторного аргументах приведен в листинге 7.19. В нем для
    Глава 7. Интегрирование и дифференцирование
    183
    определения частных производных якобиана каждый й скалярный компонент дифференцируется символьным процессором Mathcad.
    ( X ,
    ч
    Y)
    \
    ч
    -
    ч
    -
    * f f
    f
    t
    7.6. График линий уровня функции f (x,y) (листинг Рис. 7.7. Векторное поле градиента функции f (х,у) (листинг Тот же самый якобиан можно вычислить и несколько по-другому, если ределить функцию не одного векторного, а трех скалярных аргументов f(x,y,z) (листинг Листинг Вычисление якобиана векторной функции

    векторного аргументах (у) О

    (у- У У 984
    Часть HI. Численные методы
    Листинг 7.20. Вычисление якобиана векторной функции
    трех скалярных аргументов { х , уху- уху Э у ( X , y , 2 ) l )
    ( X , y Уху О Не забывайте, что для численного определения якобиана необходимо сначала определить точку, в которой он будет рассчитываться, те. вектор в терминах листинга 7.19, или все три переменных z в обозначениях листинга 7.20.
    ГЛАВА 8
    Алгебраические
    уравнения и оптимизация
    В этой главе рассматривается решение алгебраических нелинейных уравнений и систем таких уравнений.
    Задача ставится следующим образом. Пусть имеется одно алгебраическое уравнение с неизвестным х или система алгебраических уравнений . . . ,
    О — где и — некоторые функции. Требуется найти корни уравнения, те значениях, которые переводят уравнение (или, соответственно, систему уравнений) в верное равенство (равенства).
    С Примечание
    Решение систем линейных уравнений, у которых все функции имеют вид представляет собой отдельную задачу вычислительной линейной алгебры Она рассматривается в гл. Как правило, отыскание корней численными методами связано с несколькими задачами исследование существования корней в принципе, определение их количества и примерного расположения отыскание корней с заданной погрешностью
    Последнее означает, что надо найти значения при которых f отличается от нуля не более чем на ПОЧТИ все встроенные функции системы

    186 Часть III. Численные методы, предназначенные для решения нелинейных алгебраических нений, нацелены на решение второй задачи, те. предполагают, что корни уже приблизительно локализованы. Чтобы решить первую задачу (предварительной локализации корней, можно использовать, например, графическое представление (см. разд. 8.1) или последовательный поиск корня, начиная из множества пробных точек, покрывающих расчетную область
    (сканирование). Mathcad предлагает несколько встроенных функций, которые следует применять в зависимости от специфики уравнения, т. е.
    свойств f (х. Для решения одного уравнения с одним неизвестным служит функция root, реализующая метод секущих (см. разд. 8.1); для решения системы — вычислительный блок Given/Find, сочетающий различные градиентные методы (см. разд. 8.3, 8.4). Если f(x) — это полином, то вычислить все его корни можно также с помощью функции
    (см. разд. 8.2). Кроме того, в некоторых случаях приходится сводить решение уравнений к задаче поиска экстремума (см. разд. 8.5). Различные приемы нахождения экстремумов функций реализуются при встроенных
    ФУНКЦИЙ
    Maximize И Minimize (см. разд. 8.5, 8.6). В КОНЦе главы рассказывается о символьном решении уравнений (см. разд. 8.7) и о возможной программной реализации эффективного метода решения серии алгебраических уравнений или задач оптимизации, зависящих от параметра
    (см. разд. 8.8).
    Одно уравнение с одним неизвестным
    Рассмотрим одно алгебраическое уравнение с одним неизвестным х, (например) -Для решения таких уравнений Mathcad имеет встроенную функцию которая, в зависимости от типа задачи, может включать либо два, либо четыре аргумента и, соответственно, работает несколько по-разному.
    • f (x) — скалярная функция, определяющая уравнение (х скалярная переменная, относительно которой решается уравнение — границы интервала, внутри которого происходит поиск корня.
    Первый тип функции root требует дополнительного задания начального значения (guess value) переменной х. Для этого нужно просто предварительно присвоить х некоторое число. Поиск корня будет производиться вблизи
    Глава 8. Алгебраические уравнения и оптимизация
    187
    этого числа. Таким образом, присвоение начального значения требует априорной информации о примерной локализации корня.
    Приведем пример решения очень простого уравнения корни которого известны заранее.
    Листинг 8.1. Поиск корня нелинейного алгебраического уравнениях := О.Ь
    £
    (х) := sin (x)
    solution := root ( f (x) , х- 2
    /
    /
    /
    0 2
    \
    \
    0
    \
    \
    4 8 . 1 . Графическое решение уравнения s i n ( x ) График функции f и положение найденного корня показаны на рис. 8.1. Обратите внимание, что, хотя уравнение имеет бесконечное количество корней Mathcad находит (с заданной точностью) только один из них лежащий наиболее близко к Если задать другое начальное значение, например то решением будет другой корень уравнения и т. д. Таким образом, для поиска корня средствами требуется его предварительная локализация. Это связано с особенностями выбранного численного метода, который называется методом секущих и состоит в следующем (рис. 8.2):
    1. Начальное приближение принимается за приближение к корню. Выбирается шаги определяется первое приближение к корню Если то принимается. Через эти две точки проводится секущая прямая линия, которая пересекает ось х в некоторой точке х. Эта точка принимается за второе приближение Часть III. Численные методы. Новая секущая проводится через первую и вторую точки, тем самым определяя третье приближение, и т. д. Если на каком-либо шаге оказывается, что уравнение выполнено, те то итерационный процесс прерывается, их выдается в качестве решения 8.2. Иллюстрация метода секущих
    Результат, показанный на рис. 8.2, получен для погрешности вычислений,
    которой в целях иллюстративности предварительно присвоено значение Поэтому для поиска корня с такой невысокой точностью оказалось достаточно одной итерации. В вычислениях, приведенных в листинге, погрешность была установлена по умолчанию, и решение,
    выданное численным лежало намного ближе к истинному положению корнях о. Иными словами, чем меньше константа тем ближе к нулю будет значение f (х) в найденном корне, но тем больше времени будет затрачено вычислительным процессором Mathcad на его поиск.
    Примечание
    Соответствующий пример можно найти в Быстрых шпаргалках, на странице Ресурсов. Он расположен в разделе "Solving Equations" (Решение уравнений) и называется "Effects of T O L on Solving Equations" (Влияние константы на решение уравнений).
    Если уравнение неразрешимо, то при попытке найти его корень будет выдано сообщение об ошибке. Кроме того, к ошибке или выдаче неправильного корня может привести и попытка применить метод секущих в области локального максимума или минимума f(x). В этом случае секущая может иметь направление, близкое к горизонтальному, выводя точку следующего приближения далеко от предполагаемого положения корня. Для решения таких уравнений лучше применять другую встроенную функцию
    (см. разд. 8.5). Аналогичные проблемы могут возникнуть, если начальное приближение выбрано слишком далеко от настоящего решения или f (х имеет особенности типа бесконечности
    Глава 8. Алгебраические уравнения и оптимизация Примечание bДля решения уравнения с одним неизвестным применимы и градиентные методы, относящиеся в к системам уравнений Информация об этом приведена в разд. Иногда удобнее задавать не начальное приближение к корню, а интервал
    |а,ь|,
    которого корень заведомо находится. В этом случае следует использовать функцию root с четырьмя аргументами, а присваивать начальное значение ненужно, как показано в листинге 8.2. Поиск корня будет осуществлен в промежутке между и ь альтернативным численным методом или Брента).
    1   ...   10   11   12   13   14   15   16   17   ...   36


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