Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методички / TROPA V MATLAB_21.doc
Скачиваний:
153
Добавлен:
17.09.2018
Размер:
2.47 Mб
Скачать

7.3 Команды упрощения выражений – simplify, simple

Команда simplify(S) упрощает символьное выражение или массив символьных выражений S. Если упрощение невозможно, то возвращается исходное выражение.

Пример для символьного выражения:

>> syms a b x

>>simplify((a^2-2*a*b+b^2)/(a-b))

ans =

a-b

Пример для вектор-столбца символьных выражений:

>> V=[sin(x)^2+cos(x)^2; log(a*b)]

V =

[ cos(x)^2+sin(x)^2]

[ log(a*b)]

>> simplify(V)

ans =

[ 1]

[ log(a*b)]

Возможности проведения упрощений с помощью команды simplify в Symbolic не обладают возможностями системы Maple в полной мере в связи с отсутствием опций, определяющих путь упрощения. Дополнительные возможности упрощения обеспечивает команда simple.

Команда simple(S) выполняет различные алгебраические преобразования символьного выражения S и выводит как промежуточные результаты, так и самый короткий результат. В модификации [R,HOW] = simple(S) промежуточные результаты не выводятся. Результат упрощений содержится в R, а в HOW указывается выполняемое преобразование. Следующие примеры иллюстрируют работу функции:

>> syms x

>> [R,HOW]=simple(cos(x)^2+sin(x)^2)

R =

1

HOW =

combine

>> [R,HOW]=simple(2*cos(x)^2-sin(x)^2)

R =

3*cos(x)^2-1

HOW =

simplify

>> [R,HOW]=simple(cos(x)^2-sin(x)^2)

R =

cos(2*x)

HOW =

combine

Существует более короткая модификация [R] = simple(S):

>> [R]=simple(cos(x)^2-sin(x)^2)

R =

cos(2*x)

7.4 Команда расширения выражений – expand

Команда expand(S) расширяет символьные выражения массива S. Рациональные выражения она раскладывает на простые дроби, полиномы – на полиномиальные выражения и т. д. Функция работает со многими алгебраическими и тригонометрическими функциями.

Примеры:

>>syms a b x

>>S=[(x+2)*(x+3)*(x-4),sin(2*x)];

>>expand(S)

ans =

[ x^3+x^2-14*x-24, 2*sin(x)*cos(x)]

>>expand(sin(a+b))

ans =

sin(a)*cos(b)+cos(a)*sin(b)

>>expand((a+b)^3)

ans =

a^3+3*a^2*b+3*a*b^2+b^3

7.5 Разложение выражений на простые множители – команда factor

Команда factor(S) поэлементно разлагает символьные выражения массива S на простые множители, а целые числа – на произведение простых чисел.

Примеры:

>>x=sym('x');

>>factor(x^7-1)

ans =

(x-1)*(x^6+x^5+x^4+x^3+x^2+x+1)

>>factor(sym('123456789'))

ans =

(3)^2*(3803)*(3607)

Пусть требуется найти определитель D (команда det) и обратную матрицу A-1 (команда inv) символьной матрицы

A = .

>> syms a b

>> A=[a b;a^2 b^2]

A =

[ a, b]

[ a^2, b^2]

>> D=det(A)

D =

a*b^2-b*a^2

>> factor(D)

ans =

-a*b*(-b+a)

>> A1=inv(A)

A1 =

[ -b/a/(-b+a), 1/a/(-b+a)]

[ a/b/(-b+a), -1/b/(-b+a)]

7.6 Приведение подобных членов – команда collect

Команда collect(S, v) работает с символьными полиномами S нескольких переменных, где v – одна из переменных полинома. Эта функция возвращает разложение полинома S по степеням v (S может быть массивом полиномов).

Примеры:

>>syms x y

>>S=[x^3*y^2+x^2*y+3*x*y^2,x^4*y-y*x^2];

>>collect(S,x)

ans =

[ x^3*y^2+x^2*y+3*x*y^2, x^4*y-x^2*y]

>>collect(S,y)

ans =

[ (x^3+3*x)*y^2+x^2*y, (x^4-x^2)*y]

7.7 Обеспечение подстановок – команда subs

Одной из самых эффективных и часто используемых операций символьной математики является операция подстановки. Она реализуется с помощью команды subs со следующими формами записи:

subs(S) заменяет в символьном выражении S все переменные их символьными значениями, которые берутся из вычисляемой функции или рабочей области среды MATLAB;

subs(S, NEW) заменяет все свободные символьные переменные в S из списка NEW;

subs(S, OLD, NEW) заменяет OLD на NEW в символьном выражении S. При одинаковых размерах массивов OLD и NEW замена идет поэлементно. Если S и OLD – скаляры, а NEW – числовой массив или массив ячеек, то скаляры расширяются до массива результатов.

Примеры:

>>syms a b x y;

>>subs(x-y,y,1)

ans =

x-1

>>subs(sin(x)+cos(y),[x y],[a b])

ans =

sin(a)+cos(b)

Подстановка вместо переменной ее числового значения приводит к вычислению символьной функции от значения аргумента, например:

>> s=sym('x^(x+1)');

>> f=subs(s,'x',1.5)

f =

2.7557

Число можно заменить его символьным представлением и затем найти значение функции с произвольной точностью при помощи команды vpa:

>> f=subs(s,'x','1.5')

f =

(1.5)^((1.5)+1)

>> vpa(f,40)

ans =

2.7556759606310753604719445840441

Соседние файлы в папке Методички