Giải pháp của một hệ phương trình tuyến tính có thể được xấp xỉ chỉ cho một vài biến đầu tiên không?


15

Tôi có một hệ phương trình tuyến tính có kích thước mxm, trong đó m lớn. Tuy nhiên, các biến mà tôi quan tâm chỉ là n biến đầu tiên (n nhỏ so với m). Có cách nào để tôi có thể tính gần đúng giải pháp cho các giá trị m đầu tiên mà không phải giải toàn bộ hệ thống không? Nếu vậy, phép tính gần đúng này sẽ nhanh hơn giải quyết toàn bộ hệ thống tuyến tính?


2
Không trừ khi chức năng cưỡng bức của bạn cũng bị giới hạn ở n biến đầu tiên. Nếu có, bạn có thể tạo thành phần bổ sung Schur, mặc dù nó có thể dày đặc. Nếu toán tử ban đầu của bạn thưa thớt, nó có thể không có giá trị.
Jack Poulson

1
Tôi cho rằng bạn có thể sử dụng loại bỏ gaussian bắt đầu từ góc dưới bên phải của ma trận. Tốc độ này sẽ nhanh hơn ~ 2 lần so với loại bỏ gaussian thông thường nếu bạn chỉ quan tâm đến một vài yếu tố đầu tiên và dừng lại giữa chừng. Tôi không biết làm thế nào nó sẽ so sánh với các phương pháp lặp.
Dan

4
@OscarB: Xin vui lòng không. Quy tắc của Cramer là sự tàn bạo trong số học dấu phẩy động. Tôi chưa bao giờ nghe nói về việc nó được sử dụng cho các tính toán nghiêm túc, và cần một lượng suy nghĩ hợp lý để tránh sự phức tạp của giai thừa , nơi nó vẫn không cạnh tranh được với việc loại bỏ Gaussian.
Jack Poulson

1
@Paul: Hầu hết việc giảm thứ tự mô hình được sử dụng trong bối cảnh các hệ thống ODE hoặc DAE lớn. Đôi khi, các phương pháp giảm được thúc đẩy bởi các hệ thống ODE hoặc DAE phát sinh từ sự rời rạc của các PDE. Tôi chưa thấy giảm mô hình được sử dụng trên các phương trình đại số thuần túy. (Nếu bạn có, xin vui lòng gửi cho tôi tài liệu tham khảo, bởi vì tôi đang làm luận án về các phương pháp giảm mô hình và sẽ rất thích thú khi thấy nó.) Nếu bạn muốn, tôi có thể phác thảo cách giảm mô hình sẽ như thế nào nếu chúng ta điều trị phương trình đại số như là một trường hợp suy biến của hệ phương trình vi phân đại số.
Geoff Oxberry

1
@JackPoulson - bạn có phiền khi tóm tắt nhận xét của bạn như một câu trả lời không? Tôi nghĩ đó là giải pháp đúng đắn nhất và tôi không muốn nó bị mất trong các bình luận.
Aron Ahmadia

Câu trả lời:


13

Như những người khác đã chỉ ra, điều này rất khó thực hiện với người giải trực tiếp. Điều đó nói rằng, nó không khó để làm với người giải quyết lặp. Để kết thúc này, lưu ý rằng hầu hết các bộ giải lặp theo cách này hay cách khác đều giảm thiểu lỗi liên quan đến một số chỉ tiêu. Thông thường, định mức này hoặc do chính ma trận gây ra, nhưng đôi khi nó cũng chỉ là định mức vectơ l2. Nhưng đó không phải là trường hợp: bạn có thể chọn định mức nào bạn muốn giảm thiểu lỗi (hoặc dư), và ví dụ, bạn có thể chọn một định mức mà bạn cân nhắc các thành phần bạn quan tâm với 1 và tất cả những người khác có 1e-12, ví dụ như một cái gì đó như (1e-24)N i = 6 x 2 i||x||2=i=15xi2+i=6Nxi2 và tương ứng với sản phẩm vô hướng. Sau đó viết tất cả các bước của bộ giải lặp đối với định mức và sản phẩm vô hướng này, và bạn nhận được một bộ giải lặp chú ý nhiều hơn đến các phần tử vectơ mà bạn quan tâm hơn các phần tử khác.

Câu hỏi tất nhiên là liệu bạn có cần số lần lặp ít hơn so với sản phẩm định mức / vô hướng có trọng lượng như nhau không. Nhưng đó thực sự là trường hợp: giả sử bạn chỉ quan tâm đến năm yếu tố vectơ đầu tiên. Sau đó, bạn cần tối đa năm lần lặp để giảm lỗi theo hệ số 1e12 vì năm lần lặp là điều cần thiết cho hệ thống 5x5 mô tả chúng. Đó không phải là một bằng chứng nhưng tôi khá chắc chắn rằng bạn thực sự nên thoát khỏi số lần lặp nhỏ hơn rất nhiều nếu trọng số trong định mức (1e-12 ở trên) nhỏ hơn dung sai mà bạn muốn giải quyết hệ thống tuyến tính lặp đi lặp lại .


2
Hmm, điểm tốt. Tôi sẽ thích thú khi thấy một ví dụ thực tế, vì tôi hơi lo lắng về những ảnh hưởng của việc chỉ cố gắng giải quyết một vài mức độ tự do; mặc dù phần dư có thể nhỏ, nhưng có lẽ định mức của lỗi vẫn khá lớn (làm để bỏ qua phần lớn toán tử một cách hiệu quả).
Jack Poulson

Theo trực giác, điều này dường như chỉ hoạt động nếu các thành phần của hệ thống rất nhỏ thực sự chi phối câu trả lời theo L2 (hoặc định mức bạn hiểu lỗi của mình được đo lường). Mặt khác, tôi nghĩ rằng mối quan tâm của Jack là hợp lệ, nhưng tôi chắc chắn sẽ quan tâm đến việc nhìn thấy bằng chứng bằng số về điều này ...
Aron Ahmadia

Người ta sẽ phải đảm bảo bạn thực hiện một phương pháp giảm thiểu lỗi chứ không phải dư. Tôi nghĩ MinErr có thể là một điểm khởi đầu tốt.
Wolfgang Bangerth

@WolfgangBangerth: Tôi không quen thuộc với MINERR: đây có phải là tài liệu tham khảo chính không?
Jack Poulson

1
Ngay cả điều đó là không đủ, bởi vì bạn sẽ không chính xác. Bạn không thể có được một vài thành phần chính xác bằng cách sử dụng trọng số này.
Matt Knepley

17

Hình thành bổ sung Schur

Giả sử rằng bạn đã hoán vị và phân vùng ma trận của bạn thành biểu mẫu

A=(A11A12A21A22),

sao cho chứa mức độ tự do quan tâm của bạn và nhỏ hơn nhiều so vớiA22 , sau đó người ta có thể tạo thành phần bù SchurA11

S22:=A22A21A111A12,

hoặc thông qua một nhân tố LU nhìn đúng một phần hoặc công thức rõ ràng, và sau đó có thể được hiểu theo nghĩa sau:S22

S22x=y(A11A12A21A22)(x)=(0y),

trong đó đại diện cho phần 'không quan tâm' của giải pháp. Do đó, với điều kiện là bên phải chỉ khác về mức độ tự do của Schur bổ sung S 22 , chúng ta chỉ cần giải quyết với S 22 để có được phần giải pháp tương ứng với các mức độ tự do đó.S22S22

Độ phức tạp tính toán trong trường hợp dày đặc không cấu trúc

Thiết để chiều cao của An để chiều cao của Một 22 , sau đó các phương pháp tiêu chuẩn để tính S 22 là lần đầu tiên yếu tố L 11 U 11 : = A 11 (chúng ta hãy bỏ qua xoay vòng cho bây giờ) trong khoảng 2 / 3 ( N - n ) 3NAnA22S22L11U11:=A112/3(Nn)3 công việc, sau đó hình thành

S22:=A22(A21U111)(L111A12)=A22A21A111A12

sử dụng hai phép giải tam giác yêu cầu hoạt động, và sau đó thực hiện cập nhật lên A 22 trong 2 n 2 ( N - n ) .n(Nn)2A222n2(Nn)

Như vậy, tổng số công việc là khoảng . Khi n là rất nhỏ, N - n N , vì vậy chi phí có thể được xem là khoảng 2 / 32/3(Nn)3+2n(Nn)2+2n2(Nn)nNnN , đó là chi phí của một thừa số đầy đủ.2/3N3

Lợi ích là, nếu có một số lượng rất lớn các phía bên phải được giải quyết với cùng một hệ phương trình, thì có thể có khả năng được sử dụng lại một số lượng lớn, trong đó mỗi lần giải chỉ cần 2 n 2 công việc (chứ không phải 2 N 2 hoạt động) nếu S 22 được tính.S222n22N2S22

Độ phức tạp tính toán trong trường hợp thưa thớt (điển hình)

Nếu hệ thống thưa thớt của bạn phát sinh từ một số loại xấp xỉ phần tử hữu hạn hoặc phần tử hữu hạn, thì người giải quyết trực tiếp thưa thớt gần như chắc chắn sẽ có thể khai thác một số cấu trúc; Hệ thống 2d có thể được giải quyết với công việc và O ( N log N ) lưu trữ, trong khi hệ thống 3d có thể được giải quyết với O ( N 2 ) công việc và O ( N 4 / 3O(N3/2)O(NlogN)O(N2) lưu trữ. Các hệ thống bao thanh toán sau đó có thể được giải quyết với cùng một lượng công việc như các yêu cầu lưu trữ.O(N4/3)

Mục đích của việc đưa lên sự phức tạp tính toán là, nếu và bạn có hệ thống 2d, do đó phần bù Schur có thể sẽ dày đặc, độ phức tạp giải quyết được bổ sung Schur bao gồm sẽ làO(n2)=O(N), chỉ thiếu yếu tố logarit so với giải toàn bộ hệ thống! Trong 3d, nó đòi hỏiO(N)công việc thay vìO(N 4 / 3 )nNO(n2)=O(N)O(N)O(N4/3) .

Do đó, điều quan trọng là phải nhớ rằng, trong trường hợp của bạn trong đó , sẽ chỉ có những khoản tiết kiệm đáng kể nếu bạn làm việc ở nhiều chiều và có nhiều mặt phải để giải quyết.n=N


1
Đây là một bản tóm tắt tuyệt vời của phương pháp bổ sung schur và khi nó được sử dụng hiệu quả về mặt tính toán!
Paul

6

Phương pháp giảm mô hình

Vì Paul đã hỏi, tôi sẽ nói về những gì sẽ xảy ra nếu bạn sử dụng các phương pháp giảm mô hình dựa trên phép chiếu cho vấn đề này. Giả sử rằng bạn có thể đưa ra một máy chiếu sao cho phạm vi của P , ký hiệu là R ( P ) , chứa giải pháp cho hệ thống tuyến tính của bạn A x = b và có kích thước k , trong đó kPPR(P)Ax=bkk là số lượng ẩn số mà bạn biết muốn giải quyết trong một hệ thống tuyến tính.

Một phân tách giá trị số ít của sẽ mang lại ma trận phân vùng sau:P

P=[V][diag(1k)000][WT].

Các ma trận bị che khuất bởi các ngôi sao quan trọng đối với những thứ khác (như ước tính lỗi, v.v.), nhưng bây giờ, chúng ta sẽ tránh xử lý các chi tiết không liên quan. Nó theo đó

P=VWT

là một phân hủy rank đầy .P

Về cơ bản, bạn sẽ giải quyết hệ thống

PAx=Pb

một cách thông minh, bởi vì V cũng có tài sản đó W T V = tôi . Nhân cả hai bên của P Một x = P b bởi W T và để y = V x là một xấp xỉ cho x lãi suấtWWTV=IPAx=PbWTy=Vx^x

WTAx^=WTb.

Giải quyết cho x , premultiply nó bằng V , và bạn có y , xấp xỉ của bạn cho xx^Vyx .

Tại sao phương pháp bổ sung Schur có lẽ tốt hơn

Để bắt đầu, bạn phải chọn P bằng cách nào đó. Nếu giải pháp cho nằm trong R ( P ) , thì y = xy không phải là một xấp xỉ. Mặt khác, yx và bạn đưa ra một số lỗi gần đúng. Cách tiếp cận này không thực sự tận dụng tất cả các cấu trúc mà bạn đề cập muốn khai thác. Nếu chúng ta chọn P sao cho phạm vi của nó là cơ sở đơn vị tiêu chuẩn trong tọa độ của x mà bạn muốn tính toán, tọa độ tương ứng của y sẽ có lỗi trong đó. Không rõ bạn muốn chọn như thế nàoAx=bR(P)y=xyyxPxy . Ví dụ,bạn có thể sử dụng một SVD của A và chọn P là tích của cácvectơ số ít k bên tráiđầu tiêncủa A và sự điều chỉnh của cácvectơ số k bên phảiđầu tiêncủa A , giả sử rằng các vectơ số ít được sắp xếp theo thứ tự giảm dần giá trị số ít. Sự lựa chọn máy chiếu này sẽ tương đương với việc thực hiện phân rã trực giao thích hợp trên A và nó sẽ giảm thiểu tối đa L 2 -error trong giải pháp gần đúng.PAPkAkAA2

Ngoài việc giới thiệu các lỗi xấp xỉ, phương pháp này cũng giới thiệu thêm ba nhân lên ma trận trên đầu trang của tuyến tính giải quyết của hệ thống nhỏ hơn và các công việc cần thiết để tính toán W . Trừ khi bạn giải quyết cùng một hệ thống tuyến tính rất nhiều, chỉ thay đổi phía bên tay phải và P vẫn là ma trận chiếu "tốt" cho tất cả các hệ thống đó, những chi phí bổ sung đó có thể sẽ khiến việc giải quyết hệ thống giảm tốn kém hơn so với giải quyết hệ thống gốc.VWP

Những nhược điểm rất giống cách tiếp cận của JackPoulson, ngoại trừ việc bạn không hoàn toàn tận dụng cấu trúc mà bạn đã đề cập.


4

Câu trả lời dài là ... sắp xếp.

Bạn có thể sắp xếp lại hệ phương trình của mình sao cho bên phải xa nhấtk cột là các biến mà bạn muốn giải quyết.

Bước 1: Thực hiện loại bỏ Gaussian để ma trận có dạng tam giác trên. Bước 2: giải quyết bằng cách thay thế trở lại chỉ cho đầu tiên (cuối cùng)k biến mà bạn quan tâm

nkn lớn như bạn nói. Hãy nhớ rằng một số lượng công việc hợp lý vẫn sẽ phải được thực hiện cho bước 1.

Ngoài ra, hãy nhớ rằng việc hạn chế thứ tự mà bạn sẽ thực hiện thay thế có thể hạn chế hình thức của ma trận (nó làm mất khả năng trao đổi các cột) có thể dẫn đến một hệ thống bị điều hòa, nhưng tôi thì không chắc chắn về điều đó - chỉ cần một cái gì đó để ghi nhớ.


Loại bỏ Gaussian yêu cầu hoạt động, nhưng thay thế ngược chỉ yêu cầu O (O(n3)O(n2)n

đó là lý do tại sao câu trả lời là "sắp xếp" thay vì "có" =)
drjrm3

Điều này có nghĩa là nó có thể được thực hiện theo cách này ... Tuy nhiên, phần lớn tính toán trong Loại bỏ Gaussian đang ở giai đoạn loại bỏ về phía trước, mang lại độ phức tạp O (n ^ 3) mặc dù giai đoạn thay thế ngược bị cắt ngắn. Tôi đã hy vọng có một phương pháp nhanh hơn ...
Paul
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.