Найти в Дзене
Piter Melnikov

Технология работы с символьными переменными в Matlab

В составе MATLAB есть Symbolic Math Toolbox, который служит для вычислений в символьном виде. Он позволяет выполнять преобразование математических выражений, выполнять решение задач линейной алгебры аналитического вида, дифференциального и интегрального исчисления, получение численного результата с любой точностью  и других задач. Не вдаваясь в детали построения Symbolic Math Toolbox рассмотрим на примерах технологию работы с символьными переменными и функциями. Символьные операции Декларировать символьную переменную можно двумя способами: Способ 1. С помощью команды syms. Таким способом можно объявить сразу несколько символьных переменных. Команда имеет синтаксис:
syms name1 [name2 …] [options],
где name1, [name2 …] – имена создаваемых переменных.
С помощью опции options можно указать, как интерпретировать переменные: real – для вещественных переменных, unreal – для комплексных.
Рассмотрим пример создания символьной функции. Пример 1. Требуется создать символьную функцию
Оглавление

В составе MATLAB есть Symbolic Math Toolbox, который служит для вычислений в символьном виде. Он позволяет выполнять преобразование математических выражений, выполнять решение задач линейной алгебры аналитического вида, дифференциального и интегрального исчисления, получение численного результата с любой точностью  и других задач. Не вдаваясь в детали построения Symbolic Math Toolbox рассмотрим на примерах технологию работы с символьными переменными и функциями.

Символьные операции

Декларировать символьную переменную можно двумя способами:

Способ 1. С помощью команды syms. Таким способом можно объявить сразу несколько символьных переменных. Команда имеет синтаксис:
syms name1 [name2 …] [options],
где name1, [name2 …] – имена создаваемых переменных.
С помощью опции
options можно указать, как интерпретировать переменные: real – для вещественных переменных, unreal – для комплексных.
Рассмотрим пример создания символьной функции.

Пример 1. Требуется создать символьную функцию f(x,y)=logx -y.

В командном окне Matlab введем инструкции

>> syms x y
>> f=log(x)-y

В результате их выполнения получим результат
f =log(x)-y (см. рис. 1.)

Рис. 1.
Рис. 1.

Способ 2. Объявить символьную переменную в MATLAB можно с помощью функции sym. Синтаксис функции sym:
[name] = sym( name [, options]),

Последовательность функций u=sym(x); v=sym(y); эквивалентна команде syms u v. Опция options принимает те же значения, что и в команде syms.
В отличие от команды
syms, функцию sym можно использовать не только для создания символьных функций но и выражений.

Пример 2. Требуется создать символьную функцию

-3

В командном окне Matlab запишем инструкции:
>> x=sym('x');
>> f=2*x^3+x^2
В результате их выполнения получим результат:
f = 2*x^3+x^2 (см. рис. 2.)

Рис. 2.
Рис. 2.

Заметим, что возможно создание символьной функции без предварительного объявления символьных переменных:
>> f = sym( '2*x^3-5*x^2-11*x-4' )

Таким образом нами рассмотрены оба способа для создания символьных переменных.

Вычисление значения символьной функции

Собственно здесь особенно объяснять не надо. Алгоритм очень простой:
- объявляем переменные;
- создаем символьную функцию;
- задаем нужное значение для переменной и получаем результат.

Пример 3. Вычислить значение функции

-5

при значении x=2.

Решение.
В командном окне Matlab введем инструкции
>> syms x
>> x=2;
>> vpa(2*x^3+x^2,4)

В результате их выполнения получим результат
ans = 20.

Решение уравнений и систем в символьном виде

Чтобы решить уравнение или систему уравнений заданных в символьном виде в символьном виде в MATLAB можно воспользоваться функцией solve(ex1, ex2, …,exN, var1, var2, …, varN).
Эта функция
возвращает значения переменных (ex1, ex2, …,exN), при которых соблюдаются равенства, заданные выражениями ex1, ex2, …,exN.
Рассмотрим пример применения этой функции.

Пример 4. Требуется найти корни функции (это и будет решение уравнения)

-6

Решение.
В командном окне Matlab введем инструкции
>> syms x
>> y=solve(2*x^3+x^2,x)

В результате выполнения этих инструкций получим результат (см. рис. 3).
y =
[ 0]
[ 0]
[ -1/2]

Рис. 3.
Рис. 3.

Пример 5. Решить систему уравнений

-8

Решение.

В командном окне Matlab введем инструкции
>> syms x y
>> f1=sym('2*x^2+4*y-26');
>> f2=sym('y^2-3*x+5');
>> % вывод аналитического решения
>> [x,y]=solve(f1,f2,x,y)
>> % вывод численного решения
>> [x,y]=solve(f1,f2,x,y)

Таким образом, получен результат численного решения (рис. 4):
ans =
[ 3., 2.]
[ 4.317, -2.820]
[ -3.659-1.102*i, .4113-4.018*i]
[ -3.659+1.102*i, .4113+4.018*i]

Рис. 4.
Рис. 4.