Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 71 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
71
Dung lượng
542,23 KB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI NGUYỄN KHẮC TRIỆU ỨNG DỤNG PHƯƠNG PHÁP GẦN ĐÚNG GIẢI PHƯƠNG TRÌNH ĐẠI SỐ KHÔNG TUYẾN TÍNH LUẬN VĂN THẠC SĨ TOÁN HỌC Hà Nội, 2017 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI NGUYỄN KHẮC TRIỆU ỨNG DỤNG PHƯƠNG PHÁP GẦN ĐÚNG GIẢI PHƯƠNG TRÌNH ĐẠI SỐ KHÔNG TUYẾN TÍNH LUẬN VĂN THẠC SĨ TOÁN HỌC Chuyên ngành: Toán giải tích Mã số : 60 46 01 02 Người hướng dẫn khoa học TS Nguyễn Văn Hùng HÀ NỘI, 2017 Mục lục Mở đầu KIẾN THỨC CHUẨN BỊ 1.1 1.2 1.3 Nghiệm phương trình ẩn 1.1.1 Định nghĩa 1.1.2 Ý nghĩa hình học nghiệm 1.1.3 Sự tồn nghiệm thực phương trình (1.1) Khoảng phân li nghiệm 1.2.1 Định nghĩa 1.2.2 Phương pháp tìm khoảng phân li nghiệm phương trình f (x) = Sai số 1.3.1 Khái niệm 1.3.2 Các loại sai số: MỘT SỐ PHƯƠNG PHÁP GẦN ĐÚNG GIẢI PHƯƠNG TRÌNH ĐẠI SỐ PHI TUYẾN 2.1 Các bước giải gần phương trình f (x) = 2.2 Phương pháp chia đôi 2.3 Phương pháp điểm sai (Method of False Position) 11 2.4 Phương pháp dây cung 13 2.5 Phương pháp Newton 20 2.6 Phương pháp lặp đơn 26 2.7 Đánh giá tốc độ hội tụ phương pháp 29 ỨNG DỤNG 3.1 Tìm nghiệm gần phương trình đại số không tuyến tính f (x) = 3.2 35 Giải số phương trình phần mềm Maple 35 50 3.2.1 Giới thiệu phần mềm Maple 50 3.2.2 Chức cốt lõi 50 3.2.3 Lập trình Maple cho số phương pháp giải gần phương trình đại số không tuyến tính 51 Kết luận 62 Tài liệu tham khảo 63 Lời cảm ơn Tôi xin bày tỏ lòng biết ơn sâu sắc tới TS Nguyễn Văn Hùng Thầy tận tình hướng dẫn giải đáp thắc mắc tôi, giúp đỡ hoàn thành luận văn Qua đây, xin chân thành cảm ơn tới thầy cô giáo phòng Sau đại học, thầy cô giáo khoa Toán thầy cô giáo giảng dạy lớp thạc sĩ K19 chuyên ngành Toán giải tích trường Đại học Sư phạm Hà Nội giúp đỡ suốt trình học tập Tôi xin gửi lời cảm ơn chân thành tới gia đình, bạn bè, đồng nghiệp quan tâm, động viên tạo điều kiện thuận lợi cho trình học tập hoàn thành luận văn Hà Nội, tháng năm 2017 Tác giả Nguyễn Khắc Triệu Lời cam đoan Tôi xin cam đoan, hướng dẫn TS Nguyễn Văn Hùng, luận văn thạc sĩ chuyên ngành Toán giải tích với đề tài "Ứng dụng phương pháp gần giải phương trình đại số không tuyến tính" hoàn thành nhận thức thân tác giả Trong suốt trình nghiên cứu thực luận văn, tác giả kế thừa thành tựu nhà khoa học với trân trọng biết ơn Hà Nội, tháng 06 năm 2017 Tác giả Nguyễn Khắc Triệu MỞ ĐẦU Lý chọn đề tài Các toán thực tế (trong thiên văn, đo đạc ruộng đất, ) dẫn đến việc cần phải giải phương trình đại số không tuyến tính (hay phương trình phi tuyến), nhiên, phương trình thường phức tạp, nói chung khó giải Hơn nữa, công thức nghiệm thường phức tạp, cồng kềnh, nên cho dù có công thức nghiệm, việc khảo sát tính chất nghiệm qua công thức gặp phải nhiều khó khăn Vì vậy, từ thời Archimedes, phương pháp gần giải phương trình phi tuyến xây dựng Ngày phương trình đại số phi tuyến thường giải phương pháp gần như: Phương pháp chia đôi, phương pháp lặp, phương pháp Newton Với mong muốn tìm hiểu sâu việc giải phương trình đại số phi tuyến, hướng dẫn TS Nguyễn Văn Hùng, chọn đề tài: “Ứng dụng phương pháp gần giải phương trình đại số không tuyến tính” để thực luận văn Mục đích nghiên cứu • Luận văn nghiên cứu số phương pháp gần giải phương trình đại số phi tuyến • Ứng dụng số phương pháp gần giải phương trình sơ cấp Nhiệm vụ nghiên cứu Nghiên cứu số phương pháp gần giải phương trình đại số phi tuyến Đối tượng phạm vi nghiên cứu • Đối tượng nghiên cứu:Phương trình đại số phi tuyến • Phạm vi nghiên cứu: Nghiên cứu phương pháp gần giải phương trình đại số phi tuyến Phương pháp nghiên cứu • Vận dụng kiến thức Giải tích hàm, Giải tích số • Thu thập tài liệu liên quan đến phương trình đại số phi tuyến • Phân tích, tổng hợp hệ thống kiến thức liên quan tới phương trình đại số phi tuyến Đóng góp luận văn Cố gắng xây dựng luận văn thành tài liệu tổng quan tốt đề tài giải gần phương trình đại số không tuyến tính Chương KIẾN THỨC CHUẨN BỊ 1.1 Nghiệm phương trình ẩn 1.1.1 Định nghĩa Xét phương trình ẩn: f (x) = (1.1) đó: f hàm số cho trước đối số x Giá trị x0 gọi nghiệm phương trình (1.1) f (x0 ) = Nghiệm phương trình (1.1) số thực số phức, ta khảo sát nghiệm thực 1.1.2 Ý nghĩa hình học nghiệm Các nghiệm phương trình (1.1) hoành độ giao điểm đồ thị hàm số y = f (x) với trục hoành y y = f (x) O N (a2 ; 0) x M (a1 ; 0) Có thể biến đổi phương trình (1.1) dạng g(x) = h(x), nghiệm phương trình (1.1) hoành độ giao điểm hai đồ thị (C1 ) : y = g(x) (C2 ) : y = h(x) y y = h(x) y = g(x) x x1 O 1.1.3 x2 Sự tồn nghiệm thực phương trình (1.1) Trước tìm cách tính gần nghiệm thực phương trình (1.1) ta phải kiểm tra xem nghiệm thực có tồn hay không Khi đo ta sử dụng đồ thị sử dụng định lý sau Định lí 1.1 (Bolzano - Cauchy) 51 Như sau 18 lần lặp ta thu nghiệm phương trình x ≈ 0, 8654740331 radian sin(x) 3 cos(x)2 ⇒ |ϕ (x)| ≤ 0, 422824 Ta có: ϕ (x) = − Nên ta chọn công thức đánh giá sai số 0, 422824 ∆x4 = |x4 − α| ≤ |x4 − x3 | − 0, 422824 0, 422824 = |0, 8658143009 − 0, 8644689718| = 9, 855528147.10−4 − 0, 422824 Nhận xét: Qua phương pháp ta thấy: Bằng phương pháp chia đôi để tìm nghiệm gần đến 10 chữ số thập phân cần 30 bước lặp.Tại bước lặp thứ có sai số 0,03125 Bằng phương pháp điểm sai để tìm nghiệm gần đến 10 chữ số thập phân cần bước lặp.Tại bước lặp thứ có sai số 1, 761096911.10−5 Bằng phương pháp dây cung để tìm nghiệm gần đến 10 chữ số thập phân cần bước lặp.Tại bước lặp thứ có sai số 7, 650596684.10−6 Bằng phương pháp Newton để tìm nghiệm gần đến 10 chữ số thập phân cần bước lặp.Tại bước lặp thứ có sai số 1, 9.10−12 Bằng phương pháp lặp đơn để tìm nghiệm gần đến 10 chữ số thập phân cần 19 bước lặp.Tại bước lặp thứ có sai số 9, 855528147.10−4 Căn vào sai số bước lặp lần cho ta thấy tốc độ hội tụ cuả phương pháp Newton nhanh nhất, phương pháp dây cung, điểm sai, lặp đơn cuối cùng, chậm phương pháp chia đôi Ngược lại phương pháp chia đôi lại có ưu điểm đơn giản, dễ lập trình 52 nhất, ta cần chọn chia đôi khoảng nghiệm đạt nghiệm phương pháp khác cần đòi hỏi lựa chọn nghiệm xấp xỉ ban dầu, công thức nghiệm, tính giá trị hàm tính toán giá trị tương đối phức tạp 3.2 Giải số phương trình phần mềm Maple 3.2.1 Giới thiệu phần mềm Maple Maple 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 vào năm 1980 Nhóm Tính toán Hình thức Đại học Waterloo Waterloo, Ontario, Canada Từ năm 1988, phát triển thuơng mại hoá Waterloo Maple Inc (còn biết đến với tên gọi Maplesolf), công ty Canada có trụ sở Waterloo, Ontario Phiên Maple 18 phát hành vào năm 2014 Đối thủ cạnh tranh Mathematica 3.2.2 Chức cốt lõi Người dùng nhập biểu thức toán học theo kí hiệu toán học truyền thống Có thể dễ dàng tạo giao diện người dùng tuỳ chọn.Maple hỗ trợ cho tính toán số tính toán hình thức, hiển thị Nhiều phép tính số học thực dựa thư viện số học NGA; Maple, chương trình NGA mở rộng 53 phép độ xác ngẫ nhiên lớn Maple có ngôn ngữ lập trình cao cấp đầy đủ Cũng có giao diện cho ngôn ngữ khác (C, Fortran, Java, MatLab, Visual Basic) Cũng có giao diện dành cho Excel 3.2.3 Lập trình Maple cho số phương pháp giải gần phương trình đại số không tuyến tính Trong phần này, tác giả xin trình bày số lập trình dành cho phương pháp giới thiệu chương trước phần mềm Maple phiên 17 Do thư viện Numerical Analysis có sẵn lập trình dành cho phương pháp nên sau tác giả trình bày lập trình sử dụng thư viện có sẵn Maple a, Lập trình Maple cho phương pháp chia đôi a1 , Lập trình fncChiaDoi := proc (f, a, b, e) with(Student[NumericalAnalysis]); Bisection(f, x = [a, b], tolerance = e, output = information, maxiterations = 20) printf("Nghiem can tim x : %f", Bisection(f, x = [a, b], tolerance = e)) end proc Trong đó: f: phương trình cần giải a, b: Khoảng phân li nghiệm e: Sai số cho trước 54 a2 , Ví dụ: Giải phương trình x3 + 3x2 − = lập trình Maple với sai số 10−2 khoảng phân li nghiệm (0; 1) Lời giải: Với f = x3 + 3x2 − a = 0; b = e = 10−2 Ta cho chạy chương trình fncChiaDoi := proc (f, a, b, e) with(Student[NumericalAnalysis]); Bisection(f, x = [a, b], tolerance = e, output = information, maxiterations = 20) printf("Nghiem can tim x : %f", Bisection(f, x = [a, b], tolerance = e)) end proc Tại dấu nhắc lệnh ta nhập: f ncChiaDoi(x3 + ∗ x2 − 3, 0, 1, 10−2 ) Khi hình hiển thị: Nghiem can tim x: 0.882812 55 n 1 2 3 4 5 6 an bn Pn f (Pn ) relativeerror 0.5000000000 −2.125000000 1.000000000 0.5000000000 0.7500000000 −0.890625000 0.333333333 0.7500000000 0.8750000000 −0.033203125 0.1428571429 0.8750000000 0.9375000000 0.460693359 0.0666666667 0.8750000000 0.9375000000 0.9062500000 0.208160400 0.03448275862 0.8750000000 0.9062500000 0.8906250000 0.086093902 0.01754385965 0.8750000000 0.8906250000 0.8828125000 0.026100636 0.008849557522 Nhìn kết hình ta hiểu sau: Bảng kết gồm có cột Cột thứ số lần lặp Giá trị hàng cột thứ hai ba cho ta khoảng phân li nghiệm Cột thứ tư nghiệm gần Cột thứ năm giá trị hàm nghiệm gần tương ứng Cột thứ sáu sai số bước lặp tương ứng Vậy phương trình cho có nghiệm x ≈ 0.882812 b, Lập trình Maple cho phương pháp điểm sai b1 , Lập trình fncDiemSai := proc (f, a, b, e) with(Student[NumericalAnalysis]); printf("Nghiem can tim x : %f", FalsePosition(f, x = [a, b], tolerance = e)); FalsePosition(f, x = [a, b], tolerance = e, output = information, max- 56 iterations = 20) end proc b2 , Ví dụ: Giải phương trình x3 + x + khoảng tách nghiệm (−0.8; 0) Lời giải Ở trên, toán cho khoảng tách nghiệm, chạy chương trình với độ sai số e tuỳ ý Với sai số 10−2 ta chạy chương trình sau: fncDiemSai := proc (f, a, b, e) with(Student[NumericalAnalysis]); printf("Nghiem can tim x : %f", FalsePosition(f, x = [a, b], tolerance = e)); FalsePosition(f, x = [a, b], tolerance = e, output = information, maxiterations = 20) end proc Tại dấu nhắc lệnh ta nhập: f ncDiemSai(x3 + x + 1, −0.8, 1, 10−2 ) Khi hình hiển thị: Nghiem can tim x: -0.681839 bn Pn f (Pn ) relativeerror n an −0.8 −0.630434783 0.1190001633 2.586206896 −0.8 −0.630434783 −0.6772521400 0.0121123087 0.06912840024 −0.8 −0.6772521400 −0.6818393153 0.0011702787 0.006727648578 57 Vậy phương trình có nghiệm x ≈ −0.681839 c, Lập trình Maple cho phương pháp dây cung c1 , Lập trình fncDayCung := proc (f, a, b, e) local c,bn,an,i; an:=a; bn:=b; i:=0; (b − a).eval(f (x), x = a) eval(f (x), x = b) − eval(f (x), x = a); printf("x0 la:%f",bn); c := a − writeline(default," "); if eval(f(x), x = c)*eval(f(x), x = a) < then printf("x%d la:%f",i+1,c); writeline(default," "); while e < abs(c-bn) bn := c; c := a − (bn − a).eval(f (x), x = a) ; eval(f (x), x = bn) − eval(f (x), x = a) i:=i+1; printf("x%d la:%f",i,c); writeline(default," "); end ; else printf("x%d la:%f",i+1,c); 58 writeline(default," "); while e < abs(c-an) an:= c; an − (b − an).eval(f (x), x = an) ; eval(f (x), x = b) − eval(f (x), x = a) i:=i+1; c := printf("x%d la:%f",i+1,c); writeline(default," "); end ; end if; printf("=>Nghiem can tim %f", c) ; end proc c2 , Ví dụ: Giải phương trình x = cos(x) khoảng tách nghiệm (0, 6; 0, 8) Lời giải Như vậy, toán cho ta khoảng tách nghiệm phương trình Thay giá trị vào chạy chương trình với sai số tuỳ ý theo yêu cầu Ở đay ta lấy sai số 10−3 kết sau: fncDayCung := proc (f, a, b, e) local c,bn,an,i; an:=a; bn:=b; i:=0; c := a − (b − a).eval(f (x), x = a) eval(f (x), x = b) − eval(f (x), x = a); 59 printf("x0 la:%f",bn); writeline(default," "); if eval(f(x), x = c)*eval(f(x), x = a) < then printf("x%d la:%f",i+1,c); writeline(default," "); while e < abs(c-bn) bn := c; c := a − (bn − a).eval(f (x), x = a) ; eval(f (x), x = bn) − eval(f (x), x = a) i:=i+1; printf("x%d la:%f",i,c); writeline(default," "); end ; else printf("x%d la:%f",i+1,c); writeline(default," "); while e < abs(c-an) an:= c; an − (b − an).eval(f (x), x = an) ; eval(f (x), x = b) − eval(f (x), x = a) i:=i+1; c := printf("x%d la:%f",i+1,c); writeline(default," "); end ; end if; 60 printf("=>Nghiem can tim %f", c) ; end proc Tại dấu nhắc lệnh ta nhập f ncDayCung(x − cos(x), 0.6, 0.8, 10−3 ) Khi hình cho ta kết x0 là: 0.80000 x1 là: 0.737137 x2 là: 0.737760 ⇒ Nghiem can tim 0.737760 d, Lập trình Maple cho phương pháp Newton d1 , Lập trình: fncNewton :=proc (f, a, e) with(Student[NumericalAnalysis]); Newton(f, x = a, tolerance = e, output = information) printf("Nghiem can tim x : %f", Newton(f, x = a, tolerance = e)) end proc d2 , Ví dụ: Giải phương trình x2 + sin(x) − lập trình Maple Lời giải Nhận xét: Nhìn vào thuật toán ta thấy để giải thuật toán cần phải chọn giá trị x0 ban đầu Chúng ta làm điều cách vẽ đồ thị hàm số từ ước lượng giá trị gần cho nghiệm Sử dụng lệnh 61 [>plot(xˆ2+sin(x)-1, x=-1 2) để vẽ đồ thị hàm số Ta −2 −2 Nhìn vào đồ thị hàm số ta thấy cắt trục hoành điểm xấp xỉ Do ta chọn x0 = sai số 10−3 Ta cho chạy chương trình fncNewton := proc (f, a, e) with(Student[NumericalAnalysis]); Newton(f, x = a, tolerance = e, output = information) printf("Nghiem can tim x : %f", Newton(f, x = a, tolerance = e)) end proc Tại dấu nhắc lệnh ta nhập f ncN ewton(x2 + sin(x) − 1, 1, 10−3 ) Chạy cho ta kết quả: Nghiem can tim x = 0.636733 62 n 0 1 2 3 Pn relativeerror − 1.0000000000 0.4953234465 0.04973346748 0.0005266637097 1.0000000000 0.6687516352 0.6370680329 0.6367026889 Như sau bước lặp chương trình cho ta nghiệm gần phương trình Trong lời giải ta thay giá trị cho x0 giá trị xa nghiệm gần thay sai số nhỏ số bước lặp lớn Thật vậy, ta thay x0 = ta có bảng kết sau: n 0 1 2 3 4 5 Pn 2.759448404 1.237465989 0.7106227507 0.6384446509 0.6367336403 0.6367326507 relativeerror − o.8119563289 1.229918582 0.7413834533 0.1130530261 0.002687168530 0.000001554184474 e, Lập trình Maple cho phương pháp lặp đơn e1 , Lập trình: fncKhoangPhanLiNghiem := proc (f, a, b, e) with(Student[NumericalAnalysis]); 63 printf("Nghiem can tim x : %f", Roots(f, x = a, tolerance = e)) Roots(f, x = a, tolerance = e, output = information,maxiterations = 20); end proc e2 , Ví dụ: Giải phương trình x − ln(x + 1) − 10 = phương pháp lặp, biết phương trình có khoảng phân li nghiệm (12; 13) Lời giải Trong chương trình phương pháp lặp đơn ta có: f = x − ln(x + 1) − 10 Khoảng phân li nghiệm (12; 13) Ở ta chọn mức sai số 10−3 Thay giá trị vào chương trình chạy hình hiển thị: Nghiem can tim x: 12.610869 Pn relativeerror n 0 12 − 12.61202847 0.04852736191 12.61086864 0.00009197066698 Như vậy, phương trình cho có nghiệm x ≈ 12.610869 64 Kết luận Luận văn đạt kết sau: (i) Trình bày số phương pháp gần để giải phương trình đại số phi tuyến (ii) Trình bày tốc độ hội tụ, bậc hội tụ phương pháp (iii) Giải số số phương trình phi tuyến (iv) Lập trình phần mềm Maple 17 cho số phương pháp giải gần phương trình đại số phi tuyến Do thời gian có hạn kiến thức hạn chế, luận văn chắn tránh khỏi thiếu sót, kính mong nhận ý kiến góp ý Quý thầy cô bạn để luận văn hoàn thiện Tôi xin chân thành cảm ơn Hà Nội, ngày 10 tháng năm 2017 Tác giả Nguyễn Khắc Triệu 65 Tài liệu tham khảo [A] Tài liệu Tiếng Việt [1] Phạm Kỳ Anh (2005) , Giải tích số, Nxb Đại học Quốc Gia Hà Nội [2] Vũ Quốc Chung, Nguyễn Văn Hùng, Nguyễn Văn Khải, Khuất Văn Ninh (2014), Lý thuyết xấp xỉ tốt ứng dụng toán sơ cấp, Nxb Đại học sư phạm [3] Nguyễn Minh Chương(Chủ biên), Nguyễn Văn Khải, Khuất Văn Ninh, Nguyễn Tường (2001), Giải tích số, Nxb Giáo dục, Hà Nội [4] Phạm Huy Điển (2002), Tính toán, lập trình giảng dạy toán học Maple, Nhà xuất khoa học kĩ thuật Hà Nội [5] Nguyễn Xuân Liêm (1997), Giải tích hàm, Nxb Giáo dục [B] Tài liệu Tiếng Anh [6] Walter Gautschi (2011), Numerical Analysis, Second Edition ... phương pháp gần giải phương trình đại số không tuyến tính để thực luận văn Mục đích nghiên cứu • Luận văn nghiên cứu số phương pháp gần giải phương trình đại số phi tuyến 2 • Ứng dụng số phương pháp. .. (xn )| m1 10 Chương MỘT SỐ PHƯƠNG PHÁP GẦN ĐÚNG GIẢI PHƯƠNG TRÌNH ĐẠI SỐ PHI TUYẾN 2.1 Các bước giải gần phương trình f (x) = Để tìm nghiệm gần phương trình đại số phi tuyến, ta tiến hành qua... Nghiên cứu phương pháp gần giải phương trình đại số phi tuyến Phương pháp nghiên cứu • Vận dụng kiến thức Giải tích hàm, Giải tích số • Thu thập tài liệu liên quan đến phương trình đại số phi tuyến