Theo hiểu biết của tôi, có 4 cách để giải một hệ phương trình tuyến tính (sửa tôi nếu có nhiều hơn):
- Nếu ma trận hệ thống là ma trận vuông bậc đầy đủ, bạn có thể sử dụng Quy tắc của Cramer;
- Tính toán nghịch đảo hoặc giả của ma trận hệ thống;
- Sử dụng các phương pháp phân rã ma trận (loại bỏ Gaussian hoặc Gauss-Jordan được coi là phân rã LU);
- Sử dụng các phương pháp lặp, chẳng hạn như phương pháp gradient liên hợp.
Trên thực tế, bạn hầu như không bao giờ muốn giải các phương trình bằng cách sử dụng quy tắc của Cramer hoặc tính toán nghịch đảo hoặc giả, đặc biệt là đối với ma trận chiều cao, vì vậy câu hỏi đầu tiên là khi nào nên sử dụng phương pháp phân tách và phương pháp lặp. Tôi đoán nó phụ thuộc vào kích thước và tính chất của ma trận hệ thống.
Câu hỏi thứ hai là, theo hiểu biết của bạn, loại phương pháp phân rã hoặc phương pháp lặp nào phù hợp nhất với ma trận hệ thống nhất định về độ ổn định và hiệu quả của số.
Ví dụ: phương pháp gradient liên hợp được sử dụng để giải các phương trình trong đó ma trận đối xứng và xác định dương, mặc dù nó cũng có thể được áp dụng cho bất kỳ phương trình tuyến tính nào bằng cách chuyển đổi thành . Ngoài ra đối với ma trận xác định dương, bạn có thể sử dụng phương pháp phân tách Cholesky để tìm kiếm giải pháp. Nhưng tôi không biết khi nào nên chọn phương pháp CG và khi nào nên chọn phân tách Cholesky. Cảm giác của tôi là chúng ta nên sử dụng phương pháp CG tốt hơn cho các ma trận lớn.A T A x = A T b
Đối với ma trận hình chữ nhật, chúng ta có thể sử dụng phân tách QR hoặc SVD, nhưng một lần nữa tôi không biết cách chọn một trong số chúng.
Đối với các ma trận khác, bây giờ tôi không biết cách chọn người giải thích hợp, như ma trận Hermiti / ma trận đối xứng, ma trận thưa thớt, ma trận ban nhạc, v.v.