2009-01-07 71 views
13

Tôi đang cố gắng thực hiện một số phép toán đại số tuyến tính cơ bản và một trong các phép toán này là đảo ngược của ma trận tam giác (trên và/hoặc dưới). Có một thuật toán dễ dàng và ổn định để làm điều đó?Có cách nào đơn giản để đảo ngược ma trận tam giác (trên hoặc dưới) không?

Cảm ơn bạn.

+0

Hãy xem bài này: http://math.stackexchange.com/questions/1143214/method-to-find-the-inverse-of-any-lower-triangular-matrix Bài kiểm tra – Dade

Trả lời

14

Có, sử dụng back substitution. Thuật toán chuẩn để đảo ngược ma trận là tìm phân hủy LU (phân tách thành hình tam giác thấp hơn và ma trận tam giác trên), sử dụng phân bổ ngược trên các mảnh hình tam giác, và sau đó kết hợp các kết quả để thu được nghịch đảo của ma trận gốc.

+0

Tôi đang cố gắng lấy nghịch đảo của ma trận * tam giác *, không phải là ma trận vuông. Làm thế nào trở lại thay thế sẽ giúp tôi trong việc có được những nghịch đảo của tam giác? – tunnuz

+8

Bằng defintion, các hình tam giác vuông là hình vuông. – jason

+0

Hơn nữa, chỉ có ma trận vuông có nghịch đảo. – conjectures

1

Nếu bạn đang nói về các số liệu chính xác đơn lẻ, hãy xem mã nguồn cho các thói quen LAPACK STRTRISTRTI2.

0

Ồ, đó là thực tế là một nửa nội dung của khóa học phân tích số. Các thuật toán chuẩn sẽ làm điều đó, và có một bó mã đóng hộp here. Nguồn cuối cùng cho vấn đề này và hầu hết các vấn đề phân tích số thường khác là Numerical Recipes.

+1

Đảo ngược ma trận hình tam giác không phải là một nửa nội dung của một khóa học trong phân tích số. Đảo ngược một ma trận hình tam giác là tầm thường, và thuật toán ngây thơ là ổn định. – jason

+1

Gotta làm hàng xoay vòng. Naive sẽ không ổn định. – duffymo

+2

Xoay vòng (thông qua, nói, loại bỏ Gaussian) đặt một hệ thống tuyến tính thành dạng tam giác mà sau đó được giải quyết với backsubstitution. Ví dụ, đối với sự ổn định, độ chính xác của cuốn sách và tính ổn định của thuật toán số của Nicholas Higham, trang 140 của ấn bản thứ hai. – jason

3

Với ma trận hình tam giác thấp hơn L, backsubstitution cho phép bạn giải quyết hệ thống L x = b nhanh chóng cho bất kỳ bên tay phải b.

Để đảo ngược L, bạn có thể giải quyết hệ thống này cho các cạnh bên phải e1 = (1,0, ..., 0), e2 = (0,1, ..., 0), ..., vi = (0,0, ..., 1) và kết hợp vectơ giải pháp kết quả thành một ma trận đơn (nhất thiết là hình tam giác thấp hơn).

Nếu bạn quan tâm đến giải pháp dạng khép kín, các phần tử chéo của nghịch đảo là các nghịch đảo của các phần tử đường chéo ban đầu, và công thức cho phần còn lại của các phần tử nghịch đảo ngày càng phức tạp hơn khi bạn di chuyển aways từ đường chéo.

5

Không đảo ngược nếu bạn có thể. Đó là một trong những điều răn cơ bản của đại số tuyến tính số.

Nhanh hơn và số lượng stabler để giữ bản thân ma trận L trong bộ nhớ và tính

inv(L)b
với sự thay thế ngược bất cứ khi nào bạn cần làm điều gì khác với inv (L).

Lưu ý rằng thuật toán thông thường để đảo ngược nó đòi hỏi phải giải quyết các hệ thống

inv(L)[1 0 0 ...], 
inv(L)[0 1 0 ....], 
inv(L)[0 0 1 ....]
và cứ thế, vì vậy bạn thấy dễ dàng hơn là không đảo ngược nó chút nào.

Các vấn đề liên quan