Đề tài của em là một trong những phần mém ứng dụng vẻ tin học trong trường học đó là khảo sát và vẽ đồ thị hàm số ở lớp 12, công việc này đối với các thầy cô dạy toán ở phô thông cụ thé
Trang 1BỘ GIÁO ĐỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM TP HÒ CHÍ MINH
KHOA TOÁN - TIN HỌC
Lê Văn Đoan
LUAN VAN TOT NGHIEP
GIAO VIEN HUONG DAN:
TS NGUYEN HUU THONG
THANG 9 NAM 2005
Trang 2PAI HOC
SP
Te mS cri mines
_BQ GIÁO DỤC & ĐÀO TAO
TRƯỜNG ĐẠI HỌC SƯ PHẠM TP HCM
KHOA TOÁN - TIN HỌC
GVHD : TS NGUYEN HỮU THONG
)|SVTH: = LÊVĂN DOAN
Trang 3Lời cảm ơn!
Sư Phạm TP HCM đã tận tâm, tận tình chi bảo, giảng day cho em nắm vững những kiến thức qua những năm tháng ngôi trên giảng đường Những kiến thức giảng dạy
đã được các thây, các cô sàng lọc, chọn lựa, tôm gọn dé truyền đạt cho chúng em
những kiến thức mới mẻ nhất, gọn gàng nhất và uyên thâm nhất Những kién thức đó
Sẽ là hành trang trong suốt cuộc đời giảng day và làm việc sau nay của em
Em xin cam ơn sâu sắc đến thay Nguyễn Hữu Thông, thay vừa là người giảng day, vừa là người hướng dân em làm luận văn Ngoài đời thay rất giản di, hiển từ, kiến thức Tin học sâu rộng chỉ bảo em tận tình, thay thường nêu những quan điểm,
nhận xét, đánh giá đây tâm huyết của mình cho bài luận văn của em để nó có thể
hoàn thiện như ngày hôm nay.
Xin chân thành cám ơn các bạn lớp 4T đã đóng góp, góp ý về bài luận văn của mình từ những chỉ tiết rất nhỏ, tạo cho minh những kinh nghiệm học tập để tự hoàn
thiện mình
v ` ~ 4 4 ¥ 2 ` =A ˆ v ` “ + ,
Mặc dù đã rat có gang dé hoàn thiện luận văn này, nhưng khong thể tránhkhỏi những khuyết điểm, vướng mac Vay em mong được các thay cô trong khoa xemxét, đánh giá, bô sung, cho luận văn của em hoàn chỉnh hơn
Cuéi cùng em không biết nói gì hơn em xin kính chúc tat cả các thay cô trong khoa Toán — Tin Trưởng Đại Học Sư Phạm TP HCM một sức khỏe doi dao, vui vẻ
và tràn đây hạnh phúc Chúc thay Thông luôn mạnh khoẻ dé tiếp tục giảng dạy thé hệ
dan em cua chúng em
Sinh vién:
LE VAN DOAN
Trang 4Chương I: Mở Đầu GVHD: Ts Nguyén Hữu Thông
Chương I:
MỞ ĐẦU
1 Lý do chọn đề tài :
Ngày nay công nghệ thông tin phát triên mạnh như vũ bão, nó xâm
chiếm hau hết mọi lĩnh vực :
Trong kinh tế : công ty, doanh nghiệp siêu thi,
Trong khoa học : vũ tru, vệ tinh, trong nghiên cứu sinh hoá, vật lý,
Trong trường học : Ứng dụng các phần mêm day học, phan mềm quan lý
học sinh, phần mềm ra đề thi trắc nghiệm,
Một trong số các lĩnh vực đó điền hình nhất ở đây là các phần mềm
ứng dụng trong giảng và dạy học Với sự hỗ trợ này không những làm cho
người giáo viên có thê dễ dàng, thuận tiện và đỡ mệt mỏi hơn trong việc
soạn giáo án và giảng dạy môn toán ở phô thông trung học cho học sinh
mà còn làm cho các em nắm bắt được bài nhanh hơn, dé hiểu hơn và hứng
thú hơn với các bài giảng mà giáo viên mang lại
Đề tài của em là một trong những phần mém ứng dụng vẻ tin học trong trường học đó là khảo sát và vẽ đồ thị hàm số ở lớp 12, công việc này đối với các thầy cô dạy toán ở phô thông cụ thé là toán lớp 12 là rat
quen thuộc, nhưng với hau hết các giáo viên trẻ mới vào nghề thì việc vẽ
đồ thị hàm số nhiều khi lai là một điều gì đó khó khăn khi vẽ đồ thị trên
bảng phan, bởi vì do họ chưa quen va chưa có kinh nghiệm vẽ hình trên
bang phan nhiều làm cho họ có thê hing túng khi vẽ hình nên đồ thị có thé
không được đẹp, hoặc không đúng như hàm cần khảo sát chăng hạn
đường vẽ không cong cho lắm, gãy khúc, hoặc đồ thị cắt phải tiệm cận
cho nên thay vì dé các thay cô mat thời gian trình bày các ví dụ trên bảng
SVTH : Lê Văn Doan Trang 1
Trang 5Chương I: Mở Đầu GVHD: Ts Nguyén Hữu Thông
về khảo sát và vẽ đô thị sau khi dạy cho các em học sinh lớp 12 bài : Các
bước để khảo sát và vẽ đồ thị của một số hàm số sơ cấp thì người giáo viên có thé dùng máy chiếu dé khảo sát và vẽ các hàm số thông qua phan
mềm này Như vậy với công việc mới này làm cho người giáo viên đỡ
một phan trong day học mà phần khảo sát và đô thị lại “dep” và “chính
xác” hơn so với khả năng dùng tay để viết và vẽ lên bảng, một cái ưu điểm nữa của phần mềm này là chí sau một khoảng thời gian rất ngắn khi
người dùng nhập các hệ số của một hàm số loại nào đó vào và bắm nút đề thi hành thì các bước khảo sát và vẽ đồ thị của hàm đó lập tức được thê
hiện day đủ trong chương trình theo các bước mà giáo viên đã dạy cho
các em, do đó các em có thể nhìn vào chương trình và để hình dung hơn
để tự mình thực hành khảo sát và vẽ lại trên giấy
Về giao diện (interface) của chương trình : Rất rõ ràng, thân thiện
rat dé sử dụng với bat cứ đối tượng nào, bởi vì chương trình chủ yếu được
viết bằng tiếng việt, dé thao tác (có thé chi cần dùng chuột riêng không
cần dùng bàn phím hoặc ngược lại) chăng hạn khi người dùng muốn vẽ một hàm số nào đó người dùng chỉ cần nhập các hệ số của hàm đó vào,
nhập khoảng vẽ và chỉ định màu (color) cho đồ thị sau đó bam nút dé
thực thi vẽ, chương trình lập tức sẽ vẽ cho chúng ta một ham số mà chúng
ta mong đợi mà không cần phải viết cú pháp hay câu lệnh gì phức tạp cả.
Thông thường ở phô thông là vẽ đồ thị trên mặt phang, nhưng ở đây với
chương trình này người dùng có thẻ vẽ trong không gian 3 chiều (3-D) chỉ
với một cái click chuột như vẽ trong mặt phang làm cho người dùng cụ thể là đối tượng học sinh có thê bao quát hình dung được hình ánh của đồ
thị một cách rõ ràng hơn.
2 Mục đích nghiên cứu đề tài :
SVTH : Lê Văn Doan Trang 2
Trang 6Chương I: Mở Đầu GVHD: Ts Nguyén Hữu Thong
- Nam bat được các thuật toán khảo sát những ham số sơ cấp ở phô thông trung học (cụ thẻ là lớp 12).
- Tìm hiểu khả nang làm việc của phần mềm Maple 9.5 trong ứng dụng vẽ
đồ thị các hàm sơ cấp ở phông thông trung học vào Visual Basic 6.0.
- Hỗ trợ các em lớp 12 trong việc khảo sát & vẽ các hàm sơ cấp dé các
em có thê học tốt hơn, nhanh hiéu hơn,
- Hỗ trợ giáo viên trong công tác giảng và đạy học toán ở phô thông trung
- Chương trình ngắn gọn dé sử dụng đối với học sinh, giúp cho học sinh
năm được bài một cách nhanh nhất, dé dàng nhất.
4 Nội dung của đề tài :
Được chia thành 5 chương sau :
Chương I : Mở đầu.
Chương IT: Tìm hiểu kỹ thuật nhúng Maple 9.5 trong VB 6.0
Chương LI: Cơ sở lý luận
Chương IV : Giới thiệu chương trình
Chương V: Đánh giá tong kết, hướng phát triển của đề tai.
SVTH : Lê Văn Doan Trang 3
Trang 7Chương IT: Ky Thugt Nhing GVHD: Ts Nguyén Hữu Thong
Chuong II:
NHUNG MAPLE VAO VB 6.0
I- Tim hiểu về Maple 9.5 :
1 Khai niém :
Maple 9.5 là một môi trường bao ham toàn diện cho sự khám
phá dạy học và các ứng dụng toán học Chúng ta có thẻ sử dụng Maple
dé giải quyết PDEs, tưởng tượng ra các quỹ đạo của phân tử hyđrô viết
lại thành mật mã các thông điệp, tính toán giá cả tùy ý, thuyết trình trên
các chuỗi Taylor, chạy các phân tích lỗi (error) trên dit liệu thí nghiệm
hay thực hiện bất kỳ một tác vụ khác mà có liên quan đến toán học.
Maple 9.5 chứa đựng hàng ngàn các hàm toán học Nhưng bạn
cũng có thê tạo các hàm tùy ý sử dụng ngôn ngữ lập trình Maple Một khi
bạn đã tạo một ứng dụng Maple, Maple 9.5 chứa các công cụ thực hiện nó
và xuât các kết quả tới các ứng dụng phân mềm khác
Maple 9.5 cung cấp cho người dùng với 2 trang giao điện Ca hai đều
cho truy xuất tới các dụng cụ toán học của Maple 9.5 và nam giữ các lợi thé của chức năng mới trong Maple 9.5
Giao điện chính của Maple 9.5 là hình sau :
SVTH : Lê Van Doan Trang 4
Trang 8Chương IT: Ky Thugt Nhing GVHD: Ts Nguyén Hữu Thong
` Monospaces
Ngoài những công việc như tính toán với các phép toán thông
thường : Cộng, trừ, nhân, chia các số thực (real), nguyên (integer) nó
còn cho phép chúng ta tính toán, xử lý các hàm phức tạp hơn : Hàm mũ
logarit, hàm lượng giác, tính đạo hàm, giải các phương trình bậc 2, 3,
4, theo biến x, y, M6t trong các tinh năng quan trọng nhất của maple
mà liên quan đến đẻ tài của em là nó còn có thé cho chúng ta vẽ đồ thị của
các hàm số từ các hàm sơ cấp ở phô thông cho đến các hàm phức tạp hơn
ma một số phần mềm không thê làm được Ở đây em chỉ nêu một số tính năng quan trọng của Maple 9.5 trong việc vẽ đồ thị hàm số.
Trong Maple 9.5, chang hạn người dùng muôn vẽ một ham sơ cap
y=f(x) trong mặt phăng Oxy (2D) dùng cú pháp sau :
SVTH : Lê Van Doan Trang 5
Trang 9Chương IT: KD Thugt Nhing GVHD: Ts Nguyén Hữu Thong
[>plot(f(x),x= XI X2);
rồi nhân Enter, Maple 9.5 sẽ vẽ cho chúng ta ham f(x) theo yêu cau trên
tức là nó sẽ vẽ đỏ thi f(x) trong khoảng hoành độ x; đến x ma chúng ta
giới hạn Còn vẽ trong môi trường 3D tức là không gian 3 chiều Oxyz thì
Trang 10Chương IT: Ky Thugt Nhing GVHD: Ts Nguyén Hữu Thong
Day là cú pháp và hình ảnh của ví du trên trong không gian 3 chiều
Oxyz (3D):
[>plot3d( x^3 + 3*x^2 + 4, x=-10 10,y=-10 10);
SVTH : Lê Van Doan Trang 7
Trang 11Chương IT: Ky Thugt Nhing GVHD: Ts Nguyén Hữu Thong
Bên cạnh vẽ đồ thị ra Maple còn có thé tính được dao hàm cấp 1,2, của các hàm số, dé tính được đạo ham, trong Maple 9.5 chúng ta
Kết quả thu được sau khi nhấn Enter :
SVTH : Lê Van Doan Trang 8
Trang 12Chương IT: Ky Thugt Nhing GVHD: Ts Nguyén Hữu Thong
9
Sx” -6x-7
Trên đây giới thiệu sơ qua một số tinh năng quan trong của Maple 9.5 trong việc khảo sát đô thị ( tính đạo hàm, vẽ đồ thị ) Như vậy đối với
chúng ta, những người thường xuyên làm việc với máy tính cụ thé là
thường xuyên làm việc với Maple thì những câu lệnh, cú pháp trong
Maple thì quả là rất quen thuộc Nhưng chúng ta hãy đặt ra câu hỏi đối
với các em học sinh phô thông : Liệu các em có thé nam bắt được dé dang
ngay những cú pháp, hay câu lệnh trên không khi ma chưa một lần các em
làm việc với Maple vì nhiều lý do không cho phép ?
Đề tài của em giúp cho các em có thê khảo sát và vẽ đồ thị của các hàm số sơ cấp một cách nhanh nhất rõ ràng nhất và đặc biệt là đơn giản
nhất.
Đề có được các tính năng của Maple 9.5 em đã phải đọc tài liệu liên
quan đến Maple và em biết được rằng trong Maple 9.5 còn có hỗ trợ một
số ngôn ngữ lập trình cấp cao như : C, Java và Visual Basic, một ý tưởng
được đặt ra cho em là dùng ngôn ngữ Visual Basic 6.0 lập trình giao diện
và nhúng (embed) các module của Maple vẻ vẽ đồ thị vào Visual Basic.
Tại sao em lại chọn ngôn ngữ Visual Basic 6.0 dé thực hiện nhúng
vào Maple 9.5 chứ không phải là C hay Java, đó là bởi vì :
- Thứ nhất đó là do : Maple 9.5 hỗ trợ Visual Basic với rất nhiều phương
thức
- Thứ hai : Visual Basic là một ngôn ngữ lập trình giao diện, trong sáng,
dé dang dé làm quen với mọi đối tượng.
Đề hiểu rõ các phương thức của Maple 9.5 hỗ trợ các ngôn ngữ lập trình cũng như hoạt động của chúng, chúng ta sang phần tiếp theo :
SVTH : Lê Văn Đoan Trang 9
Trang 13Chương IT: Ky Thugt Nhing GVHD: Ts Nguyén Hữu Thong
Visual Basic là một ngông ngữ lập trình giao diện để tiếp xúc và hỗ trợ
nhiều tính năng, đặc biệt là các tính năng có thé kết hợp với Maple 9.5.
Statement : Command String (chuỗi lệnh)
Mô tả : EvalMapleStatement phân tích cú pháp và thi hành chuỗi lệnh
căn cứ vào đôi sô trình bày (statement)
*Ham StartMaple(NumArgs, argy, cb, user_data, err) : Mo một phan
OpenMaple
Các đối số :
NumArgs : Số lần khởi động các tham số dòng lệnh
(Long).
Argy : Khởi động các tham số dòng lệnh ( String array).
cb : callback vector ( MapleCallBack)
SVTH : Lê Văn Đoan Trang 10
Trang 14Chương IT: Ky Thugt Nhúng GVHD: Ts Nguyén Hữu Thong
user_data: dir liệu được đưa vao trong khi gọi ham Callback
( Long).
err : Chuối đệm ( String).
Mô ta: Hàm StartMaple là một phan của giao diện OpenMaple vào
Microsoft Visual Basic.
StartMaple khởi đầu một phần OpenMaple Khi thành công, một phần
điều khiển (handle) được trả về Điều khiển này là cần thiết như một đối
số vào tất cả các chức năng OpenMaple API ( Application Program
Interface : Giao diện chương trình ứng dụng OpenMaple )
Trong dé tài của em đề có thé vẽ được các hàm số được cung cấp trong
Maple 9.5 vào Visual Basic 6.0 em đã thiệt kê các form va hai module :
PlotterModule.bas và maple.bas
Về cơ bản chung nhất của mỗi form có thê vẽ được đó là có một
nút vẽ (button), 3 textbox và một picturebox dé hiện thị hình vẽ của hàm
# A
sO
Vidu: ` Một chương trình nhỏ của em trong Visual Basic có tên là “Ve
đo thị”
Dùng để vẽ một hàm số trong một cửa số : Dữ liệu (data) bao gồm một
form có tên là MainForm và hai module là Module : PlotModule vàModule : Maple Module Maple được chứa trong thư Mục
extern/include tất cả đều chứa trong thư mục Maple 9.5 mà em đã cài đặt
trong 6 C chang han.
SVTH : Lê Van Doan Trang 11
Trang 15Chương IT: Ky Thugt Nhing GVHD: Ts Nguyén Hữu Thong
MainForm gồm có : Một textbox FunctionBox dé nhập biêu thức hay hàm số cần vẽ và hai
textbox khác lần lượt có tên là Lowerrange và Upperange
Một PictureBox : Dothi
Một nút bam (button) PlotButton, một nút ExitButton dùng dé thoát
khỏi chương trình Giao diện trông như sau :
Source code :
SVTH : Lê Van Doan Trang 12
Trang 16Chương HH: Ky Thugt Nhing GVHD: Ts Nguyén Hữu Thong
Cua form :
Khai báo biến toàn cục (global) của form :
Public kv As Long ‘kv (kernel vector} is the
handle for the Maple kernel
Public PlotFileName As String
‘Trong load form (đoạn code của MainForm):
Private Sub Form _Load()
‘Khai báo 2 bién :
Dim error As String
Dim args(0 To 1) As String
‘Khoi đầu phương thức callback cho báo lỗi (error), thanh trạng thái
khởi tao Maple bằng cách đặt giá trị dau cho kv với lệnh
StartMaple của OpenMaple
SVTH : Lê Văn Đoan Trang 13
Trang 17Chương HH: Ky Thugt Nhing GVHD: Ts Nguyén Hữu Thong
kv StartMaple(0, args, cb, 0, error)
If kv = 0 Then
“Nếu kv=0 thi xuất ra thông báo lỗi (error)
MsgBox "Ban nhap sai kieu du lieu!!!” + StrConv(error, vbUnicode), vbCritical, ""
Unload Me End
End If
End Sub
Xử lý nút PlotButton với mã (code) như sau
Private Sub PlotButton_Click ()
‘Khai báo các biến và mang
Dim TempFile, command As String
Dim temppath(256) As Byte
Dim DirLen, + As Long
‘Lay một cái Tên file cho đề thị
DirLen = GetTempPath(256, temppath (0) }
If Dirlen <> 0 Then
TempFile = "dothi.gif”
'TempFile = Left (StrConv (temppath (}„
vbUnicode), Dirien} & "plot" & Int(Rnd() * 10) &
h,g죔
SVTH : Lê Văn Đoan Trang 14
Trang 18Chương HH: Ky Thugt Nhing GVHD: Ts Nguyén Hữu Thong
-FunctionBox.Text & ", x=“ & lowerrange.Text &
“ % & Upperrange.Text & “);")
Tf r <> 0 Then
* Nếu như r # 0 thì load đồ thị lên PictureBox (dothi)
hinh.Picture = LoadPicture (TempF1i 1e)
End If PlotFileName = TempFile End Sub
‘Doan code của Module PlotModule :
Public cb As MapleCaliBack
Public Declare Function GetTempPath Lib
"kernel32.dll1" Alias "GetTempPathA" _
(ByVal nBufferLength As Long, ByRef IpBuffer As
Byte) As Long
"Xuất của ham CallBack
SVTH : Lê Van Doan Trang 15
Trang 19Chương HH: Ky Thugt Nhing GVHD: Ts Nguyén Hữu Thong
Public Sub TextCailBack(data As Long, ByVal tag
As Integer, ByVal output As Long)
Dim OutputString As String
OutputString = MaplePointerToString (output)
End Sub
'Xử lý báo lỗi khi người dùng nhập sai của ham Callback
Public Sub ErrorCallBack(data As Long, ByVal Offset As Integer, ByVal output As Long)
‘Xuat ra hộp thông báo (messagebox) lỗi kỹ thuật
MsgBox " at offset " + str(Offset) +" " +
MaplePointerToString (output), vbInformation, ""
Ena Sub
Sau khi đoạn mã của mỗi Object trên được xác lập thì biên
dịch (complie) chương trình của chúng ta sẽ xuất hiện một Form
(MainForm ) dé người ding nhập một hàm cần vẽ vào “FunctionBox” và
nhập giới hạn của hoành độ dé 46 thị sẽ được vẽ trong giới hạn đó vào từ textbox “Lowerrange” đến textbox “Upperrange” và cuối cùng bam
Button “PlotButton” khi ay đồ thị sẽ được vẽ lên trên PictureBox có tên là
“ Dothi”, file ảnh được xuất ra đưới dang file “.gif”
2 Nhân xét_:
Trên đây em đã giới thiệu một số các đặc điểm của Maple 9.5 trong viéc vé đồ thị và nêu kỹ thuật nhúng (emmbed) khả năng vẽ đồ thị của Maple 9.5 vào ngôn ngữ lập trình Visual Basic 6.0 Đề hiểu rõ về cách hoạt động của chương trình cũng như các đối tượng (Object) trên các
SVTH : Lê Văn Đoan Trang 16
Trang 20Chương IT: KD Thugt Nhing GVHD: Ts Nguyén Hữu Thong
Form cụ thê chúng làm những gì ? dé khảo sát va vẽ đô thị của ham sô
chúng ta bước qua chương IIT: Cơ sở lý luận cua chương trình
SVTH : Lê Van Doan Trang 17
Trang 21Chương M1 : Cơ sở lý luận GVHD : Ts Nguyễn Hữu Thông
Chương II] :
CƠ SỞ LÝ LUẬN
I Cơ sở chung đề viết chương trình :
* Dựa vào những đặc điểm của Maple 9.5 hỗ trợ Visual Basic 6.0
- Ham số hữu ti loai2: y= id
II Cơ sở lý luận thiết kế chương trình :
Chăng hạn một học sinh lớp 12 muốn khảo sát một hàm sơ cấp,
ví dụ hàm bậc 3 : y= 3xÌ+ 10x? - x + 1, trước tiên là học sinh này sẽ
bam vào nút (button ) “Khảo sát & Vẽ” trên form chính có menu như
sau :
SVTH : Lê Văn Doan Trang 18
Trang 22Chương HH : Cơ sở lý luận GVHD : Ts Nguyễn Hữu Thông
sau đó một form sẽ xuất hiện cho chon hàm số cân khảo sát bam
lúc này một form xuất hiện học sinh nhập lần lượt các hệ số a, b, vào nút dé vẽ hàm bậc 3 :
c,d vào các 6 textbox đành cho mỗi hệ số
Sau cùng học sinh sé bam vào nút VẼ2D hoặc VẼ3D dé khảo sát
phẳng điều này được thực hiện chi trong tích tắc vài giây bao gồm tat
cả các bước : Tìm Miễn xác định, tính đạo hàm, tìm các điểm cực đại,
SVTH : Lê Văn Doan Trang 19
Trang 23Chương M1 : Cơ sở lý luận GVHD : Ts Nguyễn Hữu Thông
cực tiêu (nếu có), tìm diém uốn và các khoảng lỗi lõm, vẽ bảng biến
thiên của dé thị và cuối cùng là vẽ đồ thi Trong chương trình này chúng ta chủ yếu tìm hiểu về khảo sát , vẽ các hàm sơ cấp.
Vậy chương trình trên hoạt động theo những cơ chế nào ? Chúng
ta đi vào tìm hiểu cơ chế làm việc của từng thành phan trong chương
trình :
1 Tổng quan chung :
a Hiễn thị (show) hay kết thúc form :
Trong chương trình tông cộng có tất cả 12 form trong đó có 6 form dùng dé khảo sát và vẽ đồ thi, cơ chế dé gọi các form là dùng cú
pháp :
Tênform.show Chang hạn form có tên là huutil từ form maindraw có nút bam
(button) viết code cho nút này đề gọi form huutil là : huutil show, sau khi chạy chương trình click vào nút này sẽ hiển thị form huutil, và dé kết thúc form cũng tương tự như trên tức là giả sử từ form maindraw
trong chương trình cũng có một button, dé kết thúc (hay tắt) form hiện
hành (form maindraw) ta dùng cú pháp cho nút này như sau :
Unload maindraw
b Tải (load) form :
Trong các form của phần khảo sát và vẽ đồ thị gồm các form sau
: ksvebac3, ksvebac4, ksvebac2, huutil, huuti2, dé tải (load) các form
này khởi động các ham trong OpenMaple của Maple 9.5 hỗ trợ Visual
Basic kết hợp với hai module là : module maple.bas và module plotModule.bas vẽ đồ thị ta viết code chung cho các form như sau :
Đầu tiên là khai báo 2 biến toàn cục :
Public kv As Long ‘ky (kernel vector) is the handle for the Maple kernel
SVTH : Lé Van Doan Trang 20
Trang 24Chương M1 : Cơ sở lý luận GVHD : Ts Nguyễn Hữu Thông
ẺŠẰẰẤ`Ò<== —=—————. _ÊŸ
Public PlotFileName As String
Sau đó là load form :
Private Sub Form_Load()Dim error As String
Dim args(0 To 1) As String
Khoi động ham callbacks cho chữ( text) và báo lỗi(error), còn
các phương thức khác có thẻ cần hoặc không cần thiết chăng hạn như
callback cho thanh trạng thai (status), dòng đọc (readline), :
cb.lpTextCallBack= GetProc(AddressOf TextCallBack)
cb.lpErrorCallBack = GetProc(AddressOf ErrorCallBack)
‘Khoi động Maple bằng cách khởi đầu biến kv với lệnh
StartMaple của OpenMaple :
kv = StartMaple(0, args, cb, 0, error)
If kv = 0 Then
MsgBox "bao loi (warning error !!!" + StrConv(error,
vbUnicode), vbCritical, ""
Unload MeEnd
End If
End Sub
c Về màu ( color) của các đường trong đồ thị của mỗi ham :
Trong các form của các dạng hàm số khác nhau có chứa một
danh sách các loại màu có thê sử dụng mà Maple 9.5 cho phép danh
SVTH : Lê Văn Doan Trang 21
Trang 25Chương M1 : Cơ sở lý luận GVHD : Ts Nguyễn Hữu Thông
sách này được thê hiện trong chương trình là một combobox
— „ khi chúng ta vẽ đồ thị một hàm số, màu của đồ thị hàm
số mặc nhiên là màu xanh (blue) nếu người dùng thích một màu khác
trong danh sách mau thì có thé lựa chọn dùng chuột (click) hay dùng
phím mũi tên chọn các loại màu khác nhau :
combobox này có tên là : danhsachcolor dé xử lý sự kiện chuột và bàn
phím trên combobox này viết code cho 2 phương thức sau :
Đối với sự kiện click chuột trên combobox :
Private Sub danhsachcolor_Click()
Dim TempFile, command As String
Dim temppath(256) As Byte
Dim DirLen, r As LongDirLen = GetTempPath(256, temppath(0))
If DirLen <> 0 Then
TempFile = "dothi.gif"
"TempFile = Left(StrConv(temppathQ), vbUnicode), DirLen)
& "plot" & Int(Rnd() * 10) & ".gif”
End IfCall EvalMapleStatement(kv, "plotsetup(‘gif plotoutput="" + TempFile
+ " plotoptions= "width= 340, height=280°);")
SVTH : Lé Van Doan Trang 22
Trang 26Chương M1 : Cơ sở lý luận GVHD : Ts Nguyễn Hữu Thông
s = hsa.Text & "*x^3 + (" & hsb.Text & ")*x^2 + (" & hsc.Text
& ")*x + (" & hsd.Text & ")
r = EvalMapleStatement(kv, "plot(" & s & ”, x=(" &
LowerRange.Text & ") (" & UpperRange.Text & "), y=(" & yduoi.Text
& ”) (” & ytren.Text & ”),color=” & danhsachcolor.Text & ");")
Ifr <> 0 Then
dothi.Picture = LoadPicture(TempFile)
‘Tf PlotFileName <> "" Then
"KHI PlotFileNameEnd If
End If
PlotFleName = TempFile End Sub
Đối với sự kiện nhân phím enter dé chọn màu :
Private Sub danhsachcolor_KeyPress(KeyAscii As Integer)
Chúng ta nhấn phim Enter khi con trỏ chuột đang nằm ở
combobox danhsachcolor đổ thị sẽ được tô màu hiểu trên đó,
PlotButton2d_Click tương đương với ta nhân vào nút cũng là đoạn lệnh sử dụng cho các textbox các hệ số và giới hạn tung
độ hoành độ khi con trỏ đang năm trong nó khi người dùng bam Enter
lập tức đỏ thi sẽ được vẽ và khảo sát như nhắn nút mx2.| (cũng xử
lý trong sự kiện KeyPress)
SVTH : Lê Văn Doan Trang 23
Trang 27Chương THỊ : Cơ sở lý luận GVHD : Ts Nguyễn Hữu Thông
2 Phân tích chỉ tiết hoạt động của từng form :
A Form hàm bậc 3 :
Hàm số : y = ax? + bx? +ex+đ (a # 0)
- Xác định với moi x € R
- Đề thị có điểm uốn với x; = -b/3a đồng thời là tâm đối xứng.
Giao diện trang hàm bậc 3 như sau :
y=ax) + bx? + cx + d(az0
Hàm bậc 3 gồm 4 hệ số a, b, c, d tương ứng với số mũ từ 3 trở
xuống 0 khi người dùng nhập hệ số a =0 thì chương trình sẽ xuất ra một
Dialog thông báo (message box) cho biết đây là hàm bậc 3 nên a phải +
0:
SVTH : Lê Văn Doan Trang 24
Trang 28Chương M1 : Cơ sở lý luận GVHD : Ts Nguyễn Hữu Thông
=——=—ôẳÔôs .
SVTH:
Project
Sau khi bam Ok thì chương trình sẽ xoá hết dữ liệu trong các text
box vừa nhập vào và đặt con trỏ (point) vào vị trí đầu tiên tức là trong textbox của hệ số a.
Thông điệp này được xuất hiện là do trong chương trình xét điều
kiện néu a =0 thì xuất ra hộp thông báo :
MsgBox "Xin hay nhap lai,vi day la ham bac 3(a<>0) !!!",
vbOKOnly
đặt các text box bằng rỗng :
hsa.Text = " ”hsb.Text = " ”
hsc.Text = ” ” hsd.Text = " ”
và đặt con tro vào text box hệ SỐ a:
hsa.SetFocus
Nếu người dùng nhập hệ số a # 0 nhưng các hệ số khác, hoặc
nhập sai dữ kiện (nhập chữ), hoặc text box bị bỏ trồng (không nhập) thì
chương trình cũng sẽ phát ra thông điệp là người dùng chưa nhập đây
đủ thông tin:
Project’
Day là xử lý loi của hàm :
Lê Văn Đoan Trang 25
Trang 29Chương M1 : Cơ sở lý luận GVHD : Ts Nguyễn Hữu Thông
cb.lpErrorCallBack = GetProc(AddressOf ErrorCallBack) trong
form_load trong OpenMaple khi lỗi xảy ra thông điệp được gửi đến Module PloterModule dé xuất (Output) ra MessageBox trên, sau đây là
đoạn code trong Module PloterModule :Public Sub ErrorCallBack(data As Long, ByVal Offset As Integer,
ByVal output As Long)
MsgBox "Ban nhap chua du hoac sai du lieu Xin hay nhaplại!!!"
Một hộp thông báo lỗi khác sẽ xuất hiện khi người dùng nhập một trong các hệ số lớn hơn quy định cho phép Ở đây giới hạn các hệ
số cho hàm bậc 3 là giá trị tuyệt đối của a.b.c < 10, nếu người ding
nhập qua giới hạn này chương trình sẽ báo lỗi :
Đề xử lý lỗi này trong chương trình em dùng lệnh điều kiện
hsc.Text = ” ”
hsd.Text = " ”hsa.SetFocus
SVTH : Lé Van Doan Trang 26
Trang 30Chương M1 : Cơ sở lý luận GVHD : Ts Nguyễn Hữu Thông
Message chương trình sẽ xoá tất cả những gì liên quan trong textbox
mà người dùng vừa đánh vào hoặc xoá tất cả dữ kiện của hàm khảo sat
trước néu có, chúng đều có chung một đoạn code xử lý giống nhau :
* Xoá màn hình
Cls
* giấu picturebox đi
dothi Visible = False
“đặt tat ca các label không can thiết bang trồng (hide):
Ibdaul.Caption = 'Ibdau2.Caption = ""
Trang 31Chương M1 : Cơ sở lý luận GVHD : Ts Nguyễn Hữu Thông
Ibduongy2.Caption =Iby_1.Caption = ""
Iby_2.Caption = ""
Iby_12.Caption = ""
Iby_21-Caption = ""
Iby.Caption =
Khi đó thì màn hình giống như bắt đầu khảo sát, tương tự như
người dùng bắm nút “TẠO MỐI.
Một khi người dùng nhập đúng và day đủ dữ liệu vào trong các text box sau khi nhắn Enter khi con trỏ ở textbox bất kỳ tương đương
như người dùng nhân vào nút VẼ2D hàm số sẽ được khảo sát và vẽ đồ
Toàn bộ quá trình khảo sát này chỉ được thực hiện duy nhất trên một nút xử lý là VE2D, VE2D có nghĩa là đồ thị sẽ được vẽ ra trong
SVTH : Lê Văn Doan Trang 28
Trang 32Chương M1 : Cơ sở lý luận GVHD : Ts Nguyễn Hữu Thông
mặt phang 2 chiều Oxy, còn VẼ3D là đồ thị sẽ được vẽ trong không gian 3 chiều Oxyz điều nay sẽ được bàn kỹ hơn ở phan sau Vay button
VE2D ve được xử lý như thé nao ?
Đầu tiên chúng hãy phân tích nguyên lý làm việc của nó, khi mà
hệ số trong textbox hợp lệ, chương trình sẽ xử lý phần else của biệt lệ
/! đoạn code giống nhau đã nêu ở trên
Else
If abs(a)> 10 or abs(b) > 10 or abs(c) > 1Ø or abs(d) > 10 then
° Hộp thông báo lỗi trong trường hợp này
//doan code giống nhau nêu ở trên
Ibdhy.Caption = ""
lbnghiemil Captton = ””
SVTH : Lê Văn Doan Trang 29
Trang 33Chương M1 : Cơ sở lý luận GVHD : Ts Nguyễn Hữu Thông
Ở trên va cả trong chương trình này : labelname.Caption=
“string” là xuất ra màn hình chuỗi trong ngoặc kép ứng với label đó,
labelname.Visible=true hoặc false nếu, bằng true thì sẽ cho hiện
(visible) labelname đó trên màn hình, nêu bang false sẽ ân (hide) nó đi
Mục đích đặt các label đang chứa dữ liệu của một hàm nào đó
được người dùng khảo sát trước rồi sửa lại các hệ số sau đó bam vào
VE2D dé khao sát và vẽ lại thì các label hiện hữu trong lan khảo sát
trước sẽ bằng rồng tức là không chứa text ở bên trong như vậy là sẽ
SVTH : Lê Văn Doan Trang 30
Trang 34Chương M1 : Cơ sở lý luận GVHD : Ts Nguyễn Hữu Thông
không xuất hiện trong lần khảo sát sau, khi ấy chỉ xuất hiện những label cần thiết phù hợp với loại hàm mà người dùng nhập vào dé khảo sát
Đây là đoạn code tìm điểm uốn, tìm nghiệm y’, xét dau y`, xuất
ra hàm số vừa nhập, xuất ra đạo hàm, điểm uốn, lồi lõm, bảng biến thiên dựa vào các hệ số b, c, d, tức là khi nào có b, có e, có đ, hoặc khi
* Xuất ra y’’ và nghiệm điểm uốn :
lbdiemuonxy.Caption = " y’ = ” & struonhsa & struonhsb & ") =>
X_uon= ” & x uon & "(y_uon= ” & y_uon & ")"
Ife <> 0 Then
Ifd <> 0 Thensax3 = format(a, " #x^3”)
sbx2 = format(b, " #)x^2 ")
scx = format(c, "#)x ")
sd = format(d, "#")Ibhs.Caption = "y= ” & sax3 & "+ (" & sbx2 & "+ ("& scx & "+
Trang 35Chương M1 : Cơ sở lý luận GVHD : Ts Nguyễn Hữu Thông
sbx2 = format(b, " #)x^2 ")
scx = format(c, "#)x ")lbhs.Caption = "y= " & sax3 & "+ (" & sbx2 & "+ (" & scx
End If
sl = format(3 * a," #x42 + ")
s2 = format(2 * b," #)x + ”) s3 = format(c,"” #)")
lbdh.Caption = "y= "&sl&"("&s2&"("&s3 & "=>y=0 <=>
Trang 36Chương M1 : Cơ sở lý luận GVHD : Ts Nguyễn Hữu Thông
hsb.Text = "0"
' điem uon ung voi b=0
x_uon = format((-b / (2 * a)), "0.00")y_uon = format(((a * x uon * x_uon * x_uon) + c * x_uon + d),
Ibhs.Caption = "y= " & sax3 & "+ (" & scx
End If
sl = format(3 * a," #x^2 + ")s3 = format(c, ” #) ")
lbdh.Caption = "y= ” & sI &"("&s3 & "=>y=0 <=> " & sI &
Trang 37Chương M1 : Cơ sở lý luận GVHD : Ts Nguyễn Hữu Thông
‘xét dau y’’ và tìm khoảng lỗi lõm dùng các label dé xuất ra màn hình:
[bnghiemdiemuon.Caption = "I(" & x uon & ”; ” & y_uon & ")"
'xuât chuối “y’=0@”
SVTH : Lê Văn Doan Trang 34
Trang 38Chương M1 : Cơ sở lý luận GVHD : Ts Nguyễn Hữu Thông
Ibdhy.Caption = "<=> "
Kế tiếp chúng ta tìm nghiệm của y` và xét dau của delta y' :
‘tinh delta y’
Trang 39Chương M1 : Cơ sở lý luận GVHD : Ts Nguyễn Hữu Thông
ẺŠẰẰẤ`Ò<== —=—————. _ÊŸ
lbdaul.Caption = "+"
Ibdau2.Caption = "+"
lbo.Caption = "-"
‘cho ân lby:
Iby Visible = False
'các mũi tên của bảng biến thiên:
Line (7440, 7080)-(8280, 6600), &H80000018
Line (8520, 6600)-(10320, 6960), &H80000018Line (10560, 6960)-(11520, 6480), &H80000018
“xuất ra dấu vô cực:
“xuất ra 2 điểm cực đại, cực tiéu:
lbnghiemI.Caption = "x_CT= ” & strxl & "=> y CT= " &
Trang 40Chương M1 : Cơ sở lý luận GVHD : Ts Nguyễn Hữu Thông
Iby_1.Caption = stry2Iby_2.Caption = stryl
‘xuat ra 2 điểm cực đại, cực tiêu:
lbnghieml.Caption = "x_max= " & strxl & "=> y_max= ” &
Ibdau2.Caption = "-"
lbo.Caption = "+"
Iby Visible = False
“Xuất các mũi tên tăng giảm của bảng biến thiên: