Этот пример предоставляет обзор 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+10
f(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-precision
doubleSol = 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 computations
symsSol =
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))