Смекни!
smekni.com

«Система mathematica 4» (стр. 4 из 7)

С точки зрения простоты выражений они делятся на недостаточно простые и достаточно простые выражения. Недостаточно простые выражения таят в себе всевозможные «излишества»: сокращаемые общие члены, лишние переменные и функции, полиномы со степенями, допускающими понижение, и т. д. Это затрудняет качественный анализ выражений и может даже приводить к неоднозначным и даже неверным результатам.

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

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

Для упрощения выражений используется функция Simplify [ехрг]. Она исполняет последовательность алгебраических преобразований над выражением ехрг и возвращает простейшую из найденных форм (обычно это бывает нормальная форма выражения).

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

Операция Simplify часто выполняется по умолчанию. Например, это обычно происходит при вычислении выражений, примеры чего приводились выше. Несомненно, это одна из наиболее важных и часто применяемых операций компьютерной алгебры.

Вообще говоря, понятие упрощения математических выражений не является однозначным. К примеру, некоторые пакеты символьной математики упрощают sin(x)/cos(x) к единой математической функции tan(x), тогда как другие упрощают tan(x) к sin(.r)/cos(.r), считая, что функции sin(x) и cos(.r) более простые, чем функция tan(.r). Эта неоднозначность часто путает неопытных пользователей, пытающихся проверить символьные системы примерами из справочников, — вполне возможно, что авторы их придерживались несколько иного подхода к упрощению выражений, чем разработчики той или иной математической системы.

Функции преобразования тригонометрических выражений

Хотя представленные выше функции иногда применимы для тригонометрических выражений, для последних есть ряд специальных функций, дающих более надежные результаты в ходе преобразований тригонометрических функций. В названии этой группы функций имеется слово Trig. Начнем с функции Trig-Expand [expr ], которая обеспечивает расширение выражения ехрг, содержащего тригонометрические и гиперболические функции.

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

TrigToExp [expr] — преобразует тригонометрические выражения к экспоненциальному виду;

ExpToTrig [expr] — преобразует экспоненциальные выражения в тригонометрические.

Приведем еще две функции:

TrigFactor [expr] — раскладывает на простые множители тригонометрическое выражение ехрr;

TrigFactorList [expr] — раскладывает тригонометрическое выражение ехрг на списки с термами выражения.

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

Основные операции над полиномами

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

Р(х) = а0 + а1х + а2 х2 + а3 х3 + ... + аnхn.

Хотя термин «полином» не очень прижился в отечественной математической литературе, мы оставляем его ввиду краткости и ради лучшего понимания синтаксиса функций системы, поскольку слова poly и Polynomial входят в параметры и имена многих функций. При этом полиномы мы будем кратко обозначать как poly или pi (здесь i — индекс или порядковый номер полинома).

Над полиномами можно выполнять обычные арифметические операции: сложение, вычитание, умножение и деление. Это иллюстрируют следующие примеры (здесь р1 и р2 — полиномы от одной переменной х):

р1 := х^3 + 2*х^2 + 3*х + 4

р2 := х^2 - 1

р1 + р2

3+3х+3х2+х3

р1 - p2

5+3х+х2+х3

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

Если один полином делится на другой (это бывает далеко не всегда), то для получения результата надо использовать функцию Simplify. В общем случае при делении полиномов может оставаться остаток. Функция, обеспечивающая деление полиномов и вычисляющая остаток, описана ниже.

Функции для расширенных операций с выражениями

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

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

Apart [expr] — переписывает рациональное выражение expr в виде суммы членов с минимальными знаменателями;

Apart [expr, var] — аналогична Apart [expr], но все переменные, кроме var, интерпретируются как константы.

Следующие функции позволяют судить о размерности выражений:

Depth [expr ] — возвращает значение, на единицу превышающее максимальное число индексов, требуемых для указания любой части выражения expr;

Dimensions [expr] — возвращает список размерностей выражения expr;

Dimensions [expr, n] — возвращает список размерностей expr до уровня n.

9. Операции математического анализа

Вычисление сумм

В числе операций математического анализа прежде всего надо отметить суммы

Сумма от i=min до imax по fi

В этих операциях индекс i принимает целочисленные значения от минимального (начального) imin до максимального (конечного) imax с шагом, равным +1.

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

Для вычисления сумм в системе Mathematica предусмотрена функция Sum, используемая в ряде форм:

Sum [f, {i, imax}] — вычисляет сумму значений f при изменении индекса i от 1 до imax с шагом +1;

Sum[f,{i, imin, imax}]—вычисляет сумму значений f при изменении индекса i от минимального значения i=imin до максимального i=imax с шагом +1;

Sum[f, {i, imin, imax, di}]— вычисляет сумму значений f при изменении управляющей переменной вещественного типа от минимального значения i=imin до максимального i=imax с шагом di;

Sum[f, {i, imin, imax}, {j, jmin, jmax},...] — вычисляет многократную сумму значений f при изменении индексов i от imin до imax с шагом +1, j от jmin до jmax с шагом +1 и т. д. (число индексов не ограничено).

Вычисление производных

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

D [ f, х ] — возвращает частную производную функции f по переменной х;

D [f, {х, n}]— возвращает частную производную n-го порядка по х;

D[f, xl, х2,...] — возвращает смешанную производную;

Dt[f, х] — возвращает обобщенную производную функции f по переменной х;

Dt [ f ] — возвращает полный дифференциал f.

Название функции из одной буквы — это явно исключение из правил. Оно выбрано осознанно, в силу массовости этой операции.

Для функции D существует опция NonConstants, которая позволяет задать список объектов, находящихся в неявной зависимости от переменных дифференцирования. По умолчанию этот список пустой. Для функции Dt имеется опция Constants, которая, наоборот, указывает символы, которые являются константами (по умолчанию их список также пуст). На практике применять данные опции приходится редко.

Существует еще одна функция, Derivative [nl, n2,...] [f ], — основная (общая) форма представления функции, полученной в результате nl-кратного дифференцирования функции f по первому аргументу, п2-кратного — по второму аргументу и т. д.

К примеру, Derivative [2] [х*у] возвращает (ху)", a Derivative [2, 3] [х*у] — соответственно, (ху)(2.3)

Следующие примеры показывают применение функции D для вычисления производной в аналитическом виде:

Производная тригонометрической функции:

D[x*Sin[x],x]

xCos[x] + Sin[x]

Производная логарифмической функции:

D[Log[3*x/4],x]

1/x

Производная степенного многочлена:

D[а*х^2+b*х+с,х]

b+ 2ах

Пятая производная от хn:

D[х^n,{х,5}]

(-4 + n) (-3+n) (-2+n) (-1+n)nх-5+n

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

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