Глава 9. Символьные вычисления в MathCAD
9.СИМВОЛЬНЫЕ ВЫЧИСЛЕНИЯ
Ядро символьных вычислений MathCAD предназначено для аналитических преобразований математических выражений. Некоторые из этих возможностей MathCAD (версии до 13.1 включительно) основаны на подмножестве системы компьютерной алгебры Maple (MKM, Maple Kernel Mathsoft). Начиная с 14 версии MathCAD использует символьное ядро MuPAD.
Символьные вычисления – это удобный инструмент, который существенно облегчает работу с математическими преобразованиями. Символьные вычисления позволяют упростить математическое выражение (Листинг 46), в то время как численные расчеты возвращают просто значение выражения в точке.
Листинг 46. Символьное упрощение выражения
Воспользоваться возможностями символьного ядра можно вызвав одну из функций символьных преобразований (Таблица 2) из инструментальной панели шаблонов «Symbolic» или вызвав одноименную вкладку главного меню (Рис. 38).
|
Рис. 38 – Вызов символьных преобразований MathCAD |
||
|
|
Таблица 2. Функции символьных вычислений MathCAD |
|
Функции |
|
Выполняемые операции |
|
float |
|
Численное вычисление |
|
complex |
|
Комплексное вычисление |
|
assume |
|
Символьное вычисление с некоторыми предположениями |
|
solve |
|
Решение уравнения, неравенства, системы уравнений |
|
simplify |
|
Упрощение выражений |
|
substitute |
|
Замена переменной |
|
factor |
|
Разложение на множители |
|
expand |
|
Перемножение степеней и произведений |
|
coeffs |
|
Определение коэффициентов полинома |
|
collect |
|
Группировка слагаемых по степеням переменной |
|
series |
|
Разложение в ряд Тейлора или Лорана |
|
76
|
|
|
Профессиональные математические пакеты |
|
|
|
|
||
|
|
|
|
|
|
parfrac |
Разложение на элементарные дроби |
|
|
|
fourier |
Преобразование Фурье |
|
|
|
invfourier |
Обратное преобразование Фурье |
|
|
|
lарlасе |
Преобразование Лапласа |
|
|
|
invlaplace |
Обратное преобразование Лапласа |
|
|
|
ztrans |
Z-преобразование |
|
|
|
invztrans |
Обратное Z-преобразование |
|
|
На самом деле, оператор индикации символьных значений , который мы активно использовали в предыдущих работах, тоже относится к символьным операторам и вызывает алгоритмы символьных вычислений (см. Листинг 47).
Многие задачи математического анализа, например, суммирование ряда, взятие производных, интегрирование, взятие несобственного интеграла и т.п. (см. Листинг 47) могут быть легко разрешены при помощи ядра символьных вычислений MathCAD.
Листинг 47. Оператор индикации символьных значений
9.1.Аналитическое решение уравнений
Символьный процессор программы MathCAD позволяет решать уравнения и неравенства аналитически, для этого используется встроенная функция solve (решить):
Листинг 48. Решение уравнений и неравенств - символьные преобразования
Можно осуществлять символьные подстановки в выражение (Листинг 49). Для этого используется функция substitute (подстановка):
Листинг 49. Символьная подстановка
Ограничения на переменную
При решении уравнений и неравенств, при разложении на множители и во множестве других задач, бывает необходимо искусственно задать ограничения на область определения той или иной переменной. Для этих целей используется встроенная функция assume (принять). Введенные ограничения действительны только
вобласти данного оператора – в остальных частях программы они не учитываются.
Впримере (Листинг 50) аналитически вычислен определенный интеграл. Символьный процессор MathCAD настолько совершенен, что вычислил три решения интеграла, в зависимости от значений a и b – пределов интегрирования. Принимая
77
Глава 9. Символьные вычисления в MathCAD
ограничения на переменные a и b, можно получить одно из этих решений, как показано в нижней части примера (Листинг 50).
Листинг 50. Ограничения на переменную
Используя команды float (вещественные) и complex (комплексные), можно переключать символьные вычисления из одного режима в другой.
9.2.Упрощение выражений
Возможности символьного процессора MathCAD сводят на нет любимое развлечение учителей средней школы – упрощение выражений. Теперь упрощение громоздких и сложных формул можно выполнить одной командой – simplify
(упростить).
Как видно на примере ниже (Листинг 51), можно заставить операцию simplify (и другие функции символьного процессора) возвращать вещественные значения вместо символьных, для этого необходимо один из аргументов функции задать вещественным числом. Как это сделано в примере ниже при вычислении asin(1.0). Нужно понимать при этом, что расчеты всё равно проводятся аналитически, а затем вычисленное значение /2 переводится в формат с десятичной точкой.
Листинг 51. Символьные операции. Упростить выражение
9.3.Разложение по степеням
ВMathCAD имеется встроенная возможность аналитически раскрывать скобки в сложных выражениях, это делается функцией expand (раскрыть) и раскладывать на множители (группировать по степеням) – collect (сбор), см. Листинг 52.
Листинг 52. Разложение по степеням. Разложение на множители
78
Профессиональные математические пакеты
Коэффициенты разложения многочлена
Операция разложения многочлена по степеням эквивалентна вычислению коэффициентов разложения многочлена перед соответствующими степенями переменных, в этом можно убедится, сравнив Листинг 52 и Листинг 53. Получение этих коэффициентов производится при помощи функции coeffs (коэффициенты).
Листинг 53. Вычисление коэффициентов многочлена
Самый простой и известный со школы способ разложения на степени – это представление полинома в виде произведения сомножителей. Действие это в аналитическом виде может быть проделано при помощи функции factor (факторизация). Такое преобразование многочлена сразу показывает все его корни
(Листинг 54).
Листинг 54. Разложение на множители
Разложение в степенной ряд
Кроме того, разложение многочлена по степеням можно выполнить, используя встроенную функцию series (разложение в степенной ряд). Сравните Листинг 55 с
примерами, приведенными выше (Листинг 52 и Листинг 53).
Листинг 55. Разложение полинома в степенной ряд
Функция series представляет в виде ряда Тейлора (или ряда Лорана) любую функцию, для этого справа от слова series необходимо указать раскладываемую функцию, а слева через запятую – в окрестности какой точки производить разложение (если этот параметр не указан, то – в окрестности нуля) и до какой степени раскладывать (по умолчанию – 5).
Рис. 39 – Функция series – разложение в степенной ряд
Данная функция очень востребована в задаче разложения громоздкого выражения на простые дроби. Эта задача актуальна для вычисления интегралов через вычеты, с которой вы встретитесь в курсе теории автоматического управления.
79
Глава 9. Символьные вычисления в MathCAD
Листинг 56. Разложение в степенной ряд в окрестности точки
Пользуясь функциями expand, collect и series можно преобразовать любую функцию к полиномиальному виду, а с полиномами легко работать.
9.4.Задача разложения на простые дроби
Одной из важных задач, часто встречающихся в математике (в теории комплексных функций, теории вычетов, вариационном исчислении) и в прикладных науках является задача разложения дробно-рациональной функции R(x) вида (50) на сумму простейших рациональных дробей.
|
Q (x) |
|
b |
xm b |
xm 1 ... b |
|
|
R(x) |
m |
|
m |
m 1 |
0 |
(50) |
|
Pn (x) |
a |
xn a |
xn 1 ... a |
||||
|
|
|
|||||
|
|
|
n |
n 1 |
0 |
|
Знаменатель этой дроби Pn(x) может быть представлен в виде элементарных множителей (разложен на множители). Об этом в курсе алгебры строго доказывается
теорема 1:
Всякий действительный многочлен P (x) a |
xn a |
xn 1 ... a |
степени n |
|
||||||
|
|
|
n |
n |
n 1 |
0 |
|
|
|
|
может быть представлен в виде: |
|
|
|
|
|
|
|
|||
P (x) a |
(x x ) 1 |
... (x x ) r (x2 |
p x q ) 1 ... (x2 p x q |
s |
) s , |
|
||||
n |
n |
1 |
r |
1 |
1 |
s |
|
|
|
|
где x1,..., xr |
- различные действительные корни кратностей 1,..., r многочлена |
(51) |
||||||||
Pn(x), а (x2 pk x qk ) k , k 1...s - квадратные трехчлены, имеющие комплексные корни соответствующих кратностей 1,..., s . Причем,
n1 ... r 2( 1 ... s ) .
Вотношении разложения дробно-рациональной функции R(x) вида (50) на сумму простейших рациональных дробей доказывается следующая теорема 2:
Всякую правильную рациональную дробь R(x) вида (50), со знаменателем, представленным в виде (51), можно разложить на сумму дробей вида (52) - (53):
|
|
|
|
|
|
A |
и |
|
|
|
Mx N |
. |
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
(x x ) i |
(x2 |
p x q ) k |
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
k |
|
|
k |
|
|
|
|
|
|
|
|||
В этом разложении каждому действительному корню |
xi |
кратности i , i 1,..., r |
|
||||||||||||||||||||||||
соответствует сумма i дробей вида: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
A1 |
|
|
|
A2 |
|
|
|
|
|
A i |
|
|
|
|
|
|
(52) |
|||||
|
|
|
x xi |
(x x )2 |
... |
|
(x x ) i |
, |
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
i |
|
|
|
|
|
|
|
||
а каждой паре комплексно-сопряженных корней, задаваемых квадратным |
|
||||||||||||||||||||||||||
трехчленом (x2 p |
x q |
|
) k , |
k 1...s , соответствует сумма дробей вида: |
|
||||||||||||||||||||||
|
k |
k |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
M1x N1 |
|
|
|
|
M 2 x N2 |
|
|
|
... |
M k x N k |
(53) |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. |
|
||||||||||||
|
x2 p |
x q |
k |
|
(x2 p |
k |
x q |
k |
)2 |
(x2 p |
k |
x q |
) k |
|
|||||||||||||
|
k |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
k |
|
|||||
Какова же методика разложения рациональной дроби R(x) вида (50) на сумму дробей вида (52) - (53)?
Алгоритм очень прост, но громоздок: 1) представить знаменатель Pn(x) в виде (51);
80