Сложные алгебраические и тригонометрические выражения часто могут быть приведены к эквивалентным путем упрощения. ToolBox Symbolic Math имеет целый ряд сервисных функций, предназначенных для различных преобразований символических выражений. Операции с полиномами реализуют четыре функции: collect, expand, factor, horner.
Вычисление коэффициентов при степенях независимой переменной производится с помощью функции collect. Введите полином и отобразите его в командном окне при помощи pretty:
>> p=sym('(x+a)^4+(x-1)^3-(x-a)^2-a*x+x-3');
>> pretty(p)
4 3 2
(x + a) + (x - 1) - (x - a) - a x + x - 3
Затем примените к полиному функцию collect:
>> pc=collect(p);
>> pretty(pc)
4 3 2 2 3 4 2
x + (1 + 4a)x + (-4 + 6a )x + (4 + a + 4a )x + a - 4 – a
По умолчанию в качестве независимой переменной в полиноме выбирается x, однако можно считать, что a - независимая переменная, а x входит в коэффициенты полинома, зависящего от a. Второй аргумент функции collect предназначен для указания переменной, при степенях которой следует найти коэффициенты:
>> pca=collect(p,'a');
>> pretty(pca)
4 3 2 2 3 4 3 2
a + 4xa + (-1 + 6x )a + (4x + x)a + x + (x -1)- x - 3 + x
Функция expand представляет полином суммой одночленов:
>> pe=expand(p);
>> pretty(pe)
4 3 2 2 3 4 3 2 2
x + 4ax + 6x a + 4xa + a + x - 4x + 4x - 4 + ax - a
Аргументом expand может быть не только полином, но и символическое выражение, содержащее тригонометрические, экспоненциальные и логарифмические функции:
>> pk=sym('(sin(x)+cos(x))^3+(sin(x)+cos(x))^2+(sin(x)+cos(x))')
pk =
(sin(x)+cos(x))^3+(sin(x)+cos(x))^2+(sin(x)+cos(x))
>> pk2=expand(pk);
>> pretty(pk2)
3 2 2 3 2
sin(x) + 3sin(x) cos(x) + 3sin(x)cos(x) + cos(x) + sin(x)
2
+ 2sin(x)cos(x) + cos(x) + sin(x) + cos(x)
Аргументами функций expand, collect может быть не только отдельно полином или тригонометрические, или экспоненциальные, или логарифмические функции, но и их сочетания, например:
>> p=sym('(x+a)^4+(x-1)^3+(sin(x)+cos(x))^4');
>> pretty(p)
4 3 4
(x + a) + (x - 1) + (sin(x) + cos(x))
>> p1=collect(p)
p1 =
x^4+(1+4*a)*x^3+(-3+6*a^2)*x^2+(3+4*a^3)*x+a^4-1+(sin(x)+cos(x))^4
>> p2=expand(p1)
p2 =
x^4+x^3+4*x^3*a-3*x^2+6*x^2*a^2+3*x+4*x*a^3+a^4-1+sin(x)^4+4*sin(x)^3*cos(x)+6*sin(x)^2*cos(x)^2+4*sin(x)*cos(x)^3+cos(x)^4
>> pretty(p2)
4 3 3 2 2 2 3 4 4
x + x + 4x a - 3x + 6x a + 3x + 4xa + a - 1 + sin(x)
3 2 2 3 4
+ 4sin(x) cos(x) + 6sin(x) cos(x) + 4sin(x)cos(x) + cos(x)
Символические полиномы разлагаются на множители функцией factor, если получающиеся множители имеют рациональные коэффициенты:
>> p=sym('7*x^5-56*x^4+105*x^3+140*x^2-532*x+336');
>> p1=factor(p)
p1 =
7*(x-2)*(x-3)*(x-4)*(x+2)*(x-1)
Функция factor может также представлять числа в виде произведения простых чисел
>> syms a
>> a=sym('2738470');
>> a1=factor(a)
a1 =
(2)*(5)*(7)*(19)*(29)*(71)
Обратите внимание, что обращение
>> a2=factor(2738470)
a2 =
2 5 7 19 29 71
выводит в командное окно аналогичный результат, однако переменная a1 является символьной, а переменная a2 - вещественной, в чем несложно убедиться при помощи whos:
>> whos a1 a2
Name Size Bytes Class
a1 1x1 176 sym object
a2 1x6 48 double array
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.