Комплектование по степеням
Функция collect (S,v) обеспечивает комплектование выражений в составе вектора или матрицы S по степеням переменной v. А функция collect (S) выполняет аналогичные действия относительно переменной, определяемой функцией findsym. Примеры применения данной функции:
>> syms х у
» S=[хА3*уА2+хА2*у+3*х*уА2 хА4*у-у*хА2];
>> collect (S,х)
ans =
[ хА3*уА2+хА2*у+3*х*уА2, хА4*у-хА2*у]
» collect(S,у)
ans =
[ (хА3+3*х)*уА2+хА2*у, (хА4-хА2)*у]
» collect(S)
ans =
[ хА3*уА2+хл2*у+3*х*уА2, хА4*у-хА2*у]
Приведение к рациональной форме
Функция [N, D] =numden (А) преобразует каждый элемент массива А в рациональную форму в виде отношения двух неприводимых полиномов с целочисленными коэффициентами. При этом N и D — числители и знаменатели каждого преобразованного элемента массива. Примеры:
» [n,d]=numden(sym(8/10) ) n =
4
d =
5
» syms x у
» [n,d]=numden(x*y+y/x) n =
у*(xA2+l)
d = x
Приведение к схеме Горнера
Функция horner(P) возвращает символьный полином или массив символьных полиномов Р, преобразованный по схеме Горнера, минимизирующей число операций умножения. Пример:
» x=sym('р');
» home г (хА5-2*хА 4-3*хА3-2*хА2-5*х-б)
ans =
-6+(-5+(-2+(-3+(-2+р)*р)*р)*р)*р
>> horner([хА3+хА2+х,(хлЗ+1)*(хА2+2)*(х+3)]) ans =
[ (1+(1+х)*х)*х, (хА3+1)*(хА2+2)*(х+3)]
Запись с подстановками
Функция
[Y, SIGMA]=subexpr(X,SIGMA) ИЛИ [Y,SIGMA]=subexpr(X,'SIGMA') преобразует символьное выражение X, обеспечивая при этом подстановку SIGMA. Для представления подвыражений используются обозначения %1, %2 и т. д.
Пример:
» t=solve ( 'а*хА3+Ь*х+с=0');
» [г,s]=subexpr(t,'s') г =
[ l/6/a*sA (1/3)-2*b/sA(1/3) ]
[ -l/12/a*sA (1/3)+b/sA(1/3)+l/2*i*3A(1/2)*(l/6/a*sA(1/3)+2*b/sA(1/3)) ]
[ -l/12/a*sA(1/3)+b/sA(1/3)-l/2*i*3A(1/2)*(l/6/a*sA(1/3)+2*b/sA(1/3)) ] s =
(-108*c+12*3A(l/2)*((4*bA3+27*cA2*a)/a)A(1/2))*aA2
Обеспечение подстановок
Одной из самых эффектных и часто используемых операций символьной математики является операция подстановки. Она реализуется функцией subs, имеющей ряд форм записи:
• subs (S) — заменяет в символьном выражении S все переменные их символьными значениями, которые берутся из вычисляемой функции или рабочей области системы MATLAB;
- • subs (S,new) — заменяет все свободные символьные переменные в S из списка new;
- • subs (S,OLD,NEW) — заменяет OLD на NEW в символьном выражении S. При одинаковых размерах массивов old и new замена идет поэлементно. Если s и old — скаляры, a new — числовой массив или массив ячеек, то скаляры расширяются до массива результатов.
Если подстановка subs (S, old, new) не меняет s, то выполняется подстановка subs (S,NEW,OLD) .
• subs (S,OLD,NEW, 0) — исключает попытку обратной подстановки. Примеры:
>> syms а b х у;
>> subs(х-у,у,1)
ans =
х—1
>> subs(sin(x)+cos(y),[х,у],[а,Ь])
ans =
sin (a)+cos(b)
>> subs(exp(а*х),a,-magic(3) )
ans =
[ exp(-8*х), [ exp(-3*х), [ exp(-4*х),
exp (—х), exp(-5*х), exp(-9*х),
exp(—6*х)] exp(-7*х)] exp (-2*х)]
Обращение функции
Часто возникает необходимость в задании функции, обратной по отношению к заданной функции f Для этого в Symbolic имеется функция обращения inverse, которая задается в двух формах:
- • g=f inverse (f) — возвращает функцию, обратную к f. Считается, что f — функция одной переменной, например 'х'. Тогда g(f (х) ) = х;
- • g=finverse (f, v) — возвращает функцию, обратную к f, относительно заданной переменной v, так что g (f (v) ) = v. Эта форма используется, если f — функция нескольких переменных.
Примеры:
>> syms х
» finverse(sinh (x))
ans =
asinh(x)
>> finverse(exp(x) )
ans =
log (x)
Суперпозиция функций
К числу часто встречающихся в символьной математике манипуляций с функциями относится суперпозиция функций, реализуемая функциями compose:
- • compose (f,g) — возвращает ДДу)), где f = fix) и g = giy). Независимые переменные х и у находятся с помощью функции findsym;
- • compose (f, g, z) — возвращает ДД г)), где f = Дх), g = giy);
- • compose (f, g, x, z) — возвращает figiz)) и при этом рассматривает х как независимую переменную для функции f Так, если f = cos(x/i), то compose (f, g, х, z) возвращает cos(g(^)/Z), a compose (f, g, t, z) возвращает cos(x/g(z));
- • compose (f, g, x, y, z) — возвращает ДД^)) и рассматривает х как независимую переменную для функции f и у как независимую переменную для функции g. Для/= cos(x/Z) и g = sin(y/w) compose (f, g, х, у, z) возвращает cos(sinU/w)//), a compose (f,g,x,u, z) возвращает cos(sin(y/^)/0.
Следующие примеры поясняют применение функции compose: syms х у z t u;
f = 1/(1 + хЛ2); g = sin(y); h = xAt; p = exp(-y/u);
compose(f,g) |
возвращает |
1/(1+sin(у)' |
'2) |
compose(f,g,t) |
возвращает |
1/ (1 + sin (t)' |
42) |
compose(h,g,x,z) |
возвращает |
sin (z) At |
|
compose(h,g,t,z) |
возвращает |
xAsin (z) |
|
compose(h, p, x, y, z) |
возвращает |
exp(-z/u)At |
|
compose(h,p,t,u,z) |
возвращает |
хЛехр(-y/z) |