exponenta event banner

Выполнение символьных вычислений

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

С помощью программы 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)

Список функций упрощения панели инструментов символьной математики см. в разделе Выбор функции для изменения порядка выражений.

Замены в символьных выражениях

Заменить символьные переменные числами

Можно заменить символьную переменную числовым значением, используя 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 для создания 2-D графиков символьных выражений, уравнений или функций в декартовых координатах.

  • fplot3 для создания 3-D параметрических графиков.

  • ezpolar для создания графиков в полярных координатах.

  • fsurf для создания поверхностных графиков.

  • fcontour для создания контурных графиков.

  • fmesh для создания сеточных графиков.

График явной функции

Создание графика линии 2-D с помощью fplot. Постройте график выражения x3-6x2 + 11x-6.

syms x
f = x^3 - 6*x^2 + 11*x - 6;
fplot(f)

Figure contains an axes. The axes contains an object of type functionline.

Добавьте метки для осей X и Y. Создать заголовок с помощью texlabel(f). Показать сетку с помощью grid on. Дополнительные сведения см. в разделе Добавление меток заголовка и оси в диаграмму.

xlabel('x')
ylabel('y')
title(texlabel(f))
grid on

Figure contains an axes. The axes with title {11} {x} - {6} {x}^{2} + {x}^{3} - {6} contains an object of type functionline.

График неявной функции

Печать уравнений и неявных функций с использованием 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])

Figure contains an axes. The axes contains an object of type implicitfunctionline.

3-D Участок

Печать 3-D параметрических линий с помощью fplot3.

Печать параметрической линии

x = t2sin (10t) y = t2cos (10t) z = t.

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

Figure contains an axes. The axes contains an object of type parameterizedfunctionline.

Создание графика поверхности

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

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

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

Figure contains an axes. The axes contains an object of type functionsurface.

Связанные темы