Этот пример предоставляет обзор Symbolic Math Toolbox, который предлагает полный набор инструментов для вычислительной и аналитической математики.
Этот пример включает
Переменные, выражения, функции и уравнения
Замена и решение
Упрощение и манипуляция
Исчисление (дифференцирование, интегрирование, пределы, ряд)
Дифференциальные уравнения
Линейная алгебра
Графика
Для получения дополнительной информации смотрите Начало работы с Symbolic Math Toolbox. Для получения дополнительной информации при документировании и совместном использовании вашей математики смотрите Live скрипты.
Переменные в 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) =
Создайте и выполните функции. Найдите значение f
в .
syms f(x)
f(x) = x^4-2*x^3+6*x^2-2*x+10
f(x) =
f(-5)
ans =
Найдите пересечение между строками и использование решает. Приравняйте строки с помощью == оператор.
syms y1 y2 y1 = x+3; y2 = 3*x; solve(y1 == y2)
ans =
Сделайте предположения на символьных переменных. Существует 4 решения , два действительных и два комплекса. Предположение, что x действителен и , существует только одно решение.
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 поддерживает оценку математических функций путем заменения любую часть выражения с помощью замен. Можно заменить числовыми значениями, другими символьными переменными или выражениями, векторами или матрицами. Поддержки Symbolic Math Toolbox решение использования уравнений и систем уравнений решают. Это поддерживает решающие многомерные уравнения, решая неравенства и решая с предположениями. Решения могут быть найдены символически или численно с высокой точностью при помощи арифметики переменной точности.
Сделайте замены со своими символьными переменными. Замена в
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([-8 3 -2 6]) % double-precision
doubleSol = 3×1 complex
0.9471 + 0.0000i
-0.2861 + 0.8426i
-0.2861 - 0.8426i
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 =
Найдите определенный интеграл для от 0 до 1.
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 может работать с символьными векторами и матрицами. Это может вычислить собственные значения и собственные вектора символьных матриц.
Выполните умножение матриц где и
syms a b c d syms x1 x2 x = [x1; x2]; A = [a b ; c d]; b = A*x
b =
Найдите детерминант A.
det(A)
ans =
Найдите собственные значения A.
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))