Метод наименьших квадратов scipy.sparse.linalg.lsqr возвращает ложное точное решение - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь найти решение x наименьших квадратов, которое минимизирует норму (bA * x) с

A=[[-1, 1, 0]
   [0, -1, 1]
   [-1, 0, 1]]

и

b=[1, 1, -1]

Поэтому я сделал следующий код

import numpy as np
from scipy.sparse import csc_matrix
from scipy.sparse.linalg import lsqr

b=np.array([1.,1.,-1.], dtype=float)
A=csc_matrix([[-1., 1.,0.], [0., -1., 1.], [-1., 0., 1.]], dtype=float)
x=lsqr(A,b)[0]

И я получаю

The exact solution is  x = 0                              
array([0., 0., 0.])

Таким образом, очевидно, что Ax = b допускает точное решение в качестве нулевого вектора, но здесь Ax = [0,0,0], что явно не b. Когда я пробую это с другими значениями для b, я получаю некоторый результат, который кажется приемлемым, но здесь я действительно не понимаю вывод. У меня такое ощущение, что мне не хватает каких-то совершенно очевидных вещей.

...