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

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

С помощью программного обеспечения 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

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:

  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

    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. Постройте график выражения 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.

Похожие темы