둘 다 거의 동일한 결과를 제공합니다.선형 최소 제곱 다른 방법 VS QR 인수 분해의 정밀도 I는 다음과 같은 방법을 사용 scipy에서 선형 최소 제곱 문제 도끼 = B 해결을 시도
Qmat, Rmat = la.qr(A)
bpr = dot(Qmat.T,b)
n=len(bpr)
x = np.zeros(n)
for i in xrange(n-1, -1,-1):
x[i] = bpr[i]
for j in xrange(i+1, n):
x[i] -= Rmat[i, j]*x[j]
x[i] /= Rmat[i,i]
그러나이 방법은, (1E-2의 순서에 오류가) 매우 부정확 한 결과를 제공합니다 : I 수동 그래서 예를 수행 할 QR 알고리즘을 사용하여 시도했다. 코드 또는 수학에 n00b 실수를 했습니까? 아니면이 방법에 문제가 있습니까?
내 numpy 버전은 x86_64에 Python 2.7.3과 함께 1.6.1 (mkl 컴파일 된 버전은 http://www.lfd.uci.edu/~gohlke/pythonlibs/)입니다.
최소 제곱 사인파 커브 피팅에 위의 코드를 사용하고 있으므로 A 행렬은 다음과 같이 보입니다. A = numpy.c_ [cos (a * t), cos (b * t), cos (c * t는 균등하게 이격 된 M 길이의 벡터이다. 여기서, t는 sin (a * t), sin (b * t), sin (c * t) 또한 a, b 및 c의 차이는 dt * M보다 훨씬 큽니다. 이것은 A의 열이 거의 직각이고 행렬이 전체 계급임을 의미하지 않습니까? 반올림 오류에 영향을주는 다른 요소가있을 수 있습니까? – rs1223
행렬에 6 개의 열만있는 경우 벡터 't'의 길이가 6 인 경우에만 전체 랭크입니다. 또한 솔루션에서 오류를 어떻게 측정하고 있는지 지정하지 않았습니다. –
여기에서 할 수있는 일은 완전한 실행 코드를 게시하고 그 코드가 출력하는 내용을 말하는 것입니다. –