Ao usar o ZGELSS para resolver esse problema, você está usando a decomposição de valor singular truncado para regularizar esse problema extremamente mal condicionado. é importante entender que essa rotina da biblioteca não está tentando encontrar uma solução de mínimos quadrados para , mas está tentando equilibrar a localização de uma solução que minimizecontra minimizar. Ax=b∥x∥∥Ax−b∥
Observe que o parâmetro RCOND passado para o ZGELSS pode ser usado para especificar quais valores singulares devem ser incluídos e excluídos do cálculo da solução. Qualquer valor singular menor que RCOND * S (1) (S (1) é o maior valor singular) será ignorado. Você não nos contou como definiu o parâmetro RCOND no ZGELSS, e não falamos nada sobre o nível de ruído dos coeficientes na matriz ou no lado direito , por isso é difícil dizer se você usou uma quantidade adequada de regularização. Ab
Você parece estar satisfeito com as soluções regularizadas que está obtendo com o ZGELSS, portanto parece que a regularização efetuada pelo método SVD truncado (que encontra uma solução mínima entre as soluções de mínimos quadrados que minimizam no espaço de soluções abrangidas pelos vetores singulares associados aos valores singulares maiores que RCOND * S (1)) é satisfatório para você. ∥x∥∥Ax−b∥
Sua pergunta pode ser reformulada como "Como posso obter eficientemente soluções de mínimos quadrados regularizados para esse problema de mínimos quadrados lineares grandes, esparsos e muito mal condicionados?"
Minha recomendação seria usar um método iterativo (como CGLS ou LSQR) para minimizar o problema de mínimos quadrados explicitamente regularizado
min∥Ax−b∥2+α2∥x∥2
onde o parâmetro de regularização é ajustado para que o problema de mínimos quadrados com amortecimento seja bem condicionado e para que você fique satisfeito com as soluções regularizadas resultantes. α