đồ án java - giải gần đúng phương trình , tìm hệ số hồi quy bằng phương pháp bình phương cực tiểu

21 2.7K 12
đồ án java - giải gần đúng phương trình , tìm hệ số hồi quy bằng phương pháp bình phương cực tiểu

Đ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

giải gần đúng phương trình giải tích số, tìm hệ số hồi quy bằng pp bình phương cực tiểu

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN TOÁN ỨNG DỤNG & TIN HỌC ——————— * ——————— LẬP TRÌNH TÍNH TOÁN ĐỒ ÁN I Chuyên ngành: TOÁN TIN ỨNG DỤNG Giảng viên hướng dẫn: Th.S NGUYỄN THÁI BÌNH Sinh viên thực hiện: NGUYỄN TUẤN ANH Lớp: Toán Tin 2 - K55 HÀ NỘI 4 - 2014 NHẬN XÉT CỦA THẦY HƯỚNG DẪN 1. Mục đích và nội dung của đồ án: 2. Kết quả đạt được: 3. Ý thức làm việc của sinh viên: Hà Nội, ngày tháng năm 2014 Thầy hướng dẫn (Kí và ghi rõ họ tên) NGUYỄN THÁI BÌNH Mục lục LỜI MỞ ĐẦU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1 Phần Mở Đầu 5 1.1 Đối tượng nghiên cứu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2 Mục đích nghiên cứu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 Phương pháp nghiên cứu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.4 Ý nghĩa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2 Ước lượng hệ số hồi quy dạng: Y = aX + b, sử dụng phương pháp bình phương cực tiểu 7 2.1 Bài toán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 Giải thuật giải bài toán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3 Source code Java giải bài toán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.4 Màn hình kết quả chạy chương trình . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3 Tính nghiệm gần đúng 11 3.1 Bài toán: Viết chương trình tìm nghiệm gần đúng của chương tr ình. . . . . . . . . . . . . . . . . . . . 11 3.2 Giải thuật giải bài toán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3 Điều kiện hội tụ và sai số . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.4 Source code Java giải bài toán ( áp dụng cho hàm f(x) = x 5 − x − 1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.5 Màn hình kết quả chạy chương trình . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.5.1 So sánh kết quả 2 phương pháp và rút ra nhận xét . . . . . . . . . . . . . . . . . . . . . . . . 19 Kết luận 20 Tài liệu tham khảo 21 3 LỜI NÓI ĐẦU Ngày này cùng với sự phát triển vượt bậc của khoa học kỹ thuật thì công nghệ thông tin là một trong những lĩnh vực có nhiều đóng góp thiết thực nhất, công nghệ thông tin có mặt trong hầu hết các lĩnh vực của cuộc sống đặc biệt công nghệ thông tin là một công cụ hỗ trợ rất đắc lực trong việc giải các bài toán. Chúng ta dễ dàng thấy được việc đưa tin học vào trong các bài toàn giúp ta có thể giải bài toán một cách nhanh chóng và chính xác. Java là một nền tảng phát triển các ứng dụng phần mềm có vị trí rất lớn trong những năm cuối thế kỉ 20, đầu thế kỉ 21. Đánh dấu sự trưởng thành của mô hình lập trình hướng đối tượng, nó được coi là một nền tảng mang tính cách mạng trong ngành phần mềm. Mô hình máy ảo Virtual Machine đã cho phép các ứng dụng viết bằng Java có thể chạy trên nhiều hệ điều hành khác nhau Trong đồ án này,em dùng ngôn ngữ lập trình Java trên công cụ hỗ trợ Eclipse để ứng dụng vào môn học giải tích số,cụ thể là áp dụng vào những bài toán sau: “1.Ước lượng hệ số hồi quy dạng Y =aX + b, sử dụng phương pháp bình phương cực tiểu” và “Viết chương trình tính nghiệm gần đúng của phương trình bằng phương pháp chia đôi và phương pháp tiếp tuyến” Do thời gian gấp rút, chưa có nhiều kinh nghiệm nên bài báo cáo khộng thể tránh những sai sót. Mong thầy cô, bạn đọc góp ý để bài báo cáo được trọn vẹn hơn. Và cuối cùng em xin chân thành cảm ơn các thầy cô giáo trong viện đã chỉ dạy em trong thời gian qua, đặc biệt thầy Nguyễn Thái Bình đã trực tiếp chỉ dẫn tận tình giúp đỡ em hoàn thành báo cáo này. Hà Nội, Ngày 25 tháng 4 năm 2014 Nguyễn Tuấn Anh 4 Chương 1 Phần Mở Đầu 1.1 Đối tượng nghiên cứu Đề tài này em tập trung vào các nội dung: • Tìm hiểu, nghiên cứu ngôn ngữ lập trình JavaTìm hiểu các dạng bài toán của môn giải tích sốTìm hiểu công cụ xây dựng chương trình 1.2 Mục đích nghiên cứu Hiểu được cách xây dựng chương trình trong Java, các cấu trúc lớp, đối tượng, các hàm , các bước xây dựng chương trình giải bài toán thực tế trên máy tính. Biết cách sử dụng phần mềm Eclipse để ứng dụng giải các bài toán giải tích số 1.3 Phương pháp nghiên cứu Dựa vào giáo trình giải tích số của thầy Lê Trọng Vinh kết hợp với sự mạnh mẽ của ngôn ngữ Java, e đã xây dựng được chương trình giải bài toán trên công cụ Eclipse. 5 1.4 Ý nghĩa Chương trình sẽ giải được hầu hết các bài toán thông dụng, đồng thời cũng là tài liệu quý giá cho sinh viên rong việc học tập và nghiên cứu chuyên sâu sau này. 6 Chương 2 Ước lượng hệ số hồi quy dạng: Y = aX + b, sử dụng phương pháp bình phương cực tiểu 2.1 Bài toán Đề bài: Viết chương trình ước lượng hệ số hồi quy theo mô hình tuyến tính có dạng Y = aX + b, sử dụng phương pháp bình phương cực tiểu, trong đó X và Y là các biến ngẫu nhiên. Bộ số liệu quan sát của X và Y được lưu trong file text data.text theo quy tắc các giá trị của X lưu trên 1 dòng, các giá trị của Y lưu trên một dòng. Các giá trị ngăn cách nhau bởi dấu cách. • Input: File data.txt với nội dung: – Hàng 1: số phần tử n của X(hay của Y) – Hàng 2: thông tin các giá trị của X – Hàng 2: thông tin các giá trị của Y • Output: màn hình Console hiển thị kết quả chương trình. 2.2 Giải thuật giải bài toán 7 2.3 Source code Java giải bài toán package doan; import java.io.FileInputStream; //import java.io.FileNotFoundException; import java.io.IOException; import java.util.Scanner; public class bai11_doan { private static Scanner scan; private static int n; private static float[] x; private static float[] y; public static void main(String[] args) throws IOException { scan = new Scanner(new FileInputStream("D:\\data.txt")); n=scan.nextInt(); x = new float[n]; y = new float[n]; float tongx=0,tongy=0; float tongtichxy = 0; float tongxbinhphuong = 0; for(int i = 0;i<n;i++){ x[i]=scan.nextFloat(); } for(int i = 0;i<n;i++){ y[i] = scan.nextFloat(); } for(int i = 0;i<n;i++){ tongx = tongx +x[i]; tongy = tongy +y[i]; //tichxy = x[i]*y[i]; tongtichxy = tongtichxy + x[i]*y[i]; 8 tongxbinhphuong = tongxbinhphuong + x[i]*x[i]; } float tbx = tongx/n; //for(int i=0;i<n;i++){ // y[i] = scan.nextFloat(); // tongy = tongy +y[i]; //} float tby = tongy/n; float a = (tongtichxy - n*tbx*tby)/(tongxbinhphuong - n*tbx*tbx); float b = tby - a*tbx; System.out.println("trung binh cua x[i] = "+tbx); System.out.println("trungbinh cua y[i] = "+tby); System.out.println("tong cua cac tich x[i]*y[i] = "+tongtichxy); System.out.println("tong cua cac x[i]^2 = "+tongxbinhphuong); System.out.println("he so a = "+a); System.out.println("he so b = "+b); } } 9 2.4 Màn hình kết quả chạy chương trình 10 [...]... 3 Tính nghiệm gần đúng 3.1 Bài toán: Viết chương trình tìm nghiệm gần đúng của chương trình Bài toán 1: phương pháp chia đôi Đề bài: Viết chương trình tìm nghiệm gần đúng bằng phương pháp chia đôi • Input: hàm F(x ), đạo hàm F’(x ), khoảng phân li nghiệm [a b] • Output: nghiệm của chương trình Bài toán 2: phương pháp tiếp tuyến Đề bài: Viết chương trình tìm nghiệm gần đúng bằng phương pháp tiếp tuyến... chương trình Kết quả phương pháp chia đôi 18 Kết quả phương pháp tiếp tuyến 3.5.1 So sánh kết quả 2 phương pháp và rút ra nhận xét Phương pháp chia đôi Ưu điểm của phương pháp chia đôi là thuật toán đơn giản do đó dễ lập trình Tuy nhiên do phương pháp chia đôi sử dụng rất ít thông tin về hàm f(x) nên tốc độ hội tụ khá chậm và chỉ sử dụng để giải bộ phương trình Phương pháp tiếp tuyến Tuy thuật toán phương. .. )*(xk + 1 - xk ) => xk + 1 = xk - 3.3 f (xk ) f (xk ) Điều kiện hội tụ và sai số Phương pháp chia đôi Giả sử [ak bk ] là khoảng phân li nghiệm sau k lần lặp Nếu |ak - bk | < epsilon cho trước thì nghiệm gần đúng của phương trình là c = (ak + bk )/2 Phương pháp tiếp tuyến Giả sử [a,b] là khoảng nghiệm của phương trình f(x) = 0 Đạo hàm f’(x ), f”(x) liên tục, không đổi dấu, không tiêu diệt trên [a,b] Khi... toán phương pháp tiếp tuyến phức tạp hơn so với thuật toán phương pháp chia đôi, đòi hỏi phải tính đạo hàm f’(x ), nhưng lại tỏ ra hiệu quả hơn, vòng lặp ít hơn do tốc độ hội tụ nghiệm nhanh, hiệu quả trong việc giải các phương trình phức tạp 19 3.6 Kết luận 20 Tài liệu tham khảo [1] Họ và tên tác gi , năm, Tên sách NXB [2] Họ và tên tác gi , năm, Tên sách NXB [3] Họ và tên tác gi , năm, Tên sách NXB... tuyến tại A0 (x0 ,f(x0 )) cắt trục x tại hoành độ x1 Tiếp tuyến tại A1 (x1 ,f(x1 )) cắt trục x tại hoành độ x2 , Tiếp tuyến tại Ak (xk ,f(xk )) cắt trục x tại hoành độ xk , , 12 Cứ tiếp tục quá trình trên ta có thểtiến dần đến nghiệm µ của phương trình Phương trình tiếp tuyến tại Ak (xk ,f(xk )): y - f(xk ) = f’(xk )*(x - xk ) Tiếp tuyến cắt trục x tại điểm có toạ độ (xk + 1, 0) Do vậy: 0 - f(xk ) = f’(xk... Input: hàm F(x ), đạo hàm F’(x ), ạo hàm F”(x ), khoảng phân li nghiệm [a b] • Output: nghiệm của chương trình 11 3.2 Giải thuật giải bài toán Ý tưởng Dựa vào sự hội tụ của khoảng phân li nghiệm [a b] để tìm nghiệm gần đúng Giải sơ bộ: Đi tìm một khoảng đủ bé để chứa nghiệm • Vây nghiệm: Tìm đoạn bé chưa các nghiệm • Tách nghiệm: Tách các đoạn b , mỗi đoạn chỉ chứa một nghiệm Giải kiện toàn: Giải nghiệm... [a,b] sao cho f(x0 ))*f”(x0 ) > 0 thì quá trình lặp sẽ hội tụ đến nghiệm 3.4 Source code Java giải bài toán ( áp dụng cho hàm f(x) = x5 − x − 1) Code tìm nghiêm gần đúng bằng phương pháp chia đôi package doan; import java. util.*; public class bai1 { static float ex=(float) 0.001; private static float ham(float x){ return x*x*x*x*x - x -1 ; 13 } public static float DaoHam1(float x) { return 5*x*x*x*x -. .. if(ham(a)*ham(c)

Ngày đăng: 07/05/2014, 15:01

Từ khóa liên quan

Mục lục

  • LỜI MỞ ĐẦU

  • Phần Mở Đầu

    • Đối tượng nghiên cứu

    • Mục đích nghiên cứu

    • Phương pháp nghiên cứu

    • Ý nghĩa

    • Ước lượng hệ số hồi quy dạng: Y = aX + b, sử dụng phương pháp bình phương cực tiểu

      • Bài toán

      • Giải thuật giải bài toán

      • Source code Java giải bài toán

      • Màn hình kết quả chạy chương trình

      • Tính nghiệm gần đúng

        • Bài toán: Viết chương trình tìm nghiệm gần đúng của chương trình.

        • Giải thuật giải bài toán

        • Điều kiện hội tụ và sai số

        • Source code Java giải bài toán ( áp dụng cho hàm f(x) = x5 - x - 1 )

        • Màn hình kết quả chạy chương trình

          • So sánh kết quả 2 phương pháp và rút ra nhận xét

          • Kết luận

          • Tài liệu tham khảo

Tài liệu cùng người dùng

Tài liệu liên quan