ทำไมระบบเชิงเส้นที่ไม่มีเงื่อนไขสามารถแก้ไขได้อย่างแม่นยำ?


13

ตามคำตอบที่นี่หมายเลขเงื่อนไขขนาดใหญ่ (สำหรับการแก้ปัญหาระบบเชิงเส้น) ลดจำนวนรับประกันของตัวเลขที่ถูกต้องในการแก้ปัญหาจุดลอยตัว เมทริกซ์ความแตกต่างของการสั่งซื้อที่สูงขึ้นในวิธี pseudospectral มักจะมีเงื่อนไขที่ไม่ดีมาก ทำไมเป็นเช่นนั้นพวกเขายังคงวิธีการที่แม่นยำมาก?

ฉันเข้าใจว่าความแม่นยำต่ำที่มาจากเมทริกซ์ที่ไม่มีเงื่อนไขนั้นเป็นเพียงค่ารับประกันแต่ก็ยังทำให้ฉันสงสัยว่าทำไมเมทริกซ์ที่ไม่ดีนั้นถูกแก้ไขอย่างแม่นยำโดยวิธีการโดยตรงในทางปฏิบัติเช่นLCOLคอลัมน์ของตาราง 3.1 ในหน้า 11 ของWang et al. วิธีการจัดเก็บภาษีแบบมีเงื่อนไขโดยใช้การบูรณาการ PSEUDOSPECTRAL MATRIX , SIAM J. Sci คอมพิวเต. 36 (3)


2
สัญชาตญาณของฉันคือความสามารถในการละลาย / ความถูกต้องของระบบ Ax = b นั้นเชื่อมโยงกับเวกเตอร์บังคับ b ไม่ใช่แค่เมทริกซ์ A บางทีถ้า b ไม่ได้ "โพรบ" หรือ "ตื่นเต้น" โหมดปรับอากาศที่ไม่ดีของ A จากนั้นโซลูชันที่แม่นยำ ยังคงเป็นไปได้ เป็นตัวอย่างที่ จำกัด A สามารถเป็นเอกพจน์อย่างแน่นอน (หมายเลขเงื่อนไขอนันต์) แต่ Axe = b อาจยังคงมีวิธีแก้ปัญหาที่สามารถคำนวณได้อย่างถูกต้องหากข้อมูลบังคับ b อยู่ในช่วง A ฉันยอมรับว่านี่เป็นมือที่ค่อนข้างสวย - หยักซึ่งเป็นเหตุผลว่าทำไมฉันจึงแสดงความคิดเห็นแทนคำตอบเท่านั้น
rchilton1980

@ rchilton1980 "แต่ Axe = b อาจยังมีโซลูชันอยู่" แต่โซลูชันนั้นไม่ซ้ำกัน และตัวอย่างที่ฉันหมายถึงมีโซลูชันที่ไม่ซ้ำใคร
ZoltánCsáti

นั่นคือความแตกต่างที่ยุติธรรม - อาจเป็นสิ่งประดิษฐ์ของการเลือกหมายเลขเงื่อนไขที่ไม่มีที่สิ้นสุด (ค่า eigenvalue ที่แน่นอน) อย่างไรก็ตามฉันคิดว่าคุณสามารถแทนที่ค่าลักษณะเฉพาะที่เป็นศูนย์ด้วย epsilon ของเครื่องและจุดของฉันยังคงอยู่ (นั่นคือ sytem มีจำนวนเงื่อนไขมากระบบเป็นแบบไม่แก้ปัญหาด้วยวิธีที่ไม่ซ้ำกันซึ่งเราสามารถคำนวณได้อย่างถูกต้องหาก b ไม่มีส่วนประกอบตาม eigenpair เล็ก ๆ นั้น)
rchilton1980

1
เพื่อให้เจาะจงยิ่งขึ้นการทดลองทางความคิดของฉันที่นี่ก็เหมือนกับ A = diag ([1 1 1 1 1 eps]), b = [b1 b2 b3 b4 b5 0] มันถูกวางแผนไว้ แต่ฉันคิดว่ามันสมเหตุสมผลที่จะพิสูจน์การอ้างสิทธิ์เดิม: "บางครั้งการปรับอากาศที่ไม่ดีของ A สามารถแก้ไขได้อย่างถูกต้องสำหรับตัวเลือกเฉพาะของ b"
rchilton1980

1
เพียงแค่ยกตัวอย่างอีกตัวอย่างหนึ่งจากบล็อกของMoler.mathworks.com/cleve/2015/02/16/…
percusse

คำตอบ:


7

เพิ่มหลังจากคำตอบเริ่มต้นของฉัน:

ตอนนี้ฉันปรากฏว่าผู้เขียนบทความที่อ้างถึงกำลังให้หมายเลขเงื่อนไข (เห็นได้ชัดว่ามีเลขเงื่อนไข 2 แบบบรรทัดฐาน แต่อาจเป็นหมายเลขเงื่อนไขแบบอนันต์) ในตารางในขณะที่ให้ข้อผิดพลาดสัมบูรณ์สูงสุดมากกว่าข้อผิดพลาดสัมพัทธ์ปกติ สิ่งเหล่านี้เป็นมาตรการที่แตกต่างกันทั้งหมด) โปรดทราบว่าข้อผิดพลาดสัมพัทธ์สูงสุดของ elementwise นั้นไม่เหมือนกับสิ่งที่เกิดขึ้นกับข้อผิดพลาดสัมพัทธ์ของอนันต์ นอกจากนี้ข้อผิดพลาดในตารางจะสัมพันธ์กับการแก้ปัญหาที่แน่นอนของปัญหาค่าขอบเขตสมการเชิงอนุพันธ์ดั้งเดิมแทนที่จะเป็นระบบเชิงเส้นแบบแยกส่วนของสมการ ดังนั้นข้อมูลที่ให้ไว้ในกระดาษจึงไม่เหมาะสมที่จะใช้กับข้อผิดพลาดที่ถูกผูกไว้ตามหมายเลขเงื่อนไข

อย่างไรก็ตามในการจำลองแบบของการคำนวณของฉันฉันจะเห็นสถานการณ์ที่ข้อผิดพลาดของอนันต์สัมพัทธ์ (หรือข้อผิดพลาดที่เกี่ยวข้องสองบรรทัดฐาน) มีขนาดเล็กกว่าขอบเขตที่กำหนดโดยหมายเลขเงื่อนไขอินฟินิตี้นอร์ม (ตามลำดับหมายเลขเงื่อนไขนอร์ม 2) บางครั้งคุณก็โชคดี

ฉันใช้แพคเกจ DMSUITE MATLAB และแก้ปัญหาตัวอย่างจากบทความนี้โดยใช้วิธี pseudospectral กับ Chebyshev polynomials หมายเลขเงื่อนไขของฉันและข้อผิดพลาดสัมบูรณ์สูงสุดคล้ายกับที่รายงานไว้ในกระดาษ

ฉันยังเห็นข้อผิดพลาดที่เกี่ยวข้องกับบรรทัดฐานที่ค่อนข้างดีกว่าอาจคาดหวังตามจำนวนเงื่อนไข ตัวอย่างเช่นในปัญหาตัวอย่างของโดยใช้N = 1024ฉันได้รับϵ=0.01N=1024

cond (A, 2) = 7.9e + 8

cond (A, INF) = 7.8e + 8

บรรทัดฐาน (U-uexact 2) / บรรทัดฐาน (uexact 2) = 3.1e-12

บรรทัดฐาน (U-uexact, INF) / บรรทัดฐาน (uexact, INF) = 2.7e-12

ดูเหมือนว่าคำตอบจะดีประมาณ 11-12 หลักในขณะที่หมายเลขเงื่อนไขอยู่ในลำดับที่ 1e8

อย่างไรก็ตามสถานการณ์ที่มีข้อผิดพลาดแบบชาญฉลาดนั้นน่าสนใจกว่า

max (เอบีเอส (U-uexact)) = 2.7e-12

ที่ยังคงดูดี

max (เอบีเอส ((U-uexact) ./ uexact) = 6.1e + 9

ว้าว - มีข้อผิดพลาดสัมพัทธ์ขนาดใหญ่มากในส่วนประกอบของโซลูชันอย่างน้อยหนึ่งรายการ

เกิดอะไรขึ้น? คำตอบที่ถูกต้องของสมการนี้มีส่วนประกอบที่มีขนาดเล็ก (เช่น 1.9e-22) ในขณะที่วิธีแก้ปัญหาโดยประมาณมีค่ามากกว่า 9e-14 สิ่งนี้ถูกซ่อนไว้โดยการวัดค่าความผิดพลาดแบบสัมพัทธ์แบบบรรทัดฐาน (ไม่ว่าจะเป็นแบบ 2 แบบหรือแบบไม่มีขอบ) และจะปรากฏให้เห็นก็ต่อเมื่อคุณดูข้อผิดพลาดแบบสัมพัทธ์แบบองค์ประกอบและใช้ค่าสูงสุด

คำตอบเดิมของฉันด้านล่างอธิบายว่าทำไมคุณถึงได้รับข้อผิดพลาดสัมพัทธ์ปกติในการแก้ปัญหาที่น้อยกว่าขอบเขตที่กำหนดโดยหมายเลขเงื่อนไข


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

Δxxκ(A)Δbb

หมายเลขเงื่อนไขสามารถคำนวณได้โดยคำนึงถึงความหลากหลายของบรรทัดฐาน แต่มักจะใช้หมายเลขเงื่อนไขสองเกณฑ์และนั่นคือหมายเลขเงื่อนไขที่ใช้ในเอกสารที่คุณอ้างถึง

ข้อผิดพลาดกรณีที่เลวร้ายเกิดขึ้นเมื่อเป็นเวกเตอร์เอกพจน์ซ้ายของสอดคล้องกับค่าเอกพจน์ที่เล็กที่สุดของ กรณีที่ดีที่สุดเกิดขึ้นเมื่อเป็นเวกเตอร์เอกพจน์ซ้ายของสอดคล้องกับค่าเอกพจน์ที่ใหญ่ที่สุดของ เมื่อสุ่มคุณต้องดูการคาดการณ์ของไปยังเวกเตอร์เอกพจน์ด้านซ้ายทั้งหมดของและค่าเอกพจน์ที่เกี่ยวข้อง สิ่งต่าง ๆ อาจไปได้ไม่ดีหรือดีมาก ขึ้นอยู่กับสเปกตรัมของΔbAAΔbAAΔbΔbAA

พิจารณาสองเมทริกซ์ทั้งที่มี 2 บรรทัดฐานจำนวนสภาพ{10} เมทริกซ์ครั้งแรกที่มีค่าเอกพจน์ , , ,10} เมทริกซ์ที่สองมีค่าเอกพจน์ , , , ,10} A1.0×101011×10101×10101111×1010

ในกรณีแรกที่มีการก่อกวนสุ่มไม่น่าจะเป็นไปในทิศทางของเวกเตอร์เอกพจน์ซ้ายแรกและมีแนวโน้มที่จะได้อยู่ใกล้กับหนึ่งในเวกเตอร์เอกพจน์มีมูลค่าเอกพจน์10} ดังนั้นการเปลี่ยนแปลงสัมพัทธ์ในการแก้ปัญหาน่าจะมีขนาดใหญ่มาก ในกรณีที่สองการก่อกวนเกือบทั้งหมดจะใกล้เคียงกับเวกเตอร์เอกพจน์ที่มีค่าเอกพจน์และการเปลี่ยนแปลงสัมพัทธ์ในการแก้ปัญหาจะมีขนาดเล็ก 1×10101

ป.ล. (เพิ่มเติมภายหลังหลังจากฉันกลับมาจากชั้นเรียนโยคะ ... )

สูตรสำหรับการแก้ปัญหาคือAΔx=Δb

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

โดยทฤษฎีบทพีทาโกรัส

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

ถ้าเราเก็บแล้วจำนวนนี้เป็น maximized เมื่อและลดลงเมื่อ{1}Δb2=1Δb=UnΔb=U1

ในสถานการณ์ที่พิจารณาที่นี่เป็นผลมาจากข้อผิดพลาดในการปัดเศษแบบสุ่มดังนั้นค่าควรทั้งหมดมีขนาดเท่ากัน คำที่มีค่าน้อยกว่าของจะมีส่วนทำให้เกิดข้อผิดพลาดได้มากในขณะที่คำที่มีค่าที่มากกว่าจะไม่ได้มีส่วนร่วมมากนัก ขึ้นอยู่กับสเปกตรัมสิ่งนี้อาจเล็กกว่ากรณีที่เลวร้ายที่สุดได้อย่างง่ายดาย ΔbUiTΔbσiσi


อาร์กิวเมนต์นี้ไม่ได้หมายความว่าเป็นไปได้ (แม้ว่าจะไม่น่าเป็นไปได้) ที่จะไปถึงขอบเขตที่เลวร้ายที่สุดของสำหรับเมทริกซ์ในตัวอย่าง? AFAIU ตามคำตอบของฉันและจากเอกสารของสิ่งนี้ไม่ควรเกิดขึ้น κ(A)?getrs
คิริลล์

@BrianBorchers คุณช่วยกรุณาอธิบายรายละเอียดว่าทำไม "ข้อผิดพลาดกรณีที่เลวร้ายเกิดขึ้นเมื่อเป็นเวกเตอร์เอกพจน์ซ้ายของสอดคล้องกับค่าเอกพจน์ที่เล็กที่สุดของ. กรณีที่ดีที่สุดเกิดขึ้นเมื่อเป็นเวกเตอร์เอกพจน์ซ้ายของสอดคล้องกับ ค่าเอกพจน์ที่ใหญ่ที่สุดของ " ถือ? จากตัวอย่างด้านล่างมันมีเหตุผล แต่ฉันต้องการสูตรบางอย่าง ให้ SVD ของเป็น T ในกรณีแรก, T จะดำเนินการอย่างไร ΔbAAΔbAAAA=UΣVTA=Δbσ1v1T+i=2NuiσiviT
ZoltánCsáti

ฉันไม่ได้กล่าวถึงข้อผิดพลาดในการปัดเศษในเมทริกซ์แต่เอฟเฟกต์ทั่วไปจะคล้ายกันเว้นแต่ว่าคุณจะโชคไม่ดีในข้อผิดพลาดในการปัดเศษคุณมักจะทำได้ดีกว่าขอบเขตที่เลวร้ายที่สุดในแง่ร้าย A
Brian Borchers

(-1) การอภิปรายข้อผิดพลาดที่สัมพันธ์กันของส่วนประกอบในเอาต์พุตนั้นทำให้เข้าใจผิดอย่างจริงจัง
คิริลล์

1

TL; DRพวกเขาได้รายงานจำนวนสภาพไม่จำเป็นต้องขวาจำนวนเงื่อนไขสำหรับเมทริกซ์เพราะมีความแตกต่าง

นี่คือเมทริกซ์และเวกเตอร์ด้านขวามือโดยเฉพาะ ถ้าคุณดูเอกสารประกอบ*getrsมันบอกว่าข้อผิดพลาดที่ส่งต่อคือ ที่นี่ไม่ใช่เงื่อนไขหมายเลขปกติแต่แทนที่จะ (ที่นี่ภายในบรรทัดฐานเหล่านี้คือค่าสัมบูรณ์ที่ชาญฉลาดขององค์ประกอบ) ดูตัวอย่างเช่นการปรับแต่งซ้ำสำหรับระบบเชิงเส้นและ LAPACKโดย Highamหรือความแม่นยำและความเสถียรของอัลกอริธึมตัวเลข (7.2)

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

สำหรับตัวอย่างของคุณฉันใช้โอเปอเรเตอร์ pseudospectral สำหรับปัญหาที่คล้ายกันกับและที่จริงแล้วมีความแตกต่างอย่างมากระหว่างและฉันคำนวณและซึ่งเพียงพอที่จะอธิบายการสังเกตว่าสิ่งนี้เกิดขึ้นสำหรับทุกด้านขวาเพราะคำสั่งของขนาดตรงกับสิ่งที่เป็น เห็นได้ในตารางที่ 3.1 (ข้อผิดพลาดดีกว่าสั่งซื้อ 3-4) นี้ไม่ได้ทำงานเมื่อฉันพยายามเดียวกันเพียงสุ่มเมทริกซ์ป่วยปรับอากาศดังนั้นมันจะต้องมีคุณสมบัติของn=128|A1||A|κ(A)7×1032.6×107A

ตัวอย่างที่ชัดเจนซึ่งตัวเลขเงื่อนไขสองหมายเลขไม่ตรงกันซึ่งฉันได้จาก Higham (7.17, p.124) เนื่องจาก Kahan คือ ตัวอย่างที่ผมพบก็คือเพียงแค่เมทริกซ์ Vandermonde ธรรมดาบนกับสุ่มขฉันเดินผ่านและบางเมทริกซ์ป่วยปรับอากาศอื่น ๆ ยังผลิตชนิดของผลนี้เช่นและ

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

โดยพื้นฐานแล้วสิ่งที่เกิดขึ้นคือเมื่อคุณวิเคราะห์ความเสถียรของการแก้ปัญหาระบบเชิงเส้นด้วยความเคารพต่อการก่อกวนคุณต้องระบุว่าการก่อกวนใดที่คุณกำลังพิจารณาอยู่ เมื่อการแก้ระบบเชิงเส้นที่มี LAPACK ข้อผิดพลาดนี้ถูกผูกไว้พิจารณาเยี่ยงอย่างองค์ประกอบที่ชาญฉลาดในแต่การก่อกวนในไม่มีขดังนั้นสิ่งนี้จึงแตกต่างจากปกติที่จะพิจารณาเยี่ยงอย่าง normwise ทั้งในและขAbκ(A)=A1AAb

ลองพิจารณา (เป็นตัวอย่าง) ว่าจะเกิดอะไรขึ้นถ้าคุณไม่แยกความแตกต่าง เรารู้ว่าการใช้การปรับแต่งที่มีความแม่นยำซ้ำสองครั้ง (ดูลิงค์ด้านบน) เราจะได้รับเป็นไปได้ความผิดพลาดที่ดีที่สุดไปข้างหน้าของสำหรับการฝึกอบรมผู้ที่มี u ดังนั้นหากเราพิจารณาความคิดที่ว่าระบบเชิงเส้นไม่สามารถแก้ไขได้เพื่อความแม่นยำที่ดีกว่าวิธีการกลั่นจะทำงานอย่างไรO(u)κ(A)1/uκ(A)u

PSมันเรื่องที่?getrsกล่าวว่าการแก้ปัญหาการคำนวณเป็นทางออกที่แท้จริงของการ(A + E)x = bมีการก่อกวนในแต่ไม่มีการก่อกวนในขสิ่งต่าง ๆ จะแตกต่างกันถ้าการก่อกวนได้รับอนุญาตใน .EAbb

แก้ไขเพื่อแสดงให้เห็นว่าการทำงานนี้โดยตรงยิ่งขึ้นในรหัสว่านี่ไม่ใช่ความบังเอิญหรือโชคดี แต่ผลลัพธ์ (ผิดปกติ) ซึ่งเป็นผลมาจากตัวเลขสองเงื่อนไขที่แตกต่างกันมากสำหรับการฝึกอบรมเฉพาะเช่น

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

แก้ไข 2นี่คืออีกตัวอย่างหนึ่งของปรากฏการณ์เดียวกันที่จำนวนเงื่อนไขที่แตกต่างกันแตกต่างกันมากโดยไม่คาดคิด เวลานี้ นี่เป็น 10 × 10 Vandermonde เมทริกซ์ในและเมื่อมีการสุ่มเลือกเป็น noticably ขนาดเล็กกว่าและกรณีที่เลวร้ายที่สุดจะได้รับโดยบาง

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

กรณีเฉลี่ย (เกือบ 9 คำสั่งของข้อผิดพลาดที่ดีกว่าขนาด):

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

กรณีที่เลวร้ายที่สุด ( ):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

แก้ไข 3อีกตัวอย่างหนึ่งคือ Forsythe matrix ซึ่งเป็นบล็อก Jordan ที่ถูกรบกวนทุกขนาดของรูปแบบ นี่คือ ,ดังนั้นแต่ดังนั้น1 และในขณะที่สามารถตรวจสอบได้ด้วยมือแก้ระบบสมการเชิงเส้นเช่นกับระบบมีความถูกต้องมากแม้จะมีที่อาจเกิดขึ้นมากมาย(A) เมทริกซ์นี้ก็จะให้ผลลัพธ์ที่แม่นยำอย่างไม่คาดคิดเช่นกัน

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

แก้ไข 4 Kahan เมทริกซ์ก็เป็นแบบนี้ด้วย :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 เป็นหมายเลขเงื่อนไขสองบรรทัด ถ้าคุณกลับไปอ้างอิง [17] โดย ElBarbary คุณจะเห็นว่าในบทความก่อนหน้านี้เป็นตัวเลขเงื่อนไขสองบรรทัด นอกจากนี้ฉันติดตั้งตัวอย่างจากบทความนี้โดยใช้ DMsuite และได้รับหมายเลขเงื่อนไข 2 บรรทัดฐานเดียวกันกับที่รายงานไว้ในรายงาน
Brian Borchers

หมายเลขบรรทัดฐานเงื่อนไขเงื่อนไขอนันต์ของตัวอย่างเหล่านี้ที่ฉันได้ใช้การแก้ไข dmsuite และ Chebyshev มีความคล้ายคลึงกับขนาดของตัวเลขเงื่อนไขสองบรรทัดฐาน ฉันไม่คิดว่าความแตกต่างระหว่าง 2-norm ในตัวเลขเงื่อนไขอนันต์นั้นสำคัญสำหรับตัวอย่างนี้
Brian Borchers

ฉันเชื่อว่าข้อผิดพลาดที่รายงานในกระดาษนั้นสมบูรณ์มากกว่าข้อผิดพลาดสัมพัทธ์ (มันไม่ได้สร้างความแตกต่างมากนักยกเว้นซึ่งวิธีการแก้ปัญหานี้ลดลงใกล้กับ 0ϵ=0.01
Brian Borchers

สำหรับและข้อผิดพลาดสัมพัทธ์สำหรับส่วนต่าง ๆ ของโซลูชันที่อยู่ใกล้ 0 นั้นมีขนาดใหญ่มาก แต่ข้อผิดพลาดสัมบูรณ์มีขนาดเล็ก ฉันยอมรับว่ากระดาษนั้นคลุมเครือมากเกี่ยวกับหมายเลขเงื่อนไขที่ใช้และเกี่ยวกับสิ่งที่ "ข้อผิดพลาด" คืออะไร (ข้อผิดพลาดแบบสัมพัทธ์หรือแบบสัมบูรณ์)ϵ=0.01N=1024
Brian Borchers

@BrianBorchers ฉันไม่แน่ใจว่าคุณหมายถึงอะไร: นี่ไม่ใช่ความแตกต่างระหว่างหมายเลขเงื่อนไข 2-norm และ infty-norm แต่ค่อนข้างเป็นรหัสเงื่อนไข normwise- และ component-wise ข้อผิดพลาดสัมพัทธ์ในผลลัพธ์ในคำตอบของคุณ)
คิริลล์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.