Реализация численных методов в MathCAD 7. 0 PRO

Серьезные пользователи, работающие с математическими системами, зачастую бывают недовольны отсутствием информации о реализованных в таких системах численных методах. Связано это с тем, что нередко от этих методов зависит успех решения особых задач, с которыми может столкнуться каждый пользователь. Поэтому немного остановимся на сути численных методов, реализованных в системе MathCAD 7. 0 PRO.

Прежде всего отметим, что выражения 0*x, 0/х и 0/0 система вычисляет как 0. Точнее говоря, встречая 0 в числителе любого выражения, она не вычисляет это выражение, а просто полагает его значение равным 0. При реализации численных методов MathCAD дает точными 15 десятичных цифр для результатов вычислений, но при выводе задает число знаков в соответствии с выбранным форматом чисел.

Определенные интегралы система вычисляет методом Ромберга. Этот метод широко описан в нашей литературе (см., например, [1, 2]). Поэтому, не описывая его подробно, отметим лишь, что он является вариантом метода трапеций с делением на два интервала интегрирования с итерационным уточнением решения до достижения заданной точности (она определяется значением системной переменнойTOL).

Если за заданное число итераций точность не достигнута, используется более точный метод Ромберга с открытыми концами. При нем число интервалов утраивается на каждом шаге интегрирования. Этот метод увеличивает число шагов интегрирования там, где подынтегральная функция меняется более резко (например, если она имеет разрыв).

К достоинствам метода можно отнести то, что он делает все возможное, чтобы вычислить интеграл даже при сложной функции. Но для простых функций это ведет к увеличению времени вычислений. При наличии у подынтегральной функции особенностей время вычисления может резко возрастать из-за перехода от одной реализации метода Ромберга к другой. Поэтому нередко бывает оправданным применение достаточно точных формул интегрирования, например формул Ньютона — Котесса с легко предсказуемыми узлами, которые можно выбрать вдали от особых точек подынтегральной функции. Примеры такого подхода даны в Главе 14.

Для вычисления производных порядка от 0 до 5 система использует метод Риддера. Подробности о нем можно найти в [14]. Главное то, что метод вычисляет первую производную с погрешностью до 7—8 верных цифр результата, а с повышением производной на порядок число верных цифр уменьшается на единицу. Метод Риддера — итерационный (на каждой итерации шаг дифференцирования уменьшается), но число итераций ограничено. Если при реализации этого метода указанная точность не достигается, MathCAD сообщает об отсутствии сходимости.

При решении систем уравнений и неравенств используется итерационный метод Левенберга — Маркардта, содержащийся в известном и свободно распространяемом пакете алгоритмов численных методов MINPACK. Этот метод пытается найти нули или минимум среднеквадратичной погрешности при решении заданной системы уравнений или системы неравенств. При решении с применением аппарата комплексных чисел раздельно решаются действительная и мнимая части уравнений.

При решении вычисляется также вектор невязки. Если его величина меньшеTOL, система возвращает вектор переменных-неизвестных. Если для решения используется функцияfind, при величине вектора невязки больше TOL система сообщает, что решение не найдено. Когда используется функция minerr, вектор неизвестных возвращается даже в том случае, когда значение вектора невязки большеTOL. Наконец, если не обнаружено схождение за заданное число итераций, выдается сообщение об отсутствии сходимости (как при применении функцииfind, так иminerr). В любых случаях величина вектора невязки определяется значением переменнойERR.

Для вычисления определителей матрицы и ее инвертирования используется LU-разложение. При этом матрица М разлагается в произведение нижней треугольной матрицы L и верхнейU (т. е.M=L-U). Такой метод хорошо известен. В частности, он позволяет:

• вычислить определитель исходной матрицы как произведение диагональных элементов матриц L и U;

• вычислить обратную матрицу из решения матричного уравнения M*Vj=ej, где е — вектор с единицей на j-м месте и нулями в остальных позициях, V— вектор решения, который образует столбцы обратной матрицы для каждогоj;


Наши рекомендации