Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Символьные вычисления The MATLAB Notebook v1.docx
Скачиваний:
16
Добавлен:
27.03.2015
Размер:
42.88 Кб
Скачать

Упрощение и преобразование выражений

Сложные алгебраические и тригонометрические выражения нередко могут быть приведены к эквивалентным выражениям путем упрощения. ToolBox Symbolic Math имеет ряд сервисных функций, предназначенных для различных преобразо­ваний символических выражений. Пользователь может производить как стандартные операции над полиномами, так и использовать более общий алгоритм, предназначенный для упрощения выражений, которые содержат встроенные символические функции.

Операции с полиномами реализуют четыре функции:

  • collect,

  • expand,

  • horner,

  • factor.

Вычисление коэффициентов при степенях независимой переменной производится с использованием функции collect. Введите по­лином и отобразите его в командном окне при помощи pretty.

p=sym('(x+a)^4+(x-1)^3-(x-a)^2-a*x+x-3')

pretty(p)

p =

(x+a)^4+(x-1)^3-(x-a)^2-a*x+x-3

4 3 2

(x + a) + (x - 1) - (x - a) - a x + x - 3

Преобразуйте р к виду, содержащему степени х с соответствующими коэф­фициентами:

pc=collect(p);

pretty(pc)

4 3 2 2 3 4 2

x + (1 + 4 a) x + (-4 + 6 a ) x + (4 + a + 4 a ) x + a - 4 - a

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

pca=collect(p,'a');

pretty(pca)

4 3 2 2 3 4 3 2

a + 4 x a + (-1 + 6 x ) a + (4 x + x) a + x + (x - 1) - x - 3 + x

Функция expand представляет полином суммой степеней без приведения подобных слагаемых:

pe=expand(p);

pretty(pe)

4 3 2 2 3 4 3 2 2

x + 4 a x + 6 x a + 4 x a + a + x - 4 x + 4 x - 4 + a x - a

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

p=sym('x^5+13*x^4+215/4*x^3+275/4*x^2-27/2*x-18');

pf=factor(p);

pretty(pf)

1/4 (2 x + 1) (2 x - 1) (x + 6) (x + 4) (x + 3)

Упрощение выражений общего вида производится при помощи функций simple и simplify, которые основаны на разных подходах. Функция simplify реализует мощный алгоритм упрощения выражений, содержащих как тригонометрические, экспоненциальную и логарифмическую функции так и специальные. Кроме того, simplify способна преобразовывать выражения, содержащие символическое возведение в степень, суммирование и интегрирование. Алгоритм заложенный в simple, пытается получить выражение, которое представляет­ся меньшим числом символов, чем исходное, последовательно применяя все функции упрощения ToolBox.

Функция subs позволяет произвести подстановку одного выражения в дру­гое. В общем виде subs вызывается с тремя входными аргументами:

  • именем символической функции,

  • переменной, подлежащей замене,

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

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

f=sym('(a^2+b^2)/(a^2-b^2)+a^4/b^4');

f=subs(f,'a','(exp(x)+exp(-x))');

f=subs(f,'b','(sin(x)+cos(x))');

pretty(f)

2 2 4

(exp(x) + exp(-x)) + (sin(x) + cos(x)) (exp(x) + exp(-x))

---------------------------------------- + -------------------

2 2 4

(exp(x) + exp(-x)) - (sin(x) + cos(x)) (sin(x) + cos(x))