Расчет псевдообратной матрицы

Я пытаюсь повторить пример расчета псевдообратной матрицы из лекций < / а>:

введите здесь описание изображения

Я использую этот код

from numpy import *
# https://classes.soe.ucsc.edu/cmps290c/Spring04/paps/lls.pdf
x = np.array([[-11, 2],[2, 3],[2, -1]]) 
print(x)
# computing the inverse using pinv
a = linalg.pinv(x)
print(a)

Мой результат расчета отличается от результата лекции.

Мой результат:

[[-0.07962213  0.05533063  0.00674764]
 [ 0.04048583  0.2854251  -0.06275304]]

Результат формы лекции:

[[-0.148  0.180  0.246]
 [ 0.164  0.189 -0.107]]

Что я делаю неправильно? Скажи мне, пожалуйста!


person V. Gai    schedule 24.10.2017    source источник


Ответы (1)


В конспектах лекции есть ошибка. Похоже, что они нашли псевдо-инверсию

    [-1   2]
A = [ 2   3]
    [ 2  -1]

(Обратите внимание на изменение A [0,0] с -11 на -1.) Вот расчет для этой версии A:

In [73]: A = np.array([[-1, 2], [2, 3], [2, -1]]) 

In [74]: A
Out[74]: 
array([[-1,  2],
       [ 2,  3],
       [ 2, -1]])

In [75]: np.linalg.pinv(A)
Out[75]: 
array([[-0.14754098,  0.18032787,  0.24590164],
       [ 0.16393443,  0.18852459, -0.10655738]])

In [76]: np.linalg.pinv(A).dot([0, 7, 5])
Out[76]: array([ 2.49180328,  0.78688525])
person Warren Weckesser    schedule 24.10.2017