Professional Documents
Culture Documents
Lap Trinh Tren Maple
Lap Trinh Tren Maple
1.2 Tạo ra các giao diện đến các thủ tục và các gói lệnh trong Maplet
Một giao giao diện Maplet có thể dễ dàng thay đổi các giá trị tính toán và các tùy chọn
trong các thủ tục và các gói lệnh của Maplet. Ví dụ một gói lệnh sẽ tạo ra danh sách các
thiết lập ban đầu mà người sủ dụng hoặc khi cần có thể thay đổi. Một giao diện Maplet
đến một gói lệnh có thể được tạo ra để giúp người sử dụng hiểu về câu lệnh đó. Ví dụ
sau sẽ cho người sử dụng học về cách tính định thức của một vector trong gói lệnh
LinearAlgebra() (Gói lệnh về đại số tuyến tính).
[>with(LinearAlgebra):
1
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
[>with(linalg):
[>A:=Matrix([[1,2], [4,1]])
[>det(A)
2
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
3.1.2 Checkbox
Là một điều khiển gồm nhiều ô lựa chọn. Giống như nút lệnh mỗi hộp kiểm tra liên quan
đến một hoạt động cụ thể, khi được kích hoạt người sử dụng phải đánh dấu chọn lựa một
hoặc nhiều danh sách chọn. Ví dụ:
[> with(Maplets[Elements]):
[> maplet := Maplet([[CheckBox['ChB1'](caption="red")],
[> [CheckBox['ChB2'](caption="white")],
[> [CheckBox['ChB3'](caption="blue")],
[> Maplets[Display](maplet):
3.1.3 ComboBox
Là một hộp cho phép người sử dụng chọn một thành phần từ một danh sách các thành
phần đã được cho trước. Đặc biệt, thủ tục này cho phép người sử dụng thêm vào một thành
phần khác bằng cách nhập từ bàn phím. Giá trị trả về của điều khiển này là một thành phần
được chọn. Ví dụ:
[> with(Maplets[Elements]):
[> maplet := Maplet([["Chon mon hoc ma ban thich: ",
[> Maplets[Display](maplet);
3.1.4 DropDownBox
Điều khiển này được hiển thị giống như ComboBox trừ việc người sử dụng phải chọn trong
các thành phần trong danh sách đã được định nghĩa sẳn mà không thể thêm thành phần
mới. Ví dụ:
[> with(Maplets[Elements]):
[> maplet := Maplet([
[> ["Ban sinh nhat thang: ",
[> DropDownBox['DDB1']("Thang 01",
[> sort(["Thang 01","Thang 02", "Thang 03", "Thang 04",
3
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
3.1.5 Label
Là một điều khiển chứa văn bản hoặc hình ảnh. Điều khiển này thường dùng để đặt tên
định dạng cho một điều khiển khác, hoặc các dòng văn bản bất kì trong maplet. Văn bản
hiển thị trong Label không có độ sáng và không thẻ sao chép được. Ví dụ:
[>with(Maplets[Elements]):
[>maplet := Maplet([
[>[Label("Nhap ho va ten: ", 'font' = Font("courier", 14)),
[>TextField['IF1'](20)],
[>[Label("Vi du ", 'font' = Font("helvetica", 12)),
[>Label("Bin Laden", 'font' = Font("helvetica", italic, 12))],
[>[Button("OK", Shutdown(['IF1'])), Button("Cancel",
Shutdown())]]):
[>Maplets[Display](maplet);
3.1.6 ListBox
Giống như DropBox, điều khiển này cũng có một danh sách các thành phần được định sẳn
nhưng các danh sách này không nằm trong trạng thái có thanh xổ. Và trong điều khiển này
người sử dụng có thể chọn nhiều thành phần cùng một lúc bằng cách nhấn Shift trước khi
chọn. Giá trị trả về là một chuổi các thành phần được chọn được phận biệt bởi dấu phẩy. Ví
dụ:
[>with(Maplets[Elements]):
[>maplet := Maplet([
[>["Chon mot mau ban thich: ", ListBox['LB1'](sort([
[>"xanh", "do", "tim", "vang", "xam", "nau", "den",
[>"da cam", "hong"], lexorder))],
[>[Button("OK", Shutdown(['LB1'])), Button("Cancel",
Shutdown())]]):
[>result := Maplets[Display](maplet):
[>if type( result, ['string'] ) then
[>Maplets[Tools][ListBoxSplit](result[1]);
[>end if;
4
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
3.1.8 MapMLEditor
Là một điều khiển cho người sử dụng có thể trực tiếp gõ và có thể thay đổi các công thức
toán thay vì phải định nghĩa sẳn theo cú pháp. Để thực hiện được chức năng trên người sử
dụng click chuột phải vào môi trường soạn công thức và chọn các ký hiệu toán học tùy ý
trong danh sách. Ví dụ:
[> with(Maplets[Elements]);
[> maplet := Maplet([[BoxCell("Click chuot phai go cong thuc")],
[>[MathMLEditor('reference' = 'ME1')], [Button("Done",
[>Shutdown([ME1]))]]);
[> Maplets[Display](maplet);
3.1.9 Plotter
Điều khiển này dùng để hiển thị đồ thị 2 chiều, 3 chiều, vận động đồ thị: Ví dụ:
[>with(Maplets[Elements]);
[>Maplets[Display](Maplet([[Label("Ve do thi ham so", 'font' =
[>Font('family' = ".VnTime", italic, 20))],
[> [Label("F(x):", 'font' = Font('family' = ".VnTime", italic,
18)), [>TextField['TF1']("x^2")], [Label("X1:",
[>'font' = Font('family' = ".VnTime", italic, 18)),
TextField['x1']("-3")], [>[Label("X2:", 'font' = Font('family' =
".VnTime", italic, 18)), [>TextField['x2']("3")],
Plotter['PL1'](), [Button("Display", Evaluate('PL1' [>= 'plot(TF1,
x = x1 .. x2)')), Button("OK", [>Shutdown())]]));
3.1.10 RadioBox
Điều khiển này cho phép người sử dụng chọn các đối tượng giống như trong CheckBox
nhưng ở đây các nút chọn được hiển thị dưới dạng các nút tròn. Ví dụ:
[>with(Maplets[Elements]):
[>maplet := Maplet([
[>[RadioButton['RB1']("1", 'value'=true, 'group'='BG1'),
[>RadioButton['RB2']("2", 'value'=false, 'group'='BG1')],
[>[Button("OK", Shutdown(['RB1', 'RB2'])), Button("Cancel",
5
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
[>Shutdown())]
[>, ButtonGroup['BG1']()):
[>Maplets[Display](maplet);
3.1.11 Slider
Điều khiển này cho phép người sử dụng chọn giá trị từ thước các khoảng giá trị. Ví dụ:
[>with(Maplets[Elements]):
[>maplet := Maplet([
[>["Select a value: ", Slider['SL1'](0..100, 10, 'showticks',
[>'majorticks'=20, 'minorticks'=10, 'snapticks'=false)],
[>[Button("OK", Shutdown(['SL1'])), Button("Cancel", Shutdown())]
[>]):
Maplets[Display](maplet);
3.1.12 Table
Điều khiển này giống như các bảng thường dùng, cho phép người sử dụng điển các giá trị
sẳn vào các ô của bảng. Ví dụ:
[>with(Maplets[Elements]):
[>maplet := Maplet([
[>BoxCell(Table([A, B], [[1, 2], [3, 4]]), 'as_needed'),
[>Button("OK", Shutdown()) ]):
[>Maplets[Display](maplet);
3.1.13 TextBox
Điều khiên này cho phép hiển thị hoặc cho người dùng nhập các dòng văn bản trên nhiều
dòng. Ví dụ:
[>with(Maplets[Elements]):
[>maplet := Maplet([
[>[Label("Nhap 1 dong van ban:",'font' = Font( 'family'=".VnTime",
[>italic, 14 ) ), BoxCell(TextBox['IB1'](3..30), 'as_needed')],
[>[Button("OK", Shutdown(['IB1'])), Button("Cancel", Shutdown())]
[>]):
[>Maplets[Display](maplet);
3.1.14 TextField
Giống như TextBox, điều khiển này cũng cho hiển thị văn bản nhưng chỉ có trên một dòng.
Việc xuất nhập văn bản phụ thuộc vào tùy chọn Editable mang giá trị True hay False. Ví
dụ:
[>with(Maplets[Elements]):
[>maplet := Maplet([
[>["Enter your name: ", TextField['IB1'](30)],
[>[Button("OK", Shutdown(['IB1'])), Button("Cancel", Shutdown())]
[>]):
6
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
[>Maplets[Display](maplet);
3.1.15 ToggleButton
Giống như CheckBox nhưng chỉ khác về cách hiển thị. Điều khiển này có thể chứa một
chuổi ký tự hoặc một một hình ảnh trên giao diện nút. Ví dụ:
[>with(Maplets[Elements]):
[>maplet := Maplet([
[>[ToggleButton['TB1']("Vi du mot Toggle Button", 'value'=true)],
[>[Button("OK", Shutdown(['TB1'])), Button("Cancel", Shutdown())]
[>]):
[>Maplets[Display](maplet);
MenuItem(Các menu thành phần): Là một thành phần trong một menubar hoặc một
menu chọn nhanh(PopupMenu ) nào đó.
MenuSeparator(Dấu phân cách các Menu thành phần): Là một thành phần trong một
menubar hoặc trong một menu chọn nhanh nào đó dùng đề phân cách các menuItem
Một thanh menu có thể chứa nhiều menu, mỗi menu có thể có nhiều menu thành phần, các
dấu phân cách dùng để nhóm các menu thành phần và cũng để phân cách với các menu
thành phần khác. Ví dụ:
[>with(Maplets[Elements]);
[>maplet := Maplet(Window(title = "Menubar", 'menubar' = 'MNB',
[["Menu-Bar"],
[>[Button("Exit", Shutdown())]]), MenuBar['MNB'](Menu("Menu0",
MenuItem("Quit",
[>Shutdown())), Menu("Menu1", Menu("Close", MenuItem("Close",
Shutdown())),
[>MenuItem("Quit", Shutdown())), Menu("Menu2", MenuItem("Quit",
Shutdown()))));
[> Maplets[Display](maplet)
7
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
[>with(Maplets[Elements]):
[>maplet := Maplet(
[>Window('title' = "Tinh nguyen ham theo bien x", 'toolbar' =
[>ToolBar(
[>ToolBarButton("Thoat", Shutdown()),
[>ToolBarSeparator(),
[>ToolBarButton("Thuc hien", 'onclick'=Evaluate('TF1' = 'int(TF1,
[>x)'))
[>),
[>[
[>TextField['TF1'](),
[>Button("OK", Shutdown("OK"))
[>])
[>):
[>Maplets[Display](maplet);
[>Button("Exit", Shutdown("1"))]
[>),
[>Window['W2']("2",
3.4.2 Evaluate
Đây là lệnh đặc biệt dùng để lấy giá trị trong một chu trình hay một thủ tục nào đó của
maple dưới dạng tham số lệnh. Ví dụ về lệnh này được trình bày trong các phần trước
3.4.3 Rundialog
8
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
Dùng để hiển thị một hộp thoại nào đó trong maplet nếu hộp thoại đã được hiển thị thì khi
chạy sẽ không có vấn đề gì xãy ra. Ví dụ:
[>with(Maplets[Elements]):
[>maplet := Maplet(
[>Window([
[>["Nhap bieu thuc:"],[TextField['TF1']()],
[>[
[>Button("Dao ham theo bien x", Evaluate('TF1' = 'diff(TF1,
[>x)')),
[>Button("Dialog", RunDialog('MD1')),
[>Button("Exit", Shutdown(['TF1']))
[>]
[>]),
[>MessageDialog['MD1']("Vi du ve hien thi Dialog")
[>):
[>Maplets[Display](maplet);
3.4.4 Runwindow
Hiển thị một cửa sổ thành phần trong ứng dụng của maplet. Ví dụ được trình bày trên
phần Closewindow.
3.4.5 SetOption
Lệnh này cho phép giá trị của một số tùy chọn có thể thay đổi trong khi ứng dụng đang
chạy. Ví dụ, Nếu người sử dụng kích vào một nút, tùy chọn “ochange” của nút có thể sử
dụng thuộc tính SetOption để bắt đầu thay đổi như xóa text đã xuất hiện. Ví dụ:
[>with(Maplets[Elements]):
[>maplet1 := Maplet([
[>[Label('caption'="Nhap vao 1 bieu thuc")],
[>["Input:", TextField['B1'](20)],
[>["Output:", TextField['B2'](20, 'editable' = 'false')],
[>[
[>Button("Xoa Input", SetOption('target' = 'B1', 'value' = "")),
[>Button("Copy to Output", SetOption('target' = 'B2',
[>Argument('B1'))),
[>Button("Thoat", Shutdown(['B2']))
[>]
[>]):
[>Maplets[Display](maplet1);
3.4.6 Shutdown
Lệnh này dùng để đóng một maplet đang chạy. Đặc biệt trong lệnh này có thể gán giá trị
trả về. Ví dụ về lệnh này đã được trình bày ở phần trên.
9
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
> ) ) );
3.5.3 ConfirmDialog
Dùng hộp thoại này để thông báo cho người sử dụng xác nhận một thông tin hay hoạt
động đang được tiến hành. Ví dụ:
> with(Maplets[Elements]):
> maplet := Maplet(ConfirmDialog('question', "Co phai x>0?",
> 'onapprove' = Shutdown("true"),
> 'ondecline' = Shutdown("false"),
> 'oncancel' = Shutdown("FAIL")
> )):
> Maplets[Display](maplet);
10
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
11
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
12
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
13
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
Capnhat := proc ()
global t;
Thongbao:=proc()
Maplets[Display]( Maplet( AlertDialog(title="Maplet-Tính toán trên ma trận vuông thông
báo:", "Bạn vui lòng nhập vào ma trận trước khi thực hiện thao tác này !",
'onapprove' = Shutdown(),
'oncancel' = Shutdown() ) ) );
end: Nhap := proc ()
global A, t;
14
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
t := 1;
A := Matrix([[1, 2], [4, 1]]);
A := Student[LinearAlgebra][MatrixBuilder](A, 2, 5, square = true, sqrstatic = true, augstatic
= true);
Maplets[Tools][Set](('nhap')(value) = A) end proc
LuyThua := proc ()
local n;
if t = 0 then
Thongbao()
else
n := Maplets[Examples][GetExpression](caption = "Nhap bac luy thua ");
Maplets[Tools][Set](('ketqua')(value) = A^n)
fi:
end:
NghichDao := proc ()
global B;
if t = 0 then Thongbao()
else
if det(A) = 0
then Maplets[Examples][Message](" Ma trận suy biến, bạn vui lòng quay lại!") else
B := MatrixInverse(A);
Maplets[Tools][Set](('ketqua')(value) = B)
fi:
fi:
end :
Hang := proc ()
if t = 0 then
Thongbao()
else Maplets[Tools][Set](('ketqua')(value) = Rank(A))
fi: end :
Dinhthuc := proc ()
if t = 0 then
Thongbao()
else Maplets[Tools][Set](('ketqua')(value) = Determinant(A))
fi: end: DTDT := proc () if t = 0 then Thongbao() else Maplets[Tools][Set](('ketqua')(value)
= CharacteristicPolynomial(A, lambda))
fi:
end:
GTRieng := proc ()
if t = 0 then
Thongbao() ;
15
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
else
Maplets[Tools][Set](('ketqua')(value) = convert(Eigenvalues(A), list))
fi:
end:
VTRieng := proc ()
if t = 0 then Thongbao() ;
Else
Maplets[Tools][Set](('ketqua')(value) = Eigenvectors(A, output = list))
fi:
end:
DTTT := proc ()
if t = 0 then Thongbao()
else Maplets[Tools][Set](('ketqua')(value) = MinimalPolynomial(A, lambda))
fi: end :
CheoHoa := proc ()
global gt, P, ok1, ok2, ok;
if t = 0 then
Thongbao()
else
gt := select(t-> type(t[1], realcons), LinearAlgebra[Eigenvectors](A, output = list))):
ok1 := is(sum(gt[k][2], k = 1 .. nops(gt)) = RowDimension(A)):
ok2 := andmap(t->is(t[2]=nop(t[3],gt)):
ok := ok1 and ok2:
if ok then
P := Matrix([seq(op(gt[k][3]), k = 1 .. nops(gt))]);
Maplets[Tools][Set](('ketqua')(value) = P)
else
Maplets[Examples][Message](" Ma tran vua nhap khong cheo hoa duoc!")
fi:
fi:
end:
maplet := Maplet('onstartup' = 'A1', Window['W1']"Maplet-Tính toán trên ma trận
vuông",'menubar'='MNB',
[ [Label(" MAPLET TÍNH TOÁN VỚI MA TRẬN
VUÔNG",'font'=Font(20),'foreground'="#1E05E9")],
[BoxRow(border=true,background="#579A8C", [Label(" Ma trận đầu vào
",'font'=Font(15),'foreground'="#FF3399"),
BoxCell(MathMLViewer['nhap'](height=200,background="#E8EEEE",foreground="#253B
A3"),hscroll=always,vscroll=always)], [Label("Hiển thị kết quả tính
toán",'font'=Font(15),'foreground'="#FF3399"),
BoxCell(MathMLViewer['ketqua'](height=200
16
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
,background="#E8EEEE",foreground="#253BA3"),hscroll=always,vscroll=always)] )],
[BoxRow(border=true,background="#998B52",
Button("Nhập ma trận",foreground = red,background = green,Evaluate('function'='Nhap()')),
Button("Hạng ma trận",foreground = red,background = green,Evaluate('function'='Hang()')),
Button("Định thức", foreground = red,background = green,Evaluate('function'='Dinhthuc()')),
Button("Đa thức đặc trưng ",foreground
=red,background=green,Evaluate('function'='DTDT()')),
Button("Gia Trị Riêng",foreground = red,background =
green,Evaluate('function'='GTRieng()')),
Button("Vector Riêng",foreground = red,background =
green,Evaluate('function'='VTRieng()')) )],
[BoxRow(border = true, background = "#998B52",
Button("Luy Thừa",foreground = "#6632A7",background = "#0A9EB0",Evaluate('function'
= 'LuyThua()')),
Button("Ma Trận Nghịch Đảo",foreground = "#6632A7",background =
"#0A9EB0",Evaluate('function' = 'NghichDao()')),
Button("Đa Thức Tối Tiểu",foreground = "#6632A7",background =
"#0A9EB0",Evaluate('function' = 'DTTT()')),
Button("Chéo Hóa Ma Trận",foreground = "#6632A7",background =
"#0A9EB0",Evaluate('function' = 'CheoHoa()')),
Button("Xóa Dữ Liệu",foreground = "#6632A7",background = "#0A9EB0",
Action(SetOption(target = 'nhap', value = ""),SetOption(target = 'ketqua', value =
""),Evaluate('function' = 'Capnhat()')),
Button("Thoát",foreground = "#6632A7",background =
"#0A9EB0",Action(RunWindow('W2')))
)]]), MenuBar['MNB'](Menu("File", MenuItem("Exit Alt+F4",
Shutdown())),Menu("Help", MenuItem("Quick Help ", RunWindow('W3'))),
Window['W2']("Maplet-Tính toán trên Ma trận vuông thông báo:",[["Bạn thực sự muốn thoát
khỏi hệ thống?"],[Button("Ok", Action(Evaluate('function' = 'Capnhat()'),
Shutdown())),Button("Cancel", CloseWindow('W2'))]]),
Window['W3']("Giới thiệu, trợ giúp",[["GIỚI THIỆU-TRỢ
GIÚP"],[TextBox['IB1'](background = "#BFE9E6",foreground = "#1015E9",10..40,editable
= false,
"Giới thiệu…."
,[Button("Thoát", CloseWindow('W3'))])]]),
Action['A1'](RunWindow('W1'))
):
Maplets[Display](maplet)
17
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
trận vào tương tự như phần trên. Ngoài nút nhập vào ma trận thì maplet cho ta hai thông tin
khác đó là cho phép người dùng thấy được ma trận sau khi biến đổi theo phương pháp khử
Gauss. Ngoài ra nút nghiệm cho phép ta thấy được các ngiệm của hệ.
Hình ảnh minh họa:
18
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
19
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
20
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
21
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
22
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
23
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
24
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
with(Maplets[Elements]):with(plots):with(Maplets[Tools]): with(Maplets[Elements]):
SetPL:=proc(SL)
local p;
p:=plot(0, x=-0 ..0,axes=none,thickness=0 );
Set('PL1'=p);
end:
Thongbao:=proc()
Maplets[Display]( Maplet( AlertDialog(title="Maplet-Xấp xĩ hàm số bằng đa thức thông báo:", "Bạn
vui lòng nhập vào đa thức khai triển trước khi thực hiện thao tác này !",
'onapprove' = Shutdown(),
'oncancel' = Shutdown() ) ) );
end:
DT := proc (F, SL)
if kt = 1 then
G := convert(series(F, x = l, k), polynom);
p1 := plot([F, G], x = -SL+l .. SL+l, thickness = [3, 3], color = [red, green], title = "Xấp xĩ hàm bằng đa
thức”, legend =["Hàm số đã cho”,”Hàm số bằng đa thức xấp xĩ”] );
Set('PL1'=p1)
else
Thongbao();
fi:
end:
CapNhat:=proc()
global kt;kt:=0;
end:
KTTL:=proc() global l,k,kt;
l := Maplets[Examples][GetExpression](caption = "Khai triển tại lân cận điểm")
l := Maplets[Examples][GetExpression](caption = "Khai triển đến bậc") kt:=1;
end:
Help := proc ()
Maplets[Examples][Message]("Ban co the Click chuot phai vao ham so hoac vao menu Run de chon
cac thao tac.")
end:
hienthi := proc ()
global t;
t := true
end:
MyMaplet:= Maplet('onstartup' = 'A1',Window['W1']("Maplet-Xấp xĩ hàm số bằng đa thức
",'menubar'='MNB',
[
[BoxColumn(border=true, background ="#57E9CD", Label("Nhập hàm F(x)",'foreground'=blue,
'font' = Font( bold, 12)),
TextField['F'](width=10,visible =true,background="#E8EEEE",foreground="#253BA3" ,'popupmenu'
= 'PM', "sin(x)") , Label("Khai Triển Taylor",'foreground'=blue, 'font' = Font( bold, 12)),
25
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
MathMLViewer['ML'](height=65,background="#E8EEEE",foreground="#253BA3") )],
[BoxColumn(border=true, background ="#57E9CD", Label("Đồ thị hàm xấp xĩ;",'foreground'=blue,
'font' = Font( bold, 12)),Plotter['PL1'](height=300 ) )],
[ Slider['SL'](2..20, 5, 'showticks', 'majorticks'=1, 'minorticks'=1,'onchange'='Action1',
'snapticks'=false,'background'="#908E1F")],
Button("Khai Tri?n Taylor",foreground = "#294509",background = "#0A9EB0",Action(
SetOption(target='ML',value=""),
Evaluate('function'='SetPL(SL)'),
Evaluate('function'='KTTL()'),
Evaluate('ML' = 'series(F,x=l,k)'))),
Button("Đồ thị hàm xấp xĩ;",foreground = "#294509",background = "#0A9EB0",
Action('reference'='Action1', Evaluate('function'='DT(F,SL)'))),
Button("Xóa Dử Liệu",foreground = "#294509",background = "#0A9EB0",Action(
Evaluate('function'='CapNhat()'),
SetOption(target='ML',value=""),
Evaluate('function'='SetPL(SL)'))),
Button("Thoát", foreground = "#294509", background = "#0A9EB0", Action(Evaluate('function' =
'CapNhat()'), Action(RunWindow('W2'))))]]),
Window['W2'](" Maplet-Xấp xĩ hàm số bằng đa thức thông báo:", [["Bạn thực sự muốn thoát khỏi hệ
thống? "],[Button("Ok", Action(Evaluate('function'='Capnhat()'),Shutdown())),
Button("Cancel", CloseWindow('W2'))]] ),
MenuBar['MNB']( Menu("File", MenuItem("Close",Shutdown())), Menu("Run", Menu("Xấp xĩ
hám số?",MenuItem("Khai Triển Taylor", Action(
SetOption(target='ML',value=""),
Evaluate('function'='SetPL(SL)'),
Evaluate('function'='KTTL()'),
Evaluate('ML' = 'series(F,x=l,k)'))),
MenuSeparator(),MenuItem("Đồ thị hàm xấp xĩ ", Action('reference'='Action1',
Evaluate('function'='DT(F,SL)'))), MenuSeparator()),MenuSeparator(),MenuItem("Quit",Shutdown())),
Menu("Help", MenuItem("quick Help ",Action(RunWindow('W3')))), PopupMenu['PM']( Menu("Xấp
xĩ hàm số", MenuItem("Khai Triển Taylor",
Action(SetOption(target='ML',value=""),
Evaluate('function'='SetPL(SL)'),
Evaluate('function'='KTTL()'),
Evaluate('ML' = 'series(F,x=l,k)'))),
MenuItem(“ Đồ thị hàm xấp xĩ;", Action('reference'='Action1', Evaluate('function'='DT(F,SL)')) ) ),
MenuSeparator(), MenuItem("Thoát", Shutdown())) ,
Window['W3']"Giới thiệu-Trợ giúp",[["GIỚI THIỆU-TRỢ GIÚP”]
[TextBox['IB1'](background = "#BFE9E6" ,foreground = "#1015E9" ,10..40,editable = false,
“
+Giới thiệu.
Họ và tên: Phan Văn Cương
Trường: Đại học Khoa Học Huế
Ngành: Toán tin Ứng Dụng
Lớp: Toán Tin K32
26
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
*Trợ giúp.
Việc khảo sát trên một số hàm số rất khó khăn đối với những hàm số mà ta không có nhiều thông tin về
nó. Khai triển Taylor của hàm số thành đa thức là một công cụ có rất nhiều ứng dụng trong toán học
giải tích.
Ứng dụng này sử dụng dùng để khai triển một hàm số thành đa thức bằng khai triển Taylor. Ngoài ra
với công cụ đồ thị thì chúng ta có thể dể dàng nhận thấy sự xấp xĩ của hàm số ban đầu và hàm số sau
khi xấp xĩ.)],
[Button("Thoát", Shutdown(W3))]]),
Action['A1'](RunWindow('W1')):
Maplets[Display](maplet);
2.2.2 Maplet về biểu diễn đồ thị trên không gian hai, ba chiều
Vẽ đồ thị của một hàm số là phần không thể thiếu trong toán học,tuy nhiên việc vẽ đồ thị
của một hàm số phức tạp là rất khó khăn,đặc biệt là đồ thị trong không gian,do đó maplet
vẽ đồ thị này sẻ giúp chúng ta giải quyết những khó khăn đó.Maplet này được chia làm 2
phần:
Phần 1:Là maplet vẽ đồ thị trong mặt phẳng, trong maplet này,ngoài việc xem đồ thị của một
hàm số, chúng ta có thể xem đồ thị hai hàm số được vẽ trên cùng một hệ trục, quan sát sự vận
động của đồ thị .
Phần 2:Là maplet vẽ đồ thị trong không gian,cũng giống như maplet vẽ đồ thị trong mặt
phẳng, maplet này giúp chúng ta có cái nhìn trực quan về một đồ thị trong không gian, hay sự
vận động của đồ thị trong không gian.
Hình ảnh minh họa:
27
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
28
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
29
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
30
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
Set('P' = p)
end proc;
SetPL3 := proc ()
local p;
p := plot(0, x = 0 .. 0, axes = none, thickness = 0);
Set('P2' = p) end proc
capnhat := proc ()
global Cn;
Cn := 0
end proc;
chonmau := proc ()
global m1, Cn;
Cn := 1;
m1 := Maplets[Display](Maplet(ColorDialog['CL1']('onapprove' = Shutdown(['CL1']), 'oncancel' =
Action(Evaluate('function' = 'capnhat()'), Shutdown())))):
end proc:
chonmau2 := proc ()
global m2, Cn;
Cn := 1;
m2 := Maplets[Display](Maplet(ColorDialog['CL2']('onapprove' = Shutdown(['CL2']), 'oncancel' =
Action(Evaluate('function' = 'capnhat()'), Shutdown())))) :
end proc:
DT := proc (f, g, SL1, d)
global p1, p2, p3;
if Cn = 1 then if d = F(x) then
p1 := plot(f, x = -SL1 .. SL1, thickness = 3, color = m1[1]);
Set('P' = p1)
elif d = G(x) then
p2 := plot(g, x = -SL1 .. SL1, thickness = 3, color = m2[1]);
Set('P' = p2)
else
p3 := plot([f, g], x = -SL1 .. SL1, thickness = [3, 3], color = [m1[1], m2[1]],
legend = ["Ham F(x)", "Ham G(x)"]);
Set('P' = p3) ;
31
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
fi:
else
if d = F(x) then
p1 := plot(f, x = -SL1 .. SL1, thickness = 3, color = red);
Set('P' = p1)
elif d = G(x) then
p2 := plot(g, x = -SL1 .. SL1, thickness = 3, color = blue);
Set('P' = p2)
Else
p3 := plot([f, g], x = -SL1 .. SL1, thickness = [3, 3], color = [red, blue], linestyle = [1, 10], legend =
["Ham F(x)", "Ham G(x)"]);
Set('P' = p3)
fi:
fi:
end proc:
VanDong := proc (f, g, SL1, d)
if Cn = 1 then if d = F(x) then
Set('P' = plots[animatecurve](f, x = -SL1 .. SL1, thickness = 3, color = m1[1]))
elif d = G(x) then
Set('P' = plots[animatecurve](g, x = -SL1 .. SL1, thickness = 3, color = m2[1]))
else Set('P' = plots[animatecurve]({f, g}, x = -SL1 .. SL1, thickness = 3, color = m1[1])) fi:
else
if d = F(x) then Set('P' = plots[animatecurve](f, x = -SL1 .. SL1, thickness = 3, color = red))
elif d = G(x) then Set('P' = plots[animatecurve](g, x = -SL1 .. SL1, thickness = 3, color = blue))
else Set('P' = plots[animatecurve]({f, g}, x = -SL1 .. SL1, thickness = 3, color = red)) end fi:
fi:
end proc:
DT2 := proc (f, g, x1, x2, y1, y2, d, m3, m4)
global p1, p2, p3;
if d = F(x) then
p1 := plot3d(f, x = x1 .. x2, y = y1 .. y2, grid = [50, 50], axes = boxed, color = m3); Set('P2' = p1)
elif d = G(x) then
p2 := plot3d(g, x = x1 .. x2, y = y1 .. y2, grid = [50, 50], axes = boxed, color = m4); Set('P2' = p2)
else
32
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
p3 := plot3d([f, g], x = x1 .. x2, y = y1 .. y2, grid = [50, 50], axes = boxed, color = [m3, m4]);
Set('P2' = p3)
fi:
end proc:
VanDong2 := proc (f1, g1, x1, x2, y1, y2, k1, k2, d, m3, m4)
if d = F(x) then
Set('P2' = plots[animate3d](f1, x = x1 .. x2, y = y1 .. y2, t = k1 .. k2, axes = boxed))
elif d = G(x) then
Set('P2' = plots[animate3d](g1, x = x1 .. x2, y = y1 .. y2, t = k1 .. k2, axes = boxed))
else
Set('P2' = plots[animate3d]({f1, g1}, x = x1 .. x2, y = y1 .. y2, t = k1 .. k2, axes = boxed)) fi:
end proc:
Help1:=proc()
Maplets[Examples][Message]( “Bạn hãy nhập vào hàm số cần vẽ dạng y = f(x) và sử dụng những chức
năng của maplet vẽ đồ thị,hãy sử dụng thước vẽ để quan sát đồ thị ở những giá trị khác nhau.
Chúc bạn thành công!”);
end:
Help2:=proc()
Maplets[Examples][Message](“ Bạn hãy nhập vào hàm số cần vẽ dạng y = f(x) và sử dụng những chức
năng của maplet vẽ đồ thị.
Luy ý:Nếu bạn muốn quan sát sự vận động của đồ thị trong không gian ,bạn phải nhập vào hàm số dang
z = f(x,y,t), trong đó t là tham số vận động.
Chúc bạn thành công!”);
end:
dothi:=Maplet(onstartup=RunWindow(MAIN),Window[MAIN]"Do thi",([ ["Chào mung các ban den
voi chuong trinh ve do thi bang Maplet!"],["Hãy chon không gian ban muon ve do thi!"],
[Button("Mat phang",onclick=A1),Button(" Khong gian",onclick=A2),Button("Exit",onclick=A3)]]),
Window[Plot]("Do thi trong mat phang",'menubar'='MNB', [[
BoxColumn(border=true,background="#74CFA6", ["hay chon do thi ban muon
ve:",DropDownBox['d']("F(x)", sort(["F(x)","G(x)","F(x)&G(x)"], lexorder))],
["F(x)",TextField['f'](
"x^3*sin(x)"),Button("Color",Evaluate('function'='chonmau()'))],["G(x)",TextField['g'](
"x^3+3*x^2"),Button("Color",Evaluate('function'='chonmau2()'))],
["VUNG HIEN THI DO THI:"],
33
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
34
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
Window[KGT]('title' = "Nhap khoang gia tri", [["Nhap khoang cho tham so van dong t:],[ "T1",
width['k1'](width['k2'], "1", "T2", width['k2'](width['k2'], "2")]), [Button("OK", onclick = A5), ()("Tro
lai", CloseWindow(KGT))],
Action['A4'](RunWindow(KGT)); Action['Action['A4']'](RunWindow(KGT), Evaluate('function' =
'VanDong2(f1, g1, x1, x2, y1, y2, "T2", "OK", d, m3, m4)'))):
Maplets[Display](dothi);
35
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
36
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
37
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
[Button("Tro Lai",
Action(SetOption(target='GioiHan',value=""),CloseWindow('Gioihan'))),Button("ClearAll", Action(
SetOption(target='F',value=""),
SetOption(target='gt',value=""),
SetOption(target='GioiHan',value="")) ),
Button("Thoat", RunWindow('W2'))])]]),
Action[A1](RunWindow('Gioihan')), Window['Dham']("Dao Ham",
'menubar'='MNB2',[[BoxColumn(border=true,background="#FFCCCC",["Maplet tính Đạo Hàm
:"],["Nhập hàm F:", TextField['G'](width=30,"x^3")], ["Đến cấp:",TextField['K'](width=5), "Theo
Biến:", TextField['Bien'](width=5 )],["Kết Qủa",
MathMLViewer['Daoham'](),background="#74CFA6"], [Button("Dao Ham",
Evaluate('Daoham'='Diff(G,Bien$K)=diff(G,Bien$K)')),Button("Tro Lai", Action(
SetOption(target='Daoham',value=""),
SetOption(target='K',value=""),
SetOption(target='Bien',value=""),CloseWindow('Dham'))),
Button("ClearAll", Action( SetOption(target='G',value=""),
SetOption(target='K',value=""),
SetOption(target='Bien',value=""),
SetOption(target='Daoham',value="")) ), Button("Thoat", RunWindow('W2'))])]]),
Action[A2](RunWindow('Dham')),MenuBar['MNB'](Menu("File", MenuItem("Exit
Alt+F4",Shutdown()),MenuItem("ClearAll",(Action(
SetOption(target='F',value=""),
SetOption(target='gt',value=""),
SetOption(target='GioiHan',value=""))))),
Menu("Help", MenuItem("Quick
Help",Evaluate('function'='Help1()')))),MenuBar['MNB2'](Menu("File", MenuItem("Exit
Alt+F4",Shutdown()),MenuItem("ClearAll ",(Action( SetOption(target='G',value=""),
SetOption(target='K',value=""),
SetOption(target='Bien',value=""),
SetOption(target='Daoham',value=""))))),
Menu("Help", MenuItem("Quick Help ",Evaluate('function'='Help2()')))),
Window['W2']("Maplet thông báo:", [["Ban thuc su muon thoat khoi he thong?"],[Button("Ok",
Shutdown()), Button("Cancel", CloseWindow('W2'))]] ), Action['A3'](RunWindow('W2'))) :
Maplets[Display](GioiHan);
38
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
39
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
40
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
with(Maplets[Elements]);
41
Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple
with(DEtools);
with(Maplets[Tools]);
Set('vp' = p2)
end proc;
Button("Exit", Shutdown())]]));
Maplets[Display](maplet);
42