Matlab'da, linsolve ve mldivide arasındaki farklar nelerdir?


10

Matlab'de, hem linsolve ve mldivide , belirlenen overdetermine tabutlarına örneklerin tümünde, lineer denklem sisteminin çözülmesi için kullanılır.

Belgelerini okurken aralarında ne gibi farklılıklar olduğunu merak ediyordum. Üç durumda hemen hemen aynı matris çarpanlarına ayırma ve üçgenleştirme algoritmaları kullanıyorlar mı?

A opts'ta özelliklere sahipse, linsolve mldivide göre daha hızlıdır, çünkü linsolve A'nın belirtilen özelliklere sahip olduğunu doğrulamak için herhangi bir test yapmaz

Mldivide, A'nın özel özelliklere sahip olup olmadığını doğrulamak için aynı testleri yapıyor mu? Yoksa mldivide özel özellikleri olmadan sadece genel durum olarak mı davranıyor?

Teşekkürler!

Yanıtlar:


16

Her ikisi de doğrusal sistemleri (yinelemeli çözücüye karşı) çözmek için doğrudan çözücüdür.

mldivideAAx=bmldivide

mldividekare matrisler için: A simetrik ve gerçek, pozitif diyagonal elemanlara sahipse, MATLAB bir Cholesky çarpanlarına ayırmaya çalışır. Cholesky çarpanlarına ayırma işlemi başarısız olursa, MATLAB simetrik, belirsiz bir çarpanlara ayırma işlemi gerçekleştirir. A'nın üst Hessenberg olması durumunda, MATLAB sistemi üçgen bir matrise indirgemek için Gauss eliminasyonunu kullanır. A kare ise ancak üçgen, simetrik ve pozitif tanımlı veya Hessenberg'e izin verilmiyorsa, MATLAB kısmi pivotlama ile LU çarpanlarına ayırma kullanarak genel bir üçgen çarpanlarına ayırma işlemi gerçekleştirir

linsolve kare matrisler için: Kısmi pivotlama ile LU çarpanlara ayırma

mldivideve linsolvedikdörtgen matrisler için: QR çarpanlara ayırma

linsolveoptsA

opts.POSDEF = true; linsolve(A,b,opts)

xAopts

Bazı kriterler karşılanırsa linsolveve mldivideaynı çarpanlara ayırma işlemini kullanın. Örneğin, belirli özellikleri karşılayan yoğun bir pozitif tanımlı sistem için veya aşırı belirlenmiş bir sisteminiz varsa ve her ikisi de en az kare bağlantıyı gerçekleştirir.

Dahası, sembolik hesaplamalinsolve da yapabilir . Bu, sonsuz sayıda çözüme sahip küçük, belirsiz bir sisteminiz olduğunda kullanışlıdır. sembolik olarak çözmenizi sağlar, bunu yapamazsınız. Ancak, değişkenler sembolik olarak bildirilmezse ve size "Matris çalışma hassasiyetinde tekildir" uyarı mesajını verirse .linsolvemldividemldividelinsolve

Son fakat en az linsolvedeğil , aşağıdaki matris gibi seyrek sistemleri desteklemez (mavi nokta sıfır olmayan giriş anlamına gelir). İken mldividesağlam seyrek sistemlerini ele verebilir boyutu 200k tarafından 200k altında iken. seyrek örnek

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.