Этот пример предоставляет обзор Symbolic Math Toolbox, который предлагает полный набор инструментов для вычислительной и аналитической математики.

Этот пример включает в себя
Переменные, выражения, функции и уравнения
Подстановка и решение
Упрощение и манипуляция
Вычисление (дифференцирование, интегрирование, пределы, ряд)
Дифференциальные уравнения
Линейная алгебра
Графика
Для получения дополнительной информации смотрите Запуск с Symbolic Math Toolbox. Для получения дополнительной информации о документировании и совместном использовании вашей математики смотрите Создать Live скрипты в Live Editor.
Переменные в MATLAB по умолчанию имеют двойную точность. Symbolic Math Toolbox расширяет это, позволяя вам выражать числа в точной символической форме, используя sym и с переменной точностью с использованием vpa.
pi/6 + pi/4
ans = 1.3090
sym(pi/6) + sym(pi/4)
ans =
vpa(pi/6) + vpa(pi/4)
ans =
Символьные переменные могут использоваться в математических выражениях, функциях и уравнениях, включая тригонометрические, логарифмические, экспоненциальные и специальные функции. Можно создать символьные выражения и выполнить математические вычисления на них.
syms x y log(x) + exp(y)
ans =
Можно также создать кусочно-линейные функции.
y(x) = piecewise(x<0, -1, x>0, 1)
y(x) =
Создайте и вычислите Create Symbolic Functions. Найдите значение f в .
syms f(x)
f(x) = x^4-2*x^3+6*x^2-2*x+10f(x) =
f(-5)
ans =
Найдите пересечение между линиями и использование solve. Приравнивайте линии с помощью оператора = = .
syms y1 y2 y1 = x+3; y2 = 3*x; solve(y1 == y2)
ans =
Делайте assume на символьных переменных. Существует 4 решения , два реальных и два комплексных. Принимая, что реально и , существует только одно решение.
syms x
solve(x^4 == 1)ans =
assume(x,'real')
assumeAlso( x > 0)
assumptions(x)ans =
solve(x^4 == 1)
ans =
assume(x,'clear')Symbolic Math Toolbox поддерживает оценку математических функций, заменяя любую часть выражения, используя subs. Можно заменить числовые значения, другие символьные переменные или выражения, векторы или матрицы. Symbolic Math Toolbox поддерживает решение уравнений и систем уравнений, используя solve. Он поддерживает решение многомерных уравнений, решение неравенств и решение с допущениями. Решения могут быть найдены символически или численно с высокой точностью при помощи арифметики переменной точности.
Сделайте замены с помощью символьных переменных. Замена в
syms x xo subs(x^2+1,x,xo-1)
ans =
Замените несколько значений. Для примера оцените путем подстановки .
syms a b c subs(cos(a) + sin(b) - exp(2*c), [a b c], [pi/2 pi/4 -1])
ans =
Создайте и решите уравнения. Найдите нули .
solve(9*x^2 - 1 == 0)
ans =
Решить общее квадратичное уравнение и используйте нижние индексы, чтобы оценить это решение для .
eqn = a*x^2 + b*x + c == 0; sol = solve(eqn)
sol =
subs(sol,[a b c],[9 0 -1])
ans =
Решите уравнения символически или с арифметикой переменной точности, когда необходимы точные результаты или высокая точность. Область графика очень плоский около его корня.
syms x f(x) assume(x>0) f(x) = 6*x^7-2*x^6+3*x^3-8; fplot(f) xlim([-10 10]) ylim([-1e3 1e3])

doubleSol = roots([6 -2 0 0 3 0 0 -8]) % double-precisiondoubleSol = 7×1 complex
1.0240 + 0.0000i
0.7652 + 0.8319i
0.7652 - 0.8319i
-0.8808 + 0.5043i
-0.8808 - 0.5043i
-0.2297 + 0.9677i
-0.2297 - 0.9677i
symsSol = solve(f) % exact. The roots object stores the zeros for symbolic computationssymsSol =
vpaSol = vpasolve(f) % variable-precision vpaSol =
Symbolic Math Toolbox поддерживает Формульную манипуляцию и Упрощение математических функций. Большинство математических выражений может быть представлено в различных, но математически эквивалентных формах, и Symbolic Math Toolbox поддерживает ряд операций, включая факторизацию или расширение выражений, объединение терминов, переписывание или реорганизацию выражений и упрощение на основе допущений.
Выполните умножение полиномов и упростите результаты, покажите, что упрощает .
simplify((x - 1)*(x + 1)*(x^2 + x + 1)*(x^2 + 1)*(x^2 - x + 1)*(x^4 - x^2 + 1))
ans =
Примените тригонометрические тождества к упрощениям, например .
combine(2*sin(x)*cos(x) + (1- cos(2*x))/2 + cos(x)^2,'sincos')ans =
Коэффициент или расширение многомерных полиномов.
syms x y factor(y^6-x^6)
ans =
f(x) = (x^3 + 7); expand(f(y-1))
ans =
Найдите функциональный состав .
f(x) = sqrt(log(x)); g(x) = sqrt(1-x); h = compose(g,f,x)
h(x) =
Symbolic Math Toolbox имеет полный набор инструментов исчисления для прикладной математики. Это может выполнить многомерное символическое интегрирование и дифференцирование. Он может генерировать, манипулировать и выполнять вычисления с помощью ряда.
Найдите производную .
diff(sin(x))
ans =
Найдите производную использование правила цепи.
diff(x^2+sin(2*x^4)+1,x)
ans =
Найдите неопределенный интеграл для .
int(exp(-x^2/2),x)
ans =
Найдите определенный интеграл для от кому .
int(x*log(1+x),0,1)
ans =
Показать, что в путем вычисления расширения серии Тейлора для вокруг точки .
syms x
T = taylor(sin(x)/x)T =
subs(T,x,0)
ans =
Показать, что прерывистый в показывая, что левый и правый пределы не равны. .
limit(tan(x),x,pi/2,'left')ans =
limit(tan(x),x,pi/2,'right')ans =
limit(tan(x),x,pi/2)
ans =
Symbolic Math Toolbox может аналитически решить системы Решения Системы Дифференциальных Уравнений, используя dsolve.
Решение ОДУ первого порядка .
syms a b y(x) dsolve(diff(y) == -a*y)
ans =
Решить ту же ОДУ с начальным условием .
dsolve(diff(y)== -a*y,y(0)==b)
ans =
Решить систему связанных ОДУ первого порядка и .
syms x(t) y(t) z = dsolve(diff(x) == y, diff(y) == -x); disp([z.x;z.y])
Symbolic Math Toolbox может работать с символьными векторами и матрицами. Он может вычислять eig символьных матриц.
Выполните матричное умножение где и
syms a b c d syms x1 x2 x = [x1; x2]; A = [a b ; c d]; b = A*x
b =
Найдите определяющего А.
det(A)
ans =
Найдите собственные значения А.
lambda = eig(A)
lambda =
Symbolic Math Toolbox поддерживает аналитическое графическое изображение в 2D и 3D.
fplot(tan(x))

Постройте график параметрической кривой и .
syms t x = t*sin(5*t); y = t*cos(5*t); fplot(x, y) grid on

Постройте график 3D параметрической кривой , и от [-10,10] с штриховой красной линией.
syms t xt = exp(abs(t)/10).*sin(5*abs(t)); yt = exp(abs(t)/10).*cos(5*abs(t)); zt = t; h = fplot3(xt,yt,zt, [-10,10],'--r');

Постройте график поверхности 3D .
syms x y fsurf(sin(x) + cos(y))

Постройте график 2D контуров той же поверхности.
fcontour(sin(x) + cos(y))
