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

  • Листинг Возврат значения обозначен явно

  • Листинг 6.14. Применение оператора return

  • [Листинг ошибки деления ноль !

  • Листинг 6.17. Программирование в символьных расчетах (n)

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

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


    Скачать 10.75 Mb.
    НазваниеКирьянов д в
    АнкорКирьянов. Самоучитель MathCad 11.pdf
    Дата28.04.2017
    Размер10.75 Mb.
    Формат файлаpdf
    Имя файлаКирьянов. Самоучитель MathCad 11.pdf
    ТипРеферат
    #6148
    КатегорияИнформатика. Вычислительная техника
    страница13 из 36
    1   ...   9   10   11   12   13   14   15   16   ...   36
    Листинг 6.9. Оператор break внутри цикла О i e 0 ..
    z
    z + i break if i
    x = 3

    Часть II. Точные вычисления while

    z
    О h i l e
    < 10
    z
    + 1
    b r e a k if z > 5
    x = б
    Примечание
    Чтобы четче обозначить границы завершения тела цикла, в его конце может использоваться дополнительная строка с оператором c o n t i n u e , который вводится одноименной кнопкой панели Programming.
    Примеры, модернизирующие листинги 6.7 и 6.8, иллюстрируются листингами и 6.12, соответственно. Как видно, на результат программы наличие оператора c o n t i n u e не влияет 6.11. Оператор continue в конце цикла z < 10
    z z + 1
    continue x = Листинг Оператор continue в конце цикла f o r
    z
    0
    for
    { 1 2 3
    z+ i continue
    x = 6
    6.2.7. Возврат значения (Если для определения переменной или функции применяется программный модуль, то его строки исполняются последовательно при вычислении в документе этой переменной или функции. Соответственно, по мере выполнения программы рассчитываемый результат претерпевает изменения.
    В качестве окончательного результата выдается последнее присвоенное значение (примеры можно найти в листингах Чтобы подчеркнуть возврат программным модулем определенного значения, можно взять заправило делать это в последней строке программного модуля листинг Глава 6. Программирование

    161
    Листинг
    Возврат значения обозначен явно
    в последней строке программы ( х )
    f ( 2 ) = у + Вместе стем, можно прервать выполнение программы в любой ее точке
    (например с помощью условного оператора) и выдать некоторое значение,
    применив оператор return. В этом случае при выполнении указанного условия (листинг значение, введенное в после возвращается в качестве результата, а никакой другой код больше не выполняется. Вставляется в программу оператор return с помощью одноименной кнопки панели Programming
    (Программирование).
    Листинг 6.14. Применение оператора return
    Z
    r e t u r n r e t u r n
    " zero" if x = О x i
    1 4
    f ( 0)
    "zero"
    f ( i ) = - "
    6.2.8. Перехват ошибок (on Программирование в Mathcad позволяет осуществлять дополнительную обработку ошибок. Если пользователь предполагает, что выполнение кода в ка- ком-либо месте программного модуля способно вызвать ошибку (например деление на ноль, то эту ошибку можно перехватить с помощью оператора error. Чтобы вставить его в программу, надо поместить линии ввода в ней в нужное положение и нажать кнопку с именем оператора on error на панели (Программирование. В результате появится строка с двумя ме- стозаполнителями и оператором on error посередине (рис. Рис. 6.10. Вставка оператора перехода по ошибке
    Часть II. Точные вычисления
    В правом местозаполнителе следует ввести выражение, которое должно выполняться в данной строке программы. В левом — выражение, которое будет выполнено вместо правого выражения, если при выполнении последнего возникнет ошибка. Приведем пример применения оператора on листинг 6.15) в программном модуле, который рассчитывает функцию обратного числа значению п. Если то и присвоенное значение поэтому в последней строке программы выполняется правое выражение расчета Так происходит при расчете f
    Если попытаться вычислить f (как в конце листинга, то выполнение программы, заложенной в f вызовет ошибку деления на ноль в последней строке программы. Соответственно, вместо выражения справа от оператора on error будет выполнено левое выражение, присваивающее функции f(n) строковое значение "user error: cannot divide by zero" (пользовательская ошибка деление на ноль невозможно. Конечно, этой строке можно присвоить и текст на русском языке.
    [Листинг
    ошибки деления ноль !
    f ( n ) :=
    "user divide by zero"
    f(-2)
    f (
    = "user divide by on e r r o r —
    z
    Z
    -1
    user error: can't divide
    1
    error: can't divide by zero") on error —
    z
    Перехват ошибки деления на ноль
    Оператор перехвата ошибок удобно применять в комбинации со встроенной функцией Она приводит к генерации ошибки в обычной для форме с сообщением s. Пример усовершенствования листинга для такого стиля обработки ошибки деления на ноль показан на рис
    Глава 6. Программирование
    Обратите внимание, что сделанные изменения свелись к помещению текста сообщения об ошибке в аргумент функции error.
    6.3. Примеры программирования
    Рассмотрим два простых примера использования программных модулей в для численных (листинги символьных (листинг 6.17) расчетов. В двух приведенных листингах используется большинство операторов,
    рассмотренных в данной главе. Когда вы станете сами разрабатывать свои программные модули вне забывайте, что операторы программирования вставляются в текст программы с помощью кнопок панели инструментов (Программирование. Их имена нельзя нив коем случае просто набивать на клавиатуре, поскольку они не будут восприняты корректно.
    Примечание
    С помощью средств программирования можно создавать намного более сложные программы. Несколько примеров достаточно эффективного применения программирования вы найдете в разд. "Фазовый портрет динамической системы" гл. 11 v\ разд. "Разностные схемы для ОДУ" гл. Листинг Программирование в численных расчетах j
    f return -99 if n < О 1
    i
    £ 1 .. n f {-2)
    f (0)
    f (3) = 6
    (10)
    3.629 x 10'
    Листинг 6.17. Программирование в символьных расчетах (n)
    -1 i f п < О on error x otherwise f (1)
    10 •

    Часть //. Точные вычисления (10)
    f (-3)
    f ( 2 . 1 )
    ЧАСТЬ ЧИСЛЕННЫЕ МЕТОДЫ
    ГЛАВА 7
    Интегрирование
    и дифференцирование
    В этой главе рассматриваются основные математические операции, к которым мы отнесли численное дифференцирование и интегрирование функций.
    Интегрирование (см. разд и дифференцирование (см. разд. 7.2) — самые простые, с вычислительной точки зрения, операции, реализованные в в виде операторов. Тем не менее, если расчеты выполняются с помощью вычислительного процессора, необходимо хорошо представлять себе особенности численных алгоритмов, действие которых остается для пользователя "за кадром. В тех же разделах (см. 7.1 и 7.2)
    упоминается и об особенностях символьных операций интегрирования и дифференцирования. Интегрирование
    Интегрирование в Mathcad реализовано в виде вычислительного оператора.
    Допускается вычислять интегралы от скалярных функций в пределах интегрирования, которые также должны быть скалярами. Несмотря на то что пределы интегрирования обязаны быть действительными, подынтегральная функция может иметь и комплексные значения, поэтому и значение интеграла может быть комплексным. Если пределы интегрирования имеют размерность (см. разд. "Размерные переменные" гл. 4),
    то она должна быть одной и той же для обоих пределов. Операторы интегрирования
    Интегрирование, дифференцирование, как и множество других математических действий, устроено в Mathcad по принципу "как пишется, таки вводится. Чтобы вычислить определенный интеграл, следует напечатать его обычную математическую форму в документе. Делается это с помощью па
    Часть III. Численные методы
    нели Calculus (Вычисления) нажатием кнопки со значком или вводом с клавиатуры сочетания клавиш (или символа
    Появится символ интеграла с несколькими местозаполнителями (рис. 7.1), в которые нужно ввести нижний и верхний интервалы интегрирования, подынтегральную функцию и переменную интегрирования.
    Внимание!
    Можно вычислять интегралы с одним или обоими бесконечными пределами.
    Для этого на месте соответствующего предела введите символ бесконечности,
    воспользовавшись, например, той же самой панелью Calculus (Вычисления).
    Чтобы ввести (минус бесконечность, добавьте знак минус к символу бесконечности, как к обычному числу ft
    Рис 7 . 1 . Оператор интегрирования
    Чтобы получить результат интегрирования, следует ввести знак равенства или символьного равенства. В первом случае интегрирование будет проведено численным методом, во втором — в случае успеха, будет найдено точное значение интеграла с помощью символьного процессора Mathcad. Эти два способа иллюстрирует листинг 7.1. Конечно, символьное интегрирование возможно только для небольшого круга несложных подынтегральных функций.
    Листинг
    Численное и символьное вычисление определенного интеграла i n (x) dx 2
    s i n x) dx
    2
    Примечание
    Подынтегральная функция может зависеть от любого количества переменных.
    Именно для того чтобы указать, по какой переменной Mathcad следует вычислять интеграл, и нужно вводить ее имя в соответствующий местозаполнитель.
    Глава 7. Интегрирование и дифференцирование Помните, что для численного интегрирования по одной из переменных предварительно следует задать значение остальных переменных, от которых зависит подынтегральная функция и для которых вы намерены вычислить интеграл
    (листинг Листинг 7.2. Интегрирование функции двух переменных

    по разным переменным
    а := п • s i n (x) dx = ох а • s i n ( x )
    4 2 . 0 7 4
    Примечание
    Оператор интегрирования может использоваться точно также, как и другие операторы для определения функций, в циклах и при вычислении ранжированных переменных. Пример присваивания пользовательской функции д(х) значения определенного интеграла и вычисления нескольких ее значений приведен в листинге Листинг 7.3. Использование оператора интегрирования

    в функции пользователя) a
    J л • s i n (x) d x i := 1 .. 5
    g ( i ) =
    2
    4
    6
    10 7.1.2. Об алгоритмах интегрирования
    Результат численного интегрирования — это неточное, а приближенное значение интеграла, определенное с погрешностью, которая зависит от встроенной константы Чем она меньше, тем с лучшей точностью будет найден интеграл, но и тем больше времени будет затрачено на расчеты. По
    Часть Численные методы
    умолчанию
    Для того чтобы ускорить вычисления, можно установить меньшее значение
    Совет
    Если скорость расчетов имеет для Вас принципиальное значение, например при многократном вычислении интеграла внутри цикла, проявите осторожность,
    выбирая значение точности. Обязательно поэкспериментируйте на тестовом примере с характерной для Ваших расчетов подынтегральной функцией. Посмотрите, как уменьшение константы сказывается на погрешности интегрирования, вычислив интеграл для разных ее значений и выбрав оптимальное,
    исходя из соотношения точность / скорость вычислений.
    Отдавайте себе отчет в том, что при вводе в редакторе Mathcad оператора численного интегрирования, Вы, фактически, создаете самую настоящую программу. Например, программой является первая строка листинга просто большая часть ее скрыта от Вашего взора разработчиками компании. В большинстве случаев об этом не приходится специально задумываться, можно полностью положиться на Mathcad. Но иногда может потребоваться умение управлять параметрами этой программы, как мы уже рассмотрели на примере выбора константы TOL. Кроме нее, пользователь имеет возможность выбирать сам алгоритм численного интегрирования. Для этого. Щелкните правой кнопкой мыши в любом месте на левой части вычисляемого интеграла. В появившемся контекстном меню выберите один из четырех численных алгоритмов fiutoSelect
    Infinite Limit
    Singular
    Paste
    Properties...
    Evaluation
    7.2. Выбор алгоритма численного интегрирования
    Глава 7. Интегрирование и дифференцирование Обратите внимание, что, перед тем как один из алгоритмов выбран впервые, как показано на рис. 7.2, флажок проверки в контекстном меню установлен возле пункта (Автоматический выбор. Это означает, что алгоритм определяется Mathcad, исходя из анализа пределов интегрирования и особенностей подынтегральной функции. Как только один из алгоритмов выбран, этот флажок сбрасывается, а избранный алгоритм отмечается
    Разработчиками Mathcad И запрограммированы четыре численных метода интегрирования (Ромберга) — для большинства функций, не содержащих особенностей (Адаптивный) — для функций, быстро меняющихся на интервале интегрирования Infinite Limit
    (Бесконечный предел) — для интегралов с бесконечными пределами ();
    Singular
    (Сингулярная граница) — для интегралов с сингулярностью на конце. Модифицированный алгоритм Ромберга для функций,
    не определенных на одном или обоих концах интервала интегрирова- ния.
    Старайтесь все-таки оставить выбор численного метода за Mathcad, установив флажок AutoSelect
    (Автоматический выбор) в контекстном меню. Попробовать другой метод можно, например, чтобы сравнить результаты расчетов в специфических случаях, когда у Вас закрадываются сомнения в их правильности.
    Если подынтегральная функция "хорошая, те. не меняется на интервале интегрирования слишком быстро и не обращается на нем в бесконечность,
    то численное решение интеграла не принесет никаких неприятных сюрпризов. Приведем основные идеи итерационного алгоритма Ромберга, который применяется для большинства таких функций Сначала строится несколько интерполирующих полиномов, которые заменяют на интервале интегрирования подынтегральную функцию В качестве первой итерации полиномы вычисляются по 1,2 интервалам. Например, первый полином, построенный по 1 интервалу это просто прямая линия, проведенная через две граничные точки интервала интегрирования, второй — квадратичная парабола и т. д Интеграл от каждого полинома с известными коэффициентами легко вычисляется аналитически. Таким образом, определяется последовательность интегралов от интерполирующих полиномов:
    Например, по правилу трапеций (a)+f (Ь) /2 и т. д

    Часть Численные методы Из-за интерполяции по разному числу точек вычисленные интегралы несколько отличаются друг от друга. Причем, чем больше точек используется для интерполяции, тем интеграл от го полинома ближе к искомому интегралу, стремясь к нему в пределе бесконечного числа точек. Поэтому определенным образом осуществляется экстраполяция последовательности .. . до нулевой ширины элементарного интервала. Результат этой экстраполяции принимается за приближение к вычисляемому интегралу.
    • Осуществляется переход к новой итерации с помощью еще более частого разбиения интервала интегрирования, добавления нового члена последовательности интерполирующих полиномов и вычисления нового
    (N-ГО)
    приближения Ромберга
    О Чем больше количество точек интерполяции, тем ближе очередное приближение Ромберга к вычисляемому интегралу и, соответственно, тем меньше оно отличается от приближения предыдущей итерации. Как только разница между двумя последними итерациями становится меньше погрешности ИЛИ меньше итерации прерываются, и появляется на экране в качестве результата интегрирова- ния.
    Примечание
    Об алгоритме полиномиальной см 15.
    7.1.3. О расходящихся интегралах
    Если интеграл расходится (равен бесконечности, то вычислительный процессор может выдать сообщение об ошибке, выделив при этом оператор интегрирования, как обычно, красным цветом. Чаще всего ошибка будет иметь тип "Found a number with a magnitude greater than
    (Найдено число, превышающее значение или "Can't converge to a solution"
    сходится к решению, как, например, при попытке вычислить интеграл Тем не менее, символьный процессор справляется с этим инте- градом, совершенно правильно находя его бесконечное значение листинг Листинг 7.4. Символьное вычисление расходящегося интеграла
    Глава 7. Интегрирование и дифференцирование 173
    Примечание
    Символьный процессор предоставляет замечательные возможности аналитического вычисления интегралов, в том числе зависящих от параметров и неопределенных интегралов, как показано в листингах 7.5 и 7.6. Об этом
    и о вычислении интегралов с помощью меню Symbolics (Символика, упоминалось в гл. Листинг 7.5. Символьное вычисление интеграла с переменным пределом 2 • а
    Листинг 7.6. Символьное неопределенного интеграла x
    2 • х
    При попытке численного решения задачи из листинга 7.4 методом, отличным от алгоритма вычисления интегралов с бесконечными пределами, будет получено неверное решение (листинг 7.7)
    вместо бесконечности выдано большое, но конечное число, немного не дотягивающее до численной бесконечности, являющейся для вычислительного процессора просто большим числом (см. разд. "Встроенные константы 4).
    Отметим, что Mathcad в режиме автоматического выбора алгоритма) предлагает именно алгоритм Infinite Листинг 7.7. Плохо выбранный численный алгоритм
    неверно находит расходящийся интеграл =
    Х 1 0 1 5 3 7.1.4. Кратные интегралы
    Для того чтобы вычислить кратный интеграл Введите, как обычно, оператор интегрирования. В соответствующих введите имя первой переменной интегрирования и пределы интегрирования по этой переменной

    Часть Численные методы. На месте ввода подынтегральной функции введите еще один оператор интегрирования. Точно также введите вторую переменную, пределы интегрирования и подынтегральную функцию (если интеграл двукратный) или следующий оператор интегрирования (если более чем двукратный) и т. д, пока выражение с многократным интегралом не будет введено окончательно.
    Пример символьного и численного расчета двукратного интеграла в бесконечных пределах приведен в листинге 7.8. Обратите внимание, что символьный процессор "угадывает" точное значение интеграла а вычислительный определяет его приближенно и выдает в виде числа Листинг 7.8. Символьное и численное вычисление кратного интеграла

    е dx
    n
    = 3.142
    Внимание!
    Аккуратнее вводите в редакторе кратные интегралы, если они имеют различные пределы интегрирования по разным переменным. Не перепутайте пределы, относящиеся к разным переменным. Если Вы имеете дело с такого рода задачами, обязательно разберитесь с листингом 7.9, в котором символьный процессор вычисляет двукратный интеграл. Впервой строке пределы интегрирования а , Ы относятся к переменной у, а во второй строке — к переменной Листинг 7.9. Символьное вычисление кратных интегралов
    Ь
    3 х + у dx ау. Дифференцирование
    С помощью Mathcad можно вычислять производные скалярных функций любого количества аргументов, от ого до го порядка включительно.
    И функции, и аргументы могут быть как действительными, таки комплекс
    Глава 7. Интегрирование и дифференцирование
    ными. Невозможно дифференцирование функций только вблизи точек их сингулярности.
    Вычислительный процессор Mathcad обеспечивает превосходную точность численного дифференцирования. Но больше всего пользователь оценит возможности символьного процессора, который позволяет с легкостью осуществить рутинную работу вычисления производных громоздких функций,
    поскольку, в отличие от всех других операций, символьное дифференцирование выполняется успешно для подавляющего большинства аналитически заданных функций.
    В Mathcad для ускорения и повышения точности численного дифференцирования функций, заданных аналитически, автоматически задействуется символьный процессор (см. разд. "Оптимизация вычислений" гл. 3).
    7.2.1. Первая производная
    Для чтобы продифференцировать функцию f (x) в некоторой точке. Определите точку х, в которой будет вычислена производная, например
    1   ...   9   10   11   12   13   14   15   16   ...   36


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