MathCAD – это просто! Часть 16. Продолжаем работать с символьными вычислениями
Источник: http://www.nestor.minsk.by/kg
В прошлый раз мы с вами начали говорить о таком важном и полезном аспекте работы в MathCAD, как символьные вычисления. Думаю, для вас не станет удивительным тот факт, что сейчас мы продолжим это увлекательное занятие. Не буду затягивать вступление – давайте сразу же перейдем к новым видам символьных вычислений, с которыми мы с вами еще не работали.
Ряд Тейлора
В прошлый раз мы закончили разговор о символьных вычислениях в среде MathCAD на том, как раскладывать многочлены на отдельные множители с помощью оператора factor. Несмотря на некоторые аномалии в своем виде по умолчанию, этот оператор великолепно справляется с поставленной перед ним задачей, однако, к сожалению, ситуация с использованием разнообразных разложений в математике такова, что часто приходится раскладывать не только многочлены, и не только на множители. Впрочем, особых поводов для расстройств, благодаря тому, что мы все-таки решаем не на бумажке, а в MathCAD'е, быть не должно. Эта мощная математическая система позволяет делать очень много полезных символьных вычислений.
Для начала поговорим про разложение функций в ряд Тейлора. Ряд Тейлора – одна из самых замечательных «придумок» в области математического анализа, поскольку с его помощью можно представить любую функцию в виде бесконечной суммы многочленов. На практике, конечно, бесконечная сумма не есть здорово, а потому большая часть слагаемых с высоким порядком степени попросту отбрасывается. Например, многие уравнения линеаризуются путем разложения входящих в них функций в ряд Тейлора, а затем отбрасыванием всех слагаемых, кроме самого первого. Ряды Тейлора очень полезны при машинном вычислении всяких заковыристых функций – даже такую простую вещь, как синус или экспонента, компьютер может вычислить только как разложение в ряд Тейлора. Так что, как видите, разложение функций подобным образом – задача, имеющая не только сугубо теоретическое, но и важное практическое значение.
Итак, для того, чтобы разложить функцию в ряд Тейлора, нужно, записав эту самую функцию, найти в меню «Symbolics» главного окна MathCAD пункт «Variable», а затем в этом пункте – еще один пункт, «Expand to Series…». После этого в появившемся диалогом окне нужно выбрать порядок, вплоть до которого мы будем записывать члены ряда, и нажать ОК. Как я уже говорил, реально бесконечные ряды не используются, поэтому это вполне нормально.
В общем-то, выбор степени, вплоть до которой раскладывать функцию, определяется многими факторами, а потому отделаться какой-то одной общей рекомендацией типа «чем больше, тем лучше», мне, увы, не удастся. В первую очередь, все дело в самой функции. Например, раскладывать синус до второй степени – явно неудачная идея. Во-вторых, чем точнее вам нужен результат, тем больше нужно степеней, но в пределах разумного, конечно же. В-третьих, стоит подумать о том, чтобы результат разложения помещался на экране, потому что если у вас будет два десятка слагаемых, то они в окне MathCAD'а явно целиком не поместятся. Обычно хватает двух-трех слагаемых, но, в зависимости от того, какую задачу вы ставите перед собой, раскладывая функцию в ряд Тейлора, нужное вам количество слагаемых ряда может и варьироваться.
Еще один способ разложения функции в ряд Тейлора – это использование оператора series, который, как и все остальные операторы символьных преобразований, можно найти на панели «Symbolic» главного окна среды MathCAD. Этот оператор имеет два параметра – в качестве первого выступает имя переменной, по которой мы будем раскладывать функцию в ряд, а в качестве второго – та самая степень, до которой мы будем раскладывать нашу функцию. Можете убедиться – результат разложения функции совершенного не зависит от того способа, который вы выберете в среде MathCAD для того, чтобы получить ряд Тейлора для заданной функции.
Использование оператора expand
Одним из важных операторов, используемых при символьных расчетах в MathCAD'е, является оператор expand. Чем же занимается этот важный и полезный оператор? Он занимается важным и полезным делом: раскрывает скобки при перемножении выражений. То есть, например, у нас есть выражение вида (a + b)(c + d). Оператор expand приведет это выражение к виду ac + ad + bc + bd.
Как и оператор factor, оператор expand имеет один необязательный параметр. Но здесь, к счастью, ситуация уже другая: этот параметр предназначен для указания того выражения, которое будет использоваться в результирующем выражении без раскрытия скобок. Сравните два выражения на иллюстрации к статье: одно – полученное с использованием необязательного параметра оператора expand, а второе, соответственно, без него.
У оператора expand есть еще одно полезное применение – представление сумм нескольких дробей в виде одной. Для этого нужно воспользоваться вариантом этого самого оператора безо всяких параметров. Если параметры все же будут, то это, само собой, тоже повлияет на результат – вместо одной длинной угрожающей дроби мы получим сумму нескольких более мелких, выглядящих, соответственно, несколько менее агрессивно. Вариант, который для вас предпочтительнее, выбирать, конечно же, вам – кому-то нравится одна, но большая, кому-то много маленьких.
Одновременное использование операторов символьных преобразований
Впрочем, конечно, лучше дробь приводить к более пристойному виду, нежели оставлять ее в виде суммы нескольких небольших дробей или даже в виде большой и длинной дроби с огромным количеством слагаемых в числителе и знаменателе. Сделать это можно, конечно же, с помощью оператора simplify, который мы с вами уже успешно изучили в прошлый раз. MathCAD предоставляет возможность одновременно применять несколько операторов символьных преобразований. Конечно, использовать expand вместе с simplify будет, скажем так, несколько странновато, поскольку это по своей природе противоположные операторы. Однако никто не мешает вам воспользоваться одновременно оператором solve, используемым для решения уравнений, и оператором simplify для получения результата в более красивой и читабельной форме. Аналогично можно воспользоваться операторами factor и expand для того, чтобы итоговое выражение ничуть не изменилось, но ваша работа в MathCAD'е выглядела более внушительно для непосвященных.
При записи одновременно нескольких операторов, преобразующих выражение, достаточно установить курсор за одним оператором и сразу же записать другой (например, с использованием хорошо уже знакомой вам панели «Symbolic»). При этом операторы будут записываться не последовательно, а друг над другом, за специальной чертой, отделяющей их от самого преобразуемого выражения, при этом операторы действуют в порядке «сверху вниз». На предлагаемой иллюстрации вы можете увидеть одновременное использование simplify и series.
Прозрачность вычислений
При проведении самых разнообразных видов вычислений в MathCAD'е нередко возникает необходимость получить конечный результат, но также и сделать процесс его получения прозрачным для стороннего наблюдателя. Хорошим примером подобной необходимости является оформление с помощью MathCAD'а курсовых или дипломных работ студентами, создание материалов для диссертаций, проведение каких-либо производственных расчетов с возможностью их представления для дальнейшей проверки… В общем, как видите, не так уж и редко нужно, чтобы было понятно, чем занимается ваше решение задачи. Поэтому прозрачность вычислений – весьма немаловажный фактор в довольно значительном числе случаев.
К счастью, разработчики MathCAD, похоже, догадывались о том, что будут люди, которым понадобится сделать свои вычисления в этой мощной математической среде прозрачными и понятными для других людей. Одним из важных элементов организации этой самой прозрачности является оператор explicit. Если вы возьмете себе за правило использовать этот оператор в своих расчетах, производимых в среде MathCAD, то наверняка сделаете их тем самым намного более понятными и прозрачными.
Оператор этот полезен тем, что позволяет проводить подстановку значений в выражения, не вычисляя их при этом непосредственно. Например, если нам надо вычислить выражение 2 + 2, то мы вводим обозначение a := 2 и записываем a + a. После этого, используя оператор explicit, мы получаем запись следующего вида: a + a explicit, a > 2 + 2. Конечно, приведенный здесь пример, мягко говоря, сложностью не отличается, однако, скажем, при более серьезных вычислениях где будут фигурировать многоэтажные дроби, интегралы и другие операторы символьных вычислений, такая форма записи способна действительно упростить жизнь и помочь разобраться в ошибках, если такие появятся.
Конечно, мы с вами пока что успели рассмотреть далеко не все операторы MathCAD’а, позволяющие эффективно реализовывать символьные вычисления в самых разных проектах, однако, думаю, на сегодня достаточно. Уверен, что вам станет интересно, и вы захотите попробовать самостоятельно, как эти операторы работают с более сложными выражениями, чем те, с которыми работали мы с вами. Думаю, вы не будете разочарованы в мощи MathCAD’а, если устроите этому математическому пакету подобное испытание.
SF, spaceflyer@tut.by