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

Phương pháp gauss jordan tìm ma trận nghịch đảo

14 6,5K 3

Đ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

Định dạng
Số trang 14
Dung lượng 431,89 KB

Nội dung

Phương pháp gauss jordan tìm ma trận nghịch đảo

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

KHOA TOÁN TIN ỨNG DỤNG

-*** -

BÁO CÁO BÀI TẬP LẬP TRÌNH TÍNH TOÁN

Đề tài : Phương pháp Gauss – Jordan tìm ma trận nghịch đảo Giáo viên hướng dẫn : PGS – TS Nguyễn Hữu Điển

Sinh viên thực hiện : Nguyễn Thị Thu Hà

Lớp : Toán tin 2 – K51

Hà Nội, tháng 11 năm 2009

Trang 2

MỤC LỤC

LỜI NÓI ĐẦU 3

NỘI DUNG 4

I Bài toán: 4

II Phương pháp Gauss – Jordan: 4

III Các lệnh sử dụng trong chương trình: 6

1 Chương trình sử dụng mảng 2 chiều để lưu trữ các ma trận 6

2 Các lệnh điều khiển của maple: 6

3 Lệnh in ra kết quả: 6

IV Chương trình: 7

V Một số ví dụ: 10

1 Ví dụ 1 10

2 Thử lại ví dụ 1: 10

3 Ví dụ 2 11

4 Bài tập 3 11

KẾT LUẬN 13

TÀI LIỆU THAM KHẢO 14

Trang 3

LỜI NÓI ĐẦU

Maple là một gói phần mềm toán học thương mại phục vụ cho nhiều

mục đích Nó phát triển lần đầu tiên vào năm 1980 bởi Nhóm Tính toán Hình thức tại Đại học Waterloo ở Waterloo, Ontario, Canada

Từ năm 1988, nó đã được phát triển và thương mại hóa bởi Waterloo Maple Inc (còn được biết đến với tên gọi Maplesoft), một công ty

Canada cũng có trụ sở tại Waterloo, Ontario Phiên bản hiện tại là Maple

13 được phát hành vào tháng 5 năm 2009

Người dùng có thể nhập biểu thức toán học theo các ký hiệu toán học truyền thống Có thể dễ dàng tạo ra những giao diện người dùng tùy chọn Maple hỗ trợ cho cả tính toán số và tính toán hình thức, cũng như hiển thị Nhiều phép tính số học được thực hiện dựa trên thư viện số học NAG; trong Maple, các chương trình con NAG đã được mở rộng để cho phép độ chính xác ngẫu nhiên lớn

Maple cũng có một ngôn ngữ lập trình cấp cao đầy đủ Cũng có giao diện cho những ngôn ngữ khác (C, Fortran, Java, MatLab, và Visual Basic) Cũng có một giao diện dành cho Excel

Sau quá trình học tập và nghiên cứu môn học Lập trình tính toán, em xin trình bày 1 số kết quả đạt được trong việc ứng dụng Maple để lập trình hướng thủ tục giải bài toán “Tìm ma trận nghịch đảo bằng phương pháp Gauss – Jordan”

Trang 4

NỘI DUNG

I Bài toán:

Cho ma trận A = [aij] vuông cấp n, không suy biến (det A # 0) Tìm

ma trận B = [bij] sao cho A.B = E ( E là ma trận đơn vị cấp n)

Ma trận B tìm được gọi là ma trận nghịch đảo của ma trận A

Ký hiệu B = A-1

II Phương pháp Gauss – Jordan:

Gọi A = [aij]n , B = A-1 = [Xij]n là ma trận nghịch đảo cần tìm

Từ I ta có:

nn ni

n

in ii

i

n i

a a

a

a a

a

a a

a

1 1 1 1 11 ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ nn ni n in ii i n i x x x x x x x x x

1 1 1 1 11 ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ 1

0

0

0

1

0

0

0

1 Đặt Xi = (x1i, x2i, …., xii, …., xni)t i = 1 n Ei = (0, 0 ,1(i), 0)t , i = 1 n (hàng thứ i là số 1 còn các hàng khácđều bằng 0 ) thì hệ phương trình trên được viết trong dạng hệ phương trình ma trận: AXj = Ej , j = 1 n (*)

Mỗi hệ gồm n ẩn là vectơ Xj , j = 1 n

Do det A # 0 nên các hệ dạng (*) tồn tại duy nhất nghiệm Bằng phương pháp Gauss – Jordan giải n hệ (*) có cùng ma trận A, ta làm như sau:

Lập ma trận mở rộng Ā gồm ma trận A và ma trận đơn vị E được đặt

kề liền bên phải : Ā = [A | E ] và thực hiện theo các bước:

Trang 5

Bước 1: Giả thiết a11 # 0 Chọn a11 làm phần tử giải, mọi phần tử của hàng giải đều chia cho a11, các phần tử của cột giải ( trừ a11) đều bằng 0 Các phần tử khác được biến đổi theo công thức hình chữ nhật:

aij(1) = aij -

11

1 1

a

j

a

ij

kể cả các phần tử của ma trận E:

ai1 aij Vậy sau bước 1 ta thu được ma trận Ā(1) = [aij(1)] , i = 1 n, j = 1 2n

Bước 2: giả thiết a22(1) # 0 , lặp lại quá trình trên ta được ma trận

Ā(2) = [aij(2)] , i = 1 n, j = 1 2n

Và cứ như thế cho đến bước n ta được ma trận

Ā(n) = [aij(n)] , i = 1 n, j = 1 2n Thì ma trận, từ cột thứ n +1 đến 2n là ma trận A-1 cần tìm

Trang 6

III Các lệnh sử dụng trong chương trình:

1 Chương trình sử dụng mảng 2 chiều để lưu trữ các ma trận

a := array (1 n, 1 n)

2 Các lệnh điều khiển của maple:

_ Câu lệnh if – then – else

> if < điều kiện > then

< thực hiện câu lệnh điều kiện đúng >

else

< thực hiện câu lệnh điều kiện sai >

fi;

_ Câu lệnh while – do

> while < điều kiện > do

< thực hiện các lệnh >

od;

_ Câu lệnh for – do

> for i from < giá trị đầu > to < giá trị cuối> do

< dãy câu lệnh >

od;

3 Lệnh in ra kết quả:

> print(e) ;

Trang 7

IV Chương trình:

> GaussJordan :=proc(n :: integer, a)

Local e, i, j, k, l, m;

e :=array (1 n, 1 n);

#Tu nhap ma tran don vi E:

for i from 1 to n do

for j from 1 to n do

if i = j then

e[i, j] := 1;

else

e[i, j] := 0;

fi;

od;

od;

#Gauss – Jordan:

k := 1;

while k ≤ n do

i := n;

while i ≥ 1 do

if i # k then

Trang 8

j := 1;

while j ≤ n do

e[i, j] := e[i, j] -

] , [

] , [ ] , [

k k a

j k e k i

j := j + 1;

od;

j := n;

while j ≥ 1 do

a[i, j] := a[i, j] -

] , [

] , [ ] , [

k k a

j k a k i

j := j – 1;

od;

fi;

i := i – 1;

od;

l :=1;

while l ≤ n do

e[k, l] :=

] , [

] , [

k k a

l k

e ;

l := l +1;

od;

Trang 9

l := k + 1;

while l ≤ n do

a[k, l] :=

] , [

] , [

k k a

l k

a ;

l := l + 1;

od;

a[k, k] := 1;

m := k + 1;

while m ≤ n do

a[m, k] := 0;

m := m + 1;

od;

k := k + 1;

od;

print(`Ma tran nghich dao can tim: `,e);

end;

Lưu thủ tục: đưa thủ tục thành thư viện ở dạng file

> save GaussJordan, `c:\\GaussJordan.m`;

Sử dụng thủ tục: nạp thư viện có sẵn

> read `c:\\GaussJordan.m`;

Trang 10

V Một số ví dụ:

1 Ví dụ 1 ( trang 83 Giáo trình Giải tích số - Tác giả Lê Trọng Vinh) Tìm ma trận A-1 nếu:

A =

21 66 31

20 54 25

36 107 50

> n := 3;

> a := array ([[50, 107, 36], [25, 54, 20], [31, 66, 21]]);

> GaussJordan (n, a);

2 Thử lại ví dụ 1:

> b := array ([[-186, 129, 196], [95, -66, -100], [-24, 17, 25]]);

> GaussJordan (n, b);

Trang 11

3 Ví dụ 2 (trang 85 Giáo trình Giải tích số - tác giả Lê Trọng Vinh)

3 5 2

5 4 3

2 3 1

-1

> n := 3;

> c := array([[1, 3, -2], [3, 4, -5], [-2, -5, 3]]);

> GaussJordan (n, c);

4 Bài tập 3 (trang 119 Giáo trình Giải tích số - tác giả Lê Trọng Vinh)

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

A =

11 16 5 9

2 3 7 6

9 13 1 8

4 6 14 13

> d := 4;

> f := array([[13, 14, 6, 4], [8, -1, 13, 9], [6, 7, 3, 2], [9, 5, 16, 11]]);

> GaussJordan (d, f);

Trang 12

Tất cả các ví dụ trên đều đúng so với đáp số!!

Trang 13

KẾT LUẬN

Qua bài báo cáo này em đã trình bày được cách lập trình trong

Maple để giải quyết bài toán Tìm ma trận nghịch đảo bằng phương pháp Gauss – Jordan Từ đó có thể ứng dụng để viết những chương trình khác

Tuy nhiên chương trình này vẫn còn một hạn chế là chỉ tính toán được những ma trận có đường chéo khác 0 Trong tương lai em sẽ cải tiến

để chương trình có thể tìm được ma trận nghịch đảo của những ma trận bất kỳ

Em xin chân thành cảm ơn PGS – TS Nguyễn Hữu Điển đã hướng dẫn em hoàn thành bài tập này

Hà Nội, tháng 11 năm 2009 Sinh viên thực hiện : Nguyễn Thị Thu Hà Lớp : Toán tin 2 – K51 – ĐH BK HN

Trang 14

TÀI LIỆU THAM KHẢO

Nguyễn Hữu Điển - Hướng dẫn và sử dụng Maple V

Lê Trọng Vinh – Giáo trình giải tích số - NXB KH và KT

Website:

http://nhdien.wordpress.com/

http://maplesoft.com/

http://vi.wikipedia.org/

http://maplevn2008.wordpress.com/

Ngày đăng: 22/05/2016, 09:03

TỪ KHÓA LIÊN QUAN

w