Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 43 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
43
Dung lượng
619,99 KB
Nội dung
TRƯỜNG ĐẠI HỌC VINH KHOA TOÁN HỌC PHAN THỊ NGỌC ÁNH GIẢI GẦN ĐÚNG PHƯƠNG TRÌNH MỘT ẨN BẰNG NGÔN NGỮ C++ KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC CHUYÊN NGÀNH TOÁN - TIN HỌC ỨNG DỤNG Vinh, năm 2012 TRƯỜNG ĐẠI HỌC VINH KHOA TOÁN HỌC KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC GIẢI GẦN ĐÚNG PHƯƠNG TRÌNH MỘT ẨN BẰNG NGÔN NGỮ C++ Người hướng dẫn : ThS Nguyễn Thanh Diệu Người thực hiện : Phan Thị Ngọc Ánh Lớp : 49B - Toán - Tin học ứng dụng MSSV : 0851095218 Năm 2012 MỤC LỤC Mở đầu Phần I Cơ sở lý thuyết chung Phương pháp lặp đơn Phương pháp dây cung 14 Phương pháp lặp Newton ( Phương pháp tiếp tuyến) 23 Phần II Chương trình tổng hợp ngơn ngữ C++ 32 Kết luận 423 Tài liệu tham khảo 434 MỞ ĐẦU 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ố siêu việt Trong nhiều trường hợp, phương trình thường phức tạp, nói chung khó giải Ngồi ra, phương trình thường có từ thực nghiệm, nên hệ số thường số gần Trong trường hợp việc giải phương trình khơng khó thực mà cịn khơng có ý nghĩa ứng dụng Bài tốn đặt là: “Thay giải phương trình người ta tìm cách giải gần phương trình với sai số cho phép, bù lại phương pháp thực dễ dàng nhiều ” Có nhiều phương pháp giải gần phương trình xây dựng Chúng ta kể đến phương pháp như: phương pháp Newton-Raphson, phương pháp lặp đơn, phương pháp dây cung… Ngày nay, có nhiều ngơn ngữ lập trình hỗ trợ việc tính tốn kể đến ngơn ngữ lập trình như: Pascal, C, C++ , C# … Trên lý thuyết giải gần phương trình ẩn ngơn ngữ lập trình quen thuộc, chúng tơi chọn đề tài nghiên cứu cho khóa luận “Giải gần phương trình phi tuyến với ngơn ngữ lập trình C++” Mục đích khóa luận viết chương trình giải gần phương trình đại số siêu việt ngơn ngữ C++ cho ba phương pháp : phương pháp lặp đơn, phương pháp dây cung, phương pháp tiếp tuyến Với mục đích đó, Khóa luận trình bày thành phần Phần I: Cơ sở lý thuyết chung Nội dung phần trình bày ngắn gọn lý thuyết toán học phương pháp giải gần phương trình phi tuyến ba phương pháp bản: Phương pháp lặp đơn, phương pháp Newton, phương pháp dây cung Phần II: Chương trình C++ tổng hợp giải gần phương trình phi tuyến Nội dung phần trình bày cách cài đặt ba thuật tốn nêu ngơn ngữ lập trình C++ máy tính Trong có chương trình ngơn ngữ lập trình C++ tốn giải gần phương trình phi tuyến ba phương pháp nói Khóa luận thực trường Đại học Vinh, hướng dẫn Thầy giáo Ths Nguyễn Thanh Diệu Em xin bày tỏ lòng biết ơn sâu sắc tới Thầy nhiệt tình hướng dẫn dành cho em suốt q trình hình thành khóa luận Nhân dịp em xin trân trọng cảm ơn Ban chủ nhiệm khoa Tốn, thầy giáo khoa Tốn trường Đại học Vinh, gia đình bạn bè tạo điều kiện thuận lợi để em học tập hồn thành Khóa luận Mặc dù có nhiều cố gắng, song khóa luận khơng tránh khỏi thiếu sót Em mong nhận ý kiến đóng góp thầy, giáo bạn đọc để khóa luận hồn thiện Sinh viên thực hiện: Phan Thị Ngọc Ánh PHẦN I CƠ SỞ LÝ THUYẾT CHUNG Phương pháp lặp đơn 1.1 Mô tả phương pháp Xét phương trình f(x) = (1) khoảng cách ly nghiệm [a,b] Giả sử phương trình (1) đưa dạng tương đương : x = g(x) (g hàm liên tục [a,b]) (2) tương đương với phương trình cho Từ giá trị x0 gọi giá trị lặp ta lập dãy xấp xỉ công thức : xn = g (xn-1), với n = 1,2, (3) Lúc này, trình có tính lặp lặp lại nên phương pháp gọi phương pháp lặp, hàm g(x) gọi hàm lặp Nếu dãy xn → α n →∞ ta nói phép lặp (3) hội tụ 1.2 Sự hội tụ phương pháp Định lý 1.2.1 Giả sử g(x) hàm khả vi đoạn [a, b] thỏa mãn điều kiện sau: 1) x [a,b] 2) x [a,b] | g’(x)| ≤ q ≤ g(x)[a,b] Khi đó, i) Phương trình (2) có nghiệm [a,b] ii) Phép lặp (3) hội tụ có ước lượng: | xn - | ≤ q(1-q)-1 | xn - xn-1 | Hoặc: | xn - | ≤ qn (1-q)-1 | x1 – x0 | Chứng minh Vì nghiệm phương trình (2) nên ta có: = g() Ta lại có xn =g(xn-1) => - xn = g() – g(xn-1) Áp dụng công thức Lagrang vào vế phải đẳng thức ta được: - xn = g’(c).( - xn-1), Với c [a,b] Theo giả thiết ta có | g’(c) | ≤ q ≤ Do | - xn | = | g’(c) |.| - xn-1 | ≤ q| - xn-1 | Vậy | - xn | ≤ q| - xn-1 | Bất đẳng thức với n Do có: | - xn ≤ q| - xn-1|; | - xn-1 ≤ q| - xn-2|; …………………… | - x2 ≤ q| - x1|; | - x1 ≤ q| - x0| Cộng bất đẳng thức vế theo vế ta được: | - xn ≤ q| - xn-1 | Vì x0 đủ xác định, qn → n→∞ giả thiết < q < 1, nên vế phải q| - xn-1 | →0 ta có | - xn | → n→∞ Vậy phép lặp hội tụ xn → n→∞ 1.3 Đánh giá sai số Định lý 1.3.1 Giả sử nghiệm phương trình (1), xn nghiệm gần phương trình có từ cơng thức lặp xn = g (xn-1), thỏa mãn điều kiện Định lý 1.2.1 Khi đó, |xn-| ≤ q | xn-1 - xn | 1 q Chứng minh Để đánh giá sai số nghiệm gần xn (nhận phương pháp lặp) nghiệm xác x phương trình f (x) = bước thứ n ta xét hiệu số | xn - | Từ chứng minh ta có: |xn - | ≤ q|xn-1 - | = q| xn-1 - xn + xn - | ≤ q| xn-1 – xn| + q| xn - | Vậy (1 – q)| xn - | ≤ q| xn-1 - xn |; hay | xn - | ≤ q | xn-1 - xn | 1 q Định lý 1.3.2 Giả sử nghiệm phương trình (1), xn nghiệm gần phương trình có từ cơng thức lặp xn = g (xn-1), thỏa mãn điều kiện Định lý 1.2.1 Khi đó, |xn - | ≤ | f xn | m Trong đó: m số dương xác định : |f’(xn)| m > 0, c < x < d Chứng minh Từ giả thiết ta có f() = nên có: f(xn) = f(xn) – f() Áp dụng công thức Lagrange vào vế phải ta được: f(xn) = f’( c ) (xn - ) Trong c = + ( x - ) (c, d) Theo giả thiết ta có f ( xn ) f '(c) xn m xn Do đó: |xn - | ≤ | f xn | m 1.4 Minh họa phép lặp hình học Hình a y= x y x0 x1 x Hình b Sơ đồ khối phép lặp đơn Begin Input x0, ɛ, q x1 = g(x);err = |x1 – x0 | ; x0 = x1; N o Err = ɛ(1 – q) /q Yes print x1 end 1.5 Thuật toán tìm nghiệm xấp xỉ phương pháp lặp đơn - Đầu vào: phương trình f(x) = chuyển phương trình x = g(x) biểu thị xn = g(xn-1) Khoảng phân ly nghiệm [a,b], sai số phép e*, điểm ban đầu x0 [a,b] - Đầu ra: nghiệm gần x phương trình f(x) = Cách giải: Bước 1: Gán sai số e := 1; Bước 2: lặp trình sau e → e* 3.5 Sơ đồ khối phương pháp tiếp tuyến Begin Procedure f(x) Procedure Df(x) Input x0, x1 x0 f ( x0 ) Df ( x0 ) err = | x1 – x0 | x0 = x1 err < print x1 end 3.6 Ví dụ Giải phương trình sau phương pháp tiếp tuyến F(x) := x4 - 3x2 + 75x -1000 với chữ số Giải: Vì f(-10) = -1050 f(-11) = 3452 Nấn (-11, -10) Ngoài ra: f’(x) < f”(x) > Điểm Furier x0 = -11 Áp dụng thuật toán ta được: x3 = -10,261 , f(x3) = 0.2 > f(x3 + 0.001) = f( -10.260) < Do đó: (-10.261 ; -10.260) Chương trình giải gần phương trình x2 - x -1 = Chương trình 4: //phuong phap Newton #include #include #include #include #include #define n 50 #define epsi 1e-5 void main() { float t, x0; float x[n]; int i; float f(float); float daoham(float); clrscr(); cout 100) { cout