SƠ LƯỢC VỀ MAPLET TRONG MAPLE. Gi ới thiệu về Maplet Maple tuy là một công cụ...

42
Nhóm niên lun Toán Tin K32 _ Thiết kế giao din Maplet trong Maple 1 SƠ LƯỢC VMAPLET TRONG MAPLE 1. Gii thiu vMaplet Maple tuy là mt công cgii toán rt tuyt với nhưng những câu lnh còn phc tp và rt khó nhớ. Để đơn giản cho những người không thường sdng, tMaple 7 trđi, mt gói lệnh (Package) cho phép người sdng trình độ cao có thto những “cửa stính toán” nhăm đơn giản hóa các câu lnh thông qua giao din gm các nút (button), các hộp văn bản (textbox), các hp kim tra (checkbook),…đó là Maplet. Maplet có tm ng dng rt rng rãi. Các Maplet có thcho chúng ta có thlp trình thành các form hay gọi là “máy tính” trong Maple, các giao diện này được người dùng thiết kế tùy thuc vào các yêu cầu khác nhau, các đối tượng trên Maplet được liên kết vi các gói lnh hoc các thtc(proc()) mình tto trong Maple. Tài liệu này được biên son một cách sơ lược vMaplet. Nếu bn là một người thường xuyên sdng hoc mun tìm hiểu sâu hơn về Maplet thì nhng câu lnh sau sgiúp bn rt nhiu. [> ?Maplets,Index [> ?Maplets, Roadmap [> ?Maplets, Elements [> ?Maplets, Examples Ngoài ra bạn đọc mun tìm hiểu rõ hơn về mi ng dụng cũng nhưng tất ccác gói lnh trên Maple thì truy cp vào Website chính thc ca phn mm toán hc Maple: http://maplesoft.com/ 1.1 Ví dto ra các máy tính Maple [> with( Maplets[Examples] ); [Alert , Conrm, GetColor , GetEquation, GetExpression, GetFile, GetInput , Integration,KernelOpts, LinearAlgebra, Message, Question, Selection, ShowTable, SignQuery] [> Integration(); 1.2 To ra các giao diện đến các thtc và các gói lnh trong Maplet Mt giao giao din Maplet có thddàng thay đổi các giá trtính toán và các tùy chn trong các thtc và các gói lnh ca Maplet. Ví dmt gói lnh sto ra danh sách các thiết lập ban đầu mà người sdng hoc khi cn có ththay đổi. Mt giao din Maplet đến mt gói lnh có thđược tạo ra để giúp người sdng hiu vcâu lệnh đó. Ví dụ sau scho người sdng hc vcách tính định thc ca mt vector trong gói lnh LinearAlgebra() (Gói lnh vđại stuyến tính). [>with(LinearAlgebra):

Transcript of SƠ LƯỢC VỀ MAPLET TRONG MAPLE. Gi ới thiệu về Maplet Maple tuy là một công cụ...

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

1

SƠ LƯỢC VỀ MAPLET TRONG MAPLE

1. Giới thiệu về Maplet

Maple tuy là một công cụ giải toán rất tuyệt với nhưng những câu lệnh còn phức tạp và

rất khó nhớ. Để đơn giản cho những người không thường sử dụng, từ Maple 7 trở đi,

một gói lệnh (Package) cho phép người sử dụng ở trình độ cao có thể tạo những “cửa sổ

tính toán” nhăm đơn giản hóa các câu lệnh thông qua giao diện gồm các nút (button),

các hộp văn bản (textbox), các hộp kiểm tra (checkbook),…đó là Maplet.

Maplet có tầm ứng dụng rất rộng rãi. Các Maplet có thể cho chúng ta có thể lập trình

thành các form hay gọi là “máy tính” trong Maple, các giao diện này được người dùng

thiết kế tùy thuộc vào các yêu cầu khác nhau, các đối tượng trên Maplet được liên kết

với các gói lệnh hoặc các thủ tục(proc()) mình tự tạo trong Maple.

Tài liệu này được biên soạn một cách sơ lược về Maplet. Nếu bạn là một người thường

xuyên sử dụng hoặc muốn tìm hiểu sâu hơn về Maplet thì những câu lệnh sau sẽ giúp

bạn rất nhiều.

[> ?Maplets,Index

[> ?Maplets, Roadmap

[> ?Maplets, Elements

[> ?Maplets, Examples

Ngoài ra bạn đọc muốn tìm hiểu rõ hơn về mọi ứng dụng cũng nhưng tất cả các gói lệnh

trên Maple thì truy cập vào Website chính thức của phần mềm toán học Maple:

http://maplesoft.com/

1.1 Ví dụ tạo ra các máy tính Maple [> with( Maplets[Examples] );

[Alert , Confirm, GetColor , GetEquation, GetExpression,

GetFile, GetInput , Integration,KernelOpts, LinearAlgebra,

Message, Question, Selection, ShowTable, SignQuery]

[> Integration();

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):

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

2

[>with(linalg):

[>A:=Matrix([[1,2], [4,1]])

[>det(A)

1.3 Ví dụ tạo ra các bảng tuy vấn [>with(Maplets[Examples]):

[>Question("Is x positive?");

1.4 Ví dụ tạo ra các bảng thông báo [>with(Maplets[Examples]):

[>Message("You are correct!");

2. Gói lệnh trong Maplet

Gói lệnh trong Maplets bao gồm 3 gói lệnh con: Elements(các thành phần), Examples(các

ví dụ), Tools(các công cụ) và thủ tục Display để chạy các ứng dụng được viết.

Trong đó:

Elements: gồm các thành phần độc lập được sử dụng để tạo nên một Maplet như: Cửa

sổ, các nút lệnh, các hộp kiểm tra…Trong gói lệnh con Maplets[Example] có nhiều

thành phần khác nhau được sử dụng, mỗi thành phần có các mô tả và tùy chọn khác

nhau.

Examples: Gồm các ví dụ chỉ cách sử dụng các Maplet, trong đó có nhiều ví dụ phức

tapj được liên kết đến các trang trợ hướng dẫn và các worksheet mô tả cách thành lập

các Maplet này.

Tools: Gồm các cộng cụ cho người sử dụng Maple thàh lập các Maplet.

3. Giới thiệu một số thành phần trong Maplet

3.1 Các thành phần trong cửa sổ chính

Tất cả các thành phần được giới thiệu ở đây chỉ nhằm giải thích ý nghĩa và nêu ý nghĩa về

cách dùng. Còn cú pháp sử dụng ta luân xem dễ dàng bằng lệnh ?<tên thành phần[> hoặc

bôi đen thành phần cần tìm kiếm và nhấn F2.

3.1.1 Button(nút lệnh)

Các nút lệnh có thể xuất hiện nhiều lần trong một cửa sổ Maplet. Mỗi nút lệnh được liên

quan đến một hoạt động cụ thể khi được kích hoạt. Các trạng thái thể hiện của nút lệnh

được thay đổi trong các tùy chọn của câu lệnh khởi tạo nút lệnh. Ví dụ sau tạo ra hai nút

lệnh Ok, Cande trong một maplet bằng lệnh:

[>restart;

[>with(Maplets[Elements]):

[>maplet := Maplet(["Chon mot lenh",[Button("OK", Shutdown()),

[>Button("Cancel", Shutdown())]]):

[>Maplets[Display](maplet);

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

3

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")],

[> [Button("OK", Shutdown(['ChB1', 'ChB2', 'ChB3'])),

[> Button("Cancel", Shutdown())]]):

[> 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: ",

[> ComboBox['CoB1']("Giai Tich", sort([

[> "Dai So","Giai Tich", "XSTK", "Hinh Hoc"], lexorder))],

[> [Button("OK", Shutdown(['CoB1'])), Button("Cancel",

Shutdown())]]):

[> 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",

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

4

[> "Thang 05","Thang 06","Thang 07", "Thang 08",

[> "Thang 09", "Thang 10","Thang 11", "Thang 12"], lexorder))],

[> [Button("OK", Shutdown(['DDB1'])), Button("Cancel",

Shutdown())]]):

[> Maplets[Display](maplet);

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;

3.1.7 MathMLViewer ( Cửa sổ hiển thị các công thức toán)

Là một điều khiển cho phép hiển thị các công thức toán chứa trong nó. Các biểu thức được

hiển thị dưới dạng công thức toán học bình thường thay cho các cú pháp câu lệnh định

nghĩa. Chú ý các đối tượng trong điều khiển này không thể copy hoặc paste như trong môi

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

5

trường soạn thảo của maple. Ví dụ:

[>Maplets[Display]( Maplet([

[>Label("Nhap vao mot cong thuc toan:",

[>'font' = Font( 'family'=".VnTime", italic, 20 ) ),

[>TextField['TF1']('value' =

[>(x^3+sqrt(x^2+1))/ln(1/x)),

[>MathMLViewer['MMLV1']( ),

[>[Button("Hien thi", Evaluate( 'MMLV1' = 'MathML[Export](TF1)'

)),

[>Button("Bo qua", Shutdown())] ]));

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",

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

6

[>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())]

[>]):

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

7

[>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);

3.2 Tạo Menu

Các thành phần trong một menu trong maplet bao gồm:

MenuBar (Thanh menu): Phải là thành phần trong một thành phần trong một của số

nào đấy của 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)

3.3 Thanh công cụ (ToolBar)

Các khái niệm về thanh menu hay thanh công cụ rất quen thuộc với những người sử dụng

window. Trong maplet cũng vậy ta cũng có thể tạo ra các thanh công cụ để thực hiện các

công việc chính trong maplet của mình. Thành phần trong thanh công cụ gồm các nút

lệnh, các nút phân cách.Ví dụ:

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

8

[>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);

3.4 Một số lệnh thường dùng trên cửa sổ maplet

3.4.1 CloseWindow

Đóng một cửa sổ trong maplet

[>with(Maplets[Elements]):

[>maplet := Maplet('onstartup' = 'A1',

[>Window['W1']("1",

[>[Button("Mo mot cua so moi", RunWindow('W2')),

[>Button("Exit", Shutdown("1"))]

[>),

[>Window['W2']("2",

[>[Button("Dong cua so nay", CloseWindow('W2')),

[>Button("Exit", Shutdown("2"))]

[>),

[>Action['A1'](RunWindow('W1'))

[>):

[>Maplets[Display](maplet);

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

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

9

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.

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

10

3.5 Giới thiệu một sô hộp thoại thường dùng

Các cửa sổ (Dialogs) là các cửa sổ nhỏ trong ứng dụng Maplet nhằm cung cấp thông tin,

đưa ra các cảnh báo hoặc nhận thông tin…Ngoài một số ký hiệu mặc định trong hộp thoại,

người lập trình maplet có thể định dạng lại một số thuộc tính như: Ký tự xuất hiện trên

thanh tiêu đề hay trên nút lệnh, hay trên các thông báo. Chú ý Dialog không có giá trị trả

về.

3.5.1 AlertDialog (Hộp thoại cảnh báo)

Dùng hộp thoại này khi muốn cảnh báo một điều gì cho người dùng maplet. Ví dụ:

> Maplets[Display]( Maplet( AlertDialog(

> "Canh bao, sap mat dien",

> 'onapprove' = Shutdown('true'),

> 'oncancel' = Shutdown("FAIL")

> ) ) );

3.5.2 ColorDialog (Hộp thoại màu)

Dùng hộp thoại này người dùng có thể chọn một màu trong các màu chuẩn để hiển thị trên

một đối tượng nào trên maplet. Ví dụ: >restart;with(Maplets[Elements]):

>Maplets[Display]( Maplet( ColorDialog['CD1'](

> 'onapprove' = Shutdown(['CD1']),

> 'oncancel' = Shutdown()

> ) ) );

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);

3.5.4 FileDialog (Hộp thoại chọn file)

Dùng hộp thoại này khi muốn chọn một file nào trong máy tính. Ví dụ:

> with(Maplets[Elements]):

> maplet := Maplet(FileDialog['FD1'](

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

11

> 'filefilter' = "*.*",

> 'filterdescription' = "Tat ca cac file (*.*)",

> 'onapprove' = Shutdown(['FD1']),

> 'oncancel' = Shutdown()

> )):

> Maplets[Display](maplet);

3.5.5 InputDialog (hộp thoại nhập)

Hộp thoại này giống như hộp thoại AlertDialog nhưng có thêm một hộp văn bản mình có

thể nhập vào các giá trị. Ví dụ:

> with(Maplets[Elements]):

> maplet := Maplet(

> InputDialog['ID1']("Nhap vao mot so nguyen",

> 'onapprove'=Shutdown(['ID1']),

> 'oncancel'=Shutdown()

> )):

> Maplets[Display](maplet);

3.5.6 Massage (hộp thoại thông báo)

Dùng hộp thoại này để thông báo cho người dùng một thông tin gì đấy. Hộp thoại này chỉ

có 2 phần: Phần thông báo cần hiển thị và nút tắt hộp thoại. Ví dụ: > with(Maplets[Elements]):

> maplet := Maplet(MessageDialog("Chao mung ban den voi Maplet",

> 'onapprove'=Shutdown()

> )):

> Maplets[Display](maplet);

3.5.7 QuestionDialog (hộp thoại truy vấn)

Hộp thoại này dùng cho người sử dụng có thể xác nhận một vấn đề gì đó với hai trạng thái

Yes, No. Ví dụ:

>with(Maplets[Elements]):

> maplet := Maplet(QuestionDialog(question,"Ban la nam?",

> 'onapprove'=Shutdown("true"),

> 'ondecline'=Shutdown("false")

> )):

> Maplets[Display](maplet);

3.6 Tạo bảng trong maplet

Trong cửa sổ maplet có thể tạo ra các bảng(table) . mỗi bảng gồm có các tiêu đề, các ô.

Nếu khai báo một bảng mà không có thanh tiêu đề thì thanh tiêu đề mặc định là A…Z ,

AA…ZZ. Ví dụ: > IL := [1,x,exp(x),a^x, sin(x), cos(x), tan(x), cot(x)]:

> Maplets[Display]( Maplet( [

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

12

> BoxCell(Table( ["Ham so co ban", "Nguyen ham"], [seq( [i, int(

i,

> x )], i = IL )], 'width'=200 ), 'as_needed'),

> Button("OK", Shutdown())] ) );

MỘT SỐ MAPLET ĐIỂN HÌNH TRONG CHƯƠNG TRÌNH

TOÁN CAO CẤP

1. Giới thiệu

Như chúng ta đã biết maple là một phần mềm toán học có tầm ảnh hưởng rất mạnh mẽ đến

các ngành khoa học tự nhiên, đặc biệt là đối với ngành toán học Thế giới. Mặc dù vậy,

những câu lệnh của maple thường nhọc nhằn khó nhớ. Để đáp ứng yêu cầu cho nhiều người

có thể dêt dàng khai thác đươc tiềm năng của phần mền này. Trong maple có một phần nhỏ

là maplet, maplet là một mảng giúp cho những người dùng maple tự tạo nên các giao diện

tính toán tùy theo yêu cầu của người sử dụng. Mọi thao tác trên maplet giống như chúng ta

đang làm việc với môi trường Window của máy tính vậy. Trong phần này chúng tôi sẽ

trình bày một số maplet về các vấn đề trong toán cao cấp của chương trình Đại học, bao

gồm:

Maplet ứng dụng trên Đại số tuyến tính

Maplet ứng dụng trên phép tính vi tích phân hàm một biến

Maplet ứng dụng trên phương trình vi phân Toán Lý

2. Giới thiệu tổng quan về một số maplet ứng dụng

2.1 Maplet ứng dụng trên Đại số tuyến tính

2.1.1 Maplet tính toán trên ma trận vuông

Maplet này cho phép người sử dụng tính toán trên ma trận vuông, bằng việc nhập vào một

ma trận sau đó thực hiện các phép toán điển hình như: Tính định thức ma trận, Hạng ma

trận, Giá trị riêng, Vector riêng, Đa thức đặc trưng, Tính lũy thừa, Tìm ma trận

nghịchđảo, Đa thức tối tiểu và Chéo hóa ma trận.

Hình ảnh minh họa:

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

13

Giao diện nhập ma trận.

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

14

Giao diện tính toán ma trận.

Thân chương trình:

restar;

with(Maplets[Elements]);

with(LinearAlgebra);

with(linalg);

Thongbao:=proc()

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;

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

15

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() ;

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

16

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

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

17

,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)

2.1.2 Maplet giải hệ phương trình tuyến tính.

Maplet này được sử dụng giải hệ phương trình tuyến tính theo phép khử Gauss. Việc nhập ma

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

18

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:

Giao diện về ma trận sau khi biến đổi Gauss

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

19

Giao diện cho thấy ngiệm của hệ phương trình

Giao diện trợ giúp

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

20

Thân chương trình: restar; with(LinearAlgebra); with(Student[LinearAlgebra]): with(linalg): Thongbao:=proc()

Maplets[Display]( Maplet( AlertDialog(title="Maplet-Giải hệ phương trình tuyến tính thông báo!", "

Bạn vui lòng nhập vào ma trận! ",

'onapprove' = Shutdown(),

'oncancel' = Shutdown() ) ) );

end:

Capnhat:=proc()

global t;

t:=0;

end:

NhapMT:=proc()

global A,t;

local C;

t:=1;

C:=Matrix([[6,2,-1,1],[1,6,-8,4],[1,3,-9,-5]]);

while true do A:=MatrixBuilder(C,2,5,square=false,sqrstatic=true,augmented=true,augstatic=true);

if RowDimension(A) # ColumnDimension(A)-1 then Maplets[Examples][Message]("Chu y ma

tran suy rong <A|b>, A la ma tran vuong."); else

break;

fi:

od:

Maplets[Tools][Set]('nhap'(value)=A);

end:

PPGausse:=proc()

global B,t;

if t=0 then

Thongbao();

else

B:=DeleteColumn(A,ColumnDimension(A));

if det(B)=0 then

Maplets[Examples][Message]("He phuong trinh vo nghiem, Det(A)=0 !");

else

Maplets[Tools][Set]('kq'(value)=GaussianElimination(A));

fi:

fi:

end:

NghiemGauss := proc ()

global B, t;

if t = 0 then Thongbao()

else

B := DeleteColumn(A, ColumnDimension(A));

if det(B) = 0 then

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

21

Maplets[Examples][Message]("He phuong trinh vo nghiem, Det(A)=0 !")

else

Maplets[Tools][Set](('kq')(value) = LinearSolve(A)) ;

fi:

fi:

end:

with(Maplets[Elements]);

maplet:=Maplet('onstartup' = 'A1', Window['W1']("Maplet giai he - PP khu Gauss

",'menubar'='MNB' ,[Label("\\nGIẢI PHƯƠNG TRÌNH A.x=b BẰNG PHƯƠNG PHÁP KHỬ

GAUSS\\n",'font'=Font(16),'foreground'="#1E05E9", ), [BoxColumn(border=true, background

="#57E9CD", Label("Ma trân suy rộng",'foreground'=blue, 'font' = Font( bold, 12)),

MathMLViewer['nhap'](height=200, background="#E8EEEE",foreground="#253BA3") ),

BoxColumn(border=true,background ="#57E9CD", Label("K?t qu? tính toán",'foreground'=blue,

'font' = Font( bold, 12)),

MathMLViewer['kq'](height=200, background="#E8EEEE",foreground="#253BA3") )],

BoxRow(border=true, background ="#9EBA66",Button("Nhập Ma Trận",

Evaluate('function'='NhapMT()')), Button("Ma Trận Khử Gauss",Evaluate('function'='PPGausse()')),

Button("Nghiệm", Evaluate('function'='NghiemGauss()')),ưButton("Xoa Du Lieu",Action(

SetOption(target='nhap',value=""),

Evaluate('function'='Capnhat()'),

SetOption(target='kq',value=""))), Button("Thoát", Action(RunWindow('W2'))) ) ]),

MenuBar['MNB'](Menu("File", MenuItem("Exit Alt+F4",Shutdown())),

Menu("Help", MenuItem("Quick Help ",RunWindow('W3')),

Window['W2']("Maplet-Ma tran vuong thong bao:", [["Ban thuc su muon thoat khoi he thong?

"],[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.

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

+Hướng dẫn sử dụng.

Bạn nhấn vào Nhập Ma Trận, bạn sẽ thấy một giao diện chuên nhập ma trận hiện ra. Trên đó bạn có

thể điều chỉnh các thông số theo ý ma trận mà bạn muốn nhập. Thực hiện xong việc nhập bạn có thể

nhấn vào Ma Trận Khử Gauss để thấy được ma trận sau khi biến đổi đưa về dạng tam giác hoặc chọn

vào nút Nghiệm để biết được nghiệm của hệ.

\n”)],

[Button("Thoát", Shutdown())]]),

Action['A1'](RunWindow('W1')):

Maplets[Display](maplet);

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

22

2.2 Maplet ứng dụng trên phép tính vi tích phân.

2.2.1 Maplet ứng dụng xấp xĩ hàm số bằng khai triển Taylor.

Trong giải tích có rất nhiều hàm số rất trừu tượng việc khảo sát các tính chất của nó cũng như

việc tính các giá trị bất kỳ của hàm số đó thật là khó khăn. Vì vậy maplet này được tạo ra để

cho người sử dụng có thể khai triển xấp xĩ một hàm số bằng đa thức, ngoài ra chúng ta có thể

thấy được sự xấp xĩ của hai hàm số đó bằng đò thị một cách trực quan.

Hính ảnh minh họa:

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

23

Giao diện Maplet tính xấp xĩ

Giao diên tính toán bằng MenuBar

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

24

Giao diện tính toán bằng PopMenu

Thân chương trình:

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

25

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)),

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

26

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

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

27

*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:

Giao diện chọn không gian vẽ đồ thị

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

28

Giao diện vẽ đồ thị trong mặt phẳng

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

29

Giao diện vẽ đồ thị trong không gian 3 chiều

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

30

Giao diện chọn màu vẽ đồ thị

Thân chương trình:

>restart; with(plots): with(Maplets[Tools]): with(Maplets[Elements]): with(StringTools):

SetPL := proc ()

local p;

p := plot(0, x = 0 .. 0, axes = none, thickness = 0);

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

31

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) ;

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

32

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

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

33

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:"],

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

34

Plotter['P']( continuous=true,play=true),[ Slider['SL1'](10..100, 10, 'showticks', 'majorticks'=20,

'minorticks'=5, 'snapticks'=false,'onchange'='Action5','background'="#5C5C6C")],

[Button("Display",Action('reference'='Action5', Evaluate('function'='DT(f,g,SL1,d)'))),

Button("Animate",Evaluate('function'='VanDong(f,g,SL1,d)')),

[Button("Back",CloseWindow('Plot'))],

Button("Exit",onclick=A3)])]]),

Action[A1](RunWindow(Plot)), Window[Plot2]("Do thi trong khong gian",'menubar'='MNB2', [[

BoxColumn(border=true,background="#FFCCCC", ["Hay chon do thi ban muon

ve?:",DropDownBox['d']("F(x)", sort(["F(x)","G(x)","F(x)&G(x)"],

lexorder))],["F(x,y)",TextField['f1']( "sin(x)/y^2"),"Color",DropDownBox['m3']("green",

sort(["blue","red","yellow"," green","pink","orange"], lexorder))],["G(x,y)",TextField['g1'](

"x^3+y^2+1"),"Color",DropDownBox['m4']("red",

sort(["blue","red","yellow","green","pink","orange"], lexorder))],["X1",TextField['x1']( "-

5"),"X2",TextField['x2']( "5")],["Y1",TextField['y1']( "-5"),"Y2",TextField['y2'](

"5")],Plotter['P2'](continuous=true,play=true ), [Button("Display",

Evaluate('function'='DT2(f1,g1,x1,x2,y1,y2,d,m3,m4)')),

Button("Animate",onclick=A4),[Button("Back",

CloseWindow('Plot2'))],Button("Exit",onclick=A3)])]]),

Action[A2](RunWindow(Plot2)),MenuBar['MNB'](Menu("File", MenuItem("Exit

Alt+F4",Shutdown()),MenuItem("ClearAll",(Action(

SetOption(target='f',value=""),

Evaluate('function' = 'SetPL(SL1)'),

SetOption(target='g',value="") ))))

,Menu("Help", MenuItem("Quick Help ",Evaluate('function'='Help1()')))),

MenuBar['MNB2'](Menu("File", MenuItem("Exit Alt+F4",Shutdown()),MenuItem("ClearAll

",(Action( SetOption(target='f1',value=""),

SetOption(target='g1',value=""),

SetOption(target='x1',value=""),

Evaluate('function' = 'SetPL3()'),

SetOption(target='x2',value=""),

SetOption(target='y1',value=""),

SetOption(target='y2',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)),

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

35

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);

2.2.3 Maplet tính giới hạn và đạo hàm

Maplet này được chia làm hai phần:

Phần 1: Là maplet tính giới hạn của hàm số,với các chức năng:

1. Tính giới hạn

2. Tính giới hạn trái

3. Tính giới hạn phải

4. Tính giới hạn tại vô cùng

Phần 2: Là maplet tính đạo hàm của hàm số,với maplet này,chúng ta có thể tính đạo hàm của

hàm số theo biến và cấp tùy ý.

Hình ảnh mình họa:

Giao diện chọn phép tính ban đầu

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

36

Giao diện tính giới hạn

Giao diện tính đạo hàm

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

37

Thân chương trình:

>with(plots):with(Maplets[Tools]): with(Maplets[Elements]):

KiemTra:=proc(F,gt)

if limit(F,x=gt,left) # limit(F,x=gt,right) then

Maplets[Examples][Message]("Khong ton tai gioi han !");

else

Maplets[Tools][Set]('GioiHan'(value)=(Limit(F,x=gt)=limit(F,x=gt)));

fi:

end:

Help1:=proc()

Maplets[Examples][Message](“Bạn hãy nhập vào hàm số dạng y = f(x) và thực hiện những phép toán

tương ứng.

Luwy ý : Nếu bạn muốn tìm giới hạn của một hàm số tai vô cùng,bạn chỉ cần nhập vào hàm số và bấm

nút lệnh Giới han tại ∞.Bạn sẻ có kết quả tương ứng.

Chúc bạn thành công!”)

end:

Help2:=proc()

Maplets[Examples][Message](“Bạn hãy nhập vào một hàm số tùy ý,nhập cấp, biến đạo hàm và thực

hiện phép toán tương ứng.

Chúc bạn thành công!”)

end:

GioiHan:=Maplet(onstartup=RunWindow(MAIN),Window[MAIN]("Gioi Han - Dao Ham",[["Chào

mừng các bạn đến với maplet tính Giới Hạn - Dao Hàm!"],["Bạn muốn tính giới hạn hay đạo hàm?"],

[Button("Gioi Han",onclick=A1),Button(" Dao Ham",onclick=A2),Button("Thoat",onclick=A3)]]),

Window[Gioihan]("Gioi Han",'menubar'='MNB',

[[BoxColumn(border=true,background="#74CFA6",["Nhập hàm F(x)",TextField['F']("tan(x+Pi/2)")],

["Tính GH tại điểm ",TextField['gt']("0")], ["Kết

Qủa:",MathMLViewer['GioiHan'](),background="#FF9999"],

[Button("Gioi Han",Evaluate('function'='KiemTra(F,gt)')),Button("Gioi Han

Trai",Evaluate('GioiHan'='Limit(F,x=gt,left)=limit(F,x=gt,left)')),Button("Gioi Han

Phai",Evaluate('GioiHan'='Limit(F,x=gt,right)=limit(F,x=gt,right)')),Button("Gioi Han Tai

infinity",Evaluate('function'='GioiHanVC(F)'))],

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

38

[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);

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

39

2.3.1 Mapet ứng dụng trong phương trình vi phân

Phương trình vi phân là một vấn đề rất cơ bản của toán học, tuy nhiên việc tính toán trên đối

tượng này hết sức khó khăn. Sau đây là một số Maplet về giải phương trình vi phân, hệ phương

trình vi phân để phục vụ cho việc tính toán trên đối tượng này một cách dễ dàng hơn.

2.3.2 Maplet giải phương trình vi phân thường.

Phương trình đầu vào có dạng:

y"+ Ay '+ By = 0 Với điều kiện ban đầu : y(0) = x0 , y '(0) =y0 ;

Hình ảnh minh họa:

Giao diện giải phương trình vi phân

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

40

Thân chương trình:

> restar;

with(Maplets[Elements]);

with(DEtools);

with(Maplets[Tools]);

DT := proc (f, k1, k2) global p2, p3, t, dothi;

t := k1, k2; p2 := dsolve({t, f}, {y(x)});

Set('vp' = p2)

end proc;

maplet := Maplet(Window([BoxColumn(border = true, background = "#9999FF",

[Label("MAPLET GIAI PHUONG TRINH VI PHAN THUONG", 'font' = Font("courier", 14))],

[Label("Y(x)", 'font' = Font("courier", 14)), TextField['f'](width = 40, "D(D(y))(x)-

2*D(y)(x)+2*y(x)=4*exp(x) ")], ["y()", TextField['k1']("y(0)=1"), "D(y)",

TextField['k2']("D(y)(0)=2")]), BoxColumn(border = true, background = "#9999FF", [Label("Ket Qua",

'font' = Font("courier", 14))], [MathMLViewer[vp](height = 90)],

["DO THI HAM SO"], [Plotter['PL1'](height = 300)]),

[Button("Tinh", Evaluate('function' = 'DT(f, k1, k2)')),

[Button("Do Thi", Evaluate('PL1' = 'plot(subs(p2, {y(x)}), x = -8 .. .10)'))], Button("Exit",

Shutdown())]]));

Maplets[Display](maplet);

2.2.4 Maplet giải hệ phương trình vi phân thường

Hệ phương trình vi phân có dạng:

y"(x) =z(x);

z"(x)=y(x);

Với điều kiện ban đâu : y(0)=x0; z(0)=y0;

Hình ảnh minh họa:

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

41

Giao diện giải hệ phương trình vi phân

Thân chương trình:

> restar;

with(Maplets[Elements]);

Nhóm niên luận Toán Tin K32 _ Thiết kế giao diện Maplet trong Maple

42

with(DEtools);

with(Maplets[Tools]);

DT := proc (f1, f2, dk1, dk2)

global p2, p3, t, h, p; t := f1, f2; p := {y(x), z(x)};

h := dk1, dk2; p2 := dsolve({h, t});

Set('vp' = p2)

end proc;

maplet := Maplet(Window([BoxColumn(border = true, background = "#9999FF",

["MAPLET GIAI HE PHUONG TRINH VI PHAN"]), BoxColumn(border = true,

background = "#9999FF", [Label("F1(x):", 'font' = Font("courier", 14)), TextField['f1'](width =

30, "diff(y(x),x)=z(x)-y(x)-x")], [Label("F2(x):", 'font' = Font("courier", 14)),

TextField['f2'](width = 30, "diff(z(x),x)=y(x)")], [Label("y(0)", 'font' = Font("courier", 14)),

TextField['dk1'](width = 10, "y(0)=0"), Label("z(0)", 'font' = Font("courier", 14)),

TextField['dk2'](width = 10, "z(0)=1")]), BoxColumn(border = true, background = "#9999FF",

[Label("Ket Qua", 'font' = Font("courier", 14))], [MathMLViewer[vp](height = 200)]),

[Button("Tinh", Evaluate('function' = 'DT(f1, f2, dk1, dk2)')),

Button("Exit", Shutdown())]]));

Maplets[Display](maplet);