SỬ DỤNG MAPLE VÀ C# XÂY DỰNG ỨNG DỤNG GIẢI VÀ BIỆN LUẬN PHƯƠNG TRÌNH, HỆ PHƯƠNG TRÌNH BẬC NHẤT

17 1.4K 6
SỬ DỤNG MAPLE VÀ C# XÂY DỰNG ỨNG DỤNG GIẢI VÀ BIỆN LUẬN PHƯƠNG TRÌNH, HỆ PHƯƠNG TRÌNH BẬC NHẤT

Đ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

Đại Học Quốc Gia TP.HCM Trường Đại Học Công Nghệ Thông Tin TIỂU LUẬN MÔN LẬP TRÌNH SYMBOLIC Đề tài: SỬ DỤNG MAPLE VÀ C# XÂY DỰNG ỨNG DỤNG GIẢI VÀ BIỆN LUẬN PHƯƠNG TRÌNH, HỆ PHƯƠNG TRÌNH BẬC NHẤT GVHD: PGS.TS. ĐỖ VĂN NHƠN Học viên: ĐỖ ĐÌNH THỦ Lớp: Cao học khóa 6 Mã số: CH1101140 Tp Hồ Chí Minh, tháng 1 năm 2013 NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Sử dụng Maple và C# xây dựng ứng dụng giải và biện luận phương trình, hệ phương trình bậc nhất Page 2 LI CM ƠN Chúng em xin chân thành cám ơn thầy, PGS. TS. Đỗ Văn Nhơn đã tận tình giảng dạy chúng em trong quá trình học tập để thực hiện bài tiểu luận này. Chúng em xin chân thành cám ơn Phòng Đào tạo sau Đại học, trường Đại Học Khoa Học Công nghệ Thông tin – Đại học Quốc Gia Tp.HCM đã tạo điều kiện thuận lợi cho em trong học tập và công tác. Chúng em xin chân thành cám ơn quý Thầy Cô trong Trường đã tận tình giảng dạy, trang bị cho chúng em những kiến thức quý báu trong suốt thời gian học. Xin chân thành cám ơn người thân và bạn bè đã ủng hộ, giúp đỡ tôi trong thời gian học tập và nghiên cứu. Học viên thực hiện, Đỗ Đình Thủ Tháng 01/ 2013 Sử dụng Maple và C# xây dựng ứng dụng giải và biện luận phương trình, hệ phương trình bậc nhất Page 3 MỤC LỤC Sử dụng Maple và C# xây dựng ứng dụng giải và biện luận phương trình, hệ phương trình bậc nhất Page 4 I. GIỚI THIỆU Maple là một phần mềm tính toán hình thức (formal computation) do Đại học Waterloo của Canada phát triển từ 1980 với mong muốn giúp máy tính có thể làm việc với được với các ký hiệu toán học truyền thống của con người (đạo hàm, tích phân, ma trận, định thức, …). Ngày nay, Maple còn làm được nhiều hơn rất nhiều: hỗ trợ các tính toán hình thức, tính toán số học với độ chính xác rất lớn, giải và biện luận các phương trình, hệ phương trình, vẽ đồ thị 2 chiều, 3 chiều, …Ngoài ra, Maple cũng hỗ trợ cho việc lập trình cấp cao. Cùng với Matlap, Mathematica, Maple cho người dùng thêm một sự lựa chọn tốt trong lập trình tính toán hình thức. Trong phạm vi tiểu luận môn học, do thời gian eo hẹp không phát triển nhiều thủ tục nên chỉ có thể phát triển hoàn chỉnh 1 package hỗ trơ giải và biện luận phương trình và hệ phương trình bậc nhất. Ứng dụng này sẽ là cơ sở để phát triển những package khác trong nhiều lĩnh vực áp dụng khi muốn sử dụng Maple với .Net mà ở đây sử dụng C#. Sử dụng Maple và C# xây dựng ứng dụng giải và biện luận phương trình, hệ phương trình bậc nhất Page 5 II. GIẢI VÀ BIỆN LUẬN PHƯƠNG TRÌNH BẬC NHẤT 1. Phát biểu và phân tích bài toán Cho phương trình (PT) bậc nhất có 1 ẩn, các hệ số có chứa 1 tham số m. Hãy giải và biện luận PT đã cho theo tham số m. Ví dụ với PT: (2m -1)x -2 = 4mx + m. Với bài toán trên ta có thể sử dụng Maple để giải quyết tuy nhiên trong quá trình xử lý cần lưu ý vài đặt điểm sau ngoài việc sử dụng thuật toán giải và biện luận PT bậc nhất đã biết: - Kiểm tra chắc chắn PT nhập vào là PT bậc nhất theo x, có 1 tham số m. - Cần chuyển chương trình về dạng: ax + b = 0. - Các hệ số có thể có bậc bất kỳ. Vậy khi người dùng nhập vào PT bậc nhất 1 ẩn bất kỳ, đều có thể biện luận được. 2. Cấu trúc dữ liệu Cần tổ chức các cấu trúc dữ liệu như sau: - pt: phương trình. - a,b: các hệ số a,b. - ma: kiểu tập hợp là nghiệm của PT a = 0, theo m. - mb: giá trị của hệ số b khi a =0. - bac: kiểm tra bậc của phương trình. 3. Thủ tục Thuật giải: GiaiBienLuanPTBN(ptbn) local variables: a,b,ma,mb,bac,mai,pt; Begin: Bước 0: pt := lhs(ptbn) – rhs(ptbn) = 0. Bước 1: bac : = bậc của PT theo ẩn x. if bac > 1 then //PT không phải là PT bậc nhất. Sử dụng Maple và C# xây dựng ứng dụng giải và biện luận phương trình, hệ phương trình bậc nhất Page 6 Kết thúc. end if. Bước 2: a:= hệ số a của PT. b:= hệ số b của PT. ma:= tập nghiệm của PT a = 0 theo ẩn m. if card(ma) > 0 then foreach mai in ma do mb:= giá trị của b khi thay m = mai if mb = 0 then //với mai PT có vô số nghiệm else //với mai PT vô nghiệm end if. end do. Với mai không thuộc tập ma, PT đã cho có nghiệm x = -b/a. end if. end 4. Cài đặt chương trình: Thủ tục được cài đặt trong package CH1101140, tên thủ tục là GiaiBienLuanPTNB(ptbn) 5. Chạy thử với dữ liệu mẫu Ví dụ: Cho PT (2m -1)x -2 = 4mx + m. pt : = -(2m + 1)x -2-m =0. bac := 1. a := -(2m +1). b:= -2 –m. Sử dụng Maple và C# xây dựng ứng dụng giải và biện luận phương trình, hệ phương trình bậc nhất Page 7 ma := {-1/2}. ->mb := -3/2. Với m = -1/2 PT vô nghiệm với m # -1/2 PT có nghiệm x =- (2 + m)/(2m +1). Giải trong Maple > > Khi tham so m la -1/2 thi phuong trinh da cho vo nghiem. Khi tham so m khac -1/2 thi nghiem cua phuong trinh la x = -(-2-m)/(-2*m-1). > Sử dụng Maple và C# xây dựng ứng dụng giải và biện luận phương trình, hệ phương trình bậc nhất Page 8 III. GIẢI VÀ BIỆN LUẬN HỆ PHƯƠNG TRÌNH BẬC NHẤT 1. Phát biểu và phân tích bài toán bài toán Cho hệ phương trình (HPT) bậc nhất 2 ẩn có dạng: {a1x + b1y + c =0, a2x + b2y + c2 = 0}. Các hệ số có chứa tham số m. Hãy giải và biện luận HPT trên theo m. Cũng như PT bậc nhất ta phải quy định HPT nhập vào là HPT bậc nhất 2 ẩn số. Ta cần chuyển HPT về dạng vế trái là đa thức vế phải bằng 0. Sau đó ta sẽ biện luận HPT theo các định thức D,Dx,Dy. 2. Cấu trúc dữ liệu Ta cần lưu trữ các biến sau: - pt1, pt2: các phương trình của hệ phương trình. - a1,a2,b1,b2,c1,c2: các hệ số của HTP. - D,Dx,Dy các định thức D,Dx,Dy. - bacx, bacy: bậc của từng PT theo biến x,y. - nghiem: tập nghiệm của D = 0 theo m. - valueDx,valueDy giá trị Dx,Dy tương ứng khi D = 0 3. Thủ tục Thuật giải: GiaiBienLuanHPTBN(ptbn1, ptbn2) local a1,b1,c1,a2,b2,c2,D, Dx, Dy, nghiem, no, valueDx, valueDy, bacx, bacy; Begin: Bước 0: pt1 := lhs(ptbn1) - rhs(ptbn1) = 0; pt2 := lhs(ptbn2) - rhs(ptbn2) = 0; Bước 1: foreach pt in hệ phương trình do bacx := bậc của phương trình theo biến x. bacy := bậc của phương trình theo biến y. Sử dụng Maple và C# xây dựng ứng dụng giải và biện luận phương trình, hệ phương trình bậc nhất Page 9 if bacx > 1 or bacy > 1 then //HPT không phải là bậc nhất theo biến x,y Kết thúc end if. end do. Bước 2: Tính lần lượt các hệ số a1,b1,c1,a2,b2,c2 của PT pt1 và pt2 D := D := b1*a2 - a1*b2; Dx := c1*b2 - b1*c2; Dy :=a1*c2 - c1*a2; nghiem := {nghiệm của PT D = 0 theo m} if card (nghiem) > 0 then foreach no in nghiem do valueDx := thay m = no vào Dx valueDy := thay m = no vào Dy if valueDx = valueDy =0 then //HPT có vô số nghiệm else //HPT vô nghiệm end if. if m <> no then //HPT có nghiệm x = Dx/D, y = Dy/D. end if. end do end if End 4. Cài đặt chương trình: Thủ tục được cài đặt trong package CH1101140, tên thủ tục là GiaiBienLuanHPTNB(ptbn1, ptbn2) Sử dụng Maple và C# xây dựng ứng dụng giải và biện luận phương trình, hệ phương trình bậc nhất Page 10 [...]... txtInput2.Text; expr += ");"; } 5 Demo Giải và biện luận PT (2-m)*x – 2m = 0 Sử dụng Maple và C# xây dựng ứng dụng giải và biện luận phương trình, hệ phương trình bậc nhất Page 15 Giải và biện luận HPT {m*x – m + y = 0, m*x – y + 8 = 0} Sử dụng Maple và C# xây dựng ứng dụng giải và biện luận phương trình, hệ phương trình bậc nhất Page 16 V KẾT LUẬN Việc sử dụng công cụ mạnh như Maple kết hơp tốt với môi trường... Ví dụ: Giải và biện luận HTP sau > Voi m = -I*2^(1/2) thi he phuong trinh vo nghiem Voi m = I*2^(1/2) thi he phuong trinh vo nghiem Khi gia tri cua m khac: -I*2^(1/2), I*2^(1/2), nghiem cua he phuong trinh la x = 1/(2+m^2) va y = (m*(m-1)+2)/(2+m^2) Sử dụng Maple và C# xây dựng ứng dụng giải và biện luận phương trình, hệ phương trình bậc nhất Page 11 IV XÂY DỰNG ỨNG DỤNG TRÊN C# 1 Kết nối với Maple. .. MapleEngine.EvalMapleStatement(kv, Encoding.ASCII.GetBytes("with(CH1101140):")); } catch (Exception) { } InitializeComponent(); } Sử dụng Maple và C# xây dựng ứng dụng giải và biện luận phương trình, hệ phương trình bậc nhất Page 14 - Nếu người dùng chỉ nhập 1 phương trình thì sẽ gọi thủ tục GiaiBienLuanPTBN(pt) với phương trình lấy từ 1 trong 2 textBox có dữ liệu - Nếu người dùng nhập vào cả hai phương. .. Bước liên kết này sẽ nạp luôn package cần dùng vào chương trình - public DoDinhThu() { //Tạo liên kết tới Mpale ngay khi MapleEngine.MapleCallbacks cb; byte[] err = new byte[2048]; IntPtr kv; khởi tạo form Sử dụng Maple và C# xây dựng ứng dụng giải và biện luận phương trình, hệ phương trình bậc nhất Page 13 - String[] argv = new String[2]; argv[0] = "maple" ; argv[1] = "-A2"; cb.textCallBack = cbText;... ref MapleCallbacks cb, IntPtr data, IntPtr info, byte[] err); [DllImport(@"maplec.dll")] public static extern IntPtr EvalMapleStatement(IntPtr kv, byte[] statement); [DllImport(@"maplec.dll")] public static extern IntPtr IsMapleStop(IntPtr kv, IntPtr obj); [DllImport(@"maplec.dll")] public static extern void StopMaple(IntPtr kv); } } Sử dụng Maple và C# xây dựng ứng dụng giải và biện luận phương trình, . .. thú, bổ ích giúp cho chúng em có thể tạo ra những sản phẩm có ích phục vụ cho xã hội tốt hơn TP.HCM, ngày 01 tháng 02 năm 2013 Học viên thực hiện Đỗ Đình Thủ Sử dụng Maple và C# xây dựng ứng dụng giải và biện luận phương trình, hệ phương trình bậc nhất Page 17 ... và biện luận phương trình, hệ phương trình bậc nhất Page 12 2 Cấu trúc dữ liệu Ta sử dụng 2 textBox để nhận hai phương trình do người dùng nhập vào Mỗi textBox là 1 phương trình Để hiển thị kết quả từ maple ra giao diện trên C# ta dùng 1 richTextBox, cho phép hiển thị nhiều dòng 3 Giao diện chương trình 4 Các bước thực thi của chương trình - Chương trình sẽ tạo liên kết tới maple ngay trước khi khởi... giúp ích rất nhiều cho những ứng dụng trí tuệ nhân tạo Việc lập trình sẽ dễ hơn nếu chỉ dùng ngôn ngữ lập trình để giải quyết với số lớn (ví dụ về mã hóa) Ứng dụng này em sẽ mở rộng cho bài giải tam giác hay giải toán hình học sắp tới vì thời gian hạn hẹp không cho phép em hoàn thành nhiều chức năng cho dù có nhiều tham vọng từ ban đầu Xin chân thành cảm ơn Thầy đã giới thiệu và truyền đạt những kiến thức... bậc nhất Page 11 IV XÂY DỰNG ỨNG DỤNG TRÊN C# 1 Kết nối với Maple Để kết nối với Maple ta sử dụng lớp MapleEngine.cs using using using using using using System; System.Collections.Generic; System.Linq; System.Text; System.Runtime.InteropServices; System.ComponentModel; namespace DoDinhThu_LapTrinhSymbolic { static class MapleEngine { public delegate void TextCallBack(IntPtr data, int tag, IntPtr output);... cb.streamCallBack = null; cb.queryInterrupt = null; cb.callbackCallBack = null; - - try { kv = MapleEngine.StartMaple(2, argv, ref cb, IntPtr.Zero, IntPtr.Zero, err); - } catch (DllNotFoundException) { return; } catch (EntryPointNotFoundException) { return; } - - if (kv.ToInt64() == 0) { MessageBox.Show("Fatal Error, could not start Maple: " + System.Text.Encoding.ASCII.GetString(err, 0, Array.IndexOf(err, (byte)0)), . mà ở đây sử dụng C#. Sử dụng Maple và C# xây dựng ứng dụng giải và biện luận phương trình, hệ phương trình bậc nhất Page 5 II. GIẢI VÀ BIỆN LUẬN PHƯƠNG TRÌNH BẬC NHẤT 1. Phát biểu và phân tích. . Sử dụng Maple và C# xây dựng ứng dụng giải và biện luận phương trình, hệ phương trình bậc nhất Page 11 IV. XÂY DỰNG ỨNG DỤNG TRÊN C# 1. Kết nối với Maple Để kết nối với Maple ta sử dụng lớp MapleEngine.cs using. in hệ phương trình do bacx := bậc của phương trình theo biến x. bacy := bậc của phương trình theo biến y. Sử dụng Maple và C# xây dựng ứng dụng giải và biện luận phương trình, hệ phương trình bậc

Ngày đăng: 10/04/2015, 01:30

Từ khóa liên quan

Mục lục

  • I. GIỚI THIỆU

  • II. GIẢI VÀ BIỆN LUẬN PHƯƠNG TRÌNH BẬC NHẤT

    • 1. Phát biểu và phân tích bài toán

    • 2. Cấu trúc dữ liệu

    • 3. Thủ tục

    • 4. Cài đặt chương trình:

    • 5. Chạy thử với dữ liệu mẫu

    • III. GIẢI VÀ BIỆN LUẬN HỆ PHƯƠNG TRÌNH BẬC NHẤT

      • 1. Phát biểu và phân tích bài toán bài toán

      • 2. Cấu trúc dữ liệu

      • 3. Thủ tục

      • 4. Cài đặt chương trình:

      • 5. Chạy thử với dữ liệu mẫu

      • IV. XÂY DỰNG ỨNG DỤNG TRÊN C#

        • 1. Kết nối với Maple

        • 2. Cấu trúc dữ liệu

        • 3. Giao diện chương trình

        • 4. Các bước thực thi của chương trình

        • 5. Demo

        • V. KẾT LUẬN

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

Tài liệu liên quan