С помощью программного обеспечения 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
The 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 см. в разделе «Выбор функции для перестройки выражения».
Можно заменить символьную переменную числовым значением при помощи subs
функция. Для примера вычислите символическое выражение f
в точке x
= 1/3:
syms x f = 2*x^2 - 3*x + 1; subs(f, 1/3)
ans = 2/9
The 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
The 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
создать 2-D графики символьных выражений, уравнений или функций в Декартовых координатах.
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
. Для получения дополнительной информации смотрите Добавить заголовок и подписи по осям к диаграмме.
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)