Научный форум dxdy

Математика, Физика, Computer Science, LaTeX, Механика и Техника, Химия, Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки
Текущее время: Пт сен 03, 2010 17:33:41
Для набора любых формул следует использовать тег [math]. В противном случае сообщение будет отправлено в карантин.
С Правилами Научного форума можно ознакомиться здесь.
Халявы здесь нет. На нашем форуме не решают задачи за вас.
Нужна подсветка синтаксиса? Есть такая возможность!
dxdy_ru twitter
Следите за нами в Твиттере.




Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 37 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Не в сети
 Нахождение обратной матрицы
СообщениеПт июн 22, 2007 04:12:00 
Аватара пользователя
Годы на форумеГоды на форумеГоды на форуме
Появился: 20/06/07
Сообщения: 180
Существуют ли алгоритмы нахождения обратной матрицы, дающие точный результат, или это недостижимо в принципе?

 Профиль  
                  
 Не в сети
 
СообщениеПт июн 22, 2007 04:36:38 
Заслуженный участник
Аватара пользователя
Годы на форумеГоды на форумеГоды на форумеГоды на форуме
Появился: 17/10/05
Сообщения: 3731
:evil:
Алгоритм Гаусса. А с чего Вы взяли, что результат всегда неточный?! Если у Вас точные данные, и Вы ведете точные вычисления, то Вы получите точный ответ (примером тому — системы компьютерной алгебры). Неточный результат дают итеративные методы.

 Профиль  
                  
 Не в сети
 
СообщениеПт июн 22, 2007 04:51:19 
Аватара пользователя
Годы на форумеГоды на форумеГоды на форуме
Появился: 20/06/07
Сообщения: 180
А ограничения у метода имеются?

 Профиль  
                  
 Не в сети
 
СообщениеПт июн 22, 2007 18:04:15 
Заслуженный участник
Аватара пользователя
Годы на форумеГоды на форумеГоды на форумеГоды на форуме
Появился: 17/10/05
Сообщения: 3731
:evil:
Да. Матрица не должна быть вырожденной.

Кроме того, я подозреваю, это не самый эффективный метод.

 Профиль  
                  
 Не в сети
 
СообщениеСб июн 23, 2007 00:46:38 
Аватара пользователя
Годы на форумеГоды на форумеГоды на форуме
Появился: 20/06/07
Сообщения: 180
Но у меня в расчетах практически всегда использовались вырожденные матрицы. Для справки - я пробовал обучать нечеткую модель методом Левенберга-Марквардта, так вот, там требуется строить якобиан - по сути матрицу производных, а затем находить обратную ей матрицу. Гаусс не сработал. Пытался для эксперимента найти обратную матрицу в Excel - безрезультатно.
Поэтому и спрашиваю, какие есть эффективные средства нахождения обратной матрицы?

 Профиль  
                  
 Не в сети
 
СообщениеСб июн 23, 2007 01:23:28 
Заслуженный участник
Аватара пользователя
Годы на форумеГоды на форумеГоды на форумеГоды на форуме
Появился: 17/10/05
Сообщения: 3731
:evil:
Простите, Вы просили не эффективные, а точные методы. Если у Вас небольшая размерность, можете выложить (здесь или на файлообменнике), попробуем понять.

Посмотрите, кстати, обусловленность матриц. И методы уточнения обратной матрицы (самый простой выглядит примерно так: пусть $B$ — обратная матрица, полученная численно. $A B = E +\varepsilon$. Тогда мы можем попытаться улучшить обратную матрицу, умножив ее на $ E - \varepsilon $: $B_1 = B(1-\varepsilon)$. Мы можем продолжать этот процесс до тех пор, пока норма невязки уменьшается).

 Профиль  
                  
 Не в сети
 
СообщениеСб июн 23, 2007 20:19:06 
Заслуженный участник
Годы на форумеГоды на форумеГоды на форумеГоды на форумеГоды на форуме
Появился: 15/05/05
Сообщения: 2226
Откуда: USA
artful7 писал(а):
Но у меня в расчетах практически всегда использовались вырожденные матрицы. ... Поэтому и спрашиваю, какие есть эффективные средства нахождения обратной матрицы?
В первоначальном посте Вы забыли указать, что Ваши матрицы близки к вырожденным. А для них используются специальные методы. Попробуйте, например, метод псевдообращения (обращение Пенроуза).
1) Алберт А. Регрессия, псевдоинверсия, рекуррентное оценивание. 1977
2) Голуб Дж., Ван Лоун Ч. Матричные вычисления. 1999 (раздел 5.5.4)

 Профиль  
                  
 Не в сети
 
СообщениеЧт июн 28, 2007 16:10:52 
Годы на форумеГоды на форумеГоды на форуме
Появился: 15/01/07
Сообщения: 19
У меня необратимые матрицы обращаются. http://www.drobotenko.com/code_rus.html - здесь в примерах решается СЛАУ для вырожденноц матрицы. Обращение аналогично. СЛАУ для вырожденной использовал. В обращении есть коды для этого случая, но пока не понадобилось.

Естественно ообращение на некотором подпространстве происходит :D

 Профиль  
                  
 Не в сети
 
СообщениеЧт июн 28, 2007 17:41:14 
Аватара пользователя
Годы на форумеГоды на форумеГоды на форуме
Появился: 20/06/07
Сообщения: 180
По описанию выглядит интригующе, т.к. в некоторых случаях обращение матриц - это проблема с "большой буквы".
В Си не силен, поэтому у меня просьба: можно ли обобщенный алгоритм увидеть (мне в ЛС или на емайл), чтобы на Паскале или VB сварганить программу (Ваши авторские права нарушаться, естественно, не будут!)?

Добавлено спустя 1 минуту 43 секунды:

Кстати, метод формальных манипуляций имеет опубликованное описание или это Ваше know-how?

 Профиль  
                  
 Не в сети
 
СообщениеЧт июн 28, 2007 19:11:10 
Годы на форумеГоды на форумеГоды на форуме
Появился: 15/01/07
Сообщения: 19
artful7 писал(а):
По описанию выглядит интригующе, т.к. в некоторых случаях обращение матриц - это проблема с "большой буквы".
В Си не силен, поэтому у меня просьба: можно ли обобщенный алгоритм увидеть (мне в ЛС или на емайл), чтобы на Паскале или VB сварганить программу (Ваши авторские права нарушаться, естественно, не будут!)?

Такое замечание по поводу текстов там 2 версии И в некоторых местах сложная индексация (l+k*N) вместо [i][k] Еще два массива заводятся внутренних, там индексы от 0 и может быть специальное значение -1

Цитата:
Кстати, метод формальных манипуляций имеет опубликованное описание или это Ваше know-how?

Да простая мысль, методическая. Записываем 2 матрицы исходную и 1 потом делаем преобразования одновременно над обоимя, и когда в первой получаем 1, во второй будет обратная.

Элементарные преобразования бавают левые и правые (строки-столбцы)

Теперь доказательство:
После того ка 1 получили. Эти пары умножаем на левые обратные полевому и по правому на левые просто. Потом перетаскиваем левые через правые и групируя получаем произведение исходной матрицы на результат манипуляций над единичной.

Бонус от этого тот, что можно делать операции со строками или столбцами в произвольном порядке. Перестановки и линейные операции идут какбы в обном пакете. И не нужно доказывать равносильность промежуточных систем.

Там еще для оптимизации наворочено. Левая обнуляется а единичная заполняется, вот они и обьединены в одном массиве.

Добавлено спустя 13 минут 42 секунды:

Попробую в выходные на сайте написать. В общем это универсальное доказательство правомощности произвольных методов обращения.
Еще там НЕЧИСЛА задействованы. При переписывании на другие языки, чтоб использовать частичное обращение, нужно массивы флагов-индексов в параметры засунуть.

 Профиль  
                  
 Не в сети
 
СообщениеЧт июн 28, 2007 19:18:16 
Заслуженный участник
Годы на форумеГоды на форумеГоды на форумеГоды на форумеГоды на форуме
Появился: 15/05/05
Сообщения: 2226
Откуда: USA
drob писал(а):
У меня необратимые матрицы обращаются.
...Естественно ообращение на некотором подпространстве происходит :D
Для этих же целей применяется разложение по сингулярным числам (SVD - singular values decomposition).
См. например: Райнш, Уилкинсон. Справочник алгоритмов на языке АЛГОЛ. Линейная алгебра. 1976. Алгоритм I.10 (стр.125-139). Тут и прямоугольные матрицы обращаются.

 Профиль  
                  
 Не в сети
 
СообщениеСб июн 30, 2007 01:35:54 
Аватара пользователя
Годы на форумеГоды на форумеГоды на форуме
Появился: 20/06/07
Сообщения: 180
Цитата:
Попробую в выходные на сайте написать. В общем это универсальное доказательство правомощности произвольных методов обращения.

Обязательно сделайте это. Желательно, чтобы и алгоритм был в удобочитаемом виде. Именно алгоритм - как структура не привязанная к языку программирования.

 Профиль  
                  
 Не в сети
 Re: Нахождение обратной матрицы
СообщениеВс июл 26, 2009 13:11:17 
Годы на форуме
Появился: 26/07/09
Сообщения: 2
Уже все давно до Вас написано, оболочка на python - смотри сюда!
numpy
Примеры для начинающих
[ рекламные ссылки удалены ]

 !  Бан за раскрутку сторонних сайтов!

 Профиль  
                  
 Не в сети
 Re: Нахождение обратной матрицы
СообщениеПн июл 27, 2009 21:21:27 
Годы на форумеГоды на форуме
Появился: 11/03/08
Сообщения: 68
В Вашей постановке по крайней мере три разных задачи.

1. Точное решение задачи обращения.
2. Обращение матрицы с достаточно высокой точностью за разумное время.
3. Решение задачи, требующей обращения матрицы, если она может быть вырождена.

1. Решается переходом к арифметике рациональных чисел. Т.е. числа представляются парой "числитель/знаменатель", и все операции точные (разумеется, "метод квадратного корня" тут не пройдёт, а обычный Гаусс - вполне). Решение для невырожденной матрицы будет точным. Проблема тут в том, что числа, представляющие числитель и знаменатель, чрезвычайно быстро растут. Поэтому нужно не обычные "машинные" целые числа, а использовать арифметику многократной точности. Что весьма скверно сказывается на скорости работы. Рост промежуточных результатов зависит как от размерности матрицы, так и от её обусловленности (чем хуже обусловлена - тем больше; в вырожденном случае вообще делим на 0 и приходим к бесконечности...)
2. Если допустима небольшая погрешность (на самом деле абсолютная точность бывает нужна... Почти никогда не бывает), то хорошим решением может быть использование сингулярного разложения. По времени оно в 3-5 раз хуже Гаусса, что уже приемлемо практически.
Более "грубое" решение получается с использованием регуляризации. Например, прибавляя положительную константу к диагонали матрицы. См. Тихонова и пр.
3. Если в задаче оказывается, что решение требует обращения матрицы, а она вырождена, то целесообразно использовать псевдообращение. Для чего также может быть полезно сингулярное разложение, а также приёмы регуляризации. Иногда, впрочем, оказывается, что вырожденность вызвана тем, что обращаемая матрица имеет неполный ранг по построению. Например, она является произведением двух прямоугольных матриц, и её ранг равен меньшей из размерностей матриц. Тогда целесообразно выразить псевдообратную аналитически. Иногда вовсе обойдясь без численного обращения - всё сокрашается...

 Профиль  
                  
 Не в сети
 Re: Нахождение обратной матрицы
СообщениеВс окт 11, 2009 13:12:24 

Появился: 22/09/09
Сообщения: 274
Евгений Машеров в сообщении #231463 писал(а):
В Вашей постановке по крайней мере три разных задачи.

1. Точное решение задачи обращения.

1. Решается переходом к арифметике рациональных чисел. Т.е. числа представляются парой "числитель/знаменатель", и все операции точные (разумеется, "метод квадратного корня" тут не пройдёт, а обычный Гаусс - вполне). Решение для невырожденной матрицы будет точным. Проблема тут в том, что числа, представляющие числитель и знаменатель, чрезвычайно быстро растут. Поэтому нужно не обычные "машинные" целые числа, а использовать арифметику многократной точности. Что весьма скверно сказывается на скорости работы. Рост промежуточных результатов зависит как от размерности матрицы, так и от её обусловленности (чем хуже обусловлена - тем больше; в вырожденном случае вообще делим на 0 и приходим к бесконечности...)

В таких алгоритмах проблема роста числителя и знаменателя решается алгоритмом сокращения простых дробей. Опробовано лет 20 назад. Где-то у меня есть на Фортране.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 37 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:

Темы с похожим названием

 Темы   Автор   Ответы 
Матрицы и векторы.

в форуме Помогите решить / разобраться (М)

Map

9

Определитель блочной матрицы

в форуме Олимпиадные задачи (М)

Padawan

11

Бинарные матрицы без нулевых и единичных подматриц

в форуме Олимпиадные задачи (М)

maxal

3

Элементарные делители матрицы f(A)

в форуме Помогите решить / разобраться (М)

antondm

8

Нахождение n-бит. кода замены с минимальной разницей соседей

в форуме Помогите решить / разобраться (М)

SereNEES

8

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group