Я багато років не користувався визначенням кільця, відомим з курсу алгебри, однак постановка питання здалася мені дивною, адже на відміну від тіла, де у кожного елемента за винятком нуля є зворотні елементи, у елемента кільця може не бути зворотного. Для того, щоб написати про узагальненнях поняття звернення елемента, я освіжив пам'ять за допомогою Вікіпедії. Заодно з'ясував, що слово "кільце" було введено в обіг математиків Давидом Гільбертом в кінці 19-го століття, майже за тридцять років до того, як Еммі Нетер дала сучасне аксіоматичне визначення кільця як алгебраїчної системи, що має структури комутативність групи по складанню, і напівгрупи по множенню.
В середині XX століття кілька математиків незалежно розвинули теорію узагальненого звернення елементів кільця.
Кільце є полугруппой щодо множення. Для елемента x напівгрупи може бути визначений слабкий зворотний елемент y, як елемент, що задовольняє співвідношенню:
Якщо для будь-якого елемента напівгрупи x знайдеться єдиний елемент y, який є слабким зворотним і додатково задовольняє умові
то така півгрупа називається інверсійної полугруппой. Виявляється, що кільця матриць над речовими або комплексними числами є інверсійними напівгрупами щодо множення матриць.
Так була розвинена теорія узагальненого звернення Мура і Пенроуза. Псевдообернена матриця для матриці A за визначенням Мура-Пенроуза називається матриця A +, яка задовольнить чотирьом співвідношенням:
Виявляється, що така псевдообернена матриця існує і єдина для кілець матриць над C і R, а також, як наслідок, збігається з зворотною матрицею для матриць повного рангу.
Алгоритм обчислення псевдообернена матриця заснований на алгоритмі сингулярного розкладання. Якщо A = U D V *, то досить знайти псевдообернена матриця для діагональної матриці D, а потім обчислити A + = V D + U *. Цей алгоритм реалізований в пакетах інтерактивної лінійної алгебри Matlab, Octave, Scilab, NumPy і т.п. як функція pinv.