Чтобы решить математические задачи с Symbolic Math Toolbox™, задайте символические объекты, чтобы представлять различные математические объекты. В этом примере рассматривается использование следующих символических объектов:
символьные числа
символьные скалярные переменные, функции и выражения
символьные уравнения
символьные векторы и матрицы
символьные матричные переменные (с R2021a года)
Определение числа как символьного числа предписывает MATLAB® рассматривать число как точную форму вместо использования числового приближения. Для примера используйте символьное число, чтобы представлять аргумент обратной тригонометрической функции .
Создайте символьное число использование sym
, и назначить его a
.
a = sym(1/sqrt(2))
a = 2^(1/2)/2
Найдите обратный синус a
. Результатом является символьное число pi/4
.
thetaSym = asin(a)
thetaSym = pi/4
Можно преобразовать символьное число в арифметику переменной точности при помощи vpa
. Результатом является десятичное число с 32 значащими цифрами.
thetaVpa = vpa(thetaSym)
thetaVpa = 0.78539816339744830961566084581988
Чтобы преобразовать символьное число в число двойной точности, используйте double
. Для получения дополнительной информации о том, использовать ли числовую или символьную арифметику, см. «Выбор числовой или символьной арифметики».
thetaDouble = double(thetaSym)
thetaDouble = 0.7854
Определение переменных, функций и выражений как символьных объектов позволяет вам выполнять алгебраические операции с этими символьными объектами, включая упрощение формул и решение уравнений. Для примера используйте символьный скаляр переменную, функцию и выражение, чтобы представлять квадратичную функцию . Для краткости символическая скалярная переменная также называется символьной переменной.
Создайте символьную скалярную переменную x
использование syms
. Вы также можете использовать sym
чтобы создать символьную скалярную переменную. Для получения дополнительной информации о том, использовать ли syms
или sym
, см. «Выбор функции syms или sym». Задайте символическое выражение x^2 + x - 2
чтобы представлять правую сторону квадратичного уравнения и назначить его f(x)
. Идентификатор f(x)
теперь ссылается на символьную функцию, которая представляет квадратичную функцию.
syms x f(x) = x^2 + x - 2
f(x) = x^2 + x -2
Затем можно вычислить квадратичную функцию, предоставив ее входной параметр внутри круглых скобок. Для примера оцените f(2)
.
fVal = f(2)
fVal = 4
Можно также решить квадратичное уравнение . Использование solve
чтобы найти корни квадратичного уравнения. solve
возвращает два решения как вектор двух символьных чисел.
sols = solve(f)
sols = -2 1
Определение математического уравнения как символьного уравнения позволяет вам найти решение уравнения. Для примера используйте символьное уравнение, чтобы решить тригонометрическую задачу .
Создайте символьную функцию g(t)
использование syms
. Назначьте символическое выражение 2*sin(t)*cos(t)
на g(t)
.
syms g(t) g(t) = 2*sin(t)*cos(t)
g(t) = 2*cos(t)*sin(t)
==
Оператор и присвоение математического отношения g(t) == 1
на eqn
. Идентификатор eqn
является символьным уравнением, которое представляет тригонометрическую задачу.eqn = g(t) == 1
eqn = 2*cos(t)*sin(t) == 1
Использование solve
чтобы найти решение тригонометрической задачи.
sol = solve(eqn)
sol = pi/4
Используйте символьный вектор и матрицу, чтобы представлять и решить систему линейных уравнений.
Можно представлять систему уравнений как вектор двух символьных уравнений. Можно также представлять систему уравнений как матричную задачу, включающую матрицу символьных чисел и вектор символьных переменных. Для краткости любой вектор символьных объектов называется символьным вектором, а любая матрица символьных объектов - символьной матрицей.
Создайте два символьных уравнения eq1
и eq2
. Объедините эти два уравнения в символьный вектор.
syms u v x y eq1 = x + 2*y == u; eq2 = 4*x + 5*y == v; eqns = [eq1, eq2]
eqns = [x + 2*y == u, 4*x + 5*y == v]
Использование solve
найти решения системы уравнений, представленных eqns
. solve
возвращает структуру S
с полями, названными в честь каждой из переменных в уравнениях. Вы можете получить доступ к решениям с помощью записи через точку, как S.x
и S.y
.
S = solve(eqns); S.x
ans = (2*v)/3 - (5*u)/3
S.y
ans = (4*u)/3 - v/3
Другой способ решить систему линейных уравнений - преобразовать ее в матричную форму. Использование equationsToMatrix
для преобразования системы уравнений в матричную форму и назначения выхода в A
и b
. Здесь, A
является символьной матрицей и b
является символьным вектором. Решите матричную задачу с помощью матрицы division\.
[A,b] = equationsToMatrix(eqns,x,y)
A = [1, 2] [4, 5] b = u v
sols = A\b
sols = (2*v)/3 - (5*u)/3 (4*u)/3 - v/3
Начиная с R2021a
Используйте переменные символьной матрицы, чтобы вычислить дифференциалы относительно векторов.
Символьные матричные переменные представляют матрицы, векторы и скаляры в качестве атомарных символов. Переменные Символьной матрицы предлагают краткое отображение в наборе типов и показывают математические формулы с большей ясностью. Можно взять векторные выражения из учебников и ввести их в Symbolic Math Toolbox.
Создайте три символьные матричные переменные x
, y
, и A
использование syms
команда со matrix
аргумент. Нескалярные переменные символьной матрицы отображаются полужирным шрифтом символов в Командном окне и в Live Editor.
syms x [4 1] matrix syms y [3 1] matrix syms A [3 4] matrix x y A
x = x y = y A = A
alpha
. Найдите дифференциал alpha
относительно векторов x и y, которые представлены переменными символьной матрицы x
и y
.alpha = y.'*A*x
alpha = y.'*A*x
diff(alpha,x)
ans = y.'*A
diff(alpha,y)
alpha = x.'*A.'
В этой таблице сравниваются различные символические объекты, которые доступны в Symbolic Math Toolbox.
Символические объекты | Примеры команд MATLAB | Размер символьных объектов | Тип данных |
---|---|---|---|
символьное число |
a = 1/sqrt(sym(2)) theta = asin(a) a = 2^(1/2)/2 theta = pi/4 | 1 -by- 1 | sym |
символьная скалярная переменная |
syms x y u v | 1 -by- 1 | sym |
символьная функция |
syms x f(x) = x^2 + x - 2 syms g(t) g(t) = 2*sin(t)*cos(t) f(x) = x^2 + x - 2 g(t) = 2*cos(t)*sin(t) | 1 -by- 1 | symfun |
символьное уравнение |
syms u v x y eq1 = x + 2*y == u eq2 = 4*x + 5*y == v eq1 = x + 2*y == u eq2 = 4*x + 5*y == v | 1 -by- 1 | sym |
символьное выражение |
syms x expr = x^2 + x - 2 expr2 = 2*sin(x)*cos(x) expr = x^2 + x - 2 expr2 = 2*cos(x)*sin(x) | 1 -by- 1 | sym |
символьный вектор |
syms u v b = [u v] b = [u, v] | 1 -by- n или m -by- 1 | sym |
символьная матрица |
syms A x y A = [x y; x*y y^2] A = [ x, y] [x*y, y^2] | m -by- n | sym |
символьный многомерный массив |
syms A [2 1 2] A A(:,:,1) = A1_1 A2_1 A(:,:,2) = A1_2 A2_2 | sz1 -by- sz2 -... - szn | sym |
символьная матричная переменная (с R2021a года) |
syms A B [2 3] matrix A B A B | m -by- n | symmatrix |
str2sym
| sym
| symfun
| symmatrix
| symmatrix2sym
| syms