Oba są bezpośrednimi solverami do rozwiązywania układów liniowych (w przeciwieństwie do solvera iteracyjnego).
mldivide
ZAA x = bmldivide
mldivide
dla matryc kwadratowych: jeśli A jest symetryczny i ma rzeczywiste, dodatnie elementy ukośne, MATLAB próbuje dokonać rozkładu na czynniki Choleskiego. Jeśli rozkład na czynniki pierwsze nie powiedzie się, MATLAB przeprowadzi symetryczne, na czas nieokreślony rozkład na czynniki pierwsze. Jeśli A jest górną Hessenbergiem, MATLAB stosuje eliminację Gaussa, aby zredukować układ do macierzy trójkątnej. Jeśli A jest kwadratem, ale nie jest permutowanym trójkątnym, symetrycznym i dodatnim określonym, ani Hessenbergiem, to MATLAB przeprowadza ogólną faktoryzację trójkątną z wykorzystaniem faktoryzacji LU z częściowym przestawieniem
linsolve
dla matryc kwadratowych: faktoryzacja LU z częściowym przestawieniem
mldivide
a linsolve
dla matryc prostokątnych: faktoryzacja QR
linsolve
opts
ZA
opts.POSDEF = true; linsolve(A,b,opts)
xZAopts
Jeśli określone kryteria są spełnione linsolve
i mldivide
wykorzystaj ten sam proces faktoryzacji. Na przykład, dla gęstego, pozytywnego określonego systemu spełniającego określone właściwości, lub masz zbyt określony system i oba wykonują dopasowanie najmniej kwadratowe.
Ponadto linsolve
może również wykonywać obliczenia symboliczne . Jest to przydatne, gdy masz mały, nieokreślony system, który ma nieskończoną liczbę rozwiązań. linsolve
pozwala rozwiązać symbolicznie, mldivide
nie można tego zrobić. Jeśli jednak zmienne nie są zadeklarowane symbolicznie mldivide
i linsolve
dałby ten sam komunikat ostrzegawczy: „Matryca ma szczególną precyzję działania”.
Wreszcie, linsolve
nie obsługuje rzadkich systemów, takich jak następująca macierz (niebieska kropka oznacza niezerowe wejście). Chociaż mldivide
może obsługiwać rzadkie systemy solidnie, gdy rozmiar jest mniejszy niż 200k na 200k.