Выберите syms или sym Функция
В Symbolic Math Toolbox™ можно объявить символьные объекты с помощью любого syms или sym . Эти две функции концептуально отличаются.
- syms функция создает символьный объект, который автоматически присвоен переменной MATLAB® с тем же именем.
- sym функция относится к символьному объекту, который может быть присвоен переменной MATLAB с тем же именем или другим именем.
Присвойте символьные переменные переменным MATLAB
syms функция создает переменную динамически. Например, команда syms x создает символьную переменную x и автоматически присвоения это к переменной MATLAB с тем же именем.
syms x x
x =
sym функция относится к символьной переменной, которую можно затем присвоить переменной MATLAB с другим именем. Например, команда f1 = sym(‘x’) относится к символьной переменной x и присвоения это к переменной MATLAB f1 .
f1 = sym('x')
f1 =
Создайте символьное число
Используйте syms функция, чтобы создать символьную переменную x и автоматически присвойте его переменной MATLAB x . Когда вы присваиваете номер переменной MATLAB x , номер представлен в с двойной точностью, и это присвоение перезаписывает предыдущее присвоение на символьную переменную. Класс x становится double .
syms x x = 1/33
x = 0.0303
class(x)
ans = 'double'
Используйте sym функция, чтобы относиться к точному символьному числу без приближения с плавающей точкой. Можно затем присвоить этот номер переменной MATLAB x . Класс x sym .
x = sym('1/33')
x =
class(x)
ans = 'sym'
Создайте символьную переменную с предположениями
Когда вы создаете символьную переменную с предположением, MATLAB хранит символьную переменную и ее предположение отдельно.
Используйте syms создать символьную переменную, которая присвоена переменной MATLAB с тем же именем. Вы получаете новую символьную переменную без предположений. Если вы объявляете переменную с помощью syms , очищены существующие предположения.
syms x positive syms x assumptions
ans = Empty sym: 1-by-0
Используйте sym относиться к существующей символьной переменной. Если эта символьная переменная использовалась в вашем сеансе работы с MATLAB прежде, то sym относится к нему и его текущему предположению. Если это не использовалось прежде, то sym создает его без предположений.
syms x positive x = sym('x'); assumptions
ans =
Создайте много символьных переменных
Создать много символьных переменных одновременно, с помощью syms функция более удобна. Можно создать несколько переменных в одной строке кода.
syms a b c
Когда вы используете sym , необходимо объявить переменные MATLAB один за другим и отослать их к соответствующим символьным переменным.
a = sym('a'); b = sym('b'); c = sym('c');
Создайте массив символьных переменных
Чтобы объявить символьный массив, который содержит символьные переменные как его элементы, можно использовать любой syms или sym .
Команда syms a [1 3] создает 1 3 символьный массив a и символьные переменные a1 , a2 , и a3 в рабочей области. Символьные переменные a1 , a2 , и a3 автоматически присвоены символьному массиву a .
clear syms a [1 3] a
a =
whos
Name Size Bytes Class Attributes a 1x3 8 sym a1 1x1 8 sym a2 1x1 8 sym a3 1x1 8 sym
Команда a = sym(‘a’,[1 3]) относится к символьным переменным a1 , a2 , и a3 , которые присвоены символьному массиву a в рабочей области. Элементы a1 , a2 , и a3 не создаются в рабочей области.
clear a = sym('a',[1 3])
a =
whos
Name Size Bytes Class Attributes a 1x3 8 sym
Символьная переменная во вложенной функции
Чтобы объявить символьную переменную во вложенной функции, используйте sym . Например, можно явным образом задать переменную MATLAB x в родительской функциональной рабочей области и отсылают x к символьной переменной с тем же именем.
function primaryFx x = sym('x') function nestedFx . end end
Вложенные функции делают рабочую область статической, таким образом, вы не можете динамически добавить переменные с помощью syms .
Похожие темы
- Создайте символьные числа, переменные и выражения
- Найдите символьные переменные в выражениях, функциях, матрицах
- Используйте предположения на символьных переменных
Открытый пример
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Документация Symbolic Math Toolbox
Поддержка
- MATLAB Answers
- Помощь в установке
- Отчеты об ошибках
- Требования к продукту
- Загрузка программного обеспечения
© 1994-2021 The MathWorks, Inc.
- Условия использования
- Патенты
- Торговые марки
- Список благодарностей
Для просмотра документации необходимо авторизоваться на сайте
Войти
Памятка переводчика
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.
Функция создания символьных переменных sym
Для создания символьных переменных или объектов используется также функция sym:
- • S = sym(А) — возвращает символьный объект S класса ‘sym’ для входного параметра А. Если А — строка, то будет получена символьная строка или символьная переменная, а если а — это число (скаляр) или матрица, то будут получены их символьные представления.
- • х = sym(’x’) — возвращает символьную переменную с именем ‘х’ и записывает результат в х.
- • х = sym (‘ х’, ‘ real’) — возвращает символьную переменную вещественного типа, так что conj (х) эквивалентно х.
Возможны также следующие очевидные формы применения этой функции:
alpha = sym (‘alpha’) г = sym(‘Rho’,’real’) x = sym(‘x’,’unreal’) pi = sym(‘pi’) delta = sym (‘1/10’)
Для преобразования чисел или матриц в символьную форму применяется функция sym в виде
Второй аргумент — flag — задается в следующем виде:
- • ‘ f’ — число с плавающей точкой ‘ 1. F’ *2 Л (е) или ‘ -1. F’ *2 Л (е), где F является строкой из 13 шестнадцатеричных чисел, а е — целым числом;
- • ‘ г’ — число в рациональной форме (задано по умолчанию);
- • ‘е’ — число в рациональной форме плюс оценка машинной погрешности;
- • ‘ d’ — число в расширенной десятичной форме с числом верных цифр, заданных функцией digits.
Примеры применения функции sym представлены ниже:
‘1.47ael47ael47b’*2 Л (-6)
Обратите внимание на то, что результат символьных преобразований отображается без отступа, которым сопровождается выдача иных результатов. Это позволяет сразу опознавать его как символьный, в отличие от обычных численных результатов.
Ниже представлена еще тройка примеров, демонстрирующих различия вывода обычного и символьного:
- 3 Л (1/2) » exp(l) ans =
- 2.7183 » exp(sym(1)) ans = exp (1) » pi/2 ans =
- 1.5708 » sym(pi/2) ans = pi/2
В отличие от обычного вывода в формате чисел с плавающей точкой символьный вывод старается представить числа в формате рациональных чисел и не вычисляет фундаментальные константы, например е = ехр(1), а старается представить их в точном аналитическом виде.
Символьные вычисления в Matlab
Здравствуйте, уважаемые читатели. В этой небольшой статье речь пойдет о работе с символьными переменными в Matlab. На простых примерах мы разберем преобразование символьных выражений, а также символьное дифференцирование и интегрирование.
Создание символьного выражения в Matlab
Иногда символьные выражения крайне необходимы, именно поэтому важно уметь их объявлять в Matlab. Обычно используют два способа. Первый — использование оператора syms.
syms x y;
Таким простым способом мы создали две символьные переменные. Пока они ничего не делают и не представляют какой либо ценности, но чуть позже мы увидим, что они могут быть полезны. Второй способ — использование команды sym.
f = sym('f');
При ее использовании, можно сразу задать функцию, полином или выражение:
f = sym('cos(x) + cos(y)')
Символьные выражения полезны тем, что вычисления с ними производятся без погрешностей.
Преобразования символьных выражений в Matlab
- Функция раскрытия скобок expand
Для примера зададим символьное выражение и попробуем раскрыть скобки:
>> syms x y; >> f = (x+2)*(x+3) + (y+5); >> f = expand(f) f = x^2 + 5*x + y + 11
- Функция упрощения simplify
Данная функция помогает упростить символьное выражение в Matlab. Возьмем для примера такое выражение.
>> syms x y; >> f = (x*y^3 + 2*y + x^4*y)/(y); >> f = simplify(f) f = x^4 + x*y^2 + 2
- Функция разложения на множители factor
Данная функция помогает преобразовать символьное выражение, например, в полином в Matlab. Иногда, это бывает очень важно и необходимо.
>> syms x; >> f = (x+4)^4 + x^2 + (x-2)^3; >> f = factor(f) f = x^4 + 17*x^3 + 91*x^2 + 268*x + 248
Вычисление значения символьных выражений в Matlab
Конечно, символьные выражения это интересный инструмент в Matlab, но хотелось бы находить значение этого выражения при каких-то заданных значениях переменной.
Для этого можно воспользоваться несколькими функциями. Сначала нужно заменить все переменные на число с помощью оператора subs. Затем перевести полученное выражение в числовое с помощью оператора double. Разберем пример:
>> syms x; >> f = (x^4 + 17*x^3 + 91*x^2 + 268*x) / 248; >> f = subs(f, x, 3) %заменяем все x на 3 f = 2163/248 >> f = double(f) f = 8.7218
Стоит отметить, что после выполнения оператора subs, выражение все еще остается символьным. Поэтому далее выполняется оператор double.
Если же у функции несколько переменных, то придется использовать subs несколько раз.
>> syms x y; >> f = (x+4)^4 + x^2 + (y-2)^3; >> f = double(subs(subs(f, x, 2), y, 3)) f = 1301
Символьное дифференцирование в Matlab
На нашем сайте уже были статьи по численному дифференцированию в среде Matlab, но любой численный метод может давать погрешности. А вычисление в символьном виде может быть очень полезным и точным.
Итак, символьное дифференцирование осуществляется оператором diff. При вызове функции следует указать переменную, по которой будет производиться дифференцирование.
>> f = x^4 + 17*x^3 + 91*x^2 + 268*x + 248; >> diff(f) ans = 4*x^3 + 51*x^2 + 182*x + 268
В этом примере функция зависит от одной переменной, поэтому производная считается по ней автоматически. Если нужно вычислить вторую производную:
>> f = x^4 + 17*x^3 + 91*x^2 + 268*x + 248; >> diff(f, 2) ans = 12*x^2 + 102*x + 182
Теперь посмотрим на функцию от нескольких переменных:
>> syms x y; >> f = 2 * x ^ 5 + x * y + y^3; >> diff(f, 'x') ans = 10*x^4 + y >> diff(f, 'y') ans = 3*y^2 + x
Очевидно, что после получения производных, с ними можно выполнить все действия, описанные выше.
Символьное интегрирование в Matlab
Наряду с дифференцированием, в Matlab можно выполнять символьное интегрирование. Иногда это бывает удобнее, чем численное интегрирование. Символьное интегрирование в Matlab выполняется оператором int.
Оператор выполняется практически также, как и оператор дифференцирования.
>> f = 4*x^3 + 51*x^2 + 182*x + 268; >> int(f) ans = x^4 + 17*x^3 + 91*x^2 + 268*x
Также, возможен расчет определенного интеграла:
>> f = 4*x^3 + 51*x^2 + 182*x + 268; >> int(f, 0, 4) %определенный интеграл на промежутке от 0 до 4 ans = 3872
Другие функции
В Matlab реализовано множество функций для работы с символьными вычислениями. Помимо тех, что были рассмотрены, следует выделить следующие функции:
- ezplot(f) — построение графика функции
- solve(f) — решение символьных уравнений и систем
- taylor(f) — разложение символьной функции в ряд тейлора
- limit(f) — вычисление предела
Эти и многие другие функции в Matlab имеют свои опции и параметры. Очевидно, что среда Matlab дает широкие возможности разработчику при работе с символьными вычислениями.
Заключение
На этом статья подходит к концу. Символьные вычисления в Matlab являются дополнительным инструментом разработчика, и с помощью этой статьи можно ознакомиться с этим инструментом.
Все примеры очень просты и в исходниках не нуждаются. На этом все, встретимся в следующей статье.
Поделиться ссылкой:
Научный форум dxdy
Matlab — как задать константу phi в символьном виде?
Matlab — как задать константу phi в символьном виде?
30.08.2020, 19:18
Последний раз редактировалось maximkarimov 30.08.2020, 20:03, всего редактировалось 3 раз(а).
В Матлабе есть возможность использовать «встроенные» константы в символьном виде, например:
Используется синтаксис Matlab M
pi =sym ( pi ) ;
Мне же нужно задать в символьном виде константу phi (сверхзолотое сечение), которая в «готовом» виде в Матлабе отсутствует. Как это сделать?
P.S. Численно получаю значения, используя такую функцию:
Используется синтаксис Matlab M
function [ res ] = phi
% Cверхзолотое сечение
res= ( 2 ^ ( 2 / 3 ) * ( 29 — 3 * 93 ^ ( 1 / 2 ) ) ^ ( 1 / 3 ) ) / 6 + ( 2 ^ ( 2 / 3 ) * ( 3 * 93 ^ ( 1 / 2 ) + 29 ) ^ ( 1 / 3 ) ) / 6 + 1 / 3 ;
end
Но мне нужно иметь возможность вызывать phi именно в символьном виде.
Используется синтаксис Matlab M
function [ res ] = phi
% Cверхзолотое сечение
res=sym ( ‘(2^(2/3)*(29 — 3*93^(1/2))^(1/3))/6 + (2^(2/3)*(3*93^(1/2) + 29)^(1/3))/6 + 1/3’ ) ;
end
Правда на этот вариант Матлаб немного ругался:
Используется синтаксис Matlab M
>> phi
Warning : Support of character vectors will be removed in a future release. Character vectors can be used only
for variable names and numbers. Instead , to create symbolic expressions first create symbolic variables using
‘syms’ . To evaluate character vectors and strings representing symbolic expressions, use ‘str2sym’ .
> In sym>convertExpression ( line 1581 )
In sym>convertChar ( line 1486 )
In sym>tomupad ( line 1236 )
In sym ( line 215 )
In phi ( line 3 )
( 2 ^ ( 2 / 3 ) * ( 29 — 3 * 93 ^ ( 1 / 2 ) ) ^ ( 1 / 3 ) ) / 6 + ( 2 ^ ( 2 / 3 ) * ( 3 * 93 ^ ( 1 / 2 ) + 29 ) ^ ( 1 / 3 ) ) / 6 + 1 / 3
Поэтому в итоге, следуя подсказке Матлаба, сделал вот так:
Используется синтаксис Matlab M
function [ res ] = phi
% Cверхзолотое сечение
res= ‘(2^(2/3)*(29 — 3*93^(1/2))^(1/3))/6 + (2^(2/3)*(3*93^(1/2) + 29)^(1/3))/6 + 1/3’ ;
res=str2sym ( res ) ;
end
