- •Глава 7 символьные вычисления
- •7.1 Символьные переменные, константы и выражения
- •7.2 Вычисления с использованием арифметики произвольной точности
- •7.3 Функции упрощения выражений – simplify, simple
- •7.4 Функция расширения выражений – expand
- •7.5 Разложение выражений на простые множители – функция factor
- •7.6 Приведение подобных членов – функция collect
- •7.7 Обеспечение подстановок – функция subs
- •7.8 Функция вычисления пределов – limit
- •7.9 Функция вычисления производных – diff
- •7.10 Функция вычисления интегралов – int
- •7.11 Функция разложения выражения в ряд Тейлора – taylor
- •7.12 Функция вычисления сумм рядов – symsum
- •7.13 Решение алгебраических уравнений и систем– функция solve
- •7.14 Решение дифференциальных уравнений – функция dsolve
- •7.15 Прямое и обратное преобразования Лапласа – функции laplace, ilaplace
- •7.16 Графики символьных функций – команды ezplot, ezpolar
- •7.17 Доступ к ресурсам ядра системы Maple
- •1) Разложение рациональной дроби на сумму простейших дробей
- •2) Нахождение интерполяционного полинома Лагранжа
- •3) Решение неравенств и систем неравенств
- •4) Разложение в ряд Тейлора функции нескольких переменных
- •5) Решение дифференциальных уравнений с помощью степенных рядов
- •6) Решение тригонометрических уравнений
Глава 7 символьные вычисления
В предыдущих главах рассматривались численные процедуры MATLAB, выполняемые с аргументами, заданными в виде чисел или числовых массивов. В состав MATLAB входит пакет Symbolic Math ToolBox, который добавил к системе возможность символьных вычислений. Помимо типовых аналитических вычислений (таких, как упрощение математических выражений, подстановка, нахождение пределов, дифференцирование, интегрирование, интегральные преобразования, получение решений уравнений и систем уравнений, включая дифференциальные и т.д.) пакет Symbolic позволяет реализовывать арифметические операции с любой точностью. Функции пакета Symbolic реализуют интерфейс между средой MATLAB и ядром Maple IV системы аналитических вычислений, или системы компьютерной алгебры, канадского университета Waterlooo, причем работа в MATLAB не требует установки Maple. Версия системы Maple IV в своем ядре и в расширениях имеет около 3000 функций. Система MATLAB с пакетом Symbolic, включающим в себя около сотни символьных команд и функций, намного уступает Maple по их количеству. Однако, пользователь, имеющий опыт работы в Maple, может напрямую обращаться ко всем функциям и процедурам этой системы (кроме графических), написанным на встроенном языке Maple (см. раздел 7.17). Способы получения справочной информации по пакету Symbolic рассмотрены в Приложении 1.
7.1 Символьные переменные, константы и выражения
Поскольку переменные системы MATLAB по умолчанию не определены и традиционно задаются как векторные, матричные, числовые и т.д., то есть не имеющие отношения к символьной математике, для реализации символьных вычислений нужно прежде всего позаботиться о создании специальных символьных переменных.
Для создания символьных переменных или объектов используется функция sym.
Например, команда
>>x=sym('x')
x =
x
возвращает символьную переменную с именем 'x' и записывает результат в х.
Команда x=sym('x','real') дополнительно определяет x как вещественную переменную. Аналогично, x=sym('x','positive') определяет x как положительную (вещественную) переменную, а x=sym('x','unreal') определяет x как чисто формальную переменную (то есть не обладающую никакими дополнительными свойствами).
Для создания группы символьных объектов служит функция syms.
Команда
>> syms a b c
создает символьные переменные с именами a, b, c.
Команда
>> Pi=sym('pi');
создает символьное число Pi=π, не обладающее погрешностью представления числа π в формате с плавающей запятой. Результаты операций с символьным Pi выражаются не в числовой, а в символьной форме. Следовательно, пакет Symbolic позволяет получить точные значения тригонометрических функций (и их рациональных комбинаций) от аргумента π в виде выражений, включающих квадратные корни из рациональных чисел, если такие выражения существуют и могут быть найдены системой. Например, точное значение sin имеет вид:
>> S=sin(Pi/5)
S =
1/4*2^(1/2)*(5-5^(1/2))^(1/2)
Символьное выражение S выведено в командное окно в одну строку.
Функция pretty(S) выводит в командное окно символьное выражение S в формате, приближенном математическому.
>> pretty(S)
1/2 1/2 1/2
1/4 2 (5 - 5 )
Теперь очевидно, что sin = .
Символьное выражение можно создать при помощи функции sym, входным аргументом которой является строка с выражением, заключенным в апострофы. Например,
>> F=sym('x+y')
F =
x+y
Команда syms без аргументов выводит список символьных объектов, имеющихся в рабочем пространстве.
При запросе о наличии символьных переменных в памяти после выполнения предыдущего примера
>> syms
'F'
получен ответ 'F', то есть входящие в выражение переменные x и y не являются символьными. Их нельзя использовать в качестве аргументов в дальнейших символьных вычислениях.
Изменим рассмотренный выше ввод символьного выражения F следующим образом:
>> syms x y
>> F=x+y
F =
x+y
>> syms
'F' 'x' 'y'
Теперь переменные x и y вначале получили статус символьных, а сконструированное из них выражение F приобрело статус символьного автоматически.