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

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

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

Figure contains an axes object. The axes object 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 object. The axes object with title 1 1 blank x blank - blank 6 blank x Squared baseline blank + blank x Cubed baseline blank - blank 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 object. The axes object 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 object. The axes object contains an object of type parameterizedfunctionline.

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

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

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

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

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

Похожие темы