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

Giáo trình Cấu trúc dữ liệu và thuật toán (Tái bản): Phần 1

152 0 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

NGUYÊN ỌC LIỆU I C k !oÔỖoỐ681 68 G NGHĨA TÝ CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN ■ PGS TS HOÀNG NGHĨA TÝ CẤU TRÚC Dữ LIỆU ■ VÀ THUẬT TOÁN ■ (Tái bản) NHA xuẩt bả n xây d ự n g HÀ NỘI-2014 LỜI NÓI ĐẦ U Cấu trúc liệu thuật tốn mơn học sở ngành ngành công nghệ thông tin Chúng ta hình dung tịa nhủ có phần móng, phin tường cột (kết cấu chịu lực) phần khác lại, plĩần kết cấu chịu lực khơng vững tịa nhà khơng thể vững Mơn "Cấu trúc liệu thuật tốn" mơn học thuộc phần rường cột, phẩn kết cấu chịu lực tịa nhà "Cơng nghệ thơng tin" Khi học mơn học nà) địi hỏi sinh viên phải có đầu óc tư logic toán học đ ể hiểu thuật tốĩ, đồng thời phải có kỹ lập trình đ ể diễn đạt sơ đồ thuật toán thành cứu lệnh Có thể sơ đổ thuật tốn vẽ hết trang giấy chuyển sang lập trình có vài dịng; có th ể sơ đồ thuật tốn trình bày theo kiểu kiểm tra điều kiện đ ể riếp tục đầu chuyển sang lập trình có th ể dùng câu lệnh có cấu trúc điều khiển lặp với kiểu kiểm tra điều kiện trước sa u Giáo trình " Cấu trúc liệu thuật toán" xuất lần đầu năm 2006, Nhà xuất Xây dựng ấn hành Từ đến thời lượng kết cấu mơn học có nhiều thay đổi Ớ Trường Đại học Xây dựng từ năm 2009 môn "Cấu trúc liệu thuật toán" tách thành hai học phần "Nhập mơn Cấu trúc clữ liệu thuật tốn" "Cấu trúc liệu thuật toán nâng cao" veri học phần có tín Lý Khoa Cơng nghệ thơng tin có nhiêu chun ngành khác nhíiu, có chun ngành cần học học phần, có chuyên ngành cần p h ii học hai học phần D ể đáp ứng thay đổi trên, năm qua tác giả biên soạn lụi đê cương chi tiết cho học phần nội dung chương mục tương ứnị, viết lại số chương trình cho s ố thuật tốn, trình bày lại s ố sơ đồ thuật toán (hoán vị ma trận thưa, danh sách liên kết, xếp theo kiểu chèn ), viết thêm sô' nội dung cho học phần Cấu trúc liệu thuật toán nâng cao (kiến thức nâng cao trỏ, đệ quy, duyệt nhị phân, file mỡ, file text, danh sách liên kết, danh sách Hên kết vịng liên kết đ i ) Với thời lượng tín chỉ, nội dung học phần "Nhập mơn Cấu trúc liệu thuật tốn" trình bày chương 1, chương 2, mục 3.1, 3.2, 3.3 chương 3, riêng mục 3.3 đến 3.8 dừng kiến thức bản, chương4, chương 5, chương (mục 7.1, 7.2, 7.3), chương (mục 1, ) Với thời lượng tín chỉ, nội dung học phần "Cấu trúc liệu thuật toán nâng cao" phần mở rộng, nâng cao mục 3.3 đến 3.8 chương 3, chương 6, chương (mục 7.4, 7.5), chương (mục 8.3), chương Ngoài phần lý thuyết chương trình ví dụ, tài liệu cịn giới thiệu sơ'chương trình tổng hợp, giúp cho bạn đọc tìm hiểu sâu thuật tốn trình bày Đây thực chất sô' kết nhiều năm nghiên cứu giảng dạy công nghệ thông tin hướng dẫn sinh viên tác giả: chương trình quàn lý tiền lương soạn lại sở phần mềm tính lương cho Phịng Tài vụ trường ĐHXD năm 1990, chương trình sơ đồ mạng viết từ năm 1980-1981 chạy máy tính Minsk-32, chương trình quy hoạch động diễn giải thuật tốn cùa đê tài 'Thiết k ế tối ưu kết cấu mặt đường mềm nhiều lớp" tiến hành cách nung nấu kiên trì năm 1975-1977, chương trình quản lý thi trắc nghiệm phần đề tài "Xảy dựng Ngân hàng đề thi phần mềm phục vụ thi trắc nghiêm môn Tin học đại cương" năm 2001 Quyển sách dùng làm giáo trình cho học viên, sinh viên ngành công nghệ thông tin ngành khác có học mơn tin học ứng dụng Tác giả cảm ơn sinh viên đồng nghiệp trình làm việc, giúp phát sinh ỷ tưởng hồn thiện giáo trình, c ố gắng khơng th ể tránh khỏi thiếu sót Rất mong nhận góp ỷ độc giả đ ể lần tái bàn sau sách hoàn thiện Mọi góp ý xin gửi Bộ mơn Cơng nghệ phần mềm, Khoa Công nghệ thông tin Trường đại học Xây dựng Hà Nội Tác giả Phẩn I CẤU TRÚC DỮ LIỆU Chương NHẬP MÔN CẤU TRÚC DỮ LIỆU 1.1 KHÁI NIỆM CẤU TRÚC DỬ LIỆU Thuật toán cấu trúc liệu coi môn học cốt lõi ngành Công nghệ thông tin Niklaus Wirth - tác giả "Cấu trúc liệu + Giải thuật = Chương trình" phân tích tầm quan trọng cấu trúc liệu thuật tốn Chương trình mơ tả cụ thổ thuật tốn trừu tượng dựa vào biểu diễn cấu trúc liệu đặc biệt Chương trình liệu khơng thể tách rời Dữ liệu xử lý chương trình, cần tổ chức thành cấu trúc cho phản ánh mối quan hệ mục liệu cho phép xử lý liệu có hiệu 1.1.1 Dữ liệu dạng mã máy ý nghĩa chúng Trong máy tính giá trị liệu lưu trữ dạng bit, sô' hộ đếm nhị phân (0 1) Các bit tổ chức thành nhóm gọi Từ máy (word), tức word chứa số cố định bít Độ dài word thay đổi theo loại máy tính (máy 16 bit hay 32 bít) Các Từ máy đánh địa 0, truy cập vào word theo địa Khi dạng dãy bít, biểu diễn nhiều ý nghĩa khác Trong ngôn ngữ lập trình cụ thể, người lập trình biểu diễn dãy bít dạng cấu trúc xác định, cho phép xử lý diễn đạt liệu Những khái niệm quan trọng liên quan đến liệu Kiểu liệu, Cấu trúc liệu, Cấu trúc liệu tĩnh, Cấu trúc liệu động 1.1.2 Kiểu liệu Các kiểu liệu Pascal integer, real, char, boolean, byte gọi kiểu liệu đơn giản chúng liệu không phân chia (gọi nguyên tử - atom) Tuy chúng xem có cấu trúc liệu mà việc cài đặt chúng sử dụng word cấu trúc lưu trữ với thuật toán để thực phép tính thích hợp cho kiểu Khái niệm kiểu liệu quan trọng, xác định tập hợp giá trị mà biến nhận Mơ tả kiểu quy định loại giá trị biến cung cấp cho chương trình dịch nhũng thơng tin cần thiết Tương ứng vói kiểu, dãy bít có ý nghĩa riêng Kiểu liệu quy định phép tốn thực đối vói liệu Mỗi ngơn ngữ lập trình định nghĩa tập kiểu liệu nguyên thuỷ, vô hướng riêng nó, ví dụ, ngơn ngữ Pascal Integer, real, boolean, char; ngơn ngữ c Int, float, char Kiểu liệu có đặc điểm: + Một kiểu liệu xác định tập hợp giá trị mà trị (const) hay biến nhận giá trị thuộc miền đó; + Kiểu giá trị định trị (const), biến biểu thức suy từ dạng từ khai báo mà khơng cần phải tiến hành q trình tính tốn + Mỗi tác tử hay hàm có biến với kiểu định sẵn cho kết có kiểu định sẵn Nếu tác tử nhận số biến có kiểu khác (ví dụ phép cộng + dùng hai số nguyên hay thực) kiểu kết xác định theo quy tắc riêng ngôn ngữ Các kiểu integer, real, char, boolean, biểu diễn bời xâu bít Sau ta xét số kiểu liệu điển hình Pascal a) D ữ liệu kiểu nguyên - integer Dữ liệu kiểu integer lưu trữ từ máy Như độ dài từ máy giới hạn phạm vi sô' nguyên lưu trữ Số nguyên lớn lưu trữ từ máy bit 27 - = 127, từ máy 16 bit 15- = 32767, từ máy 32 bit 231 - = 2.147.483.647 b) D ữ liệu kiểu thực - Real Một số thực biểu diễn bầng tổng số với mũ 2: x = g a , x 2' i= -m a¡ = Có hai cách lull số thực: dấu chấm tĩnh (fixed point) dấu chấm động (floating point) Ví dụ 110.101 (6.625) hay 0.110101 X 23 Số thực dấu chấm động ô nhớ biểu diễn thành thành phần: phần từ máy dùng để lưu trữ số cố định bít phần định trị, phần khác lưu trữ phần mũ . c) D ữ liệu kiểu ký tự - char Máy lưu trữ liệu kỷ tự dựa sỏ gán mã số cho ký tự Các ký tự biểu diễn mã nhị phân, từ máy 16 bít chia thành hai byte, byte lưu trữ ký tự dạng nhị phân Ký tự mã hoá theo ASCII (American Standard Code for information Interchange - Bộ mã chuẩn cùa Mỹ dùng để trao đổi thông tin) hay EBCDIC (Extended Binary Code Decimal Interchange Code - Mã BCD mở rộng) Phép toán phổ biến cho ký tự SO lựa (collating sequence) Vi dụ: kỹ tự A bảng mâ ASCII có mã 65, ký tự B irong bảng mã ASCII có mã 66 Khi phép SO sánh A>B cho kết sai d) D ữ liệu kiểu logic - Boolean Mỗi giá trị logic biểu diễn chữ số hệ đếm nhị phân Trong ngơn ngữ thơng dụng có phép tốn logic AND, OR, NOT, XOR Trên nhắc lại số kiểu liệu bản, có hệ thống máy tính, loại ngơn ngữ lập trình Việc xác định kiểu liệu quan trọng, giải nghĩa cho xâu bit liệu xác định phép toán sử dụng Tương ứng với kiểu liệu có số phép tốn áp dụng, ví dụ ngơn ngữ Pascal: Vối kiểu Integer dùng phép: +, Với kiểu Real dùng phép: +, *, /, A, mod, div *, / , A ; Với kiểu Boolean dùng phép: and, or, not, xor Với kiểu Char dùng phép: +, concat 1.1.3 Cấu trúc liệu - Data Structure Đ ịnh nghĩa: Cấu trúc liệu cách thức tổ chức liệu nhớ máy tính Trong loại cấu trúc liệu, người ta phân chia cấu trúc đơn giản, cấu trúc phức tạp, cấu trúc tĩnh, cấu trúc động - Cấu trúc liệu đơn giản: kiểu liệu nguyên thuỷ định nghĩa ngôn ngữ lập trình, ví dụ Integer, Real, Boolean, Char ngôn ngữ Pascal; Int, Float, Char ngôn ngữ c Trong thực tế, có tốn mà cách tổ chức liệu đom giản không đáp ứng được, địi hỏi phải tổ chức phức tạp hơn, ví dụ d ã y s ố , m ộ t d a n h sách d ữ liệ u , V.V' - Cấu trúc liệu tĩnh: cách tổ chức mà kích thưốc phần tử liệu cô' định, cấu trúc cố định chương trình dịch làm việc Trong ngơn ngữ Pascal, kiểu array, kiểu liệu liệt kê, hay kiểu nguyên thuỷ Integer, Real, - Cấu trúc liệu động: cách tổ chức mà thay đổi kích thước cấu trúc liệu Các liệu động sinh trình chương trình thực Chúng khơng thể dịch chương trình, thường sử dụng trỏ để tạo liệu động Ngoài khái niệm trên, để phục vụ cho việc học tập, nghiên cứu triển khai ứng dụng, người ta chia ra: Cấu trúc liệu tuyến tính, cấu trúc liệu phi tuyến Những cấu trúc mà xử lý tiến hành dạng dãy liên tục liệu nhóm gộp vào loại tuyến tính, ví dụ array, stack, queue, list đcm giản Những cấu trúc lại gọi chung phi tuyến 1.2 CÁC MƠ HÌNH D ữ LIỆU Để đảm bảo hiệu trình xử lý thơng tin cần phải tổ chức liệu cho phù hợp Mơ hình hố liệu phải phản ánh giới thực cách tốt phải cài đặt máy tính Từ Data (dữ liệu) có xuất xứ từ thuật ngữ "datum" tiếng Hy Lạp có nghĩa "sự kiện" Tuy nhiên liệu tương ứng với kiện cụ thể đó, diện giới thực Chúng ta gọi liệu mô tả hiên tượng (hay ý tưởng) mà đáng giá để biểu diễn xác định xác Từ xa xưa người sử dụng nhiều loại phương tiện khác để ghi nhận kiện, ý tưởng: đá, giấy, thông thường liệu (các kiện - Data) diễn giải (ngữ nghĩa - semantic) ghi ngơn ngữ tự nhiên tinh tế, phong phú để biểu diễn tượng, kiện Khi ta nói " dung lượng đĩa cứng 40MB" 40 liệu, ngữ nghĩa "dung lượng MB" Trong sơ' trường hợp liệu ngữ nghĩa (semantic) bị tách rời (ví dụ: bảng tàu - diễn giải bên trên, cịn phía chạy tàu tuyến đường) Trong tin học liệu ngữ nghĩa bị phân tách Trong nhớ máy tính điện tử, người ta làm việc với liệu, không để ý đến ngữ nghĩa, phần ngữ nghĩa liệu thân người lập trình phải ngầm hiểu, lưu giữ nhớ riêng Thường chương trình phải ghi ý nghĩa loại liệu, thiếu ghi liệu dãy bit đơn Sự linh hoạt biểu diễn liệu đạt nhờ hai phương pháp: - Có nhiều cách nhìn khác đối tượng liệu; - Biểu diễn đồng hoá liệu khác V í dụ: với đối tượng Con ngưcrì, ta có hai cách tiếp cận: Theo phương pháp thứ nhất: đối tượng người, nhung danh sách lớp học họ tên sinh viên, tốn xét lên lương họ tên cán công nhân viên, quản lý bệnh viện họ tên bệnh nhân Theo phương pháp thứ hai, ta coi người từ Giám đốc, trưởng phó phịng, đến nhân viên cán cơng nhân viên Đó lý dẫn đến cần phải trừu tượng hoá liệu Phương tiện để biểu diễn liệu gọi Các mơ hình liệu (Data model) Mơ hình liệu phương tiện để trừu tượng hoá liệu, cho khả nhìn thấy "rừng" (nội dung thơng tin liệu) khổng "từng riêng rẽ" (các giá trị riêng lẻ liệu) Mô hình liệu cho khả nãng biểu diễn phần ngữ nghĩa (sematic) liệu Mơ hình liệu xác định quy tắc mà theo cấu trúc hoá liệu Tập hợp liệu mà có cấu trúc tương ứng với sơ đồ liệu định gọi sở liệu Những mơ hình liệu nghiên cứu nhiều là: - Mơ hình phân cấp (thứ bậc - Hierarchical Model) - Mơ hình mạng lưới (Network Model) - Mơ hình quan hộ (Relational Model) - Mơ hình đối tượng/quan hệ (Object/Relational Model) - Mơ hình hướng đối tượng (Object - Oriented Model - Mơ hình nửa cấu trúc (Semistructured Model) - Mơ hình hiệp hội (Associative Model) - Mơ hình thực thể - thuộc tính - giá trị (Entity - Attibute - Value (EAV) Model) - Mơ hình ngữ cảnh (Context Model) Dưói đầy ta xem xét số mơ hình, thứ tự trình bày theo mức độ phổ dụng 1.2.1 Mị hình quan hệ - Relational Model Mơ hình liệu quan Edgar F Codd đề xướng năm I960 Edgar F ’Ted" Codd sinh ngày 23 tháng năm 1923 Portland, Dorset, nước Anh Õng tất nghiệp Khoa Toán Hoá học Đại học Exeter, Oxford Năm 1948 chuyển đến New York làm việc cho Công ty máy tính IBM với tư cách lập trình viên phần thuật tốn Năm 1952 Ơngchuyển đến Ottawa năm 1962 lại quay Mỹ làm Tiến sỹ Khoa học Máy tính Trường Đại học Michigan Ann Arbor Năm 1964, Õng chuyển đến làm việc ỞTrung tâm nghiên cứu Almadén Hăng IBM â San Jose California Những năm 1960, 1970 Ông nghiên cứu lý thuyết vê' cấu trúc liệu Năm 1970, Ông cho 10 đơn vị (i: = i + l ) trình lặp i>n Sơ đồ khối cho hình 5.8 5.5.1.2 Bài tốn tính tổng V í dụ 5.8: Lập sơ đồ thuật tốn tính tổng dãy số thực: n s = X i=l Bài toán phân tích sau: S:= s + ai; i:= i + s = i = 1, s = s + àị = a, i = 2, s = s + a| = a, + a2 Lúc đầu Khi i tị) với dãy t|, t2,— tị cho trước Để làm toán ta phải sử dụng biến AMAX để giữ lấy giá trị lớn dãy số t|, t2> t¡ Lần thứ ta gán t| cho AMAX, sau so sánh AMAX với t2 Nếu AMAX bé tj, gán t2 cho AMAX khơng khơng làm cả, chuyển tiếp SO sánh AMAX vối t3, v.v Quá trình lặp lại duyệt hết dãy số Sơ đồ thuật toán cho hình 5.13 Như ta thấy, vừa có lặp, vừa có rẽ nhánh Cứ sau lần lặp, biến AMAX chứa giá trị lớn tị, t2> t; duyệt Ta chi giữ giá trị lớn không để ý giá trị Ión Theo cách làm này, lần lặp thứ n (cuối cùng) AMAX chứa giá trị lớn cùa toàn dãy số Hình 5.13 142 Ví dụ 5.12: C ho m a trận vuông: a l la 12 -a n A = a nla n - " a " A= *11 — a ln mn b „ b lp ' c= B= ^nl- -a n p Mỗi phần tử ma trận c ij= Ẻ _o *1111, - a Hình 5.14 b Ví dụ 5.13: Xét ví dụ có ba chu trình lồng nhau: nhân hai ma trận Cho hai ma trận A, B ban đầu ma trận c kết quả: ■Õ* _1 Lập sơ đồ thuật toán hoán vị ma trận A Ma trận kết A có phần tử b ị j = a,j Ma trận có hai chiều, phần tử dòng chảy theo s ố j, cột chạy theo số i, cahiều đểu biến đổi từ đến n Hoán vị ma trận thực chất hốn vị dịng cho cột ngược lại, phần tử dòng i cột j, trở thành phần tử cột i dòng j ma trận kết Sơ đồ có hai chu trình lồng (hình 5.14) c n lI Cn p c xác định công thức: a i k b kj; i = l + m ; j = l + p (5.5) k =l Trọng toán này, phần tử ma trận c chạy theo hai số i j; thân phần tử C j j , lại toán tính tổng tích aikbkj 143 với k chạy từ đến n Như ta có ba chu trình lổng Chu trình tính tổng CyTTiỗi lần vào chu trình phải gán lại giá trị ban đầu (C|j= 0) đếm k bắt đầu lại từ (k = Ta có sơ đồ khối hình 5.15 Hình 5.15 144 / Ví dụ 5.14: Xử lý bảng biểu Cho danh sách sinh viên với kết học tập sau (ký hiệu ms mã số, ht họ tên mon i điểm môn thứ i đ,b điểm trung bình, hk mức hạnh kiểm, đhk điểm hạnh kiểm, hb tiền học bổng) ms ht mon mon p hk đhk d,b hk đó: - Cột ms mảng, phần tử xâu chín ký tự, gồm hai ký tự mã khoa, hai ký tự mã khoá học, dấu ngăn cách /, hai ký tự mã lớp, hai ký tự mã số thứ tự sinh viên lớp; - ht mảng, phần tử xâu 25 ký tự chữ; - mon mảng, phần tử số thực - điểm môn học, điểm bốn chữ số, phần tử ký tự chữ (có bỘỊT mức hạnh kiểm A, B, c, D); - đlb mảng, phần tử số thực - điểm trung bình chung mở rộng, tính q trình thực chương trình, theo cơng thức: ^tb p + đ hk đó: đhk tính sau: 0,6 hk A ,3 hk B đhk = ,6 hk c - , hk D - hb học bổng, tính sau: tính suất học bổng trung bình: shbtb = (quỹ học bổng)/n, - n số học sinh cấp học bổng, tổng số học sinh trừ người bị kỷ luật không cấp học bổng; 145 - Tính: y, = (số sinh viên có đIb < 5,0)/n; y2= (số sinh viên có đtb từ 5,0 đến 7,0)/n; (*) y3= (số sinh viên có đtb > 7,0)/n; Cho suất học bổng trung bình 100%, ta phải xác định x h x2, x3, phần trăm SO với shbtb loại yI, y2, y3 Để cân đối quỹ học bổng, phải xác định điều kiện thoả mãn phương trình: X i y i + X2y + X 3y = (**) Ba hệ số y ,, y2, y3 xác định từ (*), ta phải cho hai ba ẩn Xj giá trị xác định ẩn thứ ba, có phương trình (**) Xuất phát từ nghiệp vụ quản lý sinh viên, ta cho X, = 80%; x3= 120% Thay giá trị vào (**) ta tìm x2 Nhân X| vối shbtb ta xác định tiền học bổng loại sinh viên Ta phân tích tốn làm khối lớn hình 5.16 Hình 5.16 146 Đ ể làm ví dụ, ta triển khai m ột khối trên, khối số Giả sử trước xác định điểm hạnh kiểm - đhk, điểm trung bình chung mở rộng ký hiệu đj Hình 5.17 cho ta thuật toán khối Trong thực tế, việc phân bổ học bổng cho toàn trường phức tạp, phải xét nhiều loại đối tượng, nhiều mức điểm khác lớp, khố, khn khổ chi tiêu học bổng hạn chế tuỳ theo năm; quỹ học bổng phải chia vừa hết, không thừa thiếu Hình 5.17 V í dụ 5.15: Hổi quy tuyến tính Phân tích hổi quy phương pháp thống kê toán học nghiên cứu mối liên hệ đại lượng ngẫu nhiên không ngẫu nhiên, xác định hàm sơ' biểu diễn mối liên hệ Trong q trình thực nghiệm, ứng vói giá trị X| ta thu y„ i = -!• n Khi đường hồi quy thực nghiệm không gãy khúc ta phán đốn đường cong lý thuyết có dạng tuyến tính y = ax + b Vấn đề đặt phải xác định a b cho: 147 X i - y j ) =>min, đó: ỹj giá trị thực nghiệm; Yi giá trị tính tốn từ phương trình y ;= a x ;+ b Theo lý thuyết, hàm ^ ( ỹ j - y , ) = X ( ỹ ị _ a x i ~ b ) 2, đạt CVC t*®u hàm bậc theo a b 0: ^ ( y i -a x i -b ) = (*) ^ x i( ỹ j - a x i - b ) = Giải hệ (*) Từ phương trình thứ ta rút a qua b: (Ẹ ỹ ị-n b ) I* Thay a vào phương trình thứ hai, qua biến đổi, ta thu được: Sơ đồ thuật toán hình 5.18 (M kỳ vọng tốn học) 148 (**) 5.5.3 L ăp có sơ' vịng lập chưa biết trước Trong thực tế có nhiều tốn có chu trình khơng phải số lần lặp mà biểu thức đó, chẳng hạn, sai số cho phép Ví dụ 5.16: Xét tốn giải phương trình F(x) = phương pháp lặp Ta biến đổi phương trình F(x) = dạng f(x) = X Vói nghiệm ban đầu x0 ta thiết lập chuỗi 149 X, =f(x„), x2 = f(xl), xn = f(xn_ |), trình dừng |x n - x n_| I < £ , với E giá trị cho trưóe Ở ta xét hàm f(x) dạng tổng quát SỐ lần tính lặp Xj = f(Xị_|)phụ thuộc vào e Vì ta khơng thể đặt n biến Xj, (n chưa xác định) Khi ta đặt biến X nhận giá trị nghiệm thời điểm tính tốn, biến y nhận giá trị hàm f; bước lặp chưa thoả mãn biểu thức |x - y| < e X nhận giá trị (x: = y) cho trước lặp Hình 5.19 5.20 mơ tả thuật tốn tốn theo hai cách kiểm tra điều kiện trưóc sau Khi tính cụ thổ việc thay cơng thức hàm số vào sơ đổ Bạn đọc làm tập với f(x) = X - cosx + 0,7; x0 = 1, E = 1(T6 x=y y = f(x) I |y -x |< e + Hình 5.19 150 Hình 5.20 Ví dụ 5.17: Giải hệ phương trình đại số theo phương pháp Gauss Cho hệ phương trình đại số tuyến tính: a l.lx l + a 1.2X + ••• + a l.nx n — a l.n+l a |X| + a2.2x2+ + a2nxn = a2n+l a n.lx l + a n.2X + ••• + a n.nX n - {*) a n.n+l Theo phương pháp Gauss, từ hệ thức (*) ta đưa dạng tam giác: ai.,xl + a 12x2+ + a lnxn= a ln+l a2.2x2+ + a2„xn= a2„+l (**) Từ (**) ta tính ngược vectơ nghiệm: n+l/^n, n x n-l = ( a n-l,n-l - a n - l , n * X n ) / a n -l, n-l ■••• Như thuật tốn có hai giai đoạn: đưa ma trận ban đầu dạng tam giác; giải ngược tìm nghiệm a) Giai đoạn thú nhất: Bắt đầu từ j = Nếu ajj * dùng cách tổ hợp tuyến tính khử phần tử cột j kể từ hàng thứ j + đến n, sau tăng j = j + 1• Nếu j < n - trở lại mục 2, j > n —1 trở xuống mục Nếu aj j = phải tìm cột j phẩn tử hàng k, j cho nhau; a kj * đổi chỗ hai Nếu an n = suy ma trận A suy biến, hệ khơng có nghiệm nhất, dừng chương trình, an n * 0, xong giai đoạn thứ b) Giai đoạn thứ hai: Tính xn,x„.| Sơ đồ khối hình 5.21 151 Nhập liệu bán đầu J = 1; kq =1 r 'l a,j * kq = E Í=j+1 i, = j + k = j +1 a n , = jt = j a i,k = a i,k “ a ij x a j V a j.j i, = j + k = k + b = a„„ i, < n k

Ngày đăng: 22/06/2023, 17:06

Xem thêm:

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

TÀI LIỆU LIÊN QUAN