KHOA CÔNG NGHỆ THÔNG TINĐỒ ÁN LẬP TRÌNH TÍNH TOÁN Giải hệ phương trình đại số tuyến tính n phương trình, n ẩn bằng phương pháp Cramer, phương pháp Gauss – Jordan Người hướng dẫn: ThS...
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN LẬP TRÌNH TÍNH TOÁN
Giải hệ phương trình đại số tuyến tính (n phương trình, n ẩn) bằng phương pháp Cramer, phương pháp Gauss – Jordan
Người hướng dẫn: ThS Đỗ Thị Tuyết Hoa
Sinh viên thực hiện:
NHÓM: 20.16A
Đà Nẵng, 08/2021
Trang 2MỤC LỤC i
DANH MỤC HÌNH VẼ ii
LỜI MỞ ĐẦU 1
1 TỔNG QUAN ĐỀ TÀI 2
2 CƠ SỞ LÝ THUYẾT 2
2.1 Ý tưởng 2
2.2 Cơ sở lý thuyết 2
3 TỔ CHỨC CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN 2
3.1 Phát biểu bài toán 2
3.2 Cấu trúc dữ liệu 2
3.3 Thuật toán 2
4 CHƯƠNG TRÌNH VÀ KẾT QUẢ 2
4.1 Tổ chức chương trình 2
4.2 Ngôn ngữ cài đặt 2
4.3 Kết quả 2
4.3.1 Giao diện chính của chương trình 2
4.3.2 Kết quả thực thi của chương trình 2
4.3.3 Nhận xét đánh giá 3
5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 3
5.1 Kết luận 3
5.2 Hướng phát triển 3
TÀI LIỆU THAM KHẢO 4
PHỤ LỤC 5
Trang 3No table of figures entries found.
Trang 4LỜI MỞ ĐẦU
Như chúng ta đã biết, cuộc sống của chúng ta vốn dĩ xoay quanh toán học, và Đại số
tuyến tính là trung tâm của hầu hết các lĩnh vực toán học Không dừng lại ở đó, Đại số tuyến tính còn được ứng dụng vào trong hầu hết các ngành khoa học và kĩ thuật như
Hóa học, Hình học, Lý thuyết đồ thị, Xã hội học (Kinh tế, ), Nén ảnh, Nhận diện khuôn mặt,
Ngay cả trong lập trình máy tính, mọi tính toán đều được biểu diễn dưới dạng số, dạng dãy số hoặc mảng số, việc hiểu và ứng dụng được khái niệm liên quan đến đại số là nhân tố quyết định giúp người kỹ sư có thể giải quyết được bài toán Với một tầm ảnh hưởng gần như là bao quát như vậy, hiển nhiên việc tính toán các phương trình tuyến tính cũng là một khó khăn rất lớn đối với con người và đòi hỏi rất nhiều thời gian nghiên cứu và tìm hiểu cũng như là tính toán Nhưng giờ đây, với sự phát triển mạnh
mẽ của Công nghệ thông tin, việc tính toán cũng như nghiên cứu Đại số tuyến tính đã
trở nên dễ dàng hơn, chỉ mất vài giây hoặc thậm chí ít hơn để máy tính có thể tính toán được một hay nhiều phương trình tuyến tính theo nhiều phương pháp như Gauss, Cramer,
Mục tiêu: Để hoàn thành tốt mục tiêu mà đồ án đề ra ở trên, ta phải tiếng hành các
công việc sau:
- Tìm hiểu đường hệ phương trình tuyến tính
- Tìm hiểu phương pháp Gauss – Jordan, phương pháp Cramer
- Triển khai ví dụ tính bằng tay cụ thể (với hệ phương trình tuyến tính tự chọn): + Giải
hệ phương trình tuyến tính bằng phương pháp Gauss
+ Giải hệ phương trình tuyến tính bằng phương pháp Cramer
- Xây dựng thuật toán Đánh giá độ phức tạp
- Lập trình triển khai thuật toán
- Đánh giá kết quả
Phạm vi và đồi tượng nghiên cứu: Giải hệ phương trình tuyến tính bằng phương
pháp Gauss và phương pháp Cramer
Phương pháp nghiên cứu: Để thực hiện các công việc trên , em đã sử dụng các
phương pháp ngiên cứu:
-Phương pháp phân tích và tổng hợp lý thuyết
Trang 5-Phương pháp nghiên cứu tài liệu.
-Phương pháp hỏi ý kiến của giảng viên hướng dẫn
Cấu trúc của đồ án môn học:
Cấu trúc của đồ án gồm những chương sau:
Chương 1: TỔNG QUAN ĐỀ TÀI
Chương 2: CƠ SỞ LÝ THUYẾT
-Cơ sở lý luận cho việc xây dựng một hệ thống thông tin:Lý thuyết tổ chức cấu trúc dữ liệu và thuật toán
Chương 3: TỔ CHỨC CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN
-Tiến hành xây dựng thuật toán
Chương 4: CHƯƠNG TRÌNH VÀ KẾT QUẢ
Chương 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Trang 61 TỔNG QUAN ĐỀ TÀI
{Nội dung A {Font: Time New Roman; thường; cỡ chữ: 13; dãn dòng: 1,3; căn lề: justified}
2 CƠ SỞ LÝ THUYẾT
2 1 Ý tưởng
● Viết hàm tìm nghiệm của ma trận bằng phương pháp Gauss – Jordan:
○ Biến đổi ma trận thành ma trận bậc thang
○ Tìm nghiệm của ma trận
● Viết hàm tìm nghiệm của ma trận bằng phương pháp Cramer:
○ Tính định thức của ma trận
○ Tìm nghiệm của ma trận
2.2 Cơ sở lý thuyếts
2.2.1 Phương pháp Gauss – Jordan
Phương pháp khử Gauss-Jordan là một phương pháp để giải hệ phương trình đại số tuyến tính ở dạng ma trận Đây là phương pháp được phát triển dựa trên
phương pháp khử Gauss
Mục tiêu: biến đổi ma trận về dạng ma trận đường chéo để giải ma trận
mà không cần phải qua bước tính định thức nào
2.2.2 Định thức
Xét ma trận vuông cấp n :
Với mỗi số hạng a ij (số hạng nằm ở hàng i và cột j), ma trận nhận được từ A bằng cách bỏ đi hàng thứ i và cột thứ j được gọi là ma trận bù của A đối với số hạng a ij
, ký hiệu là A ij
Trang 7Ví dụ: cho ma trận vuông cấp 3:
Ta có thể thành lập các ma trận bù cấp 2, chẳng
hạn Định nghĩa định thức ma trận vuông:
Định thức của ma trận vuông A∈M n,ký hiệu det(A) hay |A|, là số thực được định nghĩa bằng quy nạp theo n như sau :
● Với n = 1, nghĩa là A = a11, thì det(A) = a11
● Với n≥2, A = (a ij)n ×n, thì :
det(A) = (−1)1+1 a11det( A11)+(−1)1+2 a12det( A12)+…+ (−1)1+n a1 ndet( A1n)
n
⇔det(A) = ∑❑(−1)1 + j a1 jdet( A1 j)
j=1
Định lý khai triển định thức theo một hàng hay một cột bất kỳ
cho ma trận A = (a ij)n ×n, 1≤ i0, j0 ≤n Khi đó:
n
det(A) = ∑❑(−1)i0 + j a i o + jdet( A i0 j) (1.1)
j=1 n
det(A) = ∑❑(−1)i + j0 a i j0det( A i j0) (1.2)
i=1
công thức (1.1) gọi là công thức khai triển theo hàng i ovà công thức (1.2) là công thức khai triển theo cột j0
ví dụ: Tính định thức:
Trang 8Tính định thức của ma trận A Chúng ta khai triển định thức này theo hàng 1:
Các tính chất của định thức:
(II) Nếu đổi chỗ hai hàng (hoặc cột) bất kì của định thức thì định thức đổi dấu
ví dụ:
(IV) Nếu nhân một hàng nào đó của định thức với một số λthì định thức mới bằng λlần
Hệ Quả: (1) Nếu các phần tử của một hàng có thừa số chung thì ta có thể đưa thừa số đó ra ngoài dấu định thức
(2) det(λA) = λ ndet(A), λ ∈R
(3) Nếu A có một hàng bằng không thì định thức của nó bằng
không
(4) Nếu A có hai hàng bằng nhau hay tỉ lệ với nhau thì định thức của nó bằng không
ví dụ:
5
Trang 9(V) Nếu thêm vào một hàng của định thức bội λ của hàng khác thì định thức không đổi
ví dụ:
(VI) Định thức của ma trận chéo bằng tích các phần tử trên đường chéo chính
ví dụ:
-Định thức của ma trận tam giác bằng tích các phần tử trên đường chéo chính
ví dụ:
(VII) Cho A, B là các ma trận vuông cấp n Khi đó det(AB) =
det(A).det(B) ví dụ: cho 2 ma trận
det(A) = 5; det(B) = (-3) det(AB) = -15 = 5.(-3) = det(A).det(B)
Trang 102.2.3 Phương pháp Cramer
Hệ phương trình Cramer là hệ phương trình tuyến tính có số phương trình bằng số
ẩn số và định thức của ma trận các hệ số khác 0
ví dụ: cho hệ phương trình
Hệ phương trình có 3 phương trình, 3 ẩn và det(A) = = 7 ≠ 0 nên nó là hệ phương trình Cramer
Các phương pháp giải
hệ phương trình cramer
Ngoài phương pháp chung là phương pháp khử ẩn liên tiếp Gauss đã trình bày
ở phần trên, đối với hệ Cramer có thêm hai phương pháp như sau:
I) Phương pháp 1 Dùng ma trận nghịch đảo A−1 để giải phương trình ma trận:
AX=B⇔X= A−1B
II) Phương pháp 2 Dùng định thức (công thức Cramer) Xét A i, i = 1 ,n là ma trận nhận được từ A bằng cách thay cột thứ i bằng cột các hệ số tự do Khi đó, hệ
, i = 1 ,n .
det ( A)
ví dụ: Cho hệ phương trình tuyến tính:
Trang 11Dùng định thức(công thức Cramer) để tìm nghiệm của phương trình: Nghiệm của phương trình là:
x1= det (A1) = -1; x2=det (A2) = 10; x3=det (A3)
3 1 Phát biểu bài toán
Đầu vào(input):
o Nhập từ bàn phím hoặc từ file có sẵn số ẩn của hệ phương trình
và ma trận hệ phương trình
Đầu ra(output):
o In ra màn hình nghiệm của ma trận
o Lưu nghiệm vào file output có sẵn (/data/result.out)
3.2 Cấu trúc dữ liệu
Mảng, mảng 2 chiều
3.3 Thuật toán
Trình bày các thuật toán và phân tích độ phức tạp của các thuật toán
Minh
4 1 Tổ chức chương trình
4 2 Ngôn ngữ cài đặt
Chương trình được sử dụng ngôn ngữ C++ được biên dịch bằng GCC phiên bản
9.2.0
Trang 124.3 Kết quả
4.3.1 Giao diện chính của chương trình
Màn hình console:
Hình 4.1 Màn hình giao diện chính chương trình
Tại giao diện chính, người dùng nhập từ bàn phím lựa chọn 1, 2 hay 3 ứng với giải nghiệm bằng phương pháp Gauss – Jordan, giải nghiệm bằng phương pháp Cramer hoặc kết thúc chương trình Nếu chọn 1 hoặc 2, màn hình console chuyển tới giao diện nhập dữ liệu
Trang 13Hình 4.2 Màn hình giao diện nhập dữ liệu của chương trình
Nếu chọn 1 (Nhập dữ liệu thủ công), chương trình sẽ yêu cầu nhập số ẩn của hệ
phương trình và các hệ số Nếu chọn 2 (Đọc dữ liệu từ file có sẵn), chương trình
sẽ yêu cầu nhập tên file
Hình 4.3 Nhập dữ liệu bằng phương pháp thủ công
Trang 14Hình 4.4 Nhập dữ liệu bằng phương pháp đọc từ file
Hình 4.5 File chứa dữ liệu đầu vào
4.3.2 Kết quả thực thi của chương trình
- Kết quả khi giải bằng phương pháp Gauss – Jordan:
Trang 15Hình 4.6 Kết quả thực thi bằng phương pháp Gauss – Jordan
- Kết quả khi giải bằng phương pháp Cramer:
Trang 16Hình 4.7, 4.8 Kết quả thực thi bằng phương pháp Cramer
Trang 17- Kết quả trên file output:
4.3.3 Nhận xét đánh giá
5 1 Kết luận
5 2 Hướng phát triển
Trang 18TÀI LIỆU THAM KHẢO
[2] Tên chủ sở hữu, Tên bài viết, url, ngày truy cập
Trang 19PHỤ LỤC
chữ: 12; dãn dòng: 1,3; căn lề: justified}