trong matlab, sự khác biệt giữa linsolve và mldivide là gì?


10

trong matlab, cả linsolvemldivide đều được sử dụng để giải một hệ phương trình tuyến tính, trong tất cả các trường hợp xác định, quá hạn và không xác định.

Đọc tài liệu của họ, tôi đã tự hỏi sự khác biệt giữa chúng là gì? Có phải họ đang sử dụng gần như cùng một thuật toán về nhân tố ma trận và tam giác hóa trong ba trường hợp?

Nếu A có các thuộc tính trong opts, linsolve nhanh hơn mldivide, vì linsolve không thực hiện bất kỳ thử nghiệm nào để xác minh rằng A có các thuộc tính được chỉ định

Mldivide có thực hiện các thử nghiệm tương tự để xác minh xem A có thuộc tính đặc biệt không? Hay mldivide chỉ coi chúng là trường hợp chung mà không có thuộc tính đặc biệt?

Cảm ơn!

Câu trả lời:


16

Cả hai đều là bộ giải trực tiếp để giải các hệ tuyến tính (đối lập với bộ giải lặp).

mldivideAAx=bmldivide

mldivideđối với ma trận vuông: Nếu A đối xứng và có các phần tử đường chéo thực, dương, MATLAB sẽ thử hệ số Cholesky. Nếu hệ số Cholesky thất bại, MATLAB thực hiện phép nhân tử đối xứng, không xác định. Nếu A là Hessenberg trên, MATLAB sử dụng loại bỏ Gaussian để giảm hệ thống thành ma trận tam giác. Nếu A là hình vuông nhưng không được xác định hình tam giác, đối xứng và dương xác định, hoặc Hessenberg, thì MATLAB thực hiện một hệ số tam giác tổng quát bằng cách sử dụng hệ số LU với xoay vòng một phần

linsolve cho ma trận vuông: hệ số LU với xoay vòng một phần

mldividelinsolvecho ma trận hình chữ nhật: hệ số QR

linsolveoptsMột

opts.POSDEF = true; linsolve(A,b,opts)

xMộtopts

Nếu một số tiêu chí nhất định được đáp ứng linsolvemldividesử dụng quy trình nhân tố hóa tương tự. Ví dụ, đối với một hệ thống xác định dương dày đặc đáp ứng các tính chất nhất định hoặc bạn có một hệ thống quá hạn và cả hai đều thực hiện khớp vuông nhỏ nhất.

Hơn nữa, linsolvecũng có thể thực hiện tính toán tượng trưng . Điều này rất hữu ích khi bạn có một hệ thống nhỏ chưa được xác định rõ ràng với số lượng giải pháp vô hạn. linsolvecho phép bạn giải quyết nó một cách tượng trưng, mldividekhông thể làm điều đó. Tuy nhiên, nếu các biến không được khai báo một cách tượng trưng mldividelinsolvesẽ cung cấp cho bạn thông điệp cảnh báo tương tự "Ma trận là số ít với độ chính xác làm việc".

Cuối cùng nhưng không kém phần quan trọng, linsolvekhông hỗ trợ các hệ thống thưa thớt như ma trận sau (dấu chấm màu xanh có nghĩa là mục nhập khác không). Trong khi mldividecó thể xử lý các hệ thống thưa thớt mạnh mẽ khi kích thước dưới 200k x 200k. ví dụ thưa thớt

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.