2014 dxdy logo

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

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Алгоритм обращения квадратной матрицы
Сообщение15.01.2007, 23:12 


15/01/07
19
Вот придумал алгоритм обращения квадратной матрицы, с исходниками на CPP.

Матрица обращается на месте, без использования памяти на дополнительные матрицы. С выбором ведущего элемента.

Теория метода и исходники - http://www.drobotenko.com/code_rus.html

 Профиль  
                  
 
 
Сообщение03.05.2007, 23:29 


15/01/07
19
Старые коды с Борланда пришлось переписать. Теперь там есть архив для VC Коды совместима со стандартом СПП. - Дело в том что СПП по части темплайтов сильно меняется.

Семантика указателя (а=б создает алиас), без перегруженных операций, иначе копирований неизбежать и потери производительности.. Тоесть fun(A,..) не A=M*V. Сейчас есть версия double с итераторами присвоения, пересылки и темплате. Темплате может работать с матрицами-векторами любого типа и с любыми контейнерами, вклоючая просто массивы

Про алгоритмы:
Инверсия матрицы вообще не требует памяти – тоесть на месте. СЛАУ создает внутри копию, которую портит, исходные оставляет. Мои методы точные и быстрые. Мое СЛАУ подходит для МНК всегда, в отличии от LU разложения, которое переопределенные системы не считает. Детерминант всегда считается.

 Профиль  
                  
 
 
Сообщение23.10.2007, 05:43 


23/10/07
10
я попробовал ваш алгоритм как вы его описали по ссылке на произвольной матрице 2x2, но у меня не сошлось. Вы не могли бы пояснить на таком простейшем примере? Должно получиться
\left(\begin{array}{cc}a & b\\c & d \end{array}\right)^{-1} = \frac{1}{ad-bc}\left(\begin{array}{cc}d & -b\\-c & a \end{array}\right)

 Профиль  
                  
 
 
Сообщение24.10.2007, 13:14 


15/01/07
19
vasionok писал(а):
я попробовал ваш алгоритм как вы его описали по ссылке на произвольной матрице 2x2, но у меня не сошлось. Вы не могли бы пояснить на таком простейшем примере? Должно получиться
\left(\begin{array}{cc}a & b\\c & d \end{array}\right)^{-1} = \frac{1}{ad-bc}\left(\begin{array}{cc}d & -b\\-c & a \end{array}\right)

Для простоты первый ведущий будет a никакие перестановки не понадобятся. Тогда второй на месте d. Все простые элементы это d из него вычитается b*c/a. Потом делим строки и столбцы ведущего на a, это b и c. Ну и само a. тогда после первого шага \left(\begin{array}{cc}-1/a & b/a\\c/a & d-bc/a  \end{array}\right) или \left(\begin{array}{cc}-1/a & b/a\\c/a & (ad-bc)/a  \end{array}\right) Теперь ведущий (ad-bc)/a . Повторяя тоже получим как у Вас, только с обратным знаком $\frac{-1}{ad-bc }$ \left(\begin{array}{cc}d & -b\\-c & a \end{array}\right) . Для левого верхнего распишем подробней $\frac{-1}{a}$-$\frac{b}{a}$$\frac{c}{a}$$\frac{a}{ad-bc}$  = $\frac{ -(ad-bc)-bc)}{a(ad-bc)}$   = $\frac{ -d}{ad-bc}$, Попутно можно получить детерминант, как произведение ведущих a*((ad-bc)/a)=ad-bc

 Профиль  
                  
 
 
Сообщение25.10.2007, 19:22 


05/08/07

194
drob писал(а):
... Мои методы точные и быстрые. Мое СЛАУ подходит для МНК всегда, в отличии от LU разложения, которое переопределенные системы не считает. Детерминант всегда считается.

Подскажите пожалуйста, как Ваш "быстрый и точный метод" применить к нахождению собственных векторов методом обратной итер. (Решение СЛАУ). С точки зрения "железа" необходимо решать вырожденные СЛАУ.

 Профиль  
                  
 
 
Сообщение30.10.2007, 03:34 


15/01/07
19
abc_qmost писал(а):
drob писал(а):
... Мои методы точные и быстрые. Мое СЛАУ подходит для МНК всегда, в отличии от LU разложения, которое переопределенные системы не считает. Детерминант всегда считается.

Подскажите пожалуйста, как Ваш "быстрый и точный метод" применить к нахождению собственных векторов методом обратной итер. (Решение СЛАУ). С точки зрения "железа" необходимо решать вырожденные СЛАУ.

То что "считается всегда" это штука не очень хитрая, но полезная и удобная. Просто когда ведущий становится маленьким остальные координаты не рассматриваются. Можно хотябы для диагностики использовать. Сейчас в нелинейных задаче это использую. Есть набор параметров, которые можно закрепить или оптимизировать и вобщем всегда программа как-то работает, тоесть оптимизирует тот набор что может.

СЛАУ там самый обыкновенный, за исключением того что "считается всегда". Быстрый и точный метод - это про обращение матриц. Коды компактные строчек 50 всего, подходят для низкоуровневой оптимизации . А если взять http://www.netlib.org/cgi-bin/netlibfil ... 2Fdgetri.f из http://www.netlib.org/lapack/double/ то там 500 и еще плюс всякие EXTERNAL XERBLA которые неизвестно где. Точные - потому что полный выбор ведущего.

 Профиль  
                  
 
 Re: Алгоритм обращения квадратной матрицы
Сообщение30.10.2007, 07:27 


15/11/05
46
Томск
drob писал(а):
Вот придумал алгоритм обращения квадратной матрицы, с исходниками на CPP.


Вы его где-нибудь публиковали?
хотелось бы посмотреть статьи.

 Профиль  
                  
 
 Re: Алгоритм обращения квадратной матрицы
Сообщение31.10.2007, 00:14 


15/01/07
19
KSergP писал(а):
Вы его где-нибудь публиковали?
хотелось бы посмотреть статьи.

Нигде не опубликовано – есть только то, что на сайте

 Профиль  
                  
 
 Re: Алгоритм обращения квадратной матрицы
Сообщение31.10.2007, 05:19 


15/11/05
46
Томск
drob писал(а):
KSergP писал(а):
Вы его где-нибудь публиковали?
хотелось бы посмотреть статьи.

Нигде не опубликовано – есть только то, что на сайте


регистрировать надо....
и публиковать, например, вычислительная математика и программирование...

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



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

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


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group