Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 108 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
108
Dung lượng
1,79 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN VĂN ĐỒNG XÂY DỰNG HỆ THỐNG ĐẠI SỐ MÁY TÍNH XỬ LÝ BIỂU THỨC TỐN HỌC LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà nội – 2016 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN VĂN ĐỒNG XÂY DỰNG HỆ THỐNG ĐẠI SỐ MÁY TÍNH XỬ LÝ BIỂU THỨC TỐN HỌC Ngành: Chun ngành: Mã số: Công nghệ thông tin Kỹ thuật phần mềm 60480103 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS.TRƯƠNG ANH HOÀNG Hà nội- 2016 LỜI CẢM ƠN Trước tiên em xin chân thành cảm ơn PGS.TS.Trương Anh Hồng tận tình hướng dẫn, giúp đỡ em suốt trình thực luận văn tốt nghiệp Em xin chân thành cảm ơn thầy cô giáo khoa Công nghệ Thông tin, trường Đại học Công nghệ, Đại học Quốc gia Hà Nội, người tận tình truyền đạt kiến thức, quan tâm, động viên suốt thời gian học tập nghiên cứu Trường Nhân cho phép em gửi lời cảm ơn tới gia đình, bạn bè đặc biệt nhóm bạn học lớp K20CNPM, lớp chuyên ngành công nghệ phần mềm thường xuyên quan tâm, giúp đỡ, chia sẻ kinh nghiệm, cung cấp tài liệu hữu ích suốt thời gian học tập trường Hà Nội, tháng 06 năm 2016 Tác giả luận văn Nguyễn Văn Đồng LỜI CAM ĐOAN Tôi xin cam đoan luận văn “Xây dựng hệ thống đại số máy tính xử lý biểu thức tốn học” cơng trình nghiên cứu tơi hướng dẫn khoa học PGS.TS.Trương Anh Hoàng, tham khảo nguồn tài liệu rõ trích dẫn danh mục tài liệu tham khảo Các nội dung công bố kết trình bày luận văn trung thực chưa công bố cơng trình Hà Nội, tháng 06 năm 2016 Tác giả luận văn Nguyễn Văn Đồng MỤC LỤC LỜI CẢM ƠN LỜI CAM ĐOAN Danh mục hình ảnh Danh mục bảng Danh mục chữ viết tắt Mở đầu Tóm tắt luận văn Chương Kiến thức tảng 1.1 Ngôn ngữ giả mã 1.2 Tính tốn biểu thức chương trình tốn học 1.3 Khái niệm toán học 1.3.1 Số nguyên 1.3.2 Số hữu tỉ Chương Cấu trúc biểu thức đại số 2.1 Cây biểu thức .t biểu thức đại số dạng hữu tỉ hóa; 22 Local Variables m, n, r, s; Begin m := 𝑁𝑢𝑚𝑒𝑟𝑎𝑡𝑜𝑟(𝑢); r := 𝐷𝑒𝑛𝑜𝑚𝑖𝑛𝑎𝑡𝑜𝑟(𝑢); n := 𝑁𝑢𝑚𝑒𝑟𝑎𝑡𝑜𝑟(𝑣); s := 𝐷𝑒𝑛𝑜𝑚𝑖𝑛𝑎𝑡𝑜𝑟(𝑣); if r = and s = then Return(u + v) else Return(𝑅𝑎𝑡𝑖𝑜𝑛𝑎𝑙𝑖𝑧𝑒𝑆𝑢𝑚(𝑚 ∗ 𝑠, 𝑛 ∗ 𝑟)/(𝑟 ∗ 𝑠)) End Phụ lục 28: Các phương thức 𝑛𝑢𝑚𝑒𝑟𝑎𝑡𝑜𝑟, 𝑑𝑒𝑛𝑜𝑚𝑖𝑛𝑎𝑡𝑜𝑟, 𝑟𝑎𝑡𝑖𝑜𝑛𝑎𝑙𝐺𝑅𝐸, 𝑟𝑎𝑡𝑖𝑜𝑛𝑎𝑙𝐸𝑥𝑝𝑎𝑛𝑑, 𝑟𝑎𝑡𝑖𝑜𝑛𝑎𝑙𝑧𝑒𝐸𝑥𝑝𝑟𝑒𝑠𝑠𝑖𝑜𝑛, 𝑟𝑎𝑡𝑖𝑜𝑛𝑎𝑙𝑧𝑒𝑆𝑢𝑚 Phương thức 𝑛𝑢𝑚𝑒𝑟𝑎𝑡𝑜𝑟 public static AnyNode numerator(AnyNode u) { if (u.getKey() == -37) // u la so huu ti return u.operand(1); else if (u.getKey() == -5) { // u la luy thua if ((u.exponent().getKey() == && u.exponent().getValue() < 0) || (u.exponent().getKey() == -37 && (u.exponent().numerator() < || u.exponent().denominator() < 0))) { // so mu cua u la so nguyen hoac phan so co gia tri < return new AnyNode(0, 1); } else // so mu cua u > return u; } else if (u.getKey() == -3) { AnyNode v = u.operand(1); AnyNode t = u.divNode(1); return Simplify.simplify(new AnyNode(-3, numerator(v), numerator(t))); } else return u; } Phương thức 𝑑𝑒𝑛𝑜𝑚𝑖𝑛𝑎𝑡𝑜𝑟 public AnyNode denominator(AnyNode u) { if (u.getKey() == -37) // u la so huu ti return u.operand(2); else if (u.getKey() == -5) { // u la luy thua 23 if ((u.exponent().getKey() == && u.exponent().getValue() < 0)||(u.exponent().getKey() == -37 && (u.exponent().numerator() < || u.exponent().denominator() < 0))) // so mu cua u la so nguyen hoac phan so co gia tri < return Simplify.simplify(new AnyNode(-5, u, new AnyNode(0, -1))); else // so mu cua u > return new AnyNode(0, 1); } else if (u.getKey() == -3) { AnyNode v = u.operand(1); AnyNode t = u.divNode(1); return Simplify.simplify(new AnyNode(-3, denominator(v), denominator(t))); } else if (u.getKey() == -38) return u; else return new AnyNode(0, 1); } Phương thức 𝑟𝑎𝑡𝑖𝑜𝑛𝑎𝑙𝐺𝑅𝐸 public boolean rationalGre(AnyNode u, ArrayList s) { GeneralPolynomial gpNumerator = new GeneralPolynomial(numerator(u), s); GeneralPolynomial gpDenominator = new GeneralPolynomial(denominator(u),s); if (gpNumerator.isPoly && gpDenominator.isPoly) return true; else return false; } Phương thức 𝑟𝑎𝑡𝑖𝑜𝑎𝑙𝐸𝑥𝑝𝑎𝑛𝑑 public AnyNode rationalExpand(AnyNode u) { AnyNode numerator = numerator(u); AnyNode denominator = denominator(u); if (!isExpanded(numerator)) { numerator = expand(numerator); } if (!isExpanded(denominator)) { denominator = expand(denominator); } if (denominator.getKey() == && denominator.getValue() == 0) return new AnyNode(-38); else { AnyNode result = new AnyNode(-3, numerator, new AnyNode(-5, denominator, new AnyNode(0, -1))); return Simplify.simplify(result); } } 24 Phương thức 𝑟𝑎𝑡𝑖𝑜𝑛𝑎𝑙𝑧𝑒𝐸𝑥𝑝𝑟𝑒𝑠𝑠𝑖𝑜𝑛 public AnyNode rationalizeExpression(AnyNode u) { if (u.getKey() == -5) { AnyNode f = u.operand(1); AnyNode result = new AnyNode(-5, rationalizeExpression(f), u.operand(2)); return result; } else if (u.getKey() == -3) { AnyNode f = u.operand(1); AnyNode g = Simplify.simplify(new AnyNode(-3, u, new AnyNode(5, f,new AnyNode(0, -1)))); AnyNode result = Simplify.simplify(new AnyNode(-3, rationalizeExpression(f), rationalizeExpression(g))); return result; } else if (u.getKey() == -1) { AnyNode f = u.operand(1); AnyNode g = rationalizeExpression(f); AnyNode r = rationalizeExpression(Simplify.simplify(new AnyNode(-1,u, new AnyNode(-3, new AnyNode(0, -1), f)))); return rationalizeSum(g, r); } else return u; } Phương thức 𝑟𝑎𝑡𝑖𝑜𝑛𝑎𝑙𝑧𝑒𝑆𝑢𝑚 private AnyNode rationalizeSum(AnyNode u, AnyNode v) { AnyNode m = numerator(u); AnyNode r = denominator(u); AnyNode n = numerator(v); AnyNode s = denominator(v); if (r.getValue() == && s.getValue() == 1) // return m+n return (Simplify.simplify(new AnyNode(-1, m, n))); else { AnyNode t1 = rationalizeSum( Simplify.simplify(new AnyNode(-3, m, s)), Simplify.simplify(new AnyNode(-3, n, r))); AnyNode t2 = new AnyNode(-5, Simplify.simplify(new AnyNode(-3, r, s)), Simplify.simplify(new AnyNode(0, -1))); AnyNode result = new AnyNode(-3, t1, t2); return Simplify.simplify(result); } } Phụ lục 29: Các phương thức SMC Phương thức 𝑡𝑎𝑦𝑙𝑜𝑟𝑆𝑒𝑟𝑖𝑒𝑠 public static AnyNode taylorSeries(AnyNode expression, AnyNode var, int n, int a) { AnyNode result = new AnyNode(-1); for (int k = 0; k