Ambos son solucionadores directos para resolver sistemas lineales (opuestos al solucionador iterativo).
mldivide
AAx=bmldivide
mldivide
para matrices cuadradas: si A es simétrica y tiene elementos diagonales positivos reales, MATLAB intenta una factorización de Cholesky. Si la factorización de Cholesky falla, MATLAB realiza una factorización simétrica e indefinida. Si A es superior a Hessenberg, MATLAB usa la eliminación gaussiana para reducir el sistema a una matriz triangular. Si A es cuadrado pero no es triangular permutado, definido simétrico y positivo, o Hessenberg, entonces MATLAB realiza una factorización triangular general utilizando la factorización LU con pivote parcial
linsolve
para matrices cuadradas: factorización LU con pivote parcial
mldivide
y linsolve
para matrices rectangulares: factorización QR
linsolve
opts
A
opts.POSDEF = true; linsolve(A,b,opts)
xAopts
Si se cumplen ciertos criterios linsolve
y se mldivide
utiliza el mismo proceso de factorización. Por ejemplo, para un sistema definido positivo denso que satisface ciertas propiedades, o tiene un sistema sobredeterminado y ambos realizan un ajuste de mínimos cuadrados.
Además, linsolve
también podría realizar cálculos simbólicos . Esto es útil cuando tiene un pequeño sistema subdeterminado que tiene un número infinito de soluciones. linsolve
le permite resolverlo simbólicamente, mldivide
no puede hacer eso. Sin embargo, si las variables no se declaran simbólicamente mldivide
y linsolve
le darían el mismo mensaje de advertencia "Matrix es singular para la precisión de trabajo".
Por último, pero no menos importante, linsolve
no es compatible con sistemas dispersos como la siguiente matriz (punto azul significa entrada distinta de cero). Si bien mldivide
podría manejar sistemas dispersos de manera robusta cuando el tamaño es inferior a 200k por 200k.