Entrambi sono risolutore diretto per risolvere sistemi lineari (in opposizione al risolutore iterativo).
mldivide
UNA x = bmldivide
mldivide
per matrici quadrate: se A è simmetrico e presenta elementi diagonali reali positivi, MATLAB tenta una fattorizzazione di Cholesky. Se la fattorizzazione di Cholesky fallisce, MATLAB esegue una fattorizzazione simmetrica e indefinita. Se A è Hessenberg superiore, MATLAB utilizza l'eliminazione gaussiana per ridurre il sistema a una matrice triangolare. Se A è quadrato ma non è né permutato triangolare, simmetrico e positivo definito, né Hessenberg, MATLAB esegue una fattorizzazione triangolare generale usando la fattorizzazione LU con pivot parziale
linsolve
per matrici quadrate: fattorizzazione LU con pivot parziale
mldivide
e linsolve
per matrici rettangolari: fattorizzazione QR
linsolve
opts
UN
opts.POSDEF = true; linsolve(A,b,opts)
XUNopts
Se alcuni criteri sono soddisfatti linsolve
e mldivide
utilizzano lo stesso processo di fattorizzazione. Ad esempio, per un sistema definito positivo denso che soddisfa determinate proprietà, oppure si dispone di un sistema sovradeterminato ed entrambi eseguono un adattamento meno quadrato.
Inoltre, linsolve
potrebbe anche eseguire calcoli simbolici . Ciò è utile quando si dispone di un piccolo sistema sottodeterminato che ha un numero infinito di soluzioni. linsolve
ti consente di risolverlo simbolicamente, mldivide
non puoi farlo. Tuttavia, se le variabili non sono dichiarate simbolicamente mldivide
e linsolve
darebbero lo stesso messaggio di avviso "Matrix è singolare per la precisione di lavoro".
Ultimo ma non meno importante, linsolve
non supporta sistemi sparsi come la seguente matrice (punto blu significa immissione diversa da zero). Mentre mldivide
potrebbe gestire sistemi sparsi in modo robusto quando la dimensione è inferiore a 200k per 200k.