Как показано в документации numpy.linalg.solve
:
Вычисляет «точное» решение x для точно определенной линейной матрицы с полным рангом, т.е.уравнение ax = b.
Ваша система уравнений недоопределена не переопределена.Обратите внимание, что у вас есть 3 переменные и 2 уравнения, таким образом, меньше уравнений, чем неизвестных.
Также обратите внимание, как в нем также упоминается, что в numpy.linalg.solve(a,b)
, a
должна быть матрица MxM
.Причина этого заключается в том, что решение системы уравнений Ax=b
включает в себя вычисление обратного A
, и только квадратные матрицы обратимы.
В этих случаях распространенным подходом является использование псевдообратного Мура-Пенроуза., который будет вычислять наилучшее решение (наименьших квадратов) системы.Поэтому вместо того, чтобы пытаться найти точное решение, используйте numpy.linalg.lstsq
:
x_qr = np.linalg.lstsq(R,Qb)