Блог пользователя Edvard

Автор Edvard, 13 лет назад, По-русски
Сегодня решил наконец взяться за домашку по численным методам. Открыл задание, смотрю написано численные методы решения СЛАУ. Меня это сразу спугнуло зачем решать СЛАУ численно когда есть Гаусс. Но ещё больше меня спугнули сами методы: 1) Метод итерации; 2) Метод простой итерации; 3) Метод Зейделя (стационарный); 4) Метод Зейделя (нестационарный). Я сильно удивился тому насколько просто и тупо выглядят эти методы. Закодил я всё это минут за 10 но ни один метод не сходится, т. е. сходится только на совсем тупых системах и то не всегда. Может мне кто-нибудь объяснить что это всё вообще такое и когда и почему это должно сходиться?
  • Проголосовать: нравится
  • +25
  • Проголосовать: не нравится

13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А что на счет скорости решения СЛУ численными методами( извините, не слышал про СЛАУ)? Может оно быстрее будет чем простой кубический Гаусс?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Ну лано допустим я понимаю зачем нужны эти методы. Меня в основном интересует почему это не сходится
    • 13 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
      Смутно вспоминается, что все будет круто, если на главной диагонали элементы заметно больше, чем все остальные. Там для каждого метода свои условия сходимости должны быть.
      Можно поискать что-нибудь про всякие числа обусловленности

      (это все было довольно давно, так что я вполне могу ошибаться)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Извини за банальность ответа - а точно закодил все верно или в литературе не всё до конца описано.

      Если память не подводит - для численного решения иногда надо изменять исходную матрицу. 

      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Я всё нормально закодил. На счёт изменения я ничего не менял.
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Я всё нормально закодил. На счёт изменения я ничего не менял.
        • 13 лет назад, # ^ |
            Проголосовать: нравится +6 Проголосовать: не нравится

          На самом деле, если у тебя есть система АX = B, то мы ее должны привести к нужному виду, а именно x = Gx + H

          при этом метод будет сходиться, если норма матрицы меньше 1 (достаточное условие), либо если все собственные числа меньше 1 (критерий).

          как мы будем сводить систему к такому виду? Самый простой способ это что-то типа такого.

          Ax = B

          умножим левую и правую часть на АT  (слева), и введем следующие обозначения C = AT * A, D = AT * B

          Тогда мы имеем систему CX = D. Разделим левую и правую часть на || C || . (при этом из норм можно брать как евклидову, так и кубическую, так и октаэдрическую). Про матрицу С мы можем сказать, что она положительно определенная (как композиция сопряженных операторов), тогда все ее собственные значения больше нуля. Теперь, вспомним теорему о том, что любое собственное значения не превосходит по модулю нормы матрицы, запишем систему в виде  QX = H, где Q = C / || C ||, H = C / || C ||. Тогда у матрицы Q все собственные значения меньше 1.

          Прибавим к левой и правой части X : X + QX = X + H

          X = (Q E ) X + H

          Тогда про матрицу Q  - E мы можем сказать, что все ее собственные значения по модулю не больше 1, чего мы и добивались. Недостаток этого метода в том, что при большом числе обусловленности матрицы, у нас будет очень медленная сходимость. В качестве хорошего метода сведения системы к нужному виду можно вспомнить неявное LU разложение, но этот подход не стоит времени, которое на него будет затрачиваться.

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

          • 13 лет назад, # ^ |
              Проголосовать: нравится +12 Проголосовать: не нравится
            Спасибо за хороший ответ теперь более менее всё понятно. Я правильно понимаю, что евклидова норма матрицы - это просто корень квадратный из суммы квадратов коэффициентов матрицы?
            • 13 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится
              Да, это именно так. В реальности получается, что именно он дает лучшую скорость сходимости в дальнейшем. Одним из хороших аспектов численных методов (к примеру при решение системы АX = X) является то, что мы тут сразу найдем решение (когда при решение с помощью гаусса можем прийти к тому, что решение не единственно, и лично мне не нравится такая возможность при кодинге гаусса=) ).
  • 13 лет назад, # ^ |
      Проголосовать: нравится +2 Проголосовать: не нравится
    Видимо, буква А значит алгебраических, ибо бывают ещё дифференциальные :)
13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
Численные методы полезны для разреженных систем. Бывает ненулевых коэффициентов O(n), и можно решать за O(n) с некоторой точностью, а не за O(n^3) точно. Вот пример практического применения (никак не отвечает на ваши вопросы, просто тут оно используется) http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.12.6736&rep=rep1&type=pdf
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Дополню ещё, что для разреженных систем бывают даже точные методы, работающие быстрее чем за куб.
    (Хотел дать ссылку на методичку по курсу "Методы вычислений", но, к сожалению, она есть только на закрытом ресурсе и не гуглится.)
13 лет назад, # |
  Проголосовать: нравится +10 Проголосовать: не нравится
Итерационные методы решения СЛАУ сходятся не всегда, а только при определенных условиях. В основе лежит принцип сжимающих отображений.  Почитай Березин, Жидков. Методы вычислений. Том 2.