1. Trang chủ
  2. » Luận Văn - Báo Cáo

các phương pháp tính gần đúng ma trận nghịch đảo

29 1 0
Tài liệu đã được kiểm tra trùng lặp

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Các Phương Pháp Tính Gần Đúng Ma Trận Nghịch Đảo
Tác giả Hà Minh Dũng
Người hướng dẫn TS. Hà Thị Ngọc Yến
Trường học Đại Học Bách Khoa Hà Nội
Thể loại báo cáo
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 29
Dung lượng 3,46 MB

Nội dung

ĐẠI HỌC BÁCH KHOA HÀ NỘIVIỆN TOÁN ỨNG DỤNG VÀ TIN HỌCCÁC PHƯƠNG PHÁP TÍNH GẦN ĐÚNG MATRẬN NGHỊCH ĐẢOHà Minh Dũng - MSSV 20200096GIẢNG VIÊN HƯỚNG DẪNTS... ChomatrậnvuôngA cấpn.Tìmmatrậnng

Trang 1

ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN TOÁN ỨNG DỤNG VÀ TIN HỌC

Trang 2

Mục lục

1.1 Phát biểu bài toán 2

1.2 Lí do cần giải gần đúng ma trận nghịch đảo 2

1.3 Các phương pháp giải 2

2 Phương pháp Newton 3 2.1 Ý tưởng 3

2.2 Lí do chọn X0= A T ∥ ∥ A 2 3

2.3 Công thức sai số 5

2.4 Thuật toán 6

3 Các phương pháp tìm gần đúng nghịch đảo của ma trận chéo trội 7 3.1 Giới thiệu 7

3.2 Phương pháp lặp Jacobi 7

3.2.1 Lí thuyết 7

3.2.2 Thuật toán 8

3.3 Phương pháp lặp Gauss-Seidel 10

3.3.1 Lí thuyết 10

3.3.2 Thuật toán 11

4 Hệ thống ví dụ 14 4.1 Ví dụ 1 (Ma trận không chéo trội) 14

4.2 Ví dụ 2 (Ma trận chéo trội hàng) 15

4.3 Ví dụ 3 (Ma trận chéo trội cột gần suy biến) 18

4.4 Ví dụ 4 (Ma trận chéo trội cỡ lớn) 20

5 Phân tích và tổng kết các phương pháp 26 5.1 Nhận xét các ví dụ 26

5.2 Ưu, nhược diểm của các phương pháp 26

5.2.1 Ưu điểm 26

5.2.2 Nhược điểm 26

6 Hướng dẫn sử dụng chương trình 27 6.1 Phương pháp Newton 27

6.2 Phương pháp Jacobi 27

6.3 Phương pháp Gauss-Seidel 28

Trang 3

1 Đặt vấn đề

1.1 Phát biểu bài toán

Bài toán ChomatrậnvuôngA cấpn.Tìmmatrậnnghịchđảocủa nếucó.A

Trong báo cáo này, ta sẽ nghiên cứu các phương pháp tìm gần đúng ma trận nghịch đảo củamột ma trận thực vuông cấp n

1.2 Lí do cần giải gần đúng ma trận nghịch đảo

Do khuyết điểm của các phương pháp tính đúng ma trận nghịch đảo:

Máy tính bắt buộc phải thực hiện tính toán quá nhiều khi cần độ chính xác caoKhông kiểm soát được sai số tính toán do giới hạn tính toán của máy tính

Nên ta đề xuất sử dụng các phương pháp lặp để làm tăng độ chính xác của các ma trậnnghịch đảo có độ chính xác thấp và để kiểm soát sai số dễ dàng hơn

1.3 Các phương pháp giải

Báo cáo này sẽ trình bày 3 phương pháp giải bao gồm phương pháp Newton có thể áp dụngvới ma trận bất kì và hai phương pháp Jacobi và Gauss-Seidel áp dụng với ma trận chéo trội

Trang 4

2 Phương pháp Newton

2.1 Ý tưởng

Xuất phát từ công thức lặp tính gần đúng nghịch đảo của số thựca >0 Xét hàmf(x) =

a−1 và áp dụng phương pháp lặp Newton để tìm nghiệm của nó ta có công thức lặp là:

xn+1=xn(2 − axn)Một cách tương tự, ta thử áp dụng công thức này để tìm ma trận nghịch đảoXcủa matrận :A

Xk+1=Xk(2E −AXk) =Xk+Xk(E −AXk)

Ta chứng minh dãyXkhội tụ về ma trận nghịch đảoA−1của Atheo chuẩn 2 của ma trận

Kí hiệu∥A∥là chuẩn 2 của ma trận A

∥G0∥ = ∥E − AX0∥ < 1Thì ∥A−1− Xk∥→0 rất nhanh khi k →∞ hay dãy (Xk) hội tụ và

Trang 5

Trong đó ilà một vector khác Nhân hai vế với i ta được

Trước hết ta sẽ xét trường hợpdet(A) = 0

Do det(A) = 0 và xi = 0 nên ta suy raλi(AAT) > , ∀i0

Từ đó ta có

0 <λi(AA

T)λ(AAT)<1, ∀iĐặt

=pλ((E− AX0) )

∥ ∥ A 2thỏa mãn điều kiện hội tụ

Mặt khác, ta xét trường hợp det(A) = 0 Lúc này, phương trình Ax = 0 có nghiệmx0khác

0 nên λ0= 0 là một giá trị riêng của ma trậnA

Từ (2) ta suy raλi(AAT) ≥0, kéo theo

0 ≤λi(AAT)λ(AAT)<1, ∀iSuy ra

|1 −λi(AAT)

λ AA( T)|≤1, ∀iĐẳng thức xảy ra khii= 0nên

Trang 6

max|1 − i

λ AA( T)| = 1

Mà biến đổi (3) vẫn đúng nên ta có∥E − AX0∥ = 1

Vậy với cách chọn X0= A T

∥ ∥ A 2thì nếu ma trậnAkhông khả nghịch, ta luôn có∥E−AX0∥ = 1

Mà ngược lại, nếu ma trậnAkhả nghịch thì lại có∥E − AX0∥ < 1 nên dãy (Xk)sẽ luôn hội tụ

∥A−1∥ − ∥A−1∥qt≤∥A−1∥ − ∥A−1∥∥G0∥t

1−q Kết hợp với (1) ta có công thức sai số

∥A−1− Xk∥≤∥X0∥q

2 k

1 − q

Trang 8

3 Các phương pháp tìm gần đúng nghịch đảo của ma trận chéo trội

i=j aij∥ < ajj∥ (chéo trội cột)

Ý tưởng của các phương pháp này là áp dụng các phương pháp giải gần đúng hệ vuông đểgiải hệ phương trình AX = E trong đóAlà ma trận chéo trội Các phương pháp sẽ được trìnhbày ở đây là:

Xk+1=BXk+TCông thức sai số:

– Trường hợp chéo trội hàng: Với ∥ ∥B∞≤ q < 1

Trang 9

3.2.2 Thuật toán

Hàmcheck_dom(A, n)

Input: Ma trận , kích cỡA n

Output: Trả về trạng thái trội 1, −1, 0

tương ứng với ma trậnAchéo trội hàng, chéo trội cột hoặc không chéo trộiBước 1: K ←|diag(A)|

sumRowlà dãy tổng trị tuyệt đối các phần tử trên các hàng củaAtrừ các phần tử trongKsumCollà dãy tổng trị tuyệt đối các phần tử trên các cột củaAtrừ các phần tử trongKBước 2:

Nếu K[i] > sumRow i], ∀i = 1, n, hàm trả về giá trị 1[

Nếu K[i] > sumCol i], ∀i = 1, n, hàm trả về giá trị -1[

Nếu cả hai trường hợp trên không xảy ra, hàm trả về giá trị 0

Hàmget_norm(A, domStatus)

Input: Ma trận , trạng thái trộiA domStatus

Output: Chuẩn của A theo trạng thái trội

Nếu domStatus = 1, trả về∥ ∥A∞ Nếu không, trả về∥A∥1

Hàmget_lambda(A, domStatus)

Input: Ma trận , trạng thái trộiA domStatus

Output: Trả về λ = 1 nếu A chéo trội hàng, λ =max a ∥ ii ∥

min a ∥ ii ∥nếu A chéo trội cộtNếu domStatus = 1, trả về giá trị 1

Nếu không, tính K ←|diag(A)|, trả vềmax(K

min(K)

Hàmget_q(B, E, , ,T A domStatus)

Input: Ma trậnB, E, ,T A, trạng thái trộidomStatus

Output: Trả về hệ số q

Nếu domStatus = 1, trả về get_norm(B, domStatus)

Nếu không, trả về get_norm(E− AT,domStatus)

Trang 10

Góiđánhgiátiênnghiệmpredecessor_iter( 0,B, T domStatus,, λ, q ε, )Input: Ma trận X0, , ,B T domStatus, λ, hệ số q, sai số εOutput: Ma trậnX∗xấp xỉ củaA−1

Trang 11

Chươngtrìnhjacobi_inverse(A, ,n ε, mode)

Input: Ma trận , kích cỡA n, sai số ε, chế độ đánh giámode

Output: Ma trậnX∗xấp xỉ củaA−1theo chế độ đánh giá tiên nghiệm nếumode= 1.Nếu không, thực hiện theo chế độ đánh giá hậu nghiệm

Bước 1: domStatus ← check_dom(A, n)

Nếu domStatus = 0, thông báoAkhông chéo trội và dừng chương trìnhBước 2: Tính các giá trị

Nếu mode = 1, trả về predecessor_iter(A,B, T domStatus,, λ, q ε, )

Nếu không, trả về successor_iter(A, ,B T, domStatus λ, , q, ε)

Trang 12

– Trường hợp chéo trội cột: Đặt

λ=max|aii|min|aii|

Hàmcheck_dom(A, n): như trên

Hàmget_norm(A, domStatus): như trênHàmget_lambda(A, domStatus): như trênHàmget_q(B, ,n domStatus)

Input: Ma trận , kích cỡ , trạng thái trộiB n domStatusOutput: Hệ số q

q← max(q, q 1

1−q 2)Nếu không:

Trang 13

Hàmget_S(B1, n)Input: Ma trậnB1, kích cỡnOutput: Hệ số SBước 1: S ← 0Bước 2: For i from 1 to :n

tmp←Pnj=i+1|b1 ji|

S← max(S, tmp)Bước 3: Trả về S

Hàmnext_iter(oldX, , ,B T n)

Input: Ma trậnoldX, B, T, kích cỡn

Output: Ma trận lặp tiếp theo newX

Bước 1: For i from 1 to :n

Trang 14

Input: Ma trận , kích cỡA n, sai số ε, chế độ đánh giámode

Output: Ma trậnX∗xấp xỉ củaA−1theo chế độ đánh giá tiên nghiệm nếumode= 1.Nếu không, thực hiện theo chế độ đánh giá hậu nghiệm

Bước 1: domStatus ← check_dom(A, n)

Nếu domStatus = 0, thông báoAkhông chéo trội và dừng chương trìnhBước 2: Tính các giá trị

Trang 16

Gauss-4.2 Ví dụ 2 (Ma trận chéo trội hàng)

Trang 19

4.3 Ví dụ 3 (Ma trận chéo trội cột gần suy biến)

Tìm nghịch đảo ma trận sau:

2 7 1 0 0001

0 4 0 001.Vẫn với sai số là10−10, ta thu được các kết quả sau:

Trang 21

4.4 Ví dụ 4 (Ma trận chéo trội cỡ lớn)

Trang 27

Phương pháp Gauss-Seidel hội tụ nhanh hơn phương pháp Jacobi Điều này là hoàn toànphù hợp với lí thuyết do phương pháp lặp Gauss-Seidel là một cải tiến của phương pháplặp Jacobi.

5.2 Ưu, nhược diểm của các phương pháp

5.2.1 Ưu điểm

Các phương pháp giải gần đúng ma trận nghịch đảo đều giúp ta kiểm soát và cải thiệnsai số tính toán sau một số lần lặp nhất định, đây là điều mà các phương pháp giải đúngkhông làm được

Với phương pháp Newton, công thức lặp hội tụ rất nhanh và không yêu cầu nhiều với matrận đầu vào, thuật toán lại đơn giản, dễ nhớ

Trang 28

Bước 1: Nhập sai số vào dòng đầu của file input.txt.

Bước 2: Nhập ma trận cần tìm nghịch đảo vào các dòng sau, lưu ý cần phân tách các giátrị trong cùng một hàng của ma trận bởi dấu cách và xuống dòng khi sang hàng tiếp theo.Bước 3: Chạy chương trình newton.py, chương trình sẽ đưa ra số lần lặp, ma trận nghịchđảo và kết quả kiểm tra nhân ngược Trường hợp ma trận không khả nghịch, chương trình

sẽ báo lỗi và đưa ra ma trận NaN

Bước 2: Nhập sai số vào dòng thứ hai của file input.txt

Bước 3: Nhập ma trận cần tìm nghịch đảo vào các dòng sau, lưu ý cần phân tách các giátrị trong cùng một hàng của ma trận bởi dấu cách và xuống dòng khi sang hàng tiếp theo.Bước 4: Chạy chương trình jacobi.py, chương trình sẽ đưa ra số lần lặp, ma trận nghịchđảo và kết quả kiểm tra nhân ngược Trường hợp ma trận không chéo trội, chương trình

sẽ báo lỗi và đưa ra ma trận NaN

Trang 29

Bước 2: Nhập sai số vào dòng thứ hai của file input.txt

Bước 3: Nhập ma trận cần tìm nghịch đảo vào các dòng sau, lưu ý cần phân tách các giátrị trong cùng một hàng của ma trận bởi dấu cách và xuống dòng khi sang hàng tiếp theo.Bước 4: Chạy chương trình jacobi.py, chương trình sẽ đưa ra số lần lặp, ma trận nghịchđảo và kết quả kiểm tra nhân ngược Trường hợp ma trận không chéo trội, chương trình

sẽ báo lỗi và đưa ra ma trận NaN

Tài liệu

[1] J Douglas (Douglas Faires) Faires, Richard L.Burden - Numericalmethods (2003)[2] Lê Trọng Vinh -Giáotrìnhgiảitíchsố (2007)

[3] Phạm Kỳ Anh -Giảitíchsố (1996)

[4] Jaan Kiusalaas - NumericalMethodsinEngineeringwithPython (2010)

[5] Adi Ben-Israel - ANoteonanIteractiveMethodforGeneralizedInversionofMatrices (1966)[6] Samuel Daniel Conte - Elementarynumericalanalysis,analgorithmicapproach (1980)

Ngày đăng: 29/05/2024, 17:54

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w