Символьные вычисления: Symbolic Toolbox

До сих пор всё было численным; теперь — точная алгебра с символами, как в учебнике математики.

Символьные вычисления оперируют формулами и переменными точно, без перевода в числа с плавающей точкой.

Числа против символов

Всё, что мы делали раньше, было численным: 1/3 превращалось в 0.3333. Symbolic Math Toolbox позволяет работать иначе — держать 1/3 как точную дробь, а x — как настоящую неизвестную. Символьные переменные объявляют командой syms.

syms x
expr = (x + 1)^2;
expanded = expand(expr)      % x^2 + 2*x + 1
factored = factor(x^2 - 1)   % (x-1)(x+1)

Это уже не вычисление, а преобразование формул — раскрытие скобок, разложение на множители, упрощение. Так MATLAB становится системой компьютерной алгебры, подобной Mathematica или SymPy.

Производные и интегралы символьно

Символьное дифференцирование diff и интегрирование int дают точную формулу, а не число. Это незаменимо для вывода уравнений и проверки выкладок.

syms x
diff(x^3)            % 3*x^2 — производная
int(x^2)             % x^3/3 — первообразная
int(x^2, 0, 1)       % 1/3 — определённый интеграл точно

Решение уравнений

Функция solve решает уравнения символьно, возвращая точные корни. Сравните с численным поиском корня fzero из прошлого раздела: solve даёт формулу, fzero — приближённое число.

syms x
solve(x^2 - 5*x + 6 == 0, x)   % корни: 2 и 3 (точно)

Параллель с SymPy

Symbolic Math Toolbox — близкий аналог библиотеки SymPy в Python: те же идеи символьных переменных, упрощения, дифференцирования, решения уравнений. Если вы знакомы с SymPy, переход прост: syms x соответствует x = symbols('x'), diff и int называются почти так же. Разница в том, что в MATLAB символьный движок — отдельный платный тулбокс, тогда как SymPy — бесплатная часть экосистемы Python.

Как работает под капотом

Символьный движок MATLAB (исторически на базе ядра MuPAD) хранит выражения как деревья: узлы — операции, листья — переменные и числа. Упрощение и дифференцирование — это преобразования этого дерева по правилам алгебры, а не вычисления с числами. Поэтому символьные операции точны, но заметно медленнее численных, и не масштабируются на большие данные. Практический вывод: символику применяют для вывода формул и теоретических выкладок, а массовые расчёты — численно, переведя итоговую формулу в функцию через matlabFunction.

Частые ошибки

  • Забыть syms x перед использованием x как символа — иначе x воспримется как обычная переменная.
  • Ждать от символики скорости численных методов — она для точности, а не для больших массивов.
  • Смешивать символьные и числовые типы без явного double(...) для финального значения.

Где символика незаменима

Символьные вычисления решают задачи, недоступные численным методам в принципе. Вывести общую формулу производной сложной функции, упростить громоздкое алгебраическое выражение, получить точное решение уравнения в радикалах, разложить функцию в ряд Тейлора, проверить тождество — всё это работа с формулами, а не с числами. Инженер использует символику на этапе вывода уравнений модели: получает аналитические соотношения, проверяет выкладки, упрощает выражения, — а уже потом переходит к численному счёту по готовым формулам. Связка двух режимов естественна: символьно вывели — численно посчитали. Функция matlabFunction как раз превращает символьное выражение в обычную численную функцию, перекидывая мост между этими мирами.

Точность против масштаба

У символики есть и обратная сторона, которую важно сознавать. Точность даётся ценой скорости: преобразование деревьев выражений несравнимо медленнее арифметики с плавающей точкой, и на больших данных символьный подход неприменим. Кроме того, не всякая задача вообще имеет символьное решение — многие уравнения принципиально не решаются в формулах, и тогда символьный движок честно вернёт неразрешённый результат или предложит численное приближение. Поэтому символику применяют точечно — там, где нужна именно формула или абсолютная точность малой задачи, — а не как замену численным методам. Понимание границ каждого инструмента и есть зрелость вычислителя.

Итоги

  • syms объявляет символьные переменные для точной алгебры.
  • diff, int, solve дают формулы и точные корни, а не числа.
  • Символика точна, но медленна — аналог SymPy; для расчётов переводите в численные функции.
Проверьте себя
1. Что делает команда syms x?
AСоздаёт число x
BОбъявляет x символьной переменной для точной алгебры
CУдаляет x
DСтроит график
2. Чем символьное вычисление отличается от численного?
AНичем
BСимвольное даёт точную формулу, численное — приближённое число
CСимвольное быстрее
DЧисленное точнее
3. На какую библиотеку Python похож Symbolic Math Toolbox?
ANumPy
BSymPy
Cpandas
DMatplotlib