X, y, z

Лабораторная работа № 6

Базовые операции символьной математики

Системы MATLAB – SIMBOLIC MATHEMATICS TOOLBOX

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

Создание символьных переменных и массивов

Первый способc помощью команды sym:

>> x=sym('x'); y=sym('y'); z=sym('z');

Второй способ с помощью команды syms:

>> syms a b c x y z;

Создание символьных матриц или массивов можно также осуществить двумя способами.

Первый способ. Определим матрицу А1 размера 3´3.

>> A1 = sym('[a1 b1 c1; d1 e1 f1; g1 h1 k1]');

>> A1 % После набора А1 нажать клавишу Enter

A1 =

[ a1, b1, c1]

[ d1, e1, f1]

[ g1, h1, k1]

Второй способ. Определим матрицу А2 размера 3´3.

>> syms a2 b2 c2 d2 e2 f2 g2 h2 k2

>> A2 = [a2 b2 c2; d2 e2 f2; g2 h2 k2];

>> A2

A2 =

[ a2, b2, c2]

[ d2, e2, f2]

[ g2, h2, k2]

Можно также определить символьные числовые матрицы и элементы:

>> Ac1=sym([1 3 7; 2 4 6; 1 7 5]); % Без апострофа

>> Ac1

Ac1 =

[ 1, 3, 7]

[ 2, 4, 6]

[ 1, 7, 5]

>> Ас2 = sym('7');

>> Ac2

Ac2 =

Определенные ранее матрицы можно, например, перемножить или сложить.

>> A11=Ac1*A1

A11 =

[ a1+3*d1+7*g1, b1+3*e1+7*h1, c1+3*f1+7*k1]

[ 2*a1+4*d1+6*g1, 2*b1+4*e1+6*h1, 2*c1+4*f1+6*k1]

[ a1+7*d1+5*g1, b1+7*e1+5*h1, c1+7*f1+5*k1]

>> A11=Ac1+A1 % Сложение числовой и символьной матрицы

A11 =

[ 1+a1, 3+b1, 7+c1]

[ 2+d1, 4+e1, 6+f1]

[ 1+g1, 7+h1, 5+k1]

>> A11=Ac1.*A1 % Поэлементное перемножение матриц одинакового размера

A11 =

[ a1, 3*b1, 7*c1]

[ 2*d1, 4*e1, 6*f1]

[ g1, 7*h1, 5*k1]

>> size(A1)

ans =

3 3

>> size(A11)

ans =

3 3

Детерминант символьной матрицы:

>> det(A1) % Без присвоения результата

ans =

a1*e1*k1-a1*f1*h1-d1*b1*k1+d1*c1*h1+g1*b1*f1-g1*c1*e1

>> D2=det(A2) % С присвоением результата ячейке под именем D2

D2 =

a2*e2*k2-a2*f2*h2-d2*b2*k2+d2*c2*h2+g2*b2*f2-g2*c2*e2

>> A1([1 2],[1 3])

ans =

[ a1, c1]

[ d1, f1]

>> det(A1([1 2],[1 3]))

ans =

a1*f1-c1*d1

Задание. В символьно-числовой матрице А11 удалить 2 столбец и 2 строку. Вычислить определитель полученной матрицы.

Выделение диагонали заданной символьной матрицы – diag.

>> A1

A1 =

[ a1, b1, c1]

[ d1, e1, f1]

[ g1, h1, k1]

>> diag(A1)

ans =

[ a1]

[ e1]

[ k1]

Создание символьной диагональной матрицы по заданной:

>> diag(diag(A1))

ans =

[ a1, 0, 0]

[ 0, e1, 0]

[ 0, 0, k1]

Примечание. К символьным матрицам возможно применение большинства команд MATLAB, которые существуют для числовых матриц. Например: rank, eig, triu, tril, inv, rref, poly.

Раскрытие скобок в символьном выражении – expand.

Пример 1.

>> w=(s+2)*(2*s-3)*(4*s^3-s+2)

w =

(s+2)*(2*s-3)*(4*s^3-s+2)

>> W=expand(w)

W =

8*s^5-26*s^3+3*s^2+4*s^4+8*s-12

Пример 2.

>> syms x y

>> expand(sin(x+y)) % Раскрытие синуса двух углов

ans =

sin(x)*cos(y)+cos(x)*sin(y)

Преобразование символьного выражения в полином с выделением коэффициентов при степенях заданных переменных – collect.

Пример 1.

>> syms x y z

>> collect(x^2*z-z^3*2*y+x^2*y+z^3*y-y*(z^3-x^2)-2)

ans =

(z+2*y)*x^2-2*z^3*y-2

Пример 2.

>> R=collect(x^2*z-z^3*2*y+x^2*y+z^3*y-y*(z^3-x^2)-2,y)

R =

(-2*z^3+2*x^2)*y+x^2*z-2

>> findsym(R)

ans =

x, y, z

Команда collect может заменять команду expand.

Пример 3.

>> Exp=expand((x-2)*(x^2+2+x)*(x-3)*(x+4))

Exp =

x^5-13*x^3+8*x^2-4*x+48

>> Col=collect((x-2)*(x^2+2+x)*(x-3)*(x+4))

Col =

x^5-13*x^3+8*x^2-4*x+48

Задание. Сравнить действие collect и expand по раскрытию выражения: (x-2)*(x+2*y)*(y+3*z+x).

Разложение символьного выражения на множители – factor.

>> factor(x^2-2*x*y+y^2)

ans =

(x-y)^2

>> factor(x^2-y^2)

ans =

(x-y)*(x+y)

Приведение к рациональной форме символьного выражения – numden. С помощью numden удобно производить алгебраические действия с дробями.

Пример. Сложение двух символьных дробей:

>> [n,d]=numden((x-y)/x+(x+y)/y)

n =

2*x*y-y^2+x^2

d =

x*y

Здесь n – числитель полученной дроби, d – знаменатель полученной дроби.

Вычисление числовых и символьных перестановок – perms.

Пример. Вывод комбинаций перестановок целых числовых значений от –1 до 1, т.е. –1, 0, 1

>> perms(-1:1)

ans =

-1 0 1

-1 1 0

0 -1 1

0 1 -1

1 0 -1

1 -1 0

Пример. Вывод комбинаций перестановок дробных числовых значений от –0.2 до – 0.1 с шагом 0.05

>> perms(-.2:.05:-.1)

ans =

-0.2000 -0.1500 -0.1000

-0.2000 -0.1000 -0.1500

-0.1500 -0.2000 -0.1000

-0.1500 -0.1000 -0.2000

-0.1000 -0.1500 -0.2000

-0.1000 -0.2000 -0.1500


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: