Выполните символьные вычисления

Дифференцируйте символьные выражения

С программным обеспечением 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)

Если MATLAB не может найти закрытую форму интеграла

Если функция 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:

  1. Создайте полином:

    syms x
    f = x^3 - 15*x^2 - 24*x + 350;
  2. Создайте матрицу магического квадрата:

    A = magic(3)
    A =
         8     1     6
         3     5     7
         4     9     2
  3. Получите вектор - строку, содержащий числовые коэффициенты полиномиального f:

    b = sym2poly(f)
    b =
         1   -15   -24   350
  4. Замените матрицей магического квадрата 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. Постройте выражение x3-6x2+11x-6.

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.

Постройте уравнение (x2+y2)4=(x2-y2)2 -1<x<1.

syms x y
eqn = (x^2 + y^2)^4 == (x^2 - y^2)^2;
fimplicit(eqn, [-1 1])

3-D График

Постройте 3-D параметрические графики при помощи fplot3.

Постройте параметрический график

x=t2sin(10t)y=t2потому что(10t)z=t.

syms t
fplot3(t^2*sin(10*t), t^2*cos(10*t), t)

Создание объемной поверхностной диаграммы

Создайте 3-D поверхность при помощи fsurf.

Постройте параболоид z=x2+y2.

syms x y
fsurf(x^2 + y^2)

Похожие темы