6

Với LULU decomposition và vector của hằng bLU*x=b, là có bất kỳ xây dựng trong chức năng mà tìm ra x? Có nghĩa là một cái gì đó giống như -Giải hệ phương trình tuyến tính bằng cách đưa phân hủy LU và vector của hằng

X = functionName(L,U,b) 

Lưu ý rằng trong cả hai LU chúng ta đang đối phó với ma trận tam giác mà có thể được giải quyết trực tiếp bởi forward and backward substitution mà không sử dụng quá trình Gaussian elimination.

Edit:

Giải hệ phương trình tuyến tính này nên theo các bước sau -

1. define y - s.t Ux=y 
2. solve Ly=b by forward substitution 
3. solve Ux=y by backward substitution 
4. return y 

Chỉnh sửa 2:

tôi thấy linalg::matlinsolveLU nhưng tôi đã không cố gắng nó gây ra tôi có phiên bản quá cũ (R2010a). Nó có hiệu quả với ai không?

+0

Là các vectơ và ma trận của bạn có biểu tượng không? Nếu vậy, bạn cần nêu chi tiết điều này trong câu hỏi của bạn. – horchler

+0

Ngoài ra, 'mldivide' là [quá tải cho hệ thống tượng trưng] (http://www.mathworks.com/help/symbolic/arithmeticoperations.html), nhưng sẽ không hoạt động chính xác như cũ. – horchler

+0

"ma trận tượng trưng" có nghĩa là gì? – URL87

Trả lời

5

Nếu bạn có:

A = rand(3); 
b = rand(3,1); 

sau đó giải pháp cho hệ thống có thể chỉ đơn giản là tính như:

x = A\b 

Hoặc nếu bạn đã có một phân hủy LU của A, sau đó:

[L,U] = lu(A); 
xx = U\(L\b) 

chức năng mldividesmart enough để phát hiện ma trận là tam giác và chọn một thuật toán phù hợp (thay thế tiến/lùi)

+0

loại điều này rất hữu ích nếu bạn có ma trận hệ số cố định 'A' nhưng nhiều mặt bên phải khác nhau' b'.Vì vậy, bằng cách precomputing phân hủy, bạn có thể tăng tốc độ những thứ lên – Amro

+0

Làm thế nào bạn biết rằng nó "đủ thông minh để phát hiện ..."? – URL87

+0

Tôi đã cung cấp liên kết đến các tài liệu giải thích cách 'mldivide' triển khai các thuật toán khác nhau và chọn một thuật toán phù hợp dựa trên các đặc tính của ma trận đầu vào .. – Amro

3

Tôi nghĩ rằng đây là những gì bạn đang tìm kiếm:

A = rand(3,3); % Random 3-by-3 matrix 
b = rand(3,1); % Random 3-by-1 vector 
[L,U] = lu(A); % LU decomposition 
x = U\(L\b) % Solve system of equations via mldivide (same as x = A\b or x = (L*U)\b) 
err = L*U*x-b % Numerical error 

Các hệ phương trình được giải quyết bằng mldivide. Bạn cũng có thể xem qr thực hiện QR decomposition thay vì sử dụng LU phân hủy. qr có thể trực tiếp giải quyết các vấn đề về loại A*x = b và hiệu quả hơn. Ngoài ra, hãy xem linsolve. Đối với các hệ thống tượng trưng, ​​bạn vẫn có thể sử dụng mldivide hoặc thử linalg::matlinsolveLU trong MuPAD.

+0

xem bài đăng đã chỉnh sửa của tôi, vui lòng – URL87

+0

Cảm ơn bạn đã liên kết @Amro. – horchler

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