Математический редактор MathCAD

Операторы интегрирования

7.1.1. Операторы интегрирования

Интегрирование, дифференцирование, как и множество других математических действий, устроено в Mathcad по принципу "как пишется, так и вводится". Чтобы вычислить определенный интеграл, следует напечатать его обычную математическую форму в документе. Делается это с помощью панели Calculus (Вычисления) нажатием кнопки со значком интеграла или вводом с клавиатуры сочетания клавиш +<7> (или символа "&"). Появится символ интеграла с несколькими местозаполнителями (рис. 7.1), в которые нужно ввести нижний и верхний интервалы интегрирования, подынтегральную функцию и переменную интегрирования.
Можно вычислять интегралы с одним или обоими бесконечными пределами. Для этого на месте соответствующего предела введите символ бесконечности, воспользовавшись, например, той же самой панелью Calculus (Вычисления). Чтобы ввести -"> (минус бесконечность), добавьте знак минус к символу бесконечности, как к обычному числу.


Об алгоритмах интегрирования

7.1.2. Об алгоритмах интегрирования

Результат численного интегрирования — это не точное, а приближенное значение интеграла, определенное с погрешностью, которая зависит от встроенной константы TOL. Чем она меньше, тем с лучшей точностью будет найден интеграл, но и тем больше времени будет затрачено на расчеты. По умолчанию TOL=0.001. Для того чтобы ускорить вычисления, можно установить меньшее значение TOL.
Если скорость расчетов имеет для Вас принципиальное значение, например при многократном вычислении интеграла внутри цикла, проявите осторожность, выбирая значение точности Обязательно поэкспериментируйте на тестовом примере с характерной для Ваших расчетов подынтегральной функцией. Посмотрите, как уменьшение константы TOL сказывается на погрешности интегрирования, вычислив интеграл для разных ее значений и выбрав оптимальное, исходя из соотношения точность / скорость вычислений.
Отдавайте себе отчет в том, что при вводе в редакторе Mathcad оператора численного интегрирования, Вы, фактически, создаете самую настоящую программу. Например, программой является первая строка листинга 7.1, просто большая часть ее скрыта от Вашего взора разработчиками компании MathSoft. В большинстве случаев об этом не приходится специально задумываться, можно полностью положиться на Mathcad. Но иногда может потребоваться умение управлять параметрами этой программы, как мы уже рассмотрели на примере выбора константы TOL. Кроме нее, пользователь имеет возможность выбирать сам алгоритм численного интегрирования. Для этого:
  • Щелкните правой кнопкой мыши в любом месте на левой части вычисляемого интеграла.
  • В появившемся контекстном меню выберите один из четырех численных алгоритмов (рис. 7.2).


  • расходящихся интегралах

    7.1.3. 0 расходящихся интегралах

    Если интеграл расходится (равен бесконечности), то вычислительный процессор Mathcad может выдать сообщение об ошибке, выделив при этом оператор интегрирования, как обычно, красным цветом. Чаще всего ошибка будет иметь тип "Found a number with a magnitude greater than 10^307" (Найдено число, превышающее значение 10307) или "Can't converge to a solution" (Не сходится к решению), как, например, при попытке вычислить интеграл. Тем не менее, символьный процессор справляется с этим интегралом, совершенно правильно находя его бесконечное значение (листинг 7.4).


    Кратные интегралы

    7.1.4. Кратные интегралы

    Для того чтобы вычислить кратный интеграл:
  • Введите, как обычно, оператор интегрирования.
  • В соответствующих местозаполнителях введите имя первой переменной интегрирования и пределы интегрирования по этой переменной.
  • На месте ввода подынтегральной функции введите еще один оператор интегрирования.
  • Точно так же введите вторую переменную, пределы интегрирования и подынтегральную функцию (если интеграл двукратный) или следующий оператор интегрирования (если более чем двукратный) и т. д., пока выражение с многократным интегралом не будет введено окончательно.
  • Пример символьного и численного расчета двукратного интеграла в бесконечных пределах приведен в листинге 7.8. Обратите внимание, что символьный процессор "угадывает" точное значение интеграла pi а вычислительный определяет его приближенно и выдает в виде числа 3.142.


    Интегрирование

    7.1. Интегрирование

    Интегрирование в Mathcad реализовано в виде вычислительного оператора. Допускается вычислять интегралы от скалярных функций в пределах интегрирования, которые также должны быть скалярами. Несмотря на то что пределы интегрирования обязаны быть действительными, подынтегральная функция может иметь и комплексные значения, поэтому и значение интеграла может быть комплексным. Если пределы интегрирования имеют размерность (см. разд. "Размерные переменные" гл 4), то она должна быть одной и той же для обоих пределов.

    Первая производная

    7.2.1. Первая производная

    Для того чтобы продифференцировать функцию f (х) в некоторой точке:
  • Определите точку х, в которой будет вычислена производная, например х:=1.
  • Введите оператор дифференцирования нажатием кнопки Derivative (Производная) на панели Calculus (Вычисления) или введите с клавиатуры вопросительный знак .
  • В появившихся местозаполнителях (рис. 7.3) введите функцию, зависящую от аргумента х, т. е. f(х), и имя самого аргумента х.
  • Введите оператор <=> численного или < -> > символьного вывода для получения ответа.


  • Производные высших порядков

    7.2.2. Производные высших порядков

    Mathcad позволяет численно определять производные высших порядков, от 0-го до 5-го включительно. Чтобы вычислить производную функции f (х) N-го порядка в точке х, нужно проделать те же самые действия, что и при взятии первой производной (см. разд. 7.2.1), за тем исключением, что вместо оператора производной необходимо применить оператор N-й производной (Nth Derivative). Этот оператор вводится с той же панели Calculus (Вычисления) либо с клавиатуры нажатием клавиш + и содержит еще два местозаполнителя, в которые следует поместить число N. В полном соответствии с математическим смыслом оператора, определение порядка производной в одном из местозаполнителей приводит к автоматическому появлению того же числа в другом из них.
    "Производная" при N=0 по определению равна самой функции, при N=1 получается обычная первая производная.

    Частные производные

    7.2.3. Частные производные

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



    Дифференцирование

    7.2. Дифференцирование

    С помощью Mathcad можно вычислять производные скалярных функций любого количества аргументов, от о-го до 5-го порядка включительно. И функции, и аргументы могут быть как действительными, так и комплексными. Невозможно дифференцирование функций только вблизи точек их сингулярности.
    Вычислительный процессор Mathcad обеспечивает превосходную точность численного дифференцирования. Но больше всего пользователь оценит возможности символьного процессора, который позволяет с легкостью осуществить рутинную работу вычисления производных громоздких функций, поскольку, в отличие от всех других операций, символьное дифференцирование выполняется успешно для подавляющего большинства аналитически заданных функций.
    В Mathcad 11 для ускорения и повышения точности численного дифференцирования функций, заданных аналитически, автоматически задействуется символьный процессор (см. разд. "Оптимизация вычислений"гл. 3).

    Интегрирование и дифференцирование

    Глава 7. Интегрирование и дифференцирование

  • 7.1. Интегрирование
  • 7.1.1. Операторы интегрирования
  • 7.1.2. Об алгоритмах интегрирования
  • 7.1.3. О расходящихся интегралах
  • 7.1.4. Кратные интегралы
  • 7.2. Дифференцирование
  • 7.2.1. Первая производная
  • 7.2.2. Производные высших порядков
  • 7.2.3. Частные производные


  • График линий уровня функции f (х,у) (листинг 7.18)

    График линий уровня функции f (х,у) (листинг 7.18)

    График линий уровня функции f (х,у) (листинг 7.18)


    Изменение вида оператора дифференцирования

    Изменение вида оператора дифференцирования

    Изменение вида оператора дифференцирования
    Чтобы вернуть вид производной, принятый по умолчанию, выберите в подменю пункт Default (По умолчанию) либо, для представления ее в обычном виде — Derivative (Производная).
    Завершим разговор о частных производных двумя примерами, которые нередко встречаются в вычислительной практике. Программная реализация первого из них, посвященная вычислению градиента функции двух переменных, приведена в листинге 7.18. В качестве примера взята функция f (x,y), определяемая в первой строке листинга, график которой показан в виде линий уровня на рис. 7.6. Как известно, градиент функции f(х,у) является векторной функцией тех же аргументов, что и f (х,у), определенной через ее частные производные, согласно второй строке листинга 7.18. В оставшейся части этого листинга задаются ранжированные переменные и матрицы, необходимые для подготовки графиков функции и ее градиента.


    Определение функции через оператора дифференцирования

    Листинг 7.12. Определение функции через оператора дифференцирования

    Определение функции через оператора дифференцирования


    демонстрирует численное...

    Листинг 7.14 демонстрирует численное и символьное вычисление второй производной. Обратите внимание, что, как и при вычислении обычной производной, необходимо перед оператором дифференцирования присвоить аргументу функции значение, для которого будет вычисляться производная.



    Численное и символьное вычисление седьмой производной

    Листинг 7.15. Численное и символьное вычисление седьмой производной

    Численное и символьное вычисление седьмой производной
    Численное и символьное вычисление седьмой производной
    Расчет производных высших порядков производится тем же вычислительным методом Риддера, что и расчет первых производных. Причем для первой производной этот метод обеспечивает точность до 7-8 значащих разрядов числа, а при повышении порядка производной на каждую единицу точность падает примерно на один разряд.
    Из сказанного ясно, что падение точности при численном расчете высших производных может быть очень существенно. В частности, если попытаться определить девятую производную синуса, подобно идее листинга 7.15, то в качестве результата будет выдан нуль, в то время как истинное значение девятой производной равно cos (0.1).

    иллюстрирует расчет...

    Листинг 7.17 иллюстрирует расчет вторых производных функции из предыдущего примера по переменным х, у и смешанной производной.

    иллюстрирует расчет...


    Вычисление второй частной производной

    Листинг 7.17. Вычисление второй частной производной



    Вычисление якобиана векторной фенкции векторного аргумента

    Листинг 7.19. Вычисление якобиана векторной фенкции векторного аргумента



    З. Приер правильного и неправильного применения дифференцирования

    Листинг 7.1З. Приер правильного и неправильного применения дифференцирования

    З. Приер правильного и неправильного применения дифференцирования
    З. Приер правильного и неправильного применения дифференцирования
    Для численного дифференцирования Mathcad применяет довольно сложный алгоритм, вычисляющий производную с колоссальной точностью до 7-8-го знака после запятой. Этот алгоритм (метод Риддера) описан во встроенной справочной системе Mathcad, доступной через меню Help (Справка). Погрешность дифференцирования не зависит от констант TOL или CTOL, в противоположность большинству остальных численных методов, а определяется непосредственно алгоритмом.
    Исключение составляют функции, которые дифференцируются в окрестности сингулярной точки; например для рассмотренной нами функции f (x)=1/x это будут точки вблизи х=о. При попытке найти ее производную при х=о будет выдано сообщение об одной из ошибок деления на ноль "Can't divide by zero" (Деление на ноль невозможно) или "Found a singularity while evaluating this expression. You may be dividing by zero" (Найдена сингулярность при вычислении этого выражения. Возможно, Вы делите на ноль). Если попробовать численно определить производную очень близко к нулю, например, при х=10-100, то может появиться сообщение об ошибке "Can't converge to a solution" (Невозможно найти решение). Встретившись с одной из упомянутых ошибок, присмотритесь повнимательнее к дифференцируемой функции и убедитесь, что Вы не имеете дело с точкой сингулярности.

    Вычисление якобиана векторной функции трех скалярных аргумента

    Листинг 7.20. Вычисление якобиана векторной функции трех скалярных аргумента

    Вычисление якобиана векторной функции трех скалярных аргумента
    Вычисление якобиана векторной функции трех скалярных аргумента
    Не забывайте, что для численного определения якобиана необходимо сначала определить точку, в которой он будет рассчитываться, т. е. вектор х в терминах листинга 7.19, или все три переменных х,у, z в обозначениях листинга 7.20.

    Интегрирование функции двух переменных по разным переменным

    Листинг 7.2. Интегрирование функции двух переменных по разным переменным

    Интегрирование функции двух переменных по разным переменным


    Использование оператора интегрирования в функции пользователя

    Листинг 7.3. Использование оператора интегрирования в функции пользователя

    Использование оператора интегрирования в функции пользователя
    Использование оператора интегрирования в функции пользователя

    Символьное вычисление интеграла с переменным пределом

    Листинг 7.5. Символьное вычисление интеграла с переменным пределом

    Символьное вычисление интеграла с переменным пределом


    Символьное вычисление неопределенного интеграла

    Листинг 7.6. Символьное вычисление неопределенного интеграла

    Символьное вычисление неопределенного интеграла


    Плохо выбранный численный алгоритм неверно находит расходящийся интеграл

    Листинг 7.7. Плохо выбранный численный алгоритм неверно находит расходящийся интеграл

    Плохо выбранный численный алгоритм неверно находит расходящийся интеграл
    Плохо выбранный численный алгоритм неверно находит расходящийся интеграл

    Символьное вычисление кратных интегралов

    Листинг 7.9. Символьное вычисление кратных интегралов

    Символьное вычисление кратных интегралов
    Символьное вычисление кратных интегралов

    Оператор дифференцирования

    Оператор дифференцирования

    Оператор дифференцирования
    Пример дифференцирования функции f(x)=cos(x)ln(x) приведен в листинге 7.10.


    Оператор интегрирования

    Оператор интегрирования

    Оператор интегрирования
    Чтобы получить результат интегрирования, следует ввести знак равенства или символьного равенства. В первом случае интегрирование будет проведено численным методом, во втором — в случае успеха, будет найдено точное значение интеграла с помощью символьного процессора Mathcad. Эти два способа иллюстрирует листинг 7.1. Конечно, символьное интегрирование возможно только для небольшого круга несложных подынтегральных функций.


    Ошибка в применении оператора дифференцирования

    Ошибка в применении оператора дифференцирования

    Ошибка в применении оператора дифференцирования
    Конечно, можно, как и при использовании других операторов, предварительно определить функцию в отдельном выражении, а затем посчитать ее производную (см. листинг 7.11); или применить оператор дифференцирования для определения собственных функций пользователя (см. листинг 7.12).



    Векторное поле градиента функции f (х,у) (листинг 7.18)

    Векторное поле градиента функции f (х,у) (листинг 7.18)

    Векторное поле градиента функции f (х,у) (листинг 7.18)
    Тот же самый якобиан можно вычислить и несколько по-другому, если определить функцию не одного векторного, а трех скалярных аргументов f(x,y,z) (листинг 7.20).


    Выбор алгоритма численного интегрирования

    Выбор алгоритма численного интегрирования

    Выбор алгоритма численного интегрирования
    Обратите внимание, что, перед тем как один из алгоритмов выбран впервые, как показано на рис. 7.2, флажок проверки в контекстном меню установлен возле пункта AutoSelect (Автоматический выбор). Это означает, что алгоритм определяется Mathcad, исходя из анализа пределов интегрирования и особенностей подынтегральной функции. Как только один из алгоритмов выбран, этот флажок сбрасывается, а избранный алгоритм отмечается точкой.
    Разработчиками Mathcad 11 запрограммированы четыре численных метода интегрирования:
  • Romberg (Ромберга) — дли большинства функций, не содержащих особенностей;
  • Adaptive (Адаптивный) — для функций, быстро меняющихся на интервале интегрирования;
  • Infinite Limit (Бесконечный предел) — для интегралов с бесконечными пределами ();
  • Singular Endpoint (Сингулярная граница) — для интегралов с сингулярностью на конце. Модифицированный алгоритм Ромберга для функций, не определенных на одном или обоих концах интервала интегрирования.
  • Старайтесь все-таки оставить выбор численного метода за Mathcad, установив флажок AutoSelect (Автоматический выбор) в контекстном меню. Попробовать другой метод можно, например, чтобы сравнить результаты расчетов в специфических случаях, когда у Вас закрадываются сомнения в их правильности.
    Если подынтегральная функция "хорошая", т. е. не меняется на интервале интегрирования слишком быстро и не обращается на нем в бесконечность, то численное решение интеграла не принесет никаких неприятных сюрпризов. Приведем основные идеи итерационного алгоритма Ромберга, который применяется для большинства таких функций.
  • Сначала строится несколько интерполирующих полиномов, которые заменяют на интервале интегрирования подынтегральную функцию f(x). В качестве первой итерации полиномы вычисляются по 1,2 и 4 интервалам. Например, первый полином, построенный по 1 интервалу, — это просто прямая линия, проведенная через две граничные точки интервала интегрирования, второй — квадратичная парабола и т. д.
  • Интеграл от каждого полинома с известными коэффициентами легко вычисляется аналитически. Таким образом, определяется последовательность интегралов от интерполирующих полиномов: ilf i2, i4,... Например, по правилу трапеций i1=(b-a) (f (a)+f (b) )/2 и т. д.
  • Из-за интерполяции по разному числу точек вычисленные интегралы ii, i2,... несколько отличаются друг от друга. Причем, чем больше точек используется для интерполяции, тем интеграл от интерполяционного полинома ближе к искомому интегралу, стремясь к нему в пределе бесконечного числа точек. Поэтому определенным образом осуществляется экстраполяция последовательности ilf i2, I4,... до нулевой ширины элементарного интервала. Результат этой экстраполяции J принимается за приближение к вычисляемому интегралу.
  • Осуществляется переход к новой итерации с помощью еще более частого разбиения интервала интегрирования, добавления нового члена последовательности интерполирующих полиномов и вычисления нового (N-ГО) приближения Ромберга JN.
  • Чем больше количество точек интерполяции, тем ближе очередное приближение Ромберга к вычисляемому интегралу и, соответственно, тем меньше оно отличается от приближения предыдущей итерации. Как только разница между двумя последними итерациями | JN-j11"11 становится меньше погрешности TOL или меньше TOL-|JN|, итерации прерываются, и JN появляется на экране в качестве результата интегрирования.
  • Об алгоритме полиномиальной сплайн-интерполяции см .гл. 15.

    

        Биржевой анализ: Технический анализ - Инструменты - Софт