С программным обеспечением Symbolic Math Toolbox™ можно найти
Производные одно переменных выражений
Частные производные
Производные второго и высшего порядка
Смешанные производные
Дополнительные сведения о взятии символьных производных см. в Дифференцировании.
Чтобы дифференцировать символьное выражение, используйте команду diff
. Следующий пример иллюстрирует, как взять первую производную символьного выражения:
syms x f = sin(x)^2; diff(f)
ans = 2*cos(x)*sin(x)
Для многомерных выражений можно задать переменную дифференцирования. Если вы не задаете переменной, MATLAB® выбирает переменную по умолчанию своей близостью к букве x
:
syms x y f = sin(x)^2 + cos(y)^2; diff(f)
ans = 2*cos(x)*sin(x)
Для полного набора правил MATLAB подает заявку на выбор переменной по умолчанию, смотрите, Находят Символьную Переменную По умолчанию.
Дифференцировать символьное выражение f
относительно переменной y
, введите:
syms x y f = sin(x)^2 + cos(y)^2; diff(f, y)
ans = -2*cos(y)*sin(y)
Взять вторую производную символьного выражения f
относительно переменной y
, введите:
syms x y f = sin(x)^2 + cos(y)^2; diff(f, y, 2)
ans = 2*sin(y)^2 - 2*cos(y)^2
Вы получаете тот же результат путем взятия производной дважды: diff(diff(f, y))
. Чтобы взять смешанные производные, используйте две команды дифференцирования. Например:
syms x y f = sin(x)^2 + cos(y)^2; diff(diff(f, y), x)
ans = 0
Можно выполнить символьное интегрирование включая:
Неопределенное и определенное интегрирование
Интегрирование многомерных выражений
Дополнительные сведения о команде int
включая интеграцию с действительными и комплексными параметрами см. в Интегрировании.
Предположим, что вы хотите интегрировать символьное выражение. Первый шаг должен создать символьное выражение:
syms x f = sin(x)^2;
Чтобы найти неопределенный интеграл, войти
int(f)
ans = x/2 - sin(2*x)/4
Если выражение зависит от нескольких символьных переменных, можно определять переменную интегрирования. Если вы не задаете переменной, MATLAB выбирает переменную по умолчанию близостью к букве x
:
syms x y n f = x^n + y^n; int(f)
ans = x*y^n + (x*x^n)/(n + 1)
Для полного набора правил MATLAB подает заявку на выбор переменной по умолчанию, смотрите, Находят Символьную Переменную По умолчанию.
Также можно интегрировать выражение f = x^n + y^n
относительно y
syms x y n f = x^n + y^n; int(f, y)
ans = x^n*y + (y*y^n)/(n + 1)
Если переменной интегрирования является n
, войти
syms x y n f = x^n + y^n; int(f, n)
ans = x^n/log(x) + y^n/log(y)
Чтобы найти определенный интеграл, передайте пределы интегрирования в качестве итоговых двух аргументов функции int
:
syms x y n f = x^n + y^n; int(f, 1, 10)
ans = piecewise(n == -1, log(10) + 9/y, n ~= -1,... (10*10^n - 1)/(n + 1) + 9*y^n)
Если функция int
не может вычислить интеграл, она возвращает неразрешенный интеграл:
syms x int(sin(sinh(x)))
ans = int(sin(sinh(x)), x)
Можно решить различные типы символьных уравнений включая:
Алгебраические уравнения с одной символьной переменной
Алгебраические уравнения с несколькими символьными переменными
Системы алгебраических уравнений
Дополнительные сведения о решении символьных уравнений включая дифференциальные уравнения см. в уравнении Решить.
Используйте двойной знак "равно" (==), чтобы определить уравнение. Затем вы можете solve
уравнение путем вызывания решить функции. Например, решите это уравнение:
syms x solve(x^3 - 6*x^2 == 6 - 11*x)
ans = 1 2 3
Если вы не задаете правую сторону уравнения, solve
принимает, что это - нуль:
syms x solve(x^3 - 6*x^2 + 11*x - 6)
ans = 1 2 3
Если уравнение содержит несколько символьных переменных, можно задать переменную, для которой должно быть решено это уравнение. Например, решите это многомерное уравнение относительно y
:
syms x y solve(6*x^2 - 6*x^2*y + x*y^2 - x*y + y^3 - y^2 == 0, y)
ans = 1 2*x -3*x
Если вы не задаете переменной, вы получаете решение уравнения для в алфавитном порядке самый близкий к переменной x
. Для полного набора правил MATLAB подает заявку на выбор переменной по умолчанию, видят, Находят Символьную Переменную По умолчанию.
Также можно решить системы уравнений. Например:
syms x y z [x, y, z] = solve(z == 4*x, x == y, z == x^2 + y^2)
x = 0 2 y = 0 2 z = 0 8
Symbolic Math Toolbox обеспечивает набор функций упрощения, разрешающих вам управлять выводом символьного выражения. Например, следующий полином золотого сечения phi
phi = (1 + sqrt(sym(5)))/2; f = phi^2 - phi - 1
возвращается
f = (5^(1/2)/2 + 1/2)^2 - 5^(1/2)/2 - 3/2
Можно упростить этот ответ путем ввода
simplify(f)
и получите очень короткий ответ:
ans = 0
Символьное упрощение не всегда таким образом прямо. Нет никакой универсальной функции упрощения, потому что значение самого простого представления символьного выражения не может быть задано ясно. Различные проблемы требуют различных форм того же математического выражения. Зная, какая форма является более эффективной для решения вашей конкретной проблемы, можно выбрать соответствующую функцию упрощения.
Например, чтобы показать порядок полинома или символически дифференцироваться или интегрировать полином, используйте стандартную полиномиальную форму со всеми круглыми скобками, умноженными и всеми подобными условиями, которым подводят итог. Чтобы переписать полином в стандартной форме, используйте функцию expand
:
syms x f = (x ^2- 1)*(x^4 + x^3 + x^2 + x + 1)*(x^4 - x^3 + x^2 - x + 1); expand(f)
ans = x^10 - 1
Функция упрощения factor
показывает полиномиальные корни. Если полином не может быть учтен по рациональным числам, вывод функции factor
является стандартной полиномиальной формой. Например, чтобы учесть полином третьего порядка, введите:
syms x g = x^3 + 6*x^2 + 11*x + 6; factor(g)
ans = [ x + 3, x + 2, x + 1]
Вложенный (Горнер) представление полинома является самым эффективным для численных оценок:
syms x h = x^5 + x^4 + x^3 + x^2 + x; horner(h)
ans = x*(x*(x*(x*(x + 1) + 1) + 1) + 1)
Для списка функций упрощения Symbolic Math Toolbox смотрите, Выбирают Function to Rearrange Expression.
Можно заменить символьной переменной с числовым значением при помощи функции subs
. Например, выполните символьное выражение f
в точке x
= 1/3:
syms x f = 2*x^2 - 3*x + 1; subs(f, 1/3)
ans = 2/9
Функция subs
не изменяет исходное выражение f
:
f
f = 2*x^2 - 3*x + 1
Когда ваше выражение содержит больше чем одну переменную, можно задать переменную, на которую вы хотите сделать замену. Например, чтобы заменить значением x
= 3 в символьном выражении
syms x y f = x^2*y + 5*x*sqrt(y);
введите команду
subs(f, x, 3)
ans = 9*y + 15*y^(1/2)
Также можно заменить одной символьной переменной другую символьную переменную. Например, чтобы заменить переменную y
на переменную x
, войти
subs(f, y, x)
ans = x^3 + 5*x^(3/2)
Можно также заменить матрицей в символьный полином с числовыми коэффициентами. Существует два способа заменить матрицей в полином: поэлементно и согласно правилам умножения матриц.
Поэлементно Замена. Чтобы заменить матрицей в каждом элементе, используйте команду subs
:
syms x f = x^3 - 15*x^2 - 24*x + 350; A = [1 2 3; 4 5 6]; subs(f,A)
ans = [ 312, 250, 170] [ 78, -20, -118]
Можно сделать поэлементно замену на прямоугольные или квадратные матрицы.
Замена в Матричном Смысле. Если вы хотите заменить матрицей в полином, использующий стандартные правила умножения матриц, матрица должна быть квадратной. Например, можно заменить магическим квадратом A
в полиномиальный f
:
Создайте полином:
syms x f = x^3 - 15*x^2 - 24*x + 350;
Создайте матрицу магического квадрата:
A = magic(3)
A = 8 1 6 3 5 7 4 9 2
Получите вектор - строку, содержащий числовые коэффициенты полиномиального f
:
b = sym2poly(f)
b = 1 -15 -24 350
Замените матрицей магического квадрата A
в полиномиальный f
. Матричный A
заменяет все случаи x
в полиноме. Постоянные времена единичная матрица eye(3)
заменяют постоянный термин f
:
A^3 - 15*A^2 - 24*A + 350*eye(3)
ans = -10 0 0 0 -10 0 0 0 -10
Команда polyvalm
обеспечивает простой способ получить тот же результат:
polyvalm(b,A)
ans = -10 0 0 0 -10 0 0 0 -10
Чтобы заменить набором элементов в символьной матрице, также используйте команду subs
. Предположим, что вы хотите заменить некоторые элементы символьной циркулянтной матрицы A
syms a b c A = [a b c; c a b; b c a]
A = [ a, b, c] [ c, a, b] [ b, c, a]
Заменять (2, 1) элемент A
с beta
и переменной b
в матрице с переменной alpha
, входят
alpha = sym('alpha'); beta = sym('beta'); A(2,1) = beta; A = subs(A,b,alpha)
Результатом является матрица:
A = [ a, alpha, c] [ beta, a, alpha] [ alpha, c, a]
Для получения дополнительной информации смотрите Элементы Замены в Символьных Матрицах.
Symbolic Math Toolbox обеспечивает функции построения графика:
fplot
, чтобы создать 2D графики символьных выражений, уравнений или функций в Декартовых координатах.
fplot3
, чтобы создать 3-D параметрические графики.
ezpolar
, чтобы создать графики в полярных координатах.
fsurf
, чтобы создать объемные поверхностные диаграммы.
fcontour
, чтобы создать контурные графики.
fmesh
, чтобы создать сетчатые графики.
Создайте 2D график при помощи fplot
. Постройте выражение .
syms x
f = x^3 - 6*x^2 + 11*x - 6;
fplot(f)
Добавьте метки для x-и осей Y. Сгенерируйте заголовок при помощи texlabel(f)
. Покажите сетку при помощи grid on
. Для получения дополнительной информации смотрите Добавление заголовка и подписей по осям, чтобы Строить диаграмму (MATLAB).
xlabel('x') ylabel('y') title(texlabel(f)) grid on
Постройте уравнения и неявные функции с помощью fimplicit
.
Постройте уравнение .
syms x y eqn = (x^2 + y^2)^4 == (x^2 - y^2)^2; fimplicit(eqn, [-1 1])
Постройте 3-D параметрические графики при помощи fplot3
.
Постройте параметрический график
syms t
fplot3(t^2*sin(10*t), t^2*cos(10*t), t)
Создайте 3-D поверхность при помощи fsurf
.
Постройте параболоид .
syms x y fsurf(x^2 + y^2)