Giải hệ thống tuyến tính dày đặc?


11

Có bất kỳ hy vọng nào trong việc giải quyết hệ thống tuyến tính sau một cách hiệu quả bằng phương pháp lặp không?

ARn×n,xRn,bRn, with n>106

Ax=b

với

, nơi Δ là một ma trận rất thưa thớt với một vài đường chéo, phát sinh từ việc rời rạc hóa của Laplace điều hành. Trên đường chéo chính của nó có - 6 và có 6 đường chéo khác với 1 trên đó.A=(ΔK)Δ661

là mộtma trận R n × n đầy đủ bao gồm hoàn toàn các ma trận.KRn×n

Việc giải hoạt động tốt với các phương pháp lặp như Gauss-Seidel, vì đó là một ma trận chi phối theo đường chéo thưa thớt. Tôi nghi ngờ rằng vấn đề A = ( Δ - K ) gần như không thể giải quyết hiệu quả đối với số lượng lớn n , nhưng có mẹo nào để có thể giải quyết nó, khai thác cấu trúc của K không?A=ΔA=(ΔK)nK

EDIT: Sẽ làm một cái gì đó như

// giải quyết cho x k + 1 với Gauss-SeidelΔxk+1=b+Kxkxk+1

hội tụ để giải đúng? Tôi đọc rằng đó là một tách Phương pháp hội tụ nếu , nơi ρ là tiêu chuẩn phổ. Tôi tự tính toán các giá trị riêng của Δ - 1 K cho một số giá trị nhỏ khác nhau của n và tất cả đều không ngoại trừ một trong đó có một giá trị âm khá cao. (khoảng ~ 500 cho n = 256 ) Vì vậy, tôi đoán rằng nó sẽ không hoạt động.ρ(Δ1K)<1ρΔ1Knn=256

EDIT: Thông tin thêm về Δ :

là đối xứng và là tiêu cực nhất định và theo đường chéo trội.ΔRn×n

Nó được tạo ra theo cách sau trong MATLAB

n=W*H*D;

e=ones(W*H*D,1);

d=[e,e,e,-6*e,e,e,e];

delta=spdiags(d, [-W*H, -W, -1, 0, 1, W, W*H], n, n);


Bạn có thể cung cấp thông tin thêm về , xin vui lòng? Đối xứng? Xác định, bán xác định, không xác định? Δ
Stefano M

là đối xứng và tiêu cực nhất định. Δ
yon

Liệu các Woodbury Matrix nhận dạng giúp bạn kể từ khi K là hạng thấp?
Aron Ahmadia

Câu trả lời:


14

n>106n1012ΔΔ

  • Sử dụng hệ thống giáp

M=(ΔeeT1)

Trong đó là một vectơ cột bao gồm tất cả các phần tử và giải hệ thốnge

M(xy)=(b0)

sử dụng một bộ giải lặp hoặc trực tiếp.

  • Sử dụng phương pháp Krylov và áp dụng ma trận là (nghĩa là ma trận thưa thớt cộng với hiệu chỉnh cấp 1. Sử dụng bộ tiền xử lý hiện tại của bạn , hoặc , đặc biệt nếu bạn muốn sử dụng giải pháp trực tiếp với , hãy cập nhật nó với công thức Sherman-Morrison .Δ - e e T P - 1Δ - 1 ΔAΔeeTP1Δ1Δ

Tôi có xu hướng nghĩ rằng bạn tốt hơn nhiều với cách tiếp cận thứ hai. Vấn đề đơn giản là bạn không được cố lưu trữ ma trận trong bộ nhớ cũng như không thử thực hiện một sản phẩm vectơ ma trận với nó. Thay vào đó, mỗi khi bạn phải nhân với với vectơ trong sơ đồ lặp, bạn nhân và sau đó tính . Thuật ngữ trong ngoặc chỉ là tổng của các mục của và bạn chỉ tính nó một lần. Jed đã giải thích điều này tốt nhưng tôi muốn nhấn mạnh thứ tự của các hoạt động. A z h = Δ z y = h - e ( e T z ) zKAzh=Δzy=he(eTz)z
Wolfgang Bangerth
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.