Метод сопряженных градиентов
Итерационный метод сопряженных градиентов реализован функцией peg: О рсд(А.В) — возвращает решение X СЛУ А*Х=В. Матрица А должна быть квадратной, симметрической [ В нашем примере матрица А — несимметрическая, т. е. A(i,j)—*A(j,i). — Примеч. ред. ] и положительно определенной [ Матрица называется положительно определенной, если все ее собственные значения (характеристические числа) действительные и положительные. — Примеч. ред. ]. Функция pcg начинает итерации от начальной оценки, представляющей собой вектор размером п, состоящий из нулей. Итерации производятся либо до сходимости решения, либо до появления ошибки, либо до достижения максимального числа итераций. Сходимость достигается, если относительный остаток norm(b-A*X)/norm(B) меньше или равен погрешности метода (по умолчанию 1е-6). Максимальное число итераций — минимум из п и 20. Функция pcg(...) имеет и ряд других форм записи, описанных для функции bieg(...). Пример:
» pcg(A.B)
Warning: PCG stopped after the maximum 4 iterations
without converging to the desired tolerance le-006
The iterate returned (number 4) has relative residual 0.46
> In C:\MATI_AB\toolbox\matlab\sparfun\pcg.m at line 347
ans =
1.7006
1.2870
-2.0535
8.2912
В данном случае решение к успеху не привело, поскольку матрица А —несимметрическая. Новая функция rrrinres не требует, чтобы матрица А была положительно определенной. Достаточно, чтобы она была квадратной и симметрической. В отличие от peg минимизируется не относительная невязка, а абсолютная. Но и эта функция не может решить наш пример:
» minres(A.В.1е-6.1000000)
minres stopped at iteration 1000000 without converging
to the desired tolerance le-006
because the maximum number of iterations was reached.
The iterate returned (number 1000000) has relative residual 0.011
ans =
1.9669
3.7757
3.0789
1.9367
В MATLAB 6 появилась еще одна новая функция symmlq, которая использует LQ-алгоритм итерационного метода сопряженных градиентов и также не требует, чтобы ее входной аргумент — квадратная симметрическая матрица — была положительно определенной. Эта функция тоже не может решить наш пример, так как наша матрица А — квадратная, но не симметрическая.