Основы работы в символьных переменных в системе MATLAB




 

Цель работы: изучить систему команд расширения MATLAB (Toolbox) для работы с символьными переменными Symbolic Math.

Теоретические данные:

Расширение (Toolbox) Symbolic Math предназначено для работы с математическими выражениями в символьных переменных, то есть в привычном для нас виде, когда переменная не заменяется ее числовым значением, может входить в разные функции, выражения и уравнения, а также преобразовываться в любых доступных формах с помощью известных алгебраических преобразований. Кроме того, указанное расширение дает возможность символьного интегрирования и дифференцирования, с последующей подстановкой числовых значений, упрощением и преобразованием вновь получаемых математических зависимостей.

Основные команды, используемые для работы с символьными переменными:

1. Общие операции:

- syms – создает символьные переменные упрощенным способом. Формат команды: syms vol1 vol2 …, где vol1, vol2 и т.д. – имена создаваемых символьных переменных. Для создания символьных переменных может также применяться команда sym, которая применяется в следующем формате: vol1 = sym(‘vol1’). Таким образом, в скобках, заключенное в апострофы, задается имя создаваемой переменной. Такая запись является чересчур громоздкой, поэтому рекомендуется применять упрощенную команду syms, при этом, создаваемые переменные просто перечисляются через пробел после самой команды. Ставить знак «;» после команды syms не требуется;

- pretty – выдает символьное выражение в многоуровневом представлении (в привычном нам виде). Формат записи команды: pretty(vol), где vol – имя переменной, в которой хранится символьное выражение. Например, символьное выражение:
A = (2*x+y*x*2+y^2)/(2*a+3*b) в линейной форме записи, будет преобразовано командой pretty в:

2 x + 2 y x + y

--------------------

2 a + 3 b

 

2. Решение уравнений:

- solve – решение алгебраических уравнений, в том числе их систем. Формат записи:

solve ('eqn1','eqn2',...,'eqnN','var1,var2,...,varN'), где eqn1, eqn2 и т.д. – уравнения, решения которых нужно найти.

Таким образом, в качестве аргументов этой функции используются уравнения, заключенные в апострофы и разделенные запятыми. После уравнений приводится список переменных, которые нужно определить. Если уравнение одно и содержит одну переменную указывать относительно какой переменной его решать не требуется;

- dsolve – решение дифференциальных уравнений. Формат записи:

dsolve('eqn1','eqn2',...).

3. Преобразования:

- simplify – упрощение выражения;

- expand – раскрывает все скобки в выражении;

- collect – выносит общий множитель за скобки;

- subs – подстановка числовых значений вместо символьных.

Формат записи для всех команд одинаков:

vol2 = command(vol1), где vol1 – преобразуемая переменная, vol2 – переменная, в которую будет записан результат преобразования, command – одна из указанных выше команд.

4. Вычисления:

- diff – дифференцирование выражения. Формат записи:
diff(vol1, n), где n – порядок дифференцирования;

- int – интегрирование выражения. Формат записи: int(vol1,a,b), где a и b – верхний и нижний пределы интегрирования, в случае нахождения определенного интеграла;

- limit – нахождение предела выражения. Формат записи:
limit(vol1,x,a,’ident’), где x – имя переменной которая стремится к пределу, a – численное значение, к которому стремится переменная x, ident – может принимать значения left и right, т.е. это указание, в какую сторону стремится величина x – направление для односторонних пределов.

Практическое применение:

 

Пример №1: Необходимо задать выражение A = (x*2+y^3-3*z)*3*x+4*y^3, упростить его и определить значение A в точке (1,2,1).

Выполняется следующим образом:

syms x y z

% после выполнения этой команды в рабочей области (workspace появятся три символьные переменные x, y и z

A = (x*2+y^3-3*z)*3*x+4*y^3

% результат выполнения команды:

% A =

% (6*x+3*y^3-9*z)*x+4*y^3

% показывает как выражение было занесено в переменную А. В отдельных случаях, когда возможно упростить вводимое выражение, оно будет упрощено и выдано на экран уже в упрощенном виде. Как видно из результата применения команды, все составляющие в скобке были помножены на 3.

% для дополнительного контроля можно применить команду

pretty(A)

% результат ее применения:

% 3 3

% (6 x + 3 y - 9 z) x + 4 y

A1=expand(A)

% раскрываем скобки, запоминаем результат в переменной А1

% результат: A1 = 6*x^2+3*x*y^3-9*x*z+4*y^3

A2=collect(A1)

% группируем переменные в выражении А1 и выносим общие множители за скобки. Результат: A2 = 6*x^2+(3*y^3-9*z)*x+4*y^3

x=1;y=2;z=1;

% задаем значения переменных x, y и z соответственно заданной точке (1,2,1). при этом в рабочей области появятся уже числовые переменные с соответствующими значениями.

A3=subs(A2)

% подставляем численные значения в наше выражение, получаем результат:

% A3 = 53

% Возможно присваивание численных значений только части символьных переменных выражения. Для иллюстрации этого вернем переменные x, y и z в символьный вид:

syms x y z

x=1;y=2;

A3=subs(A2)

% результат в этом случае: A3 = 62-9*z

Пример №2: Необходимо решить независимые уравнения
x+20=10, 3*x^2+2*x-10=0 и 4*x+5*x^3=-12.

Выполняется следующим образом:

syms x

1 уравнение:

solve('x+20=10')

ans =

-10

2 уравнение:

solve('3*x^2+2*x-10=0')

ans =

-1/3+1/3*31^(1/2)

-1/3-1/3*31^(1/2)

% MATLAB выдал два корня уравнения в неупрощенном виде, для их упрощения необходимо повторить ответ в командном окне (скопировать его и заново ввести в командное окно)

-1/3+1/3*31^(1/2)

-1/3-1/3*31^(1/2)

ans =

1.5226

ans =

-2.1893

3 уравнение:

solve('4*x+5*x^3=-12')

ans =

-1.1414

ans =

0.5707 - 1.3331i

ans =

0.5707 + 1.3331i

Пример №3: Необходимо решить независимые уравнения
x+y=35, 3*x^2+2*y=0 и 4*x+5*y^3=-12 относительно переменной x.

Выполняется следующим образом:

syms x y

1 уравнение:

solve('x+y=35','x')

ans =

-y+35

2 уравнение:

solve('3*x^2+2*y=0','x')

ans =

1/3*(-6*y)^(1/2)

-1/3*(-6*y)^(1/2)

3 уравнение:

solve('4*x+5*y^3=-12','x')

ans =

-5/4*y^3-3

Пример №4: Необходимо найти неопределенный интеграл и дифференциал выражения 3*a^5*sin(a).

Выполняется следующим образом:

syms a

int(3*a^5*sin(a))

ans =

-3*a^5*cos(a)+15*a^4*sin(a)+60*a^3*cos(a)-180*a^2*sin(a)+360*sin(a)-360*a*cos(a)

diff(3*a^5*sin(a))

ans =

15*a^4*sin(a)+3*a^5*cos(a)

Пример №5: Необходимо найти определенный интеграл выражения 3*a^5*sin(a), для пределов от -10 до 100.

Выполняется следующим образом:

syms a

int(3*a^5*sin(a),-10,10)

ans =

-487200*cos(10)+264720*sin(10)

% или

ans =

2.6478e+005

Пример №6: Необходимо продифференцировать выражение 3*a^5*sin(a) четыре раза.

Выполняется следующим образом:

syms a

diff(3*a^5*sin(a),4)

ans =

360*a*sin(a)+720*a^2*cos(a)-360*a^3*sin(a)-60*a^4*cos(a)+3*a^5*sin(a)

Пример №7: Необходимо получить передаточную функцию трех последовательно соединенных звеньев: , и . А также определить передаточную функцию замкнутой системы, состоящей из звеньев W1, W2 и W3 – в прямой ветви, и звена – в обратной связи, при условии отрицательной обратной связи.

Выполняется следующим образом:

syms k1 k2 k3 T1 T2 T3 p

W1=k1

W2=k2/(T1*p+1)

W3=k3/(T2*p^2+T1*p+1)

% передаточная функция последовательно соединенных звеньев:

Wraz=W1*W2*W3

Wraz =

k1*k2/(T1*p+1)*k3/(T2*p^2+T1*p+1)

pretty(Wraz)

k1 k2 k3

--------------------------------------

(T1 p + 1) (T2 p + T1 p + 1)

% передаточная функция замкнутой системы:

Wo=p

Wz=Wraz/(1+Wraz*Wo)

Wz =

k1*k2/(T1*p+1)*k3/(T2*p^2+T1*p+1)/(1+k1*k2/(T1*p+1)*k3/(T2*p^2+T1*p+1)*p)

pretty(Wz)

 

k1 k2 k3

-----------------------------------------------------------------

2 / k1 k2 k3 p \

(T1 p + 1) (T2 p + T1 p + 1) |1 + -------------------------------------|

| 2 |

\ (T1 p + 1) (T2 p + T1 p + 1)/

Контрольные вопросы.

 

1. Для чего предназначено расширение MATLAB Symbolic Math?

2. Что делает команда syms?

3. Для чего предназначена команда int?

4. Каким образом можно получить производную выражения произвольного порядка. Напишите формат команды.

5. Каким образом можно получить определенный интеграл выражения. Напишите формат команды.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-05-21 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: