Giải


22

Tôi có ma trận và . thưa thớt và với rất lớn (có thể theo thứ tự vài triệu.) là ma trận cao với khá nhỏ ( ) và mỗi cột có thể chỉ có một đơn entry với phần còn lại là 's, như vậy mà . rất lớn, vì vậy rất khó để đảo ngược và tôi có thể giải quyết một hệ thống tuyến tính như lặp đi lặp lại bằng cách sử dụng phương pháp không gian con Krylov như , nhưng tôi không cóG A n × n n G n × m m 1 < m < 1000 1 0 G T G = I A A x = b B i C G S t a b ( l ) A - 1AGAn×nnGn×mm1<m<100010GTG=IAAx=bBiCGStab(l)A1 rõ ràng.

Tôi muốn giải một hệ có dạng: , trong đó và là các vectơ có độ dài . Một cách để làm điều đó là sử dụng thuật toán lặp trong thuật toán lặp để giải cho mỗi lần lặp của thuật toán lặp bên ngoài. Điều này sẽ cực kỳ tính toán, tuy nhiên. Tôi đã tự hỏi nếu có một cách tính toán dễ dàng hơn để giải quyết vấn đề này.x b m A - 1(GTA1G)x=bxbmA1


Tôi vừa thêm vào câu trả lời của mình một nhận xét về việc khai thác cấu trúc 0-1.
Arnold Neumaier

Câu trả lời:


19

Giới thiệu vectơ và giải hệ phương trình ghép lớn , cho đồng thời, sử dụng phương pháp lặp. Nếu là đối xứng (có vẻ như bạn không nói rõ) thì hệ thống là đối xứng (nhưng không xác định, mặc dù quasidefinite nếu là xác định dương), có thể giúp bạn chọn phương pháp thích hợp. (từ khóa liên quan: ma trận KKT, ma trận quasidefinite).A y + G x = 0 G T y = - b ( y , x ) A Ay:=A1GxAy+Gx=0GTy=b(y,x)AA

Chỉnh sửa: Vì là đối xứng phức tạp, ma trận tăng cũng vậy, nhưng không có quasidefinitity. Tuy nhiên, bạn có thể sử dụng thói quen để tính ; do đó, bạn có thể điều chỉnh một phương thức như QMR ftp://ftp.math.ucla.edu/pub/camreport/cam92-19.pdf (được thiết kế cho các hệ thống thực, nhưng bạn có thể dễ dàng viết lại nó cho các hệ thống phức tạp, sử dụng sự điều chỉnh trong nơi chuyển vị) để giải quyết vấn đề của bạn.Một x Một * x = ¯ Một ¯ xAAxAx=Ax¯¯

Edit2: Trên thực tế, cấu trúc (0,1) của có nghĩa là bạn có thể loại bỏ amd các thành phần của cách tượng trưng, ​​do đó kết thúc bằng một hệ thống nhỏ hơn để giải quyết. Điều này có nghĩa là gây rối với cấu trúc của và chỉ trả tiền khi được đưa ra rõ ràng ở định dạng thưa thớt chứ không phải là toán tử tuyến tính.x G T y A AGxGTyAA


Cảm ơn bạn! A là đối xứng phức tạp. Có lý do nào để mong đợi điều kiện của ma trận tăng thêm tồi tệ hơn ma trận ban đầu không? Nếu m nhỏ, ma trận tăng chỉ có kích thước lớn hơn A một chút, vì vậy tôi nghi ngờ rằng việc giải quyết hệ thống tăng cường này lặp đi lặp lại không nên khó khăn hơn nhiều so với giải hệ thống với A? A
Costis

Số điều kiện của hai hệ thống thường không liên quan; nó phụ thuộc rất nhiều vào là gì - Tôi đã thêm vào thông tin câu trả lời của mình về cách khai thác tính đối xứng phức tạp. G
Arnold Neumaier

Chào các cậu! Cảm ơn vì tất cả những hồi đáp; nơi này thật tuyệt Một phần mở rộng cho câu hỏi ban đầu: Giả sử bây giờ tôi có , trong đó G và A có cùng ý nghĩa như trong câu hỏi ban đầu nhưng B là ma trận nxn thiếu thứ hạng ( cùng kích thước với A) và toàn bộ G T A - H B A - 1 G là thứ hạng đầy đủ. Làm thế nào bạn sẽ giải quyết hệ thống mới, vì bây giờ nghịch đảo của B không tồn tại nên bạn không thể có A B - 1 A H(GTAHBA1G)x=bGTAHBA1GAB1AH. Tôi không nghĩ rằng nó sẽ hoạt động đơn giản với giả của B.
Chi phí

1
Giới thiệu z : = A - H B y , và tiến hành tương tự với trường hợp được thực hiện. (Có thể bạn cũng cần đưa yếu tố B vào ma trận xếp hạng đầy đủ và giới thiệu một vectơ trung gian bổ sung.)y:=A1Gxz:=AHByB
Arnold Neumaier

Xin chào Arnold. Cảm ơn, điều này thực sự làm việc! Tôi đã thử nghiệm nó với một số ví dụ thử nghiệm rất nhỏ và nó hoạt động rất tốt. Tuy nhiên, bộ giải lặp của tôi đang gặp vấn đề lớn khi đảo ngược ma trận tăng. Mặc dù chỉ mất khoảng 80 lần lặp (vài giây) để giải quyết một hệ thống có dạng với ma trận A ban đầu, hệ thống có ma trận tăng (là 2n + mx 2n + m hoặc 2n-mx 2n- m sử dụng phương pháp của @ wolfgang-bangerth) mất hơn hàng chục ngàn lần lặp (vài giờ) để giải quyết một RHS. Có chiến lược nào để tăng tốc độ hội tụ không? có lẽ là một điều kiện tiên quyết? Ax=b
Costis

7

Theo câu trả lời của Arnold, có một số điều bạn có thể làm để đơn giản hóa vấn đề. Cụ thể, viết lại hệ thống dưới dạng . Sau đó lưu ý rằng từ câu lệnh G cao và hẹp và mỗi hàng chỉ có 1 và 0 khác, thì câu lệnh G T y = - b có nghĩa là tập hợp con của các phần tử của y có giá trị cố định, cụ thể là các phần tử của - b .Ay+Gx=0,GTy=bGGTy=byb

Chúng ta hãy nói rằng vì đơn giản rằng m cột và n hàng và đó chính xác là người đầu tiên m hàng có người thân trong họ và được sắp xếp lại các phần tử của x tôi có thể làm cho nó để Gm × m ma trận sắc ở đầu và một ma trận không n - m × m ở phía dưới. Sau đó tôi có thể phân vùng y = ( y c , y f ) thành các phần tử m "bị ràng buộc" và n - m "miễn phí" đểGmnmxGm×mnm×my=(yc,yf)mnm . Tôi cũng có thể phân vùng A sao cho A = ( A c c A c f A f c A f f ) . Từ phương trình A y + G x = 0 Tôi sau đó nhận được: A c c y c + A c f y f + x = 0 ,yc=bAA=(AccAcfAfcAff)Ay+Gx=0 và sử dụng những gì chúng ta biết về y c chúng ta có từ phương trình thứ hai A f f y f = A f c b và do đó x = A c c b - A c f A - 1 f f A f c b . Nói cách khác, ma trận duy nhất bạn phải đảo ngược là tập con của A

Accyc+Acfyf+x=0,Afcyc+Affyf=0
yc
Affyf=Afcb
x=AccbAcfAff1Afcb.
Acó hàng và cột không được đề cập trong (không gian null của G ). Điều này bạn có thể dễ dàng thực hiện: (i) tính z = A f c b ; (ii) sử dụng bất kỳ bộ giải nào bạn có để giải A f f h = z ; (iii) tính x = A c c b - A c f h .GGz=AfcbAffh=zx=AccbAcfh

Nói cách khác, do cấu tạo của , giải quyết các hệ thống tuyến tính bạn có thực sự không phải là khó khăn hơn giải quyết một hệ thống tuyến tính duy nhất với một .GA


0

Nhưng chúng ta biết , G TA , vì vậyGGTA

GTA1Gx=b

GGTA1Gx=Gb

, nên G T = G - 1 , do đó G G T = I :GTG=IGT=G1GGT=I

A1Gx=Gb

AA1Gx=AGb

Gx=AGb

GTGx=GTAGb

x=GTAGb

GAb


3
GTGG=e1GT=e1TGGT=e1e1TI

1
GCnCmGTG=Im×mGGTIn×n
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.