6.2. Приближенное решение алгебраических уравнений



Градиентные численные методы решения задач отделения корней уравнений и поиска экстремума функций очень близки. Поэтому, в частности, пользователь может тем же самым образом, с помощью контекстного меню, выбирать конкретный метод приближенного решения для функций Minimize и Maximize. Применительно к нелинейным уравнениям основная идея градиентных алгоритмов была приведена в разд. 5.3.2. Основным отличием в случае задач минимизации является критерий правильности решения (прекращения итераций): если при решении уравнений критерием служит близость нулю невязки системы уравнений, то при минимизации критерий заключается в схождении итераций к минимальным значениям исследуемой функции.

Близость рассмотренных задач связана также с тем, что иногда приходится заменять проблему решения нелинейных уравнений задачей поиска экстремума функции многих переменных. Например, когда невозможно найти решение с помощью функции Find, можно попытаться потребовать вместо точного выполнения уравнений условий минимизировать их невязку. Чтобы не нужно было реализовывать данную схему вручную (вместо встроенной функции Find использовать соответствующую постановку задачи для функции Minimize), разработчики Mathcad предусмотрели дополнительную встроенную функцию Minerr. Она применяется аналогично функции Find (см. разд. 5.1. Т), в частности, имеет тот же самый набор параметров и должна находиться в пределах вычислительного блока:

1. x1:=C1 ... хM:=CM — начальные значения для неизвестных.

2. Given — ключевое слово.

3. Система алгебраических уравнений и неравенств, записанная логическими операторами.

4. Minerr (x1, ... ,хM) — приближенное решение системы относительно переменных x1, ... ,хM, минимизирующее невязку системы уравнений.

ПРИМЕЧАНИЕ 1

В функции Minerr реализованы те же самые алгоритмы, что и в функции Find, иным является только условие завершения работы численного метода (как в случае функций Minimize и Maximize).



ПРИМЕЧАНИЕ 2

Согласно своему математическому смыслу, функция Minerr может применяться для построения регрессии серии данных по закону, заданному пользователем (см. главу 13).



Пример использования функции Minerr показан в листинге 6.9. Как видно, достаточно заменить в вычислительном блоке имя функции на Minerr, чтобы вместо точного (конечно, с поправкой на погрешность порядка TOL) получить приближенное решение уравнения, заданного после ключевого слова Given.

Листинг 6.9. Приближенное численное решение уравнения, имеющего корень (x=0, y=0)

Листинг 6.9 демонстрирует приближенное решение уравнения kx2+y2=0, которое при любом значении коэффициента k имеет единственный точный корень (х=0,у=0). Тем не менее при попытке решить его функцией Find для больших k, порядка принятых в листинге (рис. 6.5), происходит генерация ошибки "No solution was found" (Решение не найдено). Это связано с иным поведением функции f (x,y)=kx2+y2 вблизи ее корня по сравнению с функциями, поиск корней которых был разобран в предыдущей главе (см. рис. 5.1).

В отличие от них, f (х,у) не пересекает плоскость f (х,у)=0, а лишь касается ее (рис. 6.5) в точке (х=0,у=0). Поэтому и найти корень изложенными в предыдущем разделе градиентными методами намного сложнее, поскольку вблизи корня производные f (х,у) близки к нулю, и итерации, строящиеся по градиентному принципу, могут уводить предполагаемое решение далеко от корня.

Ситуация еще более ухудшается, если наряду с корнем типа касания (как на рис. 6.5) имеются (возможно, весьма удаленные) корни типа пересечения. Тогда попытка решить уравнение или систему уравнений с помощью функции Find может приводить к нахождению корня второго типа, даже если начальное приближение было взято очень близко к первому. Поэтому если вы предполагаете, что система уравнений имеет корень типа касания, намного предпочтительнее использовать функцию Minerr, тем более что всегда есть возможность проконтролировать невязку уравнений простой подстановкой полученного решения в исходную систему уравнений. Пока мы рассматривали пример нахождения существующего решения уравнения. Приведем теперь пример нахождения функцией Minerr приближенного решения не имеющего корней уравнения (листинг 6.10), а также несовместной системы уравнений и неравенств (листинг 6.11). Решение, выдаваемое функцией Minerr, минимизирует невязку данной системы. Как видно из листингов, в качестве результата выдаются значения переменных, наилучшим образом удовлетворяющие уравнению и неравенствам внутри вычислительного блока.

ВНИМАНИЕ!

Полученное в листинге 6.11 решение не удовлетворяет неравенствам, составляющим задачу. Это и неудивительно, поскольку точного решения системы нет, и в качестве ответа Mathcad выдает значения аргументов, минимизирующих норму общей невязки (не отдавая предпочтения ни уравнению, ни неравенствам).




Рис. 6.5. Поиск минимума и попытка нахождения корня функции f (x, у) =kx2+y2


Листинг 6.10. Приближенное решение уравнения x2+y2+1=0

Листинг 6.11. Приближенное решение несовместной системы уравнений и неравенств



Внимательный читатель может обнаружить, что решение, выдаваемое функцией Minerr в рассматриваемом примере, не является единственным, поскольку множество пар значений (х,у) в равной степени минимизирует невязку данной системы уравнений и неравенств. Поэтому для различных начальных значений будут получаться разные решения, подобно тому, как разные решения выдаются функцией Find в случае бесконечного множества корней (см. разд. 5.2.4). Еще более опасен случай, когда имеются всего несколько локальных минимумов функции невязки. Тогда неудачно выбранное начальное приближение приведет к выдаче именно этого локального минимума, несмотря на то, что другой (глобальный) минимум невязки может удовлетворять системе гораздо лучше.

В завершение раздела сделаем очень важное замечание, связанное с возможностью использования встроенной функции Minerr в символьных расчетах. Как и функция решения алгебраических систем Find, она может применяться без предварительного присвоения каких-либо начальных значений любым переменным, входящим в уравнение, как это проиллюстрировано листингом 6.12, решающим ту же самую задачу аналитически. Замечательно, что в результате получается не одно решение, а все семейство решений, одинаково минимизирующее невязку.

Листинг 6.12. Аналитическое приближенное решение уравнения kx2+y2+1=0