Символьные вычисления

В данной главе рассматриваются возможности символьного процессора Mathcad. Он позволяет решить многие задачи математики аналитически, без применения численных методов и, соответственно, без погрешностей вычислений. В начале главы коротко говорится о путях проведения символьных вычислений в редакторе Mathcad (см. разд. 5.1), а основное содержание главы посвящено организации символьных вычислений для решения конкретных задач математики. Mathcad позволяет проводить широкий спектр аналитических преобразований, таких, как алгебраические и матричные операции (см. разд. 5.2), основные действия математического анализа (см. разд. 5.3) и расчеты интегральных преобразований функций (см. разд. 5.4).

Необходимо отметить, что приемы многих символьных вычислений описываются также в третьей части данной книги, в рамках рассказа о решении конкретных вычислительных задач. В заключение главы приводится несколько практических приемов проведения эффективных символьных вычислений (см. разд. 5.5).

5.1. Способы символьных вычислений

Символьные вычисления в Mathcad можно осуществлять в двух различных вариантах:

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

В символьных вычислениях допускается использование большинства встроенных функций Mathcad.

Для символьных вычислений при помощи команд предназначено главное меню Symbolics (Символика), объединяющее математические операции, которые Mathcad умеет выполнять аналитически (рис. 5.1). Для реализации второго способа применяются все средства Mathcad, пригодные для численных вычислений (например, панели Calculator, Evaluation и т. д.), и специальная математическая панель инструментов, которую можно вызвать на экран нажатием кнопки Symbolic Keyword Toolbar (Панель символики) на панели Math. На панели Symbolic (Символические) находятся кнопки, соответствующие специфическим командам символьных преобразований (рис 5.2) Например, таким, как разложение выражения на множители, расчет преобразования Лапласа и другим операциям, которые в Mathcad нельзя проводить численно и для которых, соответственно, не предусмотрены встроенные функции.

Рис. 5.1. Меню Symbolics

Рис. 5.2. Панель Symbolic

Рассмотрим оба типа символьных вычислений на простом примере разложения на сомножители выражения sin (2х)

Первый способ (с помощью меню).

После этого результат разложения выражения появится чуть ниже в виде еще одной строки (рис. 5.3).

Рис. 5.3. Результат применения команды меню Symbolics / Expand

Символьные операции с помощью меню возможны лишь над каким-либо объектом (выражением, его частью или отдельной переменной) Для того чтобы правильно осуществить желаемое аналитическое преобразование, предварительно необходимо выделить тот объект, к которому оно будет относиться В данном случае преобразование было применено ко всему выражению sin (2х) Если же выделить часть формулы, как показано на рис 5.4, то соответствующее преобразование будет отнесено к выделенной части (нижняя строка на этом рисунке).

Рис. 5.4. Символьное разложение части выражения и его результат

Второй способ символьных преобразований (с помощью оператора ->).

Рис. 5.5. Символьное разложение выражения

Оператор символьного вывода, как Вы помните, можно ввести в редакторе Mathcad несколькими способами: нажатием кнопки -> на любой из панелей Evaluation (Выражения) или Symbolic (Символика) либо сочетанием клавиш <Ctrl>+<>. Результат символьного разложения выражения показан на рис 5.5, внизу.

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

Если Вы можете выбрать способ символьных вычислений, рекомендуем второй путь — с помощью оператора ->, поскольку при этом в документе сохраняются действия пользователя. Наличие специального меню символьных вычислений — своего рода дань прежним версиям Mathcad. В них аналитические преобразования были встроены не так гармонично и были доступны, главным образом, через меню.

Не всякое выражение поддается аналитическим преобразованиям. Если это так (либо в силу того, что задача вовсе не имеет аналитического решения, либо она оказывается слишком сложной для символьного процессора Mathcad), то в качестве результата выводится само выражение (листинг 5.1. внизу).

Листинг 5.1. Символьные преобразования

Рис. 5.6. Различие в символьных вычислениях при помощи меню (сверху) и оператора -> (снизу)

Далее в этой главе, рассматривая символьные вычисления с помощью меню, будем иллюстрировать результаты рисунками, а символьные вычисления с применением оператора -> приводить в виде листингов.

5.2. Символьная алгебра

Символьный процессор Mathcad умеет выполнять основные алгебраические преобразования, такие, как упрощение выражений, разложение их на множители, символьное суммирование и перемножение.

5.2.1. Упрощение выражений (Simplify)

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

Рис. 5.7. Упрощение выражения

Для упрощения выражения при помощи оператора символьного вывода используйте ключевое слово simplify (листинг 5.2). Не забывайте, если некоторым переменным, входящим в выражение, ранее были присвоены некоторые значения, то они будут подставлены в него при выполнении символьного вывода (листинг 5.3).

Листинг 5.2. Упрощение выражения

Листинг 5.3. Упрощение выражения с подстановкой значения переменных

Упрощение выражений, содержащих числа, производится по-разному, в зависимости от наличия в числах десятичной точки. Если она есть, то выполняется непосредственное вычисление выражения (листинг 5.4).

Листинг 5.4. У прощение выражения с числами

5.2.2. Разложение выражений (Expand)

Операция символьного разложения, или расширения, выражений противоположна по смыслу операции упрощения. В ходе разложения раскрываются все суммы и произведения, а сложные тригонометрические зависимости разлагаются с помощью тригонометрических тождеств. Разложение выражений производится путем выбора команды Symbolics / Expand (Символика / Разложить) либо использованием вместе с оператором символьного вывода ключевого слова expand. Применение операции разложения было подробно рассмотрено в разд. 5.1 (см. рис. 5.3—5.6 и листинг 5.1).

5.2.3. Разложение на множители (Factor)

Разложение выражений на простые множители производится при помощи команды Symbolics / Factor (Символика / Разложить на множители) (рис. 5.8) либо использованием вместе с оператором символьного вывода ключевого слова factor (листинг 5.5). Эта операция позволяет разложить полиномы на произведение более простых полиномов, а целые числа — на простые сомножители. Применяя команду меню, не забывайте перед ее вызовом выделить все выражение или его часть, которую планируете разложить на множители.

Рис. 5.8. Разложение выражения на множители

Листинг 5.5. Примеры разложения на множетели

5.2.4. Приведение подобных слагаемых (Collect)

Чтобы привести подобные слагаемые полинома с помощью меню (рис. 5.9):

В результате появится строка с результатом приведения подобных слагаемых (нижняя строка на рис 5 9).

Рис. 5.9. Приведение подобных слагаемых

Чтобы привести подобные слагаемые с помощью оператора символьного вывода (листинг 5.6):

После ключевого слова collect допускается задание нескольких переменных через запятую В этом случае, что иллюстрируется последней строкой листинга 5.6. приведение подобных слагаемых выполняется последовательно по всем переменным

Листинг 5.6. Приведение подобных слагаемых по разным переменным

5.2.5. Коэффициенты полинома (Polynomial Coefficients)

Если выражение является полиномом относительно некоторой переменной х, заданным не в обычном виде а01х+а2х2+..., а как произведение других, более простых полиномов, то коэффициенты а012 легко определяются символьным процессором Mathcad. Коэффициенты сами могут быть функциями (подчас, довольно сложными) других переменных.

Рис. 5.10. Вычисление коэффициентов полинома

Чтобы вычислить полиномиальные коэффициенты в выражении при помощи меню (рис. 5 10):

В результате под выражением появится вектор, состоящий из полиномиальных коэффициентов. Первым элементом вектора является свободный член а0, вторым — а1, и т. д.

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

Чтобы вычислить полиномиальные коэффициенты с помощью оператора символьного вывода:

Примеры вычисления коэффициентов полинома приведены в листингах 5.7 и 5.8. Листинг 5.7 показывает расчет коэффициентов для разных аргументов. Последний листинг демонстрирует возможность определения коэффи-щентов не только для отдельных переменных, но для более сложных выражений, входящих в рассматриваемую формулу в качестве составной части.

Листинг 5.7. Вычисление коэффициентов полинома

Листинг 5.8. Вычисление полиноминальных коэффициентов для простой переменной и выражения

5.2.6. Ряды и произведения

Чтобы вычислить символьно конечную или бесконечную сумму или произведение:

Примеры численного и символьного вычисления рядов и произведений приведены в листингах 5.9 и 5.10.

Листоин 5.9. Символьные и численные расчеты рядов

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

5.2.7. Разложение на элементарные дроби (Convert to Partial Fractions)

Чтобы разложить сложную дробь на более простые дроби, следует либо выполнить команду Symbolics / Variable / Convert to Partial Fractions (Символика / Переменная / Разложить на элементарные дроби) (рис. 5.11), либо указать ключевое слово parfrас (листинг 5.11). Применяя первый способ (меню), не забывайте перед выбором его команды выделить переменную, по которой будет производиться разложение, а если используется второй способ (с оператором символьного вывода), то имя переменной следует указать после ключевого слова parfгас. В общем, последовательность действий при разложении на дроби та же самая, что и обычно (см., например, разд. 5.2.4).

Рис. 5.11. Разложение сложной дроби на элементарные дроби

5.2.8. Подстановка переменной (Substitute)

Очень удобная возможность символьных вычислений — это операция подстановки значения переменной в выражение. При помощи меню подстановка производится следующим образом (рис. 5.12):

Результат этих действий иллюстрируется нижней строкой в документе на рис. 5.12.

Рис. 5.12. Подстановка значения переменной

Для осуществления той же операции в совокупности с оператором символьного вывода используйте ключевое слово substitute, которое вставляется в документ одноименной кнопкой на панели Symbolic (Символика). После ключевого слова substitute необходимо ввести в местозаполнители логическое выражение, показывающее, какую именно переменную какой формулой следует заменить (листинг 5.12).

Листинг 5.12. Подстановка значения переменной

5.2.9. Матричная алгебра

Символьный процессор Mathcad позволяет аналитически выполнять самые разные матричные вычисления. Помня о том, что большинство операций и встроенных функций осуществляются над матрицами точно так же, как над обычными числами, к матричным вычислениям можно применять рассмотренную выше команду упрощения (Simplify) из меню символьных вычислений.

Кроме того, имеется ряд специфичных матричных операций, которые можно организовать либо с помощью пункта меню Symbolics / Matrix (Символика / Матрица), либо с помощью нескольких кнопок на панели Symbolic (Символика), относящихся к матрицам (см рис. 5.2). Это следующие матричные операции.

Выполняются действия с матрицами в той же последовательности, что и рассмотренные символьные операции со скалярными переменными. Перед их применением не забывайте выделить в выражении матрицу, к которой будет относиться операция.

5.3. Математический анализ

Наиболее ярким проявлением возможностей символьного процессора в Mathcad являются аналитические вычисления пределов, производных, интегралов и разложений в ряд, а также решение алгебраических уравнений. Все эти операции при выполнении их посредством меню Symbolics (Символика) находятся в его подменю Variable (Переменная). Соответственно, требуется предварительное выделение в выражении переменной, относительно которой будет совершаться операция Для выделения переменной достаточно поместить ее между линиями ввода, но для большей наглядности лучше выделить ее черным цветом путем протаскивания указателя мыши через нужную часть выражения.

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

Символьный поиск предела функции описан в разд "Вычислительные операторы" гл 3)

5.3.1. Дифференцирование (Differentiate)

Чтобы аналитически продифференцировать выражение по некоторой переменной, выделите в нем эту переменную и выберите команду Symbolics / Variable /Differentiate (Символика/ Переменная /Дифференцировать) (рис. 5.13).

Рис. 5.13. Дифференцирование по переменной

В результате в следующей строке за выражением появится значение ее производной. Для того чтобы найти вторую производную, повторно примените эту последовательность действий, но уже к полученному результату дифференцирования. Так же находятся и производные высших порядков.

5.3.2. Интегрирование (Integrate)

Для вычисления неопределенного интеграла от некоторого выражения по определенной переменной выделите в выражении переменную и выполните команду Symbolics / Variable / Integrate (Символика / Переменная / Интегрировать) (рис. 5.14). Вычисленное аналитическое представление неопределенного интеграла появится ниже. При этом результат может содержать как встроенные в Mathcad функции (см. гл. 10 и приложение 3), так и другие спецфункции, которые нельзя непосредственно рассчитать в Mathcad, но символьный процессор "умеет" выдавать их в качестве результата некоторых символьных операций.

Более подробную информацию о символьном решении алгебраических уравнений, дифференцировании и интегрировании (с применением оператора символьного вывода), включая вычисление производных высших порядков, определенных кратных интегралов, можно найти в части III этой книги (см гл 7)

Рис. 5.14. Интегрирование по переменной

5.3.3. Разложение в ряд (Expand to Series)

С помощью символьного процессора Mathcad возможно получить разложение выражения в ряд Тейлора по любой переменной х в точке х=о, т. е. представить выражение в окрестности точки х суммой вида a0+a1x+a2x2+a3x3+... Здесь а1— некоторые коэффициенты, не зависящие от х, но, возможно, являющиеся функциями других переменных, входящих в исходное выражение. Если выражение имеет в точке х=о особенность, то * соответствующее разложение называют рядом Лорана.

Чтобы разложить выражение в ряд*

Результат разложения появится под выражением (рис. 5.17).

Не забывайте, что разложение строится только в точке х=о Чтобы получить разложение в другой точке х=а, можно, к примеру, подставить вместо переменной х значение х-а (см. разд 52.8).

Рис. 5.15. Подготовка выражения для разложения в ряд по переменной х

Рис. 5.16. Разложение в ряд Тейлора

Рис. 5.17. Результат разложения в ряд Тейлора

Для разложения в ряд альтернативным способом, с помощью оператора символьного вывода, используйте ключевое слово series, вставляя его одноименной кнопкой панели Symbolic (Символика) После ключевого слова series, через запятую, указывается имя переменной, по которой производится разложение, и порядок аппроксимации (листинги 5.13. и 5.14.) Сравнение функции и ее разложений в ряды с разными порядками аппроксимации (для k=b=i) иллюстрируется рис 5.18. Видно, что разложение в ряд хорошо работает в окрестности точки х=о, а по мере удаления от нее все сильнее и сильнее отличается от функции

Листинг 5.13. Разложение выражения в ряд с разным порядком аппроксимации

Листинг 5.14.Разложение выражения в ряд по разным переменным

Рис. 5.18. Функция и ее разложения в ряды Тейлора

5.3.4. Решение уравнений (Solve)

С помощью символьного процессора можно вычислить аналитически значение переменной, при котором выражение обращается в ноль. Для этого:

Подробная информация о символьном решении алгебраических уравнений изложена в части III (см. гл. 8). В частности, там рассказано о возможности решения систем уравнений и задании уравнений в привычной для нас форме логического равенства.

Рис. 5.19. Символьное решение уравнения

5.4. Интегральные преобразования

Интегральные преобразования, по определению, ставят в соответствие некоторой функции f (х) другую функцию от другого аргумента F(w). Причем это соответствие f(x)->F(w) задается интегральной зависимостью. Символьный процессор Mathcad позволяет осуществлять три вида интегральных преобразований функций — преобразование Фурье, Лапласа и Z-преобра-зование. Наряду с прямыми преобразованиями, имеется возможность совершать любое из этих трех обратных преобразований, т. е. F (w) ->f (x).

Выполняются все символьные интегральные преобразования аналогично уже рассмотренным операциям. Для вычисления преобразования выражения выделяется переменная, по которой будет осуществляться преобразование, и затем выбирается соответствующий пункт меню. Преобразования с применением оператора символьного вывода используются с одним из соответствующих ключевых слов, вслед за которым требуется указать имя нужной переменной.

Приведем примеры символьного расчета каждого из трех интегральных преобразований.

5.4.1. Преобразование Фурье (Fourier)

Преобразование Фурье представляет функцию f (х) в виде интеграла по гармоническим функциям, называемого интегралом Фурье:

Рис. 5.20. Расчет Фурье-преобразования при помощи меню

Аналитический расчет преобразования Фурье при помощи меню показан на рис. 5.20. В листинге 5.15 приведены два примера вычисления прямого преобразования Фурье с применением ключевого слова fourier и оператора символьного вывода —>. Листингом 5.16 иллюстрируется обратное преобразование Фурье одной из функций предыдущего листинга.

В Mathcad преобразование Фурье можно вычислить и с помощью численного процессора, использующего популярный алгоритм БПФ (см. разд. "Преобразование Фурье" гл. 14).

Листинг 5.16. Обратное преобразование

5.4.2. Преобразование Лапласа (Laplace)

Преобразованием Лапласа называют интеграл от f (х) следующего вида:

F(s) = J f (х) - exp (-sx) dx.

Рассчитывается преобразование Лапласа совершенно аналогично Фурье-преобразованию (см. предыдущий раздел). Примеры преобразования Лапласа приведены в листинге 5.17.

Листинг 5.17. Прямое преобразование Лапласа

5.4.3. Z-преобразование (Z)

Z-преобразование функции f(x) определяется через бесконечную сумму следующего вида.

Пример Z-преобразования приведен в листинге 5.18.

Листинг 5.18. Прямое и обратное Z-преобразование.

5.5. Дополнительные возможности символьного процессора

Выше в этой главе были разобраны основные приемы символьных вычислений в Mathcad. Они, как правило, были показаны на простых примерах, которые иллюстрировали ту или иную символьную операцию. Тем не менее, при проведении разнообразных (и численных тоже) расчетов в Mathcad возможности символьного процессора можно использовать более эффективно. Отметим некоторые из них.

5.5.1. Применение функций пользователя

При проведении символьных вычислений с оператором символьного вывода функции пользователя и переменные, определенные ранее в документе Mathcad, воспринимаются символьным процессором корректно. Таким образом, имеется мощный аппарат включения символьных расчетов в программы пользователя. Примеры применения функции пользователя приведены в листингах 5.19 и 5.20. Сравните последние строчки этих листингов. Несмотря на их идентичность слева от знака символьного вывода, полученные результаты потличаются. Это связано с тем, что в листинге 5.20 предварительно переменной х присвоено значение 4. Поскольку значения переменных влияют на символьные вычисления, то результат учитывает подстановку вместо х числа 4.

Листинг 5.19. Функция пользователя в символьных вычислениях

Листинг 5.20. Значения переменных влияют на результат символьных вычислений.

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

Используйте меню Symbolics (Символика), если требуется "сиюминутно" провести некоторые аналитические действия с выражением и получить ответ в общем виде, не учитывающем текущие значения переменных, входящих в выражение.

5.5.2. Получение численного значения выражения

С помощью символьного процессора можно рассчитать численное значение выражения (действительное или комплексное). Иногда такой путь представляется более удобным, чем применение численного процессора (т. е. знака обычного равенства). Чтобы рассчитать значение некоторого выражения (рис. 5.21), выберите команду Symbolics/ Evaluate/ Symbolically (Символика / Вычислить / Символьно), либо пункт Symbolics / Evaluate / Floating Point (Символика / Вычислить / С плавающей точкой). В последнем случае Вам будет предложено с помощью диалога Floating Point Evaluation (Вычисления с плавающей точкой) задать точность вывода. В итоге применения данных команд Mathcad заменяет символьные результаты, где это возможно, значениями в виде чисел с плавающей точкой.

Рис. 5.21. Вычисление выражения с плавающей точкой

Еще один пункт меню Symbolics / Evaluate / Complex (Символика / Вычислить / Комплексно) позволяет представить выражение в виде а+b-i.

Аналогичные по действию ключевые слова float и complex можно использовать в документах, вводя их с панели Symbolic (Символика). Ключевое слово float применяется вместе со значением точности вывода результата с плавающей точкой (листинг 5.21). С помощью слова complex можно преобразовывать выражения как в символьном виде, так и с учетом численных значений, если они были ранее присвоены переменным (несколько примеров приведено в листинге 5.22).

Листинг 5.21. Вычисление выражения с плавающей точкой

Листинг 5.22. Комплексные преобразования выражений

5.5.3. Последовательности символьных команд

Символьные вычисления допускается проводить с применением цепочек из ключевых слов. Для этого ключевые слова, соответствующие последовательным символьным операциям, должны быть введены по очереди с панели Symbolic (Символика). Принцип организации цепочек символьных вычислений очень похож на применение встроенного языка программирования Mathcad (см. следующую главу). Несколько примеров использования последовательности символьных операторов приводится в листингах 5.23 и 5.24.

Последовательности символьных команд допускают введение дополнительных условий в расчеты, например таких, как ограничение на действительную или комплексную форму результата. Это делается с помощью ключевого слова assume. Более подробную информацию читатель найдет в справочной системе Mathcad.

Листинг 5.23. Фурье-преобразование, разложение в ряд с заданной точностью

Листинг 5.24. Z-првобразованив и разложение на простые дроби

Hosted by uCoz