Koşulsuz doğrusal sistemler neden tam olarak çözülebilir?


13

Buradaki cevaba göre , büyük koşul sayısı (doğrusal sistem çözümü için) kayan nokta çözümünde garantili doğru basamak sayısını azaltır. Psödospektral yöntemlerde daha yüksek mertebeden farklılaşma matrisleri tipik olarak çok koşulsuzdur. Öyleyse neden hala çok doğru yöntemler oldukları?

Koşulsuz matrislerden gelen düşük hassasiyetin sadece garantili bir değer olduğunu anlıyorum, ancak yine de koşulsuz matrislerin pratikte doğrudan yöntemlerle neden doğru bir şekilde çözüldüğünü merak ediyorum - örneğin, LCOLsayfa 11'deki Tablo 3.1'in sütunları Wang ve diğerleri, PSEUDOSPECTRAL ENTEGRASYON MATRİSİ KULLANILAN İYİ KOŞULLU BİR İŞBİRLİĞİ YÖNTEMİ , SIAM J. Sci. Bilgisayar, 36 (3) .


2
Sezgim, bir Ax = b sisteminin çözülebilirliğinin / doğruluğunun, sadece A matrisine değil, zorlayıcı vektörüne b bağlı olması olabilir. mümkün kalır. Sınırlayıcı bir örnek olarak, A tam olarak tekil olabilir (sonsuz koşul numarası), ancak Ax = b, zorlama verileri b A aralığında bulunuyorsa, doğru bir şekilde hesaplanabilen bir çözüme sahip olabilir. -wavy, bu yüzden cevap yerine sadece yorum yapıyorum.
rchilton1980

@ rchilton1980 "Yine de Ax = b hala bir çözüme sahip olabilir" Ancak bu çözüm benzersiz değildir. Ve bahsettiğim örnekler eşsiz bir çözüme sahip.
Zoltán Csáti

Bu adil bir kontrpuan - belki de sonsuz koşul sayısı (tam sıfır özdeğer) toplama eseri. Ancak bu sıfır öz değeri makine epsilon ile değiştirebileceğinizi düşünüyorum ve benim açımdan hala duruyor. (Yani, sistemin çok büyük bir durum numarası vardır, sistem, b'nin o küçük özdeğer boyunca hiçbir bileşeni olmaması şartıyla çok doğru bir şekilde hesaplayabileceğimiz benzersiz bir çözüm ile tek yönlüdür).
rchilton1980

1
Daha spesifik olmak gerekirse, buradaki düşünce denemem A = diag ([1 1 1 1 1 eps]), b = [b1 b2 b3 b4 b5 0] gibi bir şey. Bu, ancak orijinal iddia haklı çıkarmak için yeterli olduğunu düşünüyorum: "bazen hasta şartlı A belirli b seçimler için doğru bir şekilde çözülebilir"
rchilton1980 29:17

1
Moler'ın blog bloglarından
percusse

Yanıtlar:


7

İlk cevabımdan sonra eklendi:

Şimdi bana referansta bulunulan makalenin yazarının, tabloda norm göreli hataları veya maksimum elemanlı göreceli hatalar yerine maksimum mutlak hatalar verirken tablodaki koşul sayılarını (görünüşte 2-norm koşul sayıları, ancak muhtemelen sonsuzluk-norm koşul sayıları) verdiği görülmektedir. Bunların hepsi farklı ölçütlerdir.) Maksimum elementwise göreceli hatanın sonsuzluk normu göreceli hatasıyla aynı şey olmadığını unutmayın. Ayrıca, tablodaki hatalar, ayrıklaştırılmış doğrusal denklem sisteminden ziyade orijinal diferansiyel denklem sınır değer probleminin kesin çözümüne göredir. Bu nedenle, makalede verilen bilgiler, koşul sayısına bağlı olarak hata sınırlamasıyla kullanım için gerçekten uygun değildir.

Ancak, benim hesaplama çoğaltma, göreceli sonsuzluk norm hatası (veya iki-norm göreli hata) sonsuzluk-norm koşul numarası (sırasıyla 2-norm koşul numarası) tarafından belirlenen sınırdan önemli ölçüde daha küçük olduğu durumlar görüyorum. Bazen sadece şanslı olursun.

DMSUITE MATLAB paketini kullandım ve Chebyshev polinomları ile psödospektral yöntemi kullanarak bu makaledeki örnek problemi çözdüm. Durum sayılarım ve maksimum mutlak hatalar, makalede bildirilenlere benzerdi.

Ayrıca, durum numarasına göre beklenenden biraz daha iyi olan norm göreli hataları da gördüm. Örneğin, ile ilgili örnek problemde , N = 1024 kullanarak ,ϵ=0.01N=1024

koşul (A, 2) = 7.9e +8

koşul (A, sonsuz) = 7.8e +8

Norm (u-uexact, 2) / normu (uexact, 2) = 3.1e-12

Norm (u-uexact, sonsuz) / normu (uexact, sonsuz) = 2,7E-12

Durum numarası 1e8 civarındayken, çözeltinin yaklaşık 11-12 basamağa iyi geldiği anlaşılıyor.

Bununla birlikte, element-bilge hataları olan durum daha ilginçtir.

v max (abs (u-uexact)) = 2,7E-12

Hala iyi görünüyor.

v max (abs ((u-uexact) ./ uexact) = 6.1e + 9

Vay canına, çözümün en az bir bileşeninde çok büyük göreceli hata var.

Ne oldu? Bu denklemin tam çözeltisi küçük olan bileşenlere (örneğin 1.9e-22) sahipken, yaklaşık çözelti 9e-14'ün çok daha büyük bir değerinde dibe vurmaktadır. Bu, norm göreceli hata ölçümü tarafından gizlenir (2 norm veya sonsuz norm olsun) ve yalnızca öğeye ilişkin göreceli hatalara bakıp maksimum değeri aldığınızda görünür hale gelir.

Aşağıdaki orijinal cevabım, çözümde neden koşul numarası tarafından verilen sınırdan daha az olan norm göreceli hata alabileceğinizi açıklıyor.


κ(A)A(x+Δx)=b+ΔbAx=b

Δxxκ(A)Δbb

Koşul numaraları çeşitli normlara göre hesaplanabilir, ancak iki normlu koşul numarası sıklıkla kullanılır ve bu, başvurduğunuz kağıtta kullanılan koşul numarasıdır.

En kötü durum hata oluşur bir sol tekil vektördür küçük tekil değerine karşılık gelen . , En iyi durum ortaya çıkar bir sol tekil vektördür en tekil değerine karşılık gelen . Tüm rastgeledir, daha sonra çıkıntıları bakmak gerekir sol tekil vektörlerinin her üzerine ve karşılık gelen tekil değerler. spektrumuna bağlı olarak , işler çok kötü veya çok iyi olabilir. ΔbAAΔbAAΔbΔbAA

Her ikisi de 2 norm koşul sayısı iki matrisini düşünün . İlk matris , , , tekil değerlerine sahiptir . İkinci matris tekil değerlere , , , , . A1.0×101011×10101×10101111×1010

İlk durumda, rastgele bir pertürbasyonun ilk sol tekil vektör yönünde olması muhtemel değildir ve tekil değerlerden tekil vektörlerden birine yakın olma olasılığı daha yüksektir . Bu nedenle, çözeltideki göreceli değişimin çok büyük olması muhtemeldir. İkinci durumda, hemen hemen her sapma, tekil değer sahip tekil bir vektöre yakın olacak ve çözeltideki bağıl değişiklik küçük olacaktır. 1×10101

PS (yoga dersinden döndükten sonra ekledi ...)

Çözümü için, formül olanAΔx=Δb

Δx=VΣ1UTΔb=i=1nUiTΔbσiVi

Pisagor teoremi ile,

Δx22=i=1n(UiTΔbσi)2

Eğer tutarsak , bu toplam olduğunda maksimize edilir ve olduğunda minimize edilir .Δb2=1Δb=UnΔb=U1

Burada ele alınan durumda, rastgele yuvarlama hatalarının sonucudur, bu nedenle değerlerinin kabaca aynı büyüklükte olması gerekir. değerlerinin daha küçük olduğu terimler hataya çok katkıda bulunurken, değerlerinin daha büyük olduğu terimler fazla katkıda bulunmayacaktır. Spektruma bağlı olarak, bu durum en kötü durumdan çok daha küçük olabilir. U T i Δ b σ i σ iΔbUiTΔbσiσi


Değil bu argüman da ima ediyorsunuz olan olası (hatta olası ise) bağlı en kötü durum ulaşmak için örneğinde matris için? AFAIU, cevabım ve belgelere dayanarak bu mümkün olmamalı. κ(A)?getrs
Kirill

@BrianBorchers ne zaman kötü durum hatası oluşur neden" lütfen açar mısın bir sol tekil vektörüdür en küçük tekil değerine karşılık gelen . En iyi durum meydana geldiğinde bir sol tekil vektör tekabül en büyük tekil değeri . " tutar? Aşağıdaki örnekten mantıklı, ancak bazı formüllere ihtiyacım var. SVD olsun olduğu . İlk durumda, . Nasıl devam edilir? ΔbAAΔbAAAA=UΣVTA=Δbσ1v1T+i=2NuiσiviT
Zoltán Csáti

matrisindeki yuvarlama hatalarını tartışmadım , ancak genel etki benzerdir - yuvarlama hatalarında gerçekten şanssız olmadıkça, genellikle kötümser en kötü durum sınırından biraz daha iyi yaparsınız. A
Brian Borchers

(-1) Çıktıdaki bileşen bazında göreceli hataların tartışılması ciddi yanıltıcıdır.
Kirill

1

tl; dr Matris için mutlaka doğru koşul numarası değil bir koşul numarası bildirdiler , çünkü bir fark var.

Bu, matrise ve sağ taraftaki vektöre özeldir. İçin belgelere*getrs bakarsanız, ileri hatanın Burada normal durum numarası değil, (Burada norm içinde bunlar bileşen bazında mutlak değerlerdir.) Bkz. Örneğin, doğrusal sistemler için yinelemeli iyileştirme ve Higham tarafından LAPACK veya Higham'ın Sayısal Algoritmaların Doğruluğu ve Kararlılığı (7.2).

xx0xcond(A,x)ucond(A)u.
cond(A,x)κ(A)
cond(A,x)=|A1||A||x|x,cond(A)=|A1||A|.

Örneğin, ile benzer bir problem için psödospektral diferansiyel operatör aldım ve aslındave , ben bilgisayarlı ve , bunların hepsi sağ taraf için olur gözlemi açıklamak için yeterlidir, ne büyüklüklerinin siparişler kabaca eşleşecek çünkü Tablo 3.1'de görülmektedir (3-4 emir daha iyi hatalar). Aynı şeyi sadece rastgele koşullu bir matris için denediğimde işe yaramıyor, bu yüzden bir özelliği olmalı .n=128|A1||A|κ(A)7×1032.6×107A

İki koşul sayısının eşleşmediği, Kaham nedeniyle Higham'dan (7.17, s.124) aldığım açık bir örnek Bulduğum bir başka örnek , rastgele ile sadece düz Vandermonde matrisidir . Ben geçtim ve diğer bazı koşulsuz matrisler ve gibi bu tür bir sonuç üretir .

(2111ϵϵ1ϵϵ),(2+2ϵϵϵ).
[1:10]bMatrixDepot.jltriwmoler

Esasen, düzensizliklerle ilgili lineer sistemlerin çözülmesinin kararlılığını analiz ettiğinizde, ilk önce hangi pertürbasyonları düşündüğünüzü belirtmeniz gerektiğidir . LAPACK ile lineer sistemleri çözerken, bu hataya bağlı bileşen bazlı pertürbasyonları dikkate alır , ancak . Yani bu normal, Hem de normwise düzensizlikler gördüğü ve .Abκ(A)=A1AAb

Ayrımı yapmazsanız ne olacağını da (karşı örnek olarak) düşünün . matrisler için çift ​​hassasiyetli yinelemeli iyileştirme kullanarak (yukarıdaki bağlantıya bakın) mümkün olan en iyi ileri bağıl hatasını alabileceğimizi biliyoruz . Dolayısıyla, doğrusal sistemlerin daha iyi bir doğrulukla çözülemeyeceği fikrini düşünürsek, rafinaj çözümleri nasıl çalışır?O(u)κ(A)1/uκ(A)u

PS O bu konularda ?getrsbilgisayarlı çözüm gerçek çözümdür diyor (A + E)x = bbir pertürbasyon ile yılında , fakat hiçbir pertürbasyon . Tedirginlikler izin olsaydı şeyler farklı olurdu .EAbb

Düzenle Bu çalışmayı daha doğrudan, kod halinde, bunun bir şans ya da şans meselesi olmadığını göstermek yerine, iki koşul numarasının bazı olağandışı matrisler için çok farklı olmasının (olağandışı) sonucu, yani

cond(A,x)cond(A)κ(A).
function main2(m=128)
    A = matrixdepot("chebspec", m)^2
    A[1,:] = A[end,:] = 0
    A[1,1] = A[end,end] = 1
    best, worst = Inf, -Inf
    for k=1:2^5
        b = randn(m)
        x = A \ b
        x_exact = Float64.(big.(A) \ big.(b))
        err = norm(x - x_exact, Inf) / norm(x_exact, Inf)
        best, worst = min(best, err), max(worst, err)
    end
    @printf "Best relative error:       %.3e\n" best
    @printf "Worst relative error:      %.3e\n" worst
    @printf "Predicted error κ(A)*ε:    %.3e\n" cond(A, Inf)*eps()
    @printf "Predicted error cond(A)*ε: %.3e\n" norm(abs.(inv(A))*abs.(A), Inf)*eps()
end

julia> main2()
Best relative error:       2.156e-14
Worst relative error:      2.414e-12
Predicted error κ(A)*ε:    8.780e-09
Predicted error cond(A)*ε: 2.482e-12

Düzenle 2 Burada, farklı koşul sayılarının beklenmedik şekilde çok farklı olduğu aynı fenomenin başka bir örneği. Bu kez Burada 10 x 10 Vandermonde matrisidir ve ne zaman , rasgele seçilir ninkinden gözle görülür biçimde daha küçüktür ve en kötü durumda ile verilir bazıları için .

cond(A,x)cond(A)κ(A).
A1:10xcond(A,x)κ(A)xxi=iaa
function main4(m=10)
    A = matrixdepot("vand", m)
    lu = lufact(A)
    lu_big = lufact(big.(A))
    AA = abs.(inv(A))*abs.(A)
    for k=1:12
        # b = randn(m) # good case
        b = (1:m).^(k-1) # worst case
        x, x_exact = lu \ b, lu_big \ big.(b)
        err = norm(x - x_exact, Inf) / norm(x_exact, Inf)
        predicted = norm(AA*abs.(x), Inf)/norm(x, Inf)*eps()
        @printf "relative error[%2d]    = %.3e (predicted cond(A,x)*ε = %.3e)\n" k err predicted
    end
    @printf "predicted κ(A)*ε      = %.3e\n" cond(A)*eps()
    @printf "predicted cond(A)*ε   = %.3e\n" norm(AA, Inf)*eps()
end

Ortalama vaka (neredeyse 9 büyüklük sırası daha iyi hata):

julia> T.main4()
relative error[1]     = 6.690e-11 (predicted cond(A,x)*ε = 2.213e-10)
relative error[2]     = 6.202e-11 (predicted cond(A,x)*ε = 2.081e-10)
relative error[3]     = 2.975e-11 (predicted cond(A,x)*ε = 1.113e-10)
relative error[4]     = 1.245e-11 (predicted cond(A,x)*ε = 6.126e-11)
relative error[5]     = 4.820e-12 (predicted cond(A,x)*ε = 3.489e-11)
relative error[6]     = 1.537e-12 (predicted cond(A,x)*ε = 1.729e-11)
relative error[7]     = 4.885e-13 (predicted cond(A,x)*ε = 8.696e-12)
relative error[8]     = 1.565e-13 (predicted cond(A,x)*ε = 4.446e-12)
predicted κ(A)*ε      = 4.677e-04
predicted cond(A)*ε   = 1.483e-05

En kötü durum ( ):a=1,,12

julia> T.main4()
relative error[ 1]    = 0.000e+00 (predicted cond(A,x)*ε = 6.608e-13)
relative error[ 2]    = 1.265e-13 (predicted cond(A,x)*ε = 3.382e-12)
relative error[ 3]    = 5.647e-13 (predicted cond(A,x)*ε = 1.887e-11)
relative error[ 4]    = 8.895e-74 (predicted cond(A,x)*ε = 1.127e-10)
relative error[ 5]    = 4.199e-10 (predicted cond(A,x)*ε = 7.111e-10)
relative error[ 6]    = 7.815e-10 (predicted cond(A,x)*ε = 4.703e-09)
relative error[ 7]    = 8.358e-09 (predicted cond(A,x)*ε = 3.239e-08)
relative error[ 8]    = 1.174e-07 (predicted cond(A,x)*ε = 2.310e-07)
relative error[ 9]    = 3.083e-06 (predicted cond(A,x)*ε = 1.700e-06)
relative error[10]    = 1.287e-05 (predicted cond(A,x)*ε = 1.286e-05)
relative error[11]    = 3.760e-10 (predicted cond(A,x)*ε = 1.580e-09)
relative error[12]    = 3.903e-10 (predicted cond(A,x)*ε = 1.406e-09)
predicted κ(A)*ε      = 4.677e-04
predicted cond(A)*ε   = 1.483e-05

Düzenleme 3 Başka bir örnek, biçimindeki herhangi bir boyutta bozuk Jordan bloğu olan Forsythe matrisidir Bunun , olduğu için , ancak , yani . El ile doğrulanabileceği gibi, gibi doğrusal denklem sistemlerinin pivot ile , potansiyel olarak sınırlanmamış rağmen son derece doğrudur . Dolayısıyla bu matris de beklenmedik şekilde kesin çözümler üretecektir.

A=(010000100001ϵ000).
A=1A1=ϵ1κ(A)=ϵ1|A1|=A1=|A|1cond(A)=1Ax=bκ(A)

Düzenle 4 Kahan matrisi de buna benzer, :cond(A)κ(A)

A = matrixdepot("kahan", 48)
κ, c = cond(A, Inf), norm(abs.(inv(A))*abs.(A), Inf)
@printf "κ=%.3e c=%.3e ratio=%g\n" κ c (c/κ)

κ=8.504e+08 c=4.099e+06 ratio=0.00482027

OP tarafından atıfta bulunulan kağıttaki koşul sayıları iki normlu koşul sayılarıdır. ElBarbary'nin [17] referansına geri dönerseniz, önceki makalede bunların iki normlu koşul sayıları olduğunu göreceksiniz. Ayrıca, DMsuite kullanarak bu makaledeki örnekleri ayarladım ve makalede bildirilen neredeyse 2 normlu durum numaralarına sahiptim.
Brian Borchers

Dmsuite ve Chebyshev enterpolasyonunu kullandığım bu örnekler için sonsuzluk norm koşulu norm sayıları, büyüklükte iki norm koşulu sayılarına benzerdi. Sonsuzluk-norm koşul sayılarında 2-norm arasındaki farkın bu özel örnek için önemli olduğunu düşünmüyorum.
Brian Borchers

Makalede bildirilen hataların göreceli hatalardan ziyade mutlak olduğuna inanıyorum ( çözümün 0'a yakın düştüğü dışında çok fazla fark yaratmıyor.ϵ=0.01
Brian Borchers

İçin ve , 0'a yakın olan çözelti parçaları için bağıl hatalar büyük, ancak mutlak hatalar küçüktür. Makalenin hangi koşul numarasının kullanıldığına ve "hataların" tam olarak ne olduğuna dair çok belirsiz olduğunu kabul ediyorum (göreceli veya mutlak hatalar)ϵ=0.01N=1024
Brian Borchers

@BrianBorchers Ne demek istediğinizden emin değilim: bu 2-norm ve infty-norm koşul sayıları arasındaki fark değil, normalde normlu- ve bileşen-bilge koşul numaraları (girişte bileşen-bileşen bağıl bozulmalar, bileşen değil) - Cevabınızdaki gibi çıkışta göreli hatalar).
Kirill
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.