Küçük lineer sistemin sayısal olarak kararlı açık çözümü


11

Homojen olmayan bir doğrusal sistemim var

Ax=b

burada A , n = 4 olan gerçek bir n×n matrisidir . A'nın sıfır uzayının sıfır boyutta olması garanti edilir, bu nedenle denklem benzersiz bir ters x = A - 1 b'ye sahiptir . Sonuç, uyarlanabilir bir yöntem kullanarak çözmeyi düşündüğüm bir ODE'nin sağ tarafına girdiğinden, çözümün A ve b öğelerinin küçük varyasyonlarına göre pürüzsüz olması önemlidir . Bu gereksinim ve küçük boyutlar nedeniyle A - 1 b için açık formüller uygulamayı düşündümn4Ax=A1bAbA1b. Elemanlar tam olarak sıfır olabilir veya çok farklı değerler alabilir. Benim sorum bunun sizin için anlamlı olup olmadığı ve bunun için bilinen istikrarlı ifadeler olup olmadığıdır. X86 sistemleri için C kodlaması yapıyorum.


Çok geç geldiğini biliyorum, ama benim önerim: toplam döndürme ile Gauss eliminasyonunun kararlı olduğu bilindiğinden, küçük boyutlar için algoritmayı zor kodlamak mantıklı olabilir. Pivotlama, (n!)2 Birbirini izleyen pivotları seçmenin 2 yolu olduğu için konuyu zorlaştırır (n!)2 farklı formül setine yol açar ; takas edilmesi gerekenleri değiştirerek bu karmaşıklığı azaltarak vaka sayısını 12+22+n2 .
Yves Daoust

Yanıtlar:


6

Açık formülleri uygulamadan önce, kendime şu soruyu sorardım: "buna değer mi?":

  • Klasik Gauss eliminasyonunu kullanan BLAS + LAPACK ile kolayca bağlantı kurarken, bu açık formülleri yazmak, hata ayıklamak ve doğrulamak için zaman ayırmaya değer mi?
  • İstikrar kazanmayı mı bekliyorsunuz? Açık formülleri programlamanın (Cramer'in kuralı gibi) aksine, size daha iyi bir istikrar sağlayacağını düşünmüyorum.
  • Hız kazanmayı düşünüyor musunuz? Tüm programınızın profilini zaten oluşturdunuz mu? Bu 4x4 sistemlerin çözümünde zamanın ne kadarı harcanır?
  • Bir yıl içinde modelinizi iyileştirme ve 4 yerine 5 denkleme ihtiyacınız olma olasılığı nedir?

Benim tavsiyem: ilk olarak BLAS / LAPACK kombinasyonunu kullanın, işe yarayıp yaramadığına bakın, tüm programı profilleyin, bir öğrenciden açık formüller uygulamasını isteyin (üzgünüm, burada alaycı olmak) ve hız ve sağlamlık hakkında bir karşılaştırma yapmasını isteyin.


Bunu uygulamak için harcadığım çaba yaklaşık 15 dakikadır, çünkü bir CAS'a (benim için Maple) genel bir 1x1, 2x2, 3x3 ve 4x4 matrisi girip ters çeviriyorum. Açık (C benzeri) bir sonuç döndürecektir (sözde Cramer kuralına dayanmaktadır). İkinci noktan tam olarak benim endişem. Sonuçta matris elemanlarının daha yüksek dereceli ürünleri olacaktır. Açıkçası bu, farklı terimlerin 'neredeyse iptali' nedeniyle hatalar getirebilir. Ancak soru, sonucu bunun gerçekleşmediği bir formda yazmak mümkün ise. Hız, burası ana endişe değildir.
highsciguy

6

O(n3)

AAdet(A)0xbxA

Güvende olmak için, muhtemelen sayısal olarak eksik olmadığından emin olmak en iyisidir (yani, küçük tekil değerlere sahip değildir).A

Cramer Kuralı ile ilgili sorun, (stabilitesi ileri, ancak geriye doğru stabil olmayan) dışında stabilite özelliklerinin bilinmemesidir . (Bkz . Sayısal Algoritmaların Doğruluğu ve Kararlılığı , 2. baskı, N. Higham.) Güvenilir bir algoritma olarak kabul edilmez; Kısmi Pivot ile Gauss Eliminasyonu (GEPP) tercih edilir.n=2

Bir ODE çözümünde GEPP yürütmek için BLAS + LAPACK kullanarak sorun bekliyorum bir örtülü ODE yönteminde kullanılan herhangi bir sonlu fark olacaktır. İnsanların doğrusal programları sağ taraf değerlendirmesinin bir parçası olarak çözdüğünü biliyorum ve çok naif bir şekilde yaptıklarından (sadece doğrusal programı çözerek sağ tarafa taktılar, bir simpleks algoritması çağırarak), hesapladı ve sorunu çözmek için gereken süreyi önemli ölçüde artırdı. Bir laboratuvar arkadaşım bu tür problemlerin çok daha verimli ve doğru bir şekilde nasıl çözüleceğini anladı; Henüz yayınının yayınlanıp yayınlanmadığını görmek zorundayım. GEPP veya Cramer Kuralını kullanmayı tercih edip etmediğinize benzer bir sorun yaşayabilirsiniz.

Sorununuz için analitik bir Jacobian matrisi hesaplamanın herhangi bir yolu varsa, kendinize bazı sayısal baş ağrılarını kurtarmak için bunu yapmak isteyebilirsiniz. Sonlu farklar yaklaşımından daha ucuz ve muhtemelen daha doğru olacaktır. Ters matris türevi için ifadeler ihtiyacınız varsa burada bulunabilir . Matrisin tersinin türevini değerlendirmek, en az iki veya üç lineer sistem çözümü gerektirecek gibi görünüyor, ancak hepsi aynı matris ve farklı sağ taraflarla olacak, bu nedenle tek bir lineer sistemden çok daha pahalı olmayacaktı. çözmek.

Hesaplanan çözümünüzü bilinen parametre değerlerine sahip bir çözümle karşılaştırabilmenin herhangi bir yolu varsa, bunu yapardım, böylece bu sayısal tuzaklardan herhangi biriyle karşılaşıp karşılaşmadığınızı teşhis edebilirsiniz.


Burada düzgün yazdığınızda, sonlu hassasiyetle değerlendirildiğinde de pürüzsüz, yani sabit (yani söylemeye çalıştığım şey) anlamına mı geliyorsunuz. Ayrıca GertVdE'nin cevabı hakkındaki yorumuma bakın. Sanırım neredeyse tekil matrisleri dışlayabiliyorum (bu gibi durumlarda fiziksel problemimin analizinin yeniden biçimlendirilmesi gerektiğini düşünüyorum).
highsciguy

1
"Sürekli en az iki kez farklılaşabilir" demek istiyorum. Ben matris ters haritası herkes için sonsuz sürekli olarak türevlenebilir olduğunu düşünüyorum düşünüyorum öyle ki . Adet(A)0
Geoff Oxberry

'Örtük bir ODE yönteminde kullanılan sonlu farklar' hakkındaki yorumunuz benim için geçerlidir. boyutu , ODE sistemimin boyutundan çok daha küçük olduğundan (bu matris yalnızca birkaç değişkenin eşlenmesinde ortaya çıkar), sağlamlık bu aşamada hızdan çok daha önemlidir. Özellikle geliştirme aşamasında, tek tek bileşenlerin güvenli olduğundan emin olmazsam karşılaşılan sayısal hataların nerede ortaya çıktığını asla bilemeyeceğim. nA
highsciguy

-2

Bunun yardımcı olabileceğinden emin değilim ama sadece kararlı çözüm hakkında konuştuğunuzda, yaklaşık yöntemlerden bahsediyorsunuz. Olayları açık bir şekilde hesapladığınızda, istikrarın bir anlamı yoktur. Bu, istikrar kazanmak için yaklaşık bir çözümü kabul etmeniz gerektiğini söylüyor.


5
Kararlılık söz konusu olduğunda kayan nokta yaklaşımı (yuvarlama, iptal vb.) Önemlidir. Cevap için bir formülünüz olsa bile, bunun sonlu duyarlıklı aritmetik olarak doğru bir şekilde hesaplanıp hesaplanamayacağını hesaplamanız gerekir.
Bill Barth

Bu yanıtı diğerleri göründüğü kadar olumsuz görmüyorum. Tabii ki kararlılık sorunu da açık sonuçlar için var. Ancak ctNGUYEN'in küçük bir miktardaki genişleme gibi yaklaşık bir çözümün aslında bence doğru olan tam açık sonuçtan daha kesin olabileceğini söylemek istediğine inanıyorum. Bir bakıma, bu tür zor vakaları tedavi eden, formül her zaman kararlı olacak şekilde açık çözümler talep ediyorum.
highsciguy
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.