Иллюстрированный самоучитель по Mathematica

         

Раскрытие и расширение выражений — функции класса Expand


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

(а -b)2 = (а - b) (а - b)

можно представить как

a2-2ab + b2



Разумеется, такое соответствие существует далеко не всегда. К примеру, выражение в виде числа 1 вовсе не является представлением только выражения sin(X) 2 + cos(x) 2 .

Ниже представлены основные функции, производящие раскрытие и расширение выражений:

  • ComplexExpand[expr] — раскрывает ехрг, полагая все переменные вещественными;
  • ComplexExpand [expr, {x1, х2,...}] — раскрывает ехрг, считая переменные xi комплексными;
  • FunctionExpand [expr] — раскрывает выражения ехрг, содержащие специальные функции;
  • Expand [ехрг ] — раскрывает произведения и положительные целые степени в ехрг;
  • Expand [expr, patt] — выполняет расширение только для тех элементов ехрг, которые содержат соответствующие шаблону patt члены;
  • Exp_andAll [expr] — раскрывает все произведения и целочисленные степени в любой части ехрг;
  • ExpandAll [expr, patt] — исключает из операции расширения те части ехрг, которые не содержат соответствующие шаблону patt члены;
  • ExpandDenominator [expr] — раскрывает произведение и степени, которые присутствуют в выражении ехрг в роли знаменателей;
  • ExpandNumerator [expr] — раскрывает произведения и степени в числителе выражения ехрг;
  • PowerExpand[expr] — раскрывает вложенные степени, степени произведений, логарифмы от степеней и логарифмы от произведений. Осторожно используйте PowerExpand, так как эта функция не реагирует на разрывный характер выражения ехрг.

Приведем примеры операций расширения выражений с помощью функции Expand:

Expand[(х - а)*(х - b)*(х - с)]

-abc+ abx + acx+bcx-ax2- bx2-cx2 + x3

Simplify[%]

-(а-х) (-b+х) (-с + х)

Expand!(Sin[x]+Cos[x])/(Cos[x]*Sin[x])]


Csc[x] + Secfx]

Simplify[%]

Sirrplfy[Csc[x] + Sec[x] ]

Expand[2*Cos[x]^2,Trig-> True]

2Cos[x]2

Simplify[%]

l+Cos[2x]

Expand[Sin[x]^2+Cos[x]^2]

Cos[y]2+Sin[x]2

Expand[Sin[x]^2+Cos[x]^2,Trig-> True]

1- Cos[x]2/2 +Cos [у]2/2 +Sin[x]2/2 -Sin[y]2/2

Simplify[%]

1/2 (2-Cos[2x] + Cos[2y])

В этих примерах полезно обратить внимание на то, что далеко не всегда последовательное применение функций Expand и Simplify дает исходное выражение. Гораздо чаще получается новое выражение, порой представляющее ценность. При операциях с тригонометрическими выражениями нередко нужно использовать опцию Trig->True, намечая тригонометрический путь решения. В противном случае может быть просто выдан отказ от выполнения операции Expand с заданным выражением, которое будет просто повторено в ячейке вывода.

Приведем примеры использования других функций расширения выражений:

ExpandAll[Sin[2*Cos[x]], Trig -> True]

Cos [Cos [x] + ISin[x] ] Sin[Cos[x] - ISin[x] ] +

Cos [Costx] - ISintx] ] Sin[Cos[x] + ISin[x] ] Simplify[%]

Sin [ 2 Cos [x]]

ExpandNumerator[(1 + x)^2/х]

1 + 2 x + x2/x

ExpandDenominator[(1 - x)^2/(l + x)^2]

(1-х)2/1 + 2 x + x2

ComplexExpand[Sin[a + I*b]]

Cosh[b] Sin [a] + I Cos [a] Sirihfb]

ComplexExpand[ (a. + b I) / (x + d I) ]

-lad/Abs[Id+x]2+bd/Abs[Id+x]2 + ax/Abs[Id + x]2 +Ibx/Abs[Id+x]2

Simplify[%]

(-Ia + b) (d + Ix)/^bstld+x]2

PowerExpand[Sqrt[a^2*b*c]]

aSQRT(b)SQRT(c)

FunctionExpand[Gamma[4, x]]

E-xx3+ 3 (Fxx2+ 2 (E-x+ E-xx))

FunctionExpand[Beta[4, 2 + x]]

6/(2 + x) (3+x) (4 + x) (5 + x)

FunctionExpand[Zeta[3, 2 + x] ]

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

Функция приведения Collect

К операциям, расширяющим выражения, относится также функция Collect:

  • Collect[expr, x]— выполняет приведение общих членов выражения по степеням переменной х;
  • Collect [expr, {x1, x2, ...}]— выполняет приведение общих членов выражения по степеням переменных xl, х2, ...
Эта операция особенно полезна, если результат можно представить в виде степенных многочленов.


Проиллюстрируем это следующими примерами.

Ввод (In)

Вывод (Out)

Collect [%, x]

-5x+5x 2 -x 3 + x 4

expr = (5 + x ^ 2) * (x- 1) *x (-1 + x) x(5 + x 2 )
Collect [a *x ^ 2 +b*x*y+c*y+d*y ^ 2, y] ax + (c+ bx) y+ dy 2
Collect [a *x ^ 2+b*x*y + c*y+d*y ^ 2, x] ax + cy+ bxy+ dy 2
Collect[ (x - 1) * (x - 2) * (х^2 - 9) , x] -18-27х-7х 2 -Зх 3 + х 4
Следующий пример показывает применение функции Collect к выражению с двумя переменными:

Collect[(х-1)*(у-3)*(х-2)*(у-2)*(х-1),у,х]

-12.+ 30х-24х2+ 6х3 + (10-25х + 20Х2- Sx3) y+

(-2+ 5х-4х2 + х3) у2

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



Содержание раздела