1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ĐỒ ÁN TOÁN 1 TÍNH GẦN ĐÚNG NGHIỆM CỦA MỘT HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH

42 10 0

Đ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 42
Dung lượng 919,94 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Người ta xây dựng cách tính nghiệm chính xác thông qua công thức Cramer, công thức Cramer đối với các hệ phương trình có số ẩn thấp thì không phức tạp nhưng việc sử dụng công thức Crame

Trang 1

TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG TP.HCM

KHOA TOÁN -THỐNG KÊ

TP Hồ Chí Minh, tháng 11 năm 2013

Trang 2

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN

Trang 3

Lời cảm ơnTrong quá trình thực hiện bài báo cáo đồ án này, nhóm chúng em đã nhận được nhiều sự

giúp đỡ từ các thầy cô trong khoa Toán-Thống kê, trường Đại học Tôn Đức Thắng Các thầy cô đã cung cấp cho chúng em những kiến thức, những kinh nghiệm quý báu trong suốt quá trình học tập, cùng với sự giúp đỡ không ngừng của gia đình và bạn bè Nhờ đó mà nhóm chúng em đã hoàn thành được bài báo cáo đồ án như mong muốn Nay xin cho phép chúng em được gửi lời cảm ơn đến các thầy cô Đặc biệt nhóm chúng em xin gửi lời cảm

ơn sâu sắc tới thầy Huỳnh Văn Kha người đã hướng dẫn và chỉ bảo tận tình cho chúng

em, đã tạo mọi điều kiện thuận lợi và là nguồn động lực quan trọng để nhóm chúng em có thể hoàn thành tốt bài báo cáo đồ án này Nhóm cũng xin gửi lởi cảm ơn chân thành tới gia đình và bạn bè đã động viên, khuyến khích nhóm trong những lúc khó khăn nhất Một lần nữa nhóm chúng em xin chân thành cảm ơn Chúc tất cả mọi người sức khỏe và thành đạt

TP.HCM ngày 20, tháng 11, năm 2013

Trang 4

Lời nói đầu Đối với một hệ phương trình ta luôn có cách tính chính xác nghiệm của nó Người ta xây

dựng cách tính nghiệm chính xác thông qua công thức Cramer, công thức Cramer đối với

các hệ phương trình có số ẩn thấp thì không phức tạp nhưng việc sử dụng công thức

Cramer không phải đơn giản đối với các hệ phương trình có số ẩn lớn Do đó người ta xây

dựng cách tính các giá trị xấp xỉ của các hệ phương trình với độ chính xác từ thấp đến cao,

từ không thể đến có thể xác định được độ chính xác của tập nghiệm Phương pháp tính giá trị xấp xỉ có thể chấp nhận được nếu độ sai lệ giữa giá trị xấp xỉ và nghiệm chính xác của phương trình bé hơn  cho trước nào đó Từ đó nhóm chúng em quyết định chọn để tài

“tính gần đúng nghiệm của một phương trình đại số tuyến tính” để đi sâu vào tìm hiểu

phương thức tính giá trị xấp xỉ của phương trình đại số tuyến tính

Cách tính xấp xỉ phương trình đại số tuyến tính có rất nhiều, ở đây chúng em chỉ liệt kê một số phương pháp thông dụng, có độ chính xác cao và có thể áp dụng ngay vào thực tế

TP.HCM ngày 20, tháng 11, năm 2013

Trang 5

Mục Lục

Trang

1 PHẦN MỞ ĐẦU 7

2 PHƯƠNG PHÁP KHỬ GAUSS 8

2.1 Thuật toán 8

2.2 Code chương trình 9

2.3 Chạy thử và nhận xét 12

3 PHÂN RÃ LU 13

3.1 Thuật toán 13

3.2 Code chương trình 15

3.3 Chạy thử và nhận xét 17

4 BA ĐƯỜNG CHÉO CHÍNH (THUẬT TOÁN THOMAS) 18

4.1 Thuật toán 18

4.2 Code chương trình 20

4.3 Chạy thử và nhận xét 21

5 CÁC PHƯƠNG PHÁP LẶP ĐƠN 23

5.1 Kiến thức chuẩn bị 23

5.2 Phương pháp Jacobi 25

5.2.1 Thuật toán 25

5.2.2 Sự hội tụ của phương pháp và sai số của nghiệm xấp xỉ 27

5.2.3 Code chương trình 27

5.2.4 Chạy thử và nhận xét 31

5.3 Phương pháp Gauss-Seidel 32

Trang 6

5.3.1 Thuật toán 32

5.3.2 Sự hội tụ của phương pháp Seidel và đánh giá sai số của nghiệm xấp xỉ 32

5.3.3 Code chương trình 33

5.3.4 Chạy thử và nhận xét 35

6 Ứng dụng 36

KẾT LUẬN 41

Tài Liệu Tham khảo 42

Trang 7

TÍNH GẦN ĐÚNG NGHIỆM CỦA MỘT HỆ PHƯƠNG TRÌNH

đó, trong chương này chúng ta xét một số phương pháp giải thực tế hệ phương trình (1.2) với đặc điểm chung là khối lượng tính toán giảm nhẹ

Trong số các phương pháp đó chúng ta chia làm hai nhóm phương pháp lớn là nhóm phương pháp trực tiếp và nhóm phương pháp gián tiếp

Đặc điểm chung của nhóm phương pháp trực tiếp là sau một số hữu hạn phép tính sẽ

có kết quả, vì vậy nhóm phương pháp này thường được áp dụng với một số bài toán có kích thước nhỏ, với các số liệu ban đầu là đúng Tuy nhiên do phải thực hiện một số phép tính tương đối lớn nên có nguy cơ tích lũy sai số, nhất là đối với trường hợp các số liệu ban đầu không thật chính xác Còn với nhóm phương pháp gián tiếp (phương pháp lặp) thường được áp dụng cho lớp các bài toán có kích thước lớn, số liệu ban đầu là có sai số

Với mục đích giải các bài toán thực tế, đặc điểm chung là là bài toán đã cho với ma trận vuông cấp n n và phương trình luôn tồn tại 1 nghiệm duy nhất Các trường hợp khác ta không áp dụng với các phương pháp giải sau:

Trang 8

có được giá trị lớn nhất trong đó

b) Hoán vị lên trên dòng 1 nếu giá trị của phép chia giữa a a11, 21, , an1 và giá trị lớn

nhất tương ứng của từng hàng là lớn nhất

c) Sau đó lần lượt nhân phương trình đó với – a a , 11 21  a a11 31, ,   a a11 n1 và theo thứ

tự, cộng vào phương trình thứ hai, thứ ba, … thứ n Bằng cách đó ta khử được x1 ra khỏi các phương trình của hệ từ phương trình thứ hai trở đi Bước tiếp theo là ta khử

2

x ra khỏi các phương trình từ thứ ba trở đi… Sau một số hữu hạn bước, ta đưa được

hệ (1.2) về dạng tam giác sau đây:

Trang 9

3 3 2 50 4

integer n double precision a(n,n), f(n), x(n) double precision s(n)

double precision c, pivot, store

Trang 10

end do pivot = abs(a(k,k)/s(k))

if(pivot == 0.0) then

write(*,*) ' khong the giai hpt theo cach nay ' return

end if !!!! hoan doi theo dong

if (l /= k) then

do j=k,n

store = a(k,j) a(k,j) = a(l,j)

Trang 11

a(l,j) = store end do

store = f(k) f(k) = f(l) f(l) = store end if

do i=k+1,n

c=a(i,k)/a(k,k) a(i,k) = 0.0 f(i)=f(i)- c*f(k)

do j=k+1,n

a(i,j) = a(i,j)-c*a(k,j) end do

end do end do

! giai nguoc x(n) = f(n)/a(n,n)

do i=n-1,1,-1

c=0.0

do j=i+1,n

c= c + a(i,j)*x(j) end do

x(i) = (f(i)- c)/a(i,i) end do

write (*,*)'nghiem phuong trinh theo Gauss la' write (*,201) (x(i),i=1,n)

201 format (6f12.5)! làm tròn chu so thu 5

end subroutine gauss

Trang 12

Chú thích: Trong chương trình trên có khai báo một số công thức thuật toán sau,

các công thức đó được hiểu:

Trang 14

3 3 1 4

1 0 0

20 1

20 25

2

567 567

Trang 15

1 2 3

1

3 3

3 25

integer i, j, k real c

L=0.0 U=0.0

! gán l cho ma tran tam giac duoi,

!U cho ma tran tam giac tren

do k=1, n-1

do i=k+1,n

coeff=a(i,k)/a(k,k) L(i,k) = coeff

do j=k+1,n

a(i,j) = a(i,j)-coeff*a(k,j) end do

Trang 16

end do end do

! truyen gia tr duong cheo chinh bang 1 cho L

do i=1,n

L(i,i) = 1.0 end do

! ma tran U chinh la ma tran A

do j=1,n

do i=1,j

U(i,j) = a(i,j) end do

do j=1,i

c= c + L(i+1,j)*x(j) end do

Trang 17

end do f(i) = (x(i)- c)/U(i,i) end do

write (*,*)'nghiem phuong trinh theo phan ra LU la' write (*,201) (f(i),i=1,n)

201 format (6f12.5)! làm tròn chu so thu 5

số vòng lặp giảm một nữa đối với thuật toán này

Thuật toán vẫn mắc phải các lỗi như Gauss về độ chính xác của bài toán đối với ma trận có hệ số lớn, số vòng lặp tuy có giảm bớt nhưng vẫn còn ở con số cao, ngoài ra do sử dụng thêm 1 ma trận để lưu các bước khai triển Gauss nên thuật toán còn lãng phí thêm 1 lượng ô nhớ bằng với ma trận đã cho

Trang 18

4 BA ĐƯỜNG CHÉO CHÍNH (THUẬT TOÁN THOMAS)

Ma trận ba đường chéo là ma trận mà các hệ số nằm ngoài 3 đường chéo chính bằng 0

Để hiểu như thế nào là là ma trận ba đường chéo ta xét ví dụ tổng quát phía dưới:

Trang 19

Nhận xét: ma trận trên ta biến đổi đưa về dạng ma trận tam giác trên bằng cách khử

lần lượt các hệ số ai ra khỏi ma trận như phép khủ Gauss nhưng chỉ thực hiện trên các hệ

số khác 0, thông qua phương pháp hàng    iia b i i1 i1 ,i2,3, , n

Trên thực tế, trong khi tính toán ta chỉ cần tính các giá trị thay đổi trên đường chéo

Trang 20

16 10864

2911

40545 1

10864

x x x x x x x x

Trang 21

coeff=a(i,1)/a(i-1,2)

a(i,2)=a(i,2)-coeff*a(i-1,3) f(i)=f(i)-coeff*f(i-1)

4.3 Chạy thử và nhận xét

Chạy thử:

Trang 22

Nhận xét: Đối với các ma trận ba đường chéo chính thì thuật toán trên giúp cho bài

toán được giải quyết nhanh hơn, không tốn kém bộ nhớ như thuật toán Gauss hay thuật toán phân rã LU Do phương pháp biến đổi giống Gauss nên bài toán cũng mắc phải những khuyết điểm như 2 thuật toán trên

Trang 23

5 CÁC PHƯƠNG PHÁP LẶP ĐƠN

5.1 Kiến thức chuẩn bị

Phương pháp khử Gauss, phân rã LUđã xét ở trên, mặc dù có số phép tính ít hơn

quy tắc Cramer rất nhiều, song cũng không hiệu quả trong trường hợp hệ cỡ lớn hoặc

ma trận hệ số có nhiều số 0 Do đó trong mục này, chúng ta tiến hành nghiên cứu nhóm phương pháp hiệu quả hơn để giải gần đúng nghiệm của hệ phương trình đại số tuyến tính với độ chính xác tùy ý.Tất cả các phương pháp giải gần đúng hệ đại số tuyến tính

sẽ trình bày đều có chung một đặc điểm là xây dựng dãy lặp vectơ hội tụ tới nghiệm đúng

Trước hết chúng ta có các khái niệm sau:

Giới hạn của dãy vectơ

Cho n dãy số  x1 k , x2  k , , x n k với k và  k

Chuẩn vô hạn thỏa mãn ba tích chất sau:

(i) v 0 với dấu "=" xảy ra khi và chỉ khi v0

(ii) cvc v đối với vô hướng c bất kỳ

Trang 24

(iii) vw  v  w (bất đẳng thức Tam giác)

Nhờ khái niệm chuẩn vô hạn, ta có định lý về tiêu chuẩn hội tụ

Cho hệ Axb cỡ n n Có nhiều cách để đưa hệ này về dạng xBxg tương đương

Trang 25

 là nghiệm củaxBxg, tức cũng là nghiệm của Axb

Với  0 cho trước, nếu k đủ lớn ta luôn có:

0

n n

Phương pháp lặp đơn tiến hành theo công thức  k 1  k

v  Bvg được gọi là phương pháp Jacobi

Phương pháp Jacobi sẽ hội tụ, nếu A  aij n n

Trang 26

1.2 0.94 1.016 0.997 1.0021 1.00077 1.000112

0.8 0.58 0.638 0.623 0.6273 0.62596 0.626235

Trang 27

Có thể thấy nghiệm đúng của hệ này là  * 707 956 598

5.2.2 Sự hội tụ của phương pháp và sai số của nghiệm xấp xỉ

Phương pháp lặp đơn áp dụng cho xBxg với  ij

n n

Định lý: Nếu B  1, thì với mọi v  0  ncho trước dãy   k

v xác định bởi sai số sau:

1

k k

Ví dụ 2: Quay lại ví dụ 1 B  0.3 1 , nên phương pháp lặp đơn hội tụ

Đánh giá sai số của   7

Trang 28

!implicit none

integer n double precision a(n,n)

double precision f(n), x(n),x0(n), tam(n) integer i,j,Kmax,k

real::eps

Kmax=10000 eps=0.00001

i = 0

x=0 ! gan x(i) =0 tam = x

! bien doi a ve bx + g

do i = 1, n f(i) = f(i)/a(i,i)

do j = 1, n

if(i/=j) then if(a(i,i) /= 0 and abs(a(i,i)) >=

abs(a(i,j))) then

a(i,j) = a(i,j)/a(i,i) else

write(*,*) "ma tran da cho khong hoi tu"

Trang 29

return

end if end if

end do a(i,i) = 0

end do

i=1 !!!!!!!!!!!!!!!!!!!!! giai tim x(n)

tam(j)= -c+f(j) end do

Trang 30

write (*,201)(x(k),k=1,n)

write(*,*)"so lan lap", i return !!!!! thoat khoi vong lap, chuong trinh khi tim ra nghiem

Chú thích: Trong chương trình trên có sử dụng hàm chuanmax(), hàm này được

định nghĩa như sau:

function chuanmax(x,n)

integer n

double precision x(n)

real :: s, chuanmax integer :: i

s = x(1)

do i = 1, n

if (s < abs(x(i))) then

s = abs(x(i)) end if

Trang 31

end do

chuanmax = s end function chuanmax

Ưu điểm: đối với bài toán giải bằng phương pháp jacobi ta tiết kiệm được bộ

nhớ máy tính, đảm bảo được thời gian thực hiện chương trình, số lần lặp cũng như thời

gian chạy giảm đáng kể so với các phương pháp trên, ngoài ra nghiệm cần tìm có độ

chính xác cao hơn đối với các ma trận có hệ số lớn, nguyên nhân là do thực hiện kiểm

tra độ chính xác sau mỗi lần lặp

Trang 32

Nhược điểm của bài toán này là không phải tất cả các phương trình có nghiệm đều hội tụ (chỉ áp dụng cho ma trận đường chéo trội), nếu hệ số hội tụ quá lớn thì ma trận sẽ lâu hội tụ về ma trận kết quả.

0.2 0 0.1 0 1 10.1 1 0.2 0 1.2 1.10.1 1 0.1 1.1 0.8 0.59

x x x

Trang 33

Phương pháp Seidel áp dụng cho phương trình xBxgvới  ij

real::eps

i = 0 eps=0.00001

x=0 ! gan x(i) =0

! bien doi a ve bx + g

do i = 1, n f(i) = f(i)/a(i,i)

do j = 1, n

if(i/=j) then if(a(i,i) /= 0 and abs(a(i,i)) >= abs(a(i,j)))

Trang 34

then

a(i,j) = a(i,j)/a(i,i) else

write(*,*) "ma tran da cho khong hoi tu" return

end if end if end do a(i,i) = 0 end do

i=1 !!!!!!!!!!!!!!!!!!!!! giai tim x(n)

do while (.true.)

x0=x

do j=1,n c=0.0

do k=1,n c=a(j,k)*x(k)+c

x(j)=-c+f(j) end do

if(chuanmax(x-x0,n)<eps) then

write (*,*)" nghiem cua phuong trinh theo Gauss Seidel"

write (*,201)(x(k),k=1,n) write(*,*)"so lan lap", i return !!!!! thoat khoi vong lap, chuong trinh khi tim ra nghiem

end if

Trang 35

i = i+1 end do

201 format (6f12.5)! làm tròn chu so thu 5

Nhận xét: Đối với phương pháp Gauss-Seidel hay còn được gọi là phương pháp

lặp cải tiến với các ưu điểm sau: sử dụng ít bộ nhớ máy, thời gian, tốc độ hội tụ về

nghiệm nhanh hơn phương pháp jacobi Và cũng mắc phải những nhược điểm như

phương pháp jacobi về độ hội tụ của bài toán đã cho

Trang 36

6 Ứng dụng

Bài toán giải hệ phương trình tuyến tính có rất nhiều ứng dụng trong thực tế bao gồm

cả ứng dụng trong kinh doanh cũng như ứng dụng trong kĩ thuật Một trong những ứng dụng thường được nhắc đến là:

6.1 Điều Khiển Lưu Lượng Giao Thông

Vào giờ cao điểm, vấn đề kẹt xe thường bắt gặp tại các đoạn đường giao nhau như trong hình Cả thành phố muốn cải thiện tín hiệu giao thông tại các góc đường để cải thiện lưu lượng giao thông Tất cả các con đường đều là một chiều và hướng đi của các con đường được chỉ bởi các mũi tên

Dữ liệu thu thập được: Các kĩ sư thiết kế giao thông đã thu thập được các thông tin sau:

1 Góc A:

Có 700 xe mỗi giờ đổ xuống Spruce Street đến giao điểm A

Có 300 xe mỗi giờ đổ xuống 9th Street đến giao điểm A

2 Góc B:

Có 200 xe mỗi giờ rời khỏi giao điểm B trên Spruce Street

Trang 37

Có 900 xe mỗi giờ rời khỏi giao điểm B tên 10th Street

3 Góc C:

Có 400 xe mỗi giờ tiến vào Pine Street đến giao điểm C

Có 300 xe mỗi giờ đổ xuống 10th Street đến giao điểm C

4 Góc D:

Có 200 xe mỗi giờ rời khỏi giao điểm D trên Pine Street

Có 400 xe mỗi giờ rời khỏi giao điểm D trên 9th Street đến giao điểm

A

Giới thiệu các ký hiệu:

Gọi x1 là số xe rời khỏi góc A trên Spruce Street tiến đến góc B

Gọi x2 là số xe tiến đến góc B trên 10th Street từ góc C

Gọi x3 là số xe rời khỏi góc C trên Pine Street tiến đến góc D

Gọi x4 là số xe tiến đến góc D trên 9th Street từ góc A

Giải pháp: Ta giả thuyết như sau:

Trang 38

a) Để tăng tốc lưu lượng giao thông của mỗi xe tiến đến một giao điểm cũng đồng thời rời khỏi, do đó tại mỗi góc số lượng xe tiến đền cũng phải bằng với số lượng xe rời khỏi

b) Tất cả các con đường là một chiều

c) Tất cả các biến x x x1, ,2 3 và x4 đều chắc chắn là số nguyên vì nó biểu thị cho số lượng xe

Phương Trình: sử dụng giả thuyết a) cho mỗi góc chúng ta có được phương trình sau:

6.2 Ứng dụng trong kĩ thuật điều khiển điện, điện tử

Một trong những ứng dụng quan trọng nhất của đại số tuyến tính khi nhắc đến điện, điện tử là để phân tích mạch điện tử Mục đích là để tính toán điện chạy trong mỗi nhánh của mạch điện hoặc tính toán điện áp tại mỗi nút của mạch điện

Tính toán đúng điện áp tại mỗi nhánh cũng như tại mỗi nút của dòng điện giúp cho

Trang 39

giảm thiểu tai nạng về điện

6.3 Ứng dụng trong kĩ thuật xây dựng

Đại số tuyến tính được sử dụng khá nhiều trong kết cấu kỹ thuật, đây là một lý do rất đơn giản Phân tích của một cấu trúc cân bằng liên quan đến viết ra nhiều phương trình nhiều ẩn số Ví dụ như hình bên dưới:

Các dầm được nối với nhau bằng chân mịn màng, và sự hỗ trợ được gắn chặt để họ không thể di chuyển Một phân tích đơn giản, bằng cách sử dụng phương pháp của các khớp xương, giả định rằng các lực lượng bên ngoài sẽ chỉ hoạt động ở các khớp, và rằng các tia sáng là hoàn toàn cứng nhắc Điều này cho phép chỉ có lực lượng theo chiều dọc trong các dầm Với những giả định, các giàn là ổn định khi và chỉ khi các thành phần dọc và ngang của các lực bằng 0

6.4 Ứng dụng trong kĩ thuật cơ khí

Lý tưởng hóa hệ thống lò xo khối lượng có nhiều ứng dụng trong kỹ thuật và đại số tuyến tính thành công có thể được áp dụng để giải quyết những vấn đề liên quan đến hệ thống như vậy

Hệ thống lò xo khối lượng đóng một vai trò quan trọng trong hệ thống kỹ thuật cơ khí và khác Một hệ thống như vậy được thể hiện trong hình:

Ngày đăng: 26/01/2022, 16:46

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w