Используя API Python MATLAB, я отладил свой код и сравнил результаты:
Код: Выделить всё
import matlab
eng = matlab.engine.start_matlab()
from scipy import sparse
import numpy as np
if (eng is None):
problemflag = False
tmp = sparse.linalg.minres(Reg,y,rtol=1e-18,maxiter = 1e4)
problemflag = problemflag or (tmp[1]!=0)
x = tmp[0][:,np.newaxis]
else:
Reg_mat = matlab.double(Reg.toarray().tolist())
y_mat = matlab.double(y.tolist())
eng.workspace["Reg_mat"] = Reg_mat
eng.workspace["y_mat"] = y_mat
eng.eval("x = lsqminnorm(sparse(Reg_mat),y_mat);",nargout=0)
x = np.array(eng.workspace["x"])
Код: Выделить всё
problemflagЯ также запускал код с check=True в минутах, без ошибок, что означает (как я уже подтвердил, посмотрев на A-A.T), что матрица симметрична. Таким образом, проблема не в асимметрии.
Я использую Python 3.12.4, scipy 1.16.3 и MATLAB версии 25.2.0.3055257 (R2025b), обновление 2
Подробнее здесь: https://stackoverflow.com/questions/798 ... ad-results
Мобильная версия