Формули за обръщане на матрица

на геодезическа тематика.
eo.geodesy
Мнения: 32
Регистриран на: Съб Мар 22, 2008 1:02 pm

Формули за обръщане на матрица

Мнение от eo.geodesy »

Заггубил съм си записките по ЕИТ в Геодезията, а от учебника не ми става ясно как да обърна квадратна матрица .... (там пише за последователни ортогонализации, но аз съм ги забравил тези неща)
1. Транспонирах матрицата A и по този начин получих matricata A*
2. Извърших умножението (A*)(A)
3. Сега трябва да обърна получената от умножението квадратна матрица
4. ........
Благодаря !
Програмирам на Delphi

smart
Мнения: 8
Регистриран на: Вто Сеп 16, 2008 3:19 pm

Мнение от smart »

в Excel има една много удобна функция за намиране на обратна матрица - MINVERSE - може да я пробваш ;) успех

eo.geodesy
Мнения: 32
Регистриран на: Съб Мар 22, 2008 1:02 pm

Мнение от eo.geodesy »

smart написа:в Excel има една много удобна функция за намиране на обратна матрица - MINVERSE - може да я пробваш ;) успех
Благодаря, но бих предпочел математически формули, понеже ми трябват в една програма, на Pascal, която вече прави транспониране и умножение на матрици, сега остава да направи обръшането на квадратна симетрична матрица и изравнението е почти готово ....
Разбира се за проверка на програмката, с удоволствие ще използвам функцията на Excel, стига да разбера как се използва ...
Програмирам на Delphi

Biliana
Мнения: 73
Регистриран на: Чет Авг 27, 2009 9:03 am
Местоположение: bg

Мнение от Biliana »


Красимир Колев
Мнения: 141
Регистриран на: Пон Ное 23, 2009 8:58 am
Местоположение: София

Мнение от Красимир Колев »

Колко е голяма получената матрица ?

eo.geodesy
Мнения: 32
Регистриран на: Съб Мар 22, 2008 1:02 pm

Мнение от eo.geodesy »

Красимир Колев написа:Колко е голяма получената матрица ?
Решавам елементарен пример от учебника по ТМОГИ, с който мога да си контролирам резултатите, докато правя програмата ....
Матрицата, която трябва да се инвертира ( обърне ) е 4x4, но за в бъдеще, ще трябва да имам универсални формули и за по-голям размер ....
( Постепенно трябва да постигна универсалност на програмата )
Програмирам на Delphi

Красимир Колев
Мнения: 141
Регистриран на: Пон Ное 23, 2009 8:58 am
Местоположение: София

Мнение от Красимир Колев »

Пише, че програмираш на Делфи. За продуктите на Борланд има една камара добавки (статични библиотеки, пакети обекти и т.н.). Със сигурност има и някоя с матрични функции. По принцип има една универсална формулка, обаче не съм я пробвал, защото ми се струва, че е доста мудна и бавна (аз па пиша на C++). Ако искаш, ше я изровя и ше драсна някакви обяснения :) А за тестове дали работи правилно, някой по-горе каза - Excel ти е варианта. Аз навремето така си тествах едно параметрично изравнение :)

eo.geodesy
Мнения: 32
Регистриран на: Съб Мар 22, 2008 1:02 pm

Мнение от eo.geodesy »

Красимир Колев написа:Пише, че програмираш на Делфи. За продуктите на Борланд има една камара добавки (статични библиотеки, пакети обекти и т.н.). Със сигурност има и някоя с матрични функции. По принцип има една универсална формулка, обаче не съм я пробвал, защото ми се струва, че е доста мудна и бавна (аз па пиша на C++). Ако искаш, ше я изровя и ше драсна някакви обяснения :) А за тестове дали работи правилно, някой по-горе каза - Excel ти е варианта. Аз навремето така си тествах едно параметрично изравнение :)
Програмирам на Делфи, напоследък на Lazarus ( Free Pascal ) ....
Търсих много, но то си е и въпрос на късмет дали и кога, ще намеря библиотека, обект, компонент, функция или процедура, която да върши това, от което се нуждая ....
Ако не ти представлява трудност, изрови тази униерсална формулка, нищо, дали е бавна или не, ако драснеш и обяснения за нея - супер !
Да Excel ще върши работа за тестване на самото обръщане на квадратна симетрична матрица ( примерът който правя в момента е точно за параметрично изравнение на трилатерация /измерени само дължини/ в една малка мрежа от няколко точки ... ).
Програмирам на Delphi

Красимир Колев
Мнения: 141
Регистриран на: Пон Ное 23, 2009 8:58 am
Местоположение: София

Мнение от Красимир Колев »

За параметрично изравнение не ти трябва обръщане на матрица. Алгоритъма на Гаус за решаване на системата нормални уравнения върши страхотна работа. По този начин освен, че решаваш изравнението, така или иначе намираш и обратната матрица и то без да си блъскаш главата с матрични преобразувания :). Проблема е, че имаше един доста тегав за "циклене" момент. Все пак ше питам дебелите книги за формулата, а ако искаш, давам и сорс код (С++ обаче) за съставяне и решаване на СНУ. Тестван и работещ.

eo.geodesy
Мнения: 32
Регистриран на: Съб Мар 22, 2008 1:02 pm

Мнение от eo.geodesy »

Честита Коледа :!:
Четох "Метод на последователната ортогонализация или пряк начин за решаване на задачата на посредственото изравнение" от учебника ЕИТ в геодезията на проф.д-р т.н.Георги Златанов 1979г. стр.75, формула /2.3.51/:
X = -(A*A)-1 A*F; където А* е транспонираната на матрицата с коефициентите A;
Ако намериш формула за изравнение и ( C++ source code тестван и работещ ) - супер, ще напрегна сивото вещество, да преведа от C++ на Pascal.... ще питам тук - там, все някой ще помогне ....
Благодаря :!:
Програмирам на Delphi

Красимир Колев
Мнения: 141
Регистриран на: Пон Ное 23, 2009 8:58 am
Местоположение: София

Мнение от Красимир Колев »

Честита ви коледа :)

Като за програмисти препоръчвам "Обобщение на МНМК за изравнение на нормално разпределени измервания" пак на проф. Златанов (лека му пръст). Сравнително нова е, 1996, само че не пише издателство, ала бала ... Ама така поне като гледам как е опакована, най-вероятно е ВИАС-ко произведение :). Аз я купувах от едната от книжарниците в старата сграда. На предната корица пише "Книга за инженера и програмиста". Има доста неща, които на друго място не съм срещал, примерен код на Basic и C++, също и това, което ти трябва.

P.S. Имаш лично съобщение :)

Незнайко1
Мнения: 182
Регистриран на: Пон Май 12, 2008 5:32 pm

Мнение от Незнайко1 »

За много години!
ето един линк http://alglib.sources.ru/linequations/s ... c/ldlt.php
има два метода единия е Холецки той решава цялата матрица (примерно КООРД - константно време за обръщане на матрицата независимо дали е плътна или разредена),
другият е Гаус-Жордан за симетрични близко диагонални матрици, силно разредени (примерно ТПЛАН - много бърз ако е разредена диагонална лента, колкото по плътна матрицата толкова по-бавен) това е най-ефективно за полигони - получават се силно разредени матрици. И за да стене близко диагонална се ползва алгоритъма на KM ( Катхила-Макки http://www.mathnet.ru/php/getFT.phtml?j ... what=fullt )
Рано е да закъсняваш, късно е да подраняваш.

eo.geodesy
Мнения: 32
Регистриран на: Съб Мар 22, 2008 1:02 pm

Мнение от eo.geodesy »

За много години :!:
Благодаря Незнайко1 :!:
Точно днес ( 13.януари.2010 ) успях превеждайки формулите на Красимир Колев от C++ да тествам успешно два примера за изравнение .... единия от стар учебник по ТМОГИ, другия от старо ръководство по ТМОГИ ....
Ще пробвам и твоите линкове в най-близко възможно бъдеще.
Нищо не ми пречи да имам два варианта за изравнение, или пък специален вариант за изравнение на полигони .... :idea:
( Уж на 13-ти би трябвало да не ми върви, но днес ми провървя, странно но факт .... :D
Благодаря още веднъж :!: :!: :!: :!: )
Програмирам на Delphi

Публикувай отговор