1. Trang chủ
  2. » Tất cả

Phân rã ma trận lu và phương pháp lập trình giải mô hình tuyến tính trong phân tích kinh tế

5 125 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 603,99 KB

Nội dung

VAÄN DUÏNG TÖ TÖÔÛNG HOÀ CHÍ MINH VEÀ COÂNG TAÙC SÖÛ DUÏNG CAÙN BOÄ, COÂNG CHÖÙC TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Nguyễn Văn Lộc 88 PHÂN RÃ MA TRẬN LU VÀ PHƯƠNG PHÁP LẬP TRÌNH GIẢI MÔ HÌNH TUYẾN TÍNH[.]

TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Nguyễn Văn Lộc PHÂN RÃ MA TRẬN LU VÀ PHƯƠNG PHÁP LẬP TRÌNH GIẢI MƠ HÌNH TUYẾN TÍNH TRONG PHÂN TÍCH KINH TẾ DISCUSSION AND PROGRAMMING METHODS IN ECONOMIC ANALYSIS NGUYỄN VĂN LỘC TĨM TẮT: Bài viết trình bày cách ứng dụng phương pháp sử dụng phân rã ma trận LU phương pháp lập trình để giải hệ phương trình có hàng trăm phương trình tuyến tính phân tích kinh tế mà phương pháp thơng thường chương trình tốn cao cấp khó giải Từ khóa: lập trình; phân rã ma trận; hệ phương trình tuyến tính ABSTRACT: The paper presents the method of using LU matrix decomposition and programming method to solve the system of linear equations in economic analysis Key words: matrix decomposition; system of linear equations Phân rã ma trận cách giảm ma trận thành thành phần cấu thành Phân rã ma trận cách tiếp cận đơn giản hóa tính tốn ma trận phức tạp thực ma trận phân tách thay ma trận gốc Phân rã ma trận tương tự phân tách (factor) số: ví dụ factor 10 thành  Giống phân tích giá trị thực, có nhiều cách để phân tách ma trận loạt kỹ thuật phân rã ma trận khác Trong viết này, chúng tơi trình bày phương pháp phân rã ma trận đơn giản, sử dụng rộng rãi phân rã ma trận LU Phép phân rã LU - Decomposition dùng cho ma trận vng, phân tách ma trận thành thành phần L U Công thức: A = L.U A = LU Với A ma trận vuông muốn phân rã; L ma trận tam giác dưới; U ma trận tam giác Điều kiện áp dụng phân rã LU: A khả ĐẶT VẤN ĐỀ Trong kinh tế có hàng trăm sản phẩm, sản phẩm có hai phương trình cung phương cầu nhằm xác định sản lượng cân Để xác định tất sản lượng cân kinh tế, phục vụ cho việc nghiên cứu sản phẩm tiềm Yp, ta phải giải hệ có đến trăm phương trình tuyến tính Các phương pháp tốn học như: Phương pháp ma trận nghịch đảo; Phương pháp Cramer; Phương pháp Gauss phương pháp lập trình như: Hàm solve( ); hàm inv( ); hàm pinv( )… giải Dùng phân rã ma trận kết hợp với phương pháp lập trình để chuyển việc giải hệ tuyến tính “phức tạp” giải hệ tuyến tính đơn giản việc làm cần thiết nghiên cứu kinh tế Trong viết này, minh họa phương pháp thông qua cách sử dụng phân rã ma trận LU phương pháp lập trình để giải hệ phương trình tuyến tính phân tích kinh tế NỘI DUNG 2.1 Phân rã ma trận A=LU (LU - Decomposition) Toán học nghịch, A  0, k  n 2.1.2 Phương pháp phân rã ma trận Biểu diễn A dạng tích hai ma trận đồng cấp với A: L ma trận tam giác với phần tử đường chéo 1, 2.1.1 Phân rã ma trận (Matrix Decomposition)  PGS.TS Trường Đại học Văn Lang, loc.nv@vlu.edu.vn, Mã số: TCKH27-07-2021 88 TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Số 27, Tháng - 2021 phần tử đối diện “phần 0” cần xác định U ma trận tam giác với phần tử đường chéo phần tử đối diện “phần 0” cần xác định; Thực phép nhân LU; + Đồng hóa phần tử hai ma trận cấp LU ma trận A, ta hệ đẳng thức phần tử tương ứng hai ma trận Từ hệ đẳng thức xác định, ta tìm phần tử L U Ví dụ: Phân rã LU - Decomposition ma trận: 1  4 A   14  LU ; L   L21  2 13  L31 U11 U12 &U   U 22   Giải: Ta có: P ma trận hoán vị (permutation matrix) Mỗi dịng, cột có hệ số 1, tất hệ số khác Hoán vị dịng I hay cột chuẩn Tính chất ma trận P: T T 1 T a ) P  1; b).P.P  P P  I ; c ).P  P 3    Ví dụ: Cho ma trận A  1 7 10 6    a) Phân tích ma trận A thành thành phần P, L, U In kết b) Tái tạo (phục hồi) ma trận B từ thành phần P, L, U Giải: 0 0 L32 1  U13  U 23   U 33  Entrée[1]:  U11  U12 U13   LU  L21U11 L21U12  U 22 L21U13  U 23    L31U11 L31U12  L32U 22 L31U13  L32U 23  U 33  Entrée[2]: Entrée[3]: Entrée[4]: 1    14  (1) 2 13   Out [4]: Đồng hóa phần tử tương ứng hai ma trận từ (1), ta có: Entrée[5]: Out [5]: U11  1; U12  2; U13   L21  3; U 22  2; U 23  2; L31  2; L32  1; U 33  Entrée[6]: 1  1 0 1 4  A  3 14  3 0  0 2 2 13 2 1 0 3 2.2 Phân rã ma trận PA = LU phương pháp lập trình Việc phân rã LU thực cách sử dụng trình số lặp thất bại ma trận khơng thể phân tích Do vậy, để phân tích ma trận ổn định mặt số, ta dùng phân tích LU xoay vịng phần (Partial Pivoting) [1, tr.6] Cơng thức: PA = LU Với ma trận vuông A: PA = LU Với L ma trận tam giác dưới; U ma trận tam giác Out [6]: Entrée[7]: Out [7]: import numpy import scipy from scipy.linalg import lu A = numpy.array([[3., , 5., 9.], [1., 7., 5., 7.], [5., 10., 5., 3.], [6., 9., 7., 2.]]) P, L, U = lu(A) P array([[0., 0., 1., 0.], [0., 1., 0., 0.], [0., 0., 0., 1.], [1., 0., 0., 0.]] L array([[ 1., 0., 0., 0.], [0.16666667, 1., 0., 0.], [0.5, -0.45454545, 1., 0.], [0.83333333, 0.45454545, -0.79439252, 1.]]) U array([[ 6., 9., 7., 2.], [ 0., 5.5 , 3.83333333, 6.66666667], [0., 0., 3.24242424, 11.03030303], [0., 0., 0., 7.06542056]]) B = P.dot(L).dot(U) B array([[ 3., 2., 5., 9.], [ 1., 7., 5., 7.], [ 5., 10., 5., 3.], [ 6., 9., 7., 2.]]) 2.3 Ứng dụng phân rã ma trận PA = LU phương pháp lập trình giải hệ phương trình tuyến tính  AX   PAX  LUX  PB  B ' 89 TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Nguyễn Văn Lộc LY  B '  2  Y  L1.B '  1 UX  Y 3  X  U Y Thay giải hệ phương trình (1), ta lần lượt: Bước 1: Giải hệ phương trình (2), tìm Y, Entrée[6]:  với 1 Y  L B ' Entrée[7]: Bước 2: Giải hệ phương trình (3), tìm X, với X U 1 Out [7]: Y Entrée[8]: Ví dụ: Giải hệ phương trình:  x1  x2  x3  x4    x1  x2  x3  x4  Theo [2, tr.86]  3x  x  x  x  4   2 x1  x2  x3  x4  8 Chuyển hệ phương trình dạng phương trình ma trận: AX =B, với: 1 2 A 2  2 1 2 3 1 2 3  1 ;X Out [8]: Entrée[9]: Out [9]:  x1  6  x2  8   ;B    x3   8 x     Entrée[10]: Giải: (Sử dụng phân rã PA =LU) Entrée[1]: Entrée[2]: Entrée[3]: Entrée[4]: Entrée[5]: Out [10]: from numpy import array from scipy.linalg import lu A = array([[1, 2, 3, -2], [2, -1, -2, 3], [3, 2, -1, 2], [2, -3, 2, 1]]) print(A) [[ -2] [ -1 -2 -3] [ -1 2] [ -3 1]] P, L, U =lu(A) C=P.dot(L).dot(U) print(C) [[ -2.] [ -1 -2 -3.] [ -1 2.] [ -3 1.]] print(P) [[ -2.] [ -1 -2 -3.] [ -1 2.] [ -3 1.]] print(L) [[ 0 0.] [0.66666667 0.] [0.33333333-0.30769231 0.] [0.66666667 0.53846154-0.66666667 1.]] Entrée[11]: Out [11]: Entrée[12]: Out [12]: print(U) [[ -1 2.] [ -4.33333333 2.66666667-0.33333333] [0 4.15384615-2.76923077] [0 0 -6.]] import numpy as np B = np.array([[6], [8], [4], [-8]]) B array([[ 6], [ 8], [ 4], [-8]]) D=P@B D array([[ 4.], [-8.], [ 6.], [ 8.]]) from numpy.linalg import inv K = inv(L) K array([[ 1., 0., 0., 0.], [-0.66666667, 1., 0., 0.], [-0.53846154, 0.30769231, 1., 0.], [-0.66666667, -0.33333333, 0.66666667, 1.]]) Y=K@D Y array([[4.], [-10.66666667], [1.38461538], [12.]]) E = inv(U) E array([[ 0.33333333, 0.15384615, 0.01851852, 0.11111111], [-0., 0.23076923, 0.14814815, -0.05555556], [ 0., 0., 0.24074074, -0.11111111], [-0., 0., -0., -0.16666667]]) X = E.dot(Y) X array([[ 1.], [ 2.], [-1.], [-2.]]) Vậy nghiệm hệ phương trình :  x1   x   x  1   x4  2 2.4 Ứng dụng phân rã ma trận PA = LU phương pháp lập trình giải mơ hình tuyến tính kinh tế Mơ hình tuyến tính phân tích kinh tế giải phân rã LU phương pháp lập trình theo quy trình bước mơ tả ví dụ sau: Ví dụ: Xét thị trường chè, café, ca cao có hàm cung hàm cầu tương ứng sau: 90 TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Số 27, Tháng - 2021 QS  10  P1 ; QD  20  P1  P3 ( che ) 1 QS  P2 ; QD  40  P2  P3 ( cafe) 2 Entrée[6]: QS  5  P3 ; QD  10  P2  P3  P1 ( caocao ) 3 Hãy thiết lập mô hình cân thị trường ba loại hàng hóa Xác định giá lượng hàng hóa loại trạng thái cân thị trường [3, tr.84] Giải:Bước 1: Thiết lập mơ hình cân thị trường: Entrée[7]: Q  Q 10  P1  20  P1  P3  S1 D1  Q  Q  P  40  P2  P3  S  D Q  Q  5  3P3  10  P2  P3  P1 D3  S3  P1  P3  30    P2  P3  40 P1  P2  P3  15 Dạng ma trận AX = B với: 2 A  0 1  P1  Entrée[8]: Out [8]: Entrée[9]: Out [9]: Entrée[10]: 30  ; X   P 2 ; B   40 Out [10]: 1 1 4  P3 15  Bước 2: Giải mô hình phương pháp lập trình, sử dụng phân rã ma trận PA= LU Entrée [1]: # Giải mơ hình tuyến tính bậc 3_trong kinh tế : Entrée[11]: Out [11]: Entrée[12]:  P1  P3  30  #  P2  P3  40 P1  P2  P3  15 Entrée[2]: Entrée[3]: Entrée[4]: Entrée[5]: Out [12]: Entrée[13]: from numpy import array from scipy.linalg import lu A = array([[2, 0, 1], [0, 4, 1], [1, 1, 4]]) print(A) [[ 1] [ 1] [ -1 4]] P, L, U =lu(A) C=P.dot(L).dot(U) print(C) [[ 1.] [ 1.] [ -1 4.]] print(P) Out [13]: [[1 0.] [0 0.] [0 1.]] print(L) [[ 0 ] [ ] [ 0.5 -0.25 ]] print(U) [[2 ] [0 ] [0 3.75]] import numpy as np B = np array([[30], [40], [15]]) B array([[30], [40], [15]]) D=P@B D array([[30.], [40.], [15.]]) from numpy.linalg import inv K = inv(L) K array([[ 1., , 0.], [0., 1., 0.], [0.5, 0.25, 1.]]) Y=K@D Y array([[30.], [40.], [10.]]) E = inv(U) E array([[ 0.5, 0., -0.13333333], [0., 0.25, 0.06666667], [0., 0., 0.26666667]]) X = E.dot(Y) X array([[13.66666667], [9.33333333], [2.66666667]] Bước 3: Phát biểu kết “kinh tế” toán: Giá lượng cân tương ứng loại hàng hóa là: P1  13, 66, QD  QS  10  13, 66  3, 66; 1 P2  9, 33, QD  QS  2.9, 33  18, 66; 2 P3  2, 66, QD  QS  5  3.2, 66  2, 98 3 KẾT LUẬN Hệ phương trình tuyến tính có ứng dụng rộng rãi tốn tìm vec-tơ riêng, giá trị riêng ánh xạ tuyến tính, hệ mơ 91 TẠP CHÍ KHOA HỌC ĐẠI HỌC VĂN LANG Nguyễn Văn Lộc hình hóa tuyến tính kinh tế Do vậy, việc tìm phương pháp hữu hiệu giải hệ tuyến tính có số ẩn số phương trình “rất lớn” ln nhu cầu cần thiết Phân rã ma trận LU kết hợp với phương pháp lập trình cho ta phương pháp giải hiệu phương trình Từ kết trình bày cho thấy cần thiết việc kết hợp nghiên cứu phát triển phương pháp Toán học phương pháp lập trình giải mơ hình tuyến tính kinh tế mở rộng cho mơ hình kinh tế khác TÀI LIỆU THAM KHẢO [1] Trung tâm tin học, Đại học Khoa học Tự nhiên (2019), Mathematics and Statistics for Data Science, Tài liệu lưu hành nội [2] Nguyễn Đình Trí (2014), Bài tập Toán cao cấp tập 1, Nxb Giáo dục Việt Nam [3] Nguyễn Tiến Quang (2014), Cơ sở Đại số tuyến tính, Nxb Giáo dục Việt Nam Ngày nhận bài: 22-02-2021 Ngày biên tập xong: 05-5-2021 Duyệt đăng: 20-5-2021 92 ... hệ phương trình :  x1   x   x  1   x4  2 2.4 Ứng dụng phân rã ma trận PA = LU phương pháp lập trình giải mơ hình tuyến tính kinh tế Mơ hình tuyến tính phân tích kinh tế giải phân rã. .. Phân rã ma trận PA = LU phương pháp lập trình Việc phân rã LU thực cách sử dụng q trình số lặp thất bại ma trận khơng thể phân tích Do vậy, để phân tích ma trận ổn định mặt số, ta dùng phân tích. .. kinh tế Do vậy, việc tìm phương pháp hữu hiệu giải hệ tuyến tính có số ẩn số phương trình “rất lớn” nhu cầu cần thiết Phân rã ma trận LU kết hợp với phương pháp lập trình cho ta phương pháp giải

Ngày đăng: 02/03/2023, 07:52

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w