Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Свод.doc
Скачиваний:
119
Добавлен:
08.03.2016
Размер:
2.1 Mб
Скачать

4.2. Приведение подобных членов.

Собирание (приведение) подобных членов в многочлене: collect. Параметр команды указывает, по какой переменной произвести приведение. Приведённые многочлены располагаются по степеням переменной.

> collect(3*x^3+2*x^2*y+x^3*y^2/x/y-2*x^3+4*x*y^2-x*y^2+2*x*y^4/x/y-y^3,x);

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

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

> collect((1+x^2+exp(x)-2*x*exp(x)-2*x+x^2*exp(x)), x);

collect((1+x^2+exp(x)-2*x*exp(x)-2*x+x^2*exp(x)), exp(x)); factor(%);

> y:=a*sin(x)^2+b*sin(x)+c*sin(x)*cos(x)-2*sin(x)+d*cos(x)-cos(x)+ 2*cos(x)^2: collect(y, cos(x)): collect(%, sin(x));

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

> collect((1+x^2+exp(x)-2*x*exp(x)-2*x+x^2*exp(x)),exp(x));

> factor(collect((1+x^2+exp(x)-2*x*exp(x)-2*x+x^2*exp(x)),exp(x)));

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

>

4.3. Упрощение и развёртывание.

Оператор упрощения (simplify) приводит выражение к простейшему виду, раскрывая скобки, выполняя приведение и другие алгебраические действия

> (a+b)^2+(a-b)^2; simplify(%);

Ниже - пример команды, составленной последовательным применением двух операторов.

> simplify(subs(n=3, (a+b)^n+(a-b)^n));

Оператор действует на выражения, содержащие стандартные функции.

> simplify((1+(sin(x)+cos(x))*(sin(x)-cos(x)))/sin(x));

Оператор упрощает и аргументы стандартных функций.

> simplify(exp((x^2-4)/(x-2)));

Оператор развёртывания (expand) развёртывает алгебраические выражения, раскрывая скобки, выполняя умножение, деление и другие операции.

> (a-b)*(a^2+a*b+b^2); expand(%); (a^2*b-a*b^2)/a/b; expand(%);

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

> z:=x^3+3*x^2*y+3*x*y^2+y^3; factor(z); expand(%);

Пример с комплексными числами:

> expand((a+b*I)*(a-b*I)); expand((a+b*I)^2); z:=subs([a=4, b=3],%); Re(%); Im(z);

>

4.4. Нормализация дробных выражений.

Оператор normal сокращает числитель и знаменатель дроби на наибольший общий делитель, приводит сумму дробей к наименьшему общему знаменателю и выполняет последующие упрощения.

> f1:=(x^2-y^2)/(x-y)^3; normal(f1);

> f2:=1/(x+1)+1/x+x/(x+1); f3=normal(f2);

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

> simplify(f1); simplify(f2);

В других случаях результаты нормализации и упрощения представляются по-разному.

> f4:=(tan(x)+cot(x))/sin(x)+(tan(x)+cot(x))/cos(x); normal(f4);

> simplify(f4);

>

4.5. Комбинирование выражений.

Оператор combine комбинирует (объединяет) члены выражения в сумме, произведении и степенях в один член.

> a^x*a^y; combine(%);

> combine(x^2*x^3/x);

> combine(x^3+2*x^2*y+x^3*y^2/x/y+4*x*y^2-x*y^2+2*x*y^4/x/y-y^3);

Иногда оператор expand действует обратно оператору combine.

> f1:=2*sin(x)*sin(y); combine(%); expand(%);

Иногда оператор expand возвращает исходное выражение в иной форме.

> f2:=sin(x)^2+2*sin(x)*cos(x)+cos(x)^2; combine(f2); expand(%);