Les deux sont des solveurs directs pour résoudre des systèmes linéaires (opposés au solveur itératif).
mldivideUNEA x = bmldivide
mldividepour les matrices carrées: Si A est symétrique et a des éléments diagonaux réels et positifs, MATLAB tente une factorisation de Cholesky. Si la factorisation de Cholesky échoue, MATLAB effectue une factorisation symétrique et indéfinie. Si A est Hessenberg supérieur, MATLAB utilise l'élimination gaussienne pour réduire le système à une matrice triangulaire. Si A est carré mais n'est ni permuté triangulaire, symétrique et défini positif, ni Hessenberg, alors MATLAB effectue une factorisation triangulaire générale en utilisant la factorisation LU avec pivotement partiel
linsolve pour les matrices carrées: factorisation LU avec pivotement partiel
mldivideet linsolvepour les matrices rectangulaires: factorisation QR
linsolveoptsUNE
opts.POSDEF = true; linsolve(A,b,opts)
XUNEopts
Si certains critères sont remplis linsolveet mldivideutilisent le même processus de factorisation. Par exemple, pour un système défini positif positif dense satisfaisant certaines propriétés, ou vous avez un système surdéterminé et les deux effectuent un ajustement moins carré.
En outre, linsolvepourrait également effectuer un calcul symbolique . C'est pratique lorsque vous avez un petit système sous-déterminé qui a un nombre infini de solutions. linsolvevous permet de le résoudre symboliquement, mldividene peut pas le faire. Cependant, si les variables ne sont pas déclarées symboliquement, mldivideet linsolvevous donneraient le même message d'avertissement "La matrice est singulière pour la précision de travail."
Last but not least, linsolvene prend pas en charge les systèmes clairsemés comme la matrice suivante (le point bleu signifie une entrée non nulle). Bien qu'il mldividepuisse gérer les systèmes clairsemés de manière robuste lorsque la taille est inférieure à 200k par 200k.
