Archive

Posts Tagged ‘Maple’

Phương pháp Newton cho hệ phi tuyến

October 7, 2009 2 comments

Lý thuyết xấp xỉ nghiệm của hệ phi tuyến tổng quát bằng phương pháp Newton có thể xem trong bài báo dưới đây 

http://benisrael.net/Newton-MP.pdf

Ở đây giới thiệu maplet cho bài xấp xỉ nghiệm của hệ phi tuyến bẳng phương pháp Newton hiểu theo nghĩa cổ điển.

Thí dụ giải hệ phương trình x^3-y+1=0, 2x+y+3=0

Trước hết lập một vài procedure cần thiết

> with(LinearAlgebra): with(MTM):
> F:=proc(F1,F2,x,y) local f1,f2;      # Lập vector hàm
f1:= proc (x,y) options operator, arrow; F1 end proc;
f2:= proc (x,y) options operator, arrow; F2 end proc;
return (Vector([f1(x,y),f2(x,y)]));
end proc:

> JacobianMatrix := proc (F1,F2,x,y) local f1,f2;    # tính ma trận Jacobian
f1:= proc (x,y) options operator, arrow; F1 end proc;
f2:= proc (x,y) options operator, arrow; F2 end proc;
return (jacobian(Vector([f1(x,y),f2(x,y)]),Vector([x,y])))
end proc:

> V := proc (n::nonnegint,F1,F2,x,y)  #  Tìm nghiệm gần đúng bằng đệ quy
if n = 1 then return Vector([-1, 1]);             
         else return (
V(n-1,F1,F2,x,y)-MatrixVectorMultiply(
MatrixInverse(eval(JacobianMatrix(F1,F2,x,y),[x=V(n-1,F1,F2,x,y)[1],y=V(n-1,F1,F2,x,y)[2]])),
eval(F(F1,F2, x,y),[x=V(n-1,F1,F2,x,y)[1],y=V(n-1,F1,F2,x,y)[2]] ))                     );
end if;
end proc:

> U:=proc(F1,F2,x,y,e) local n;  # Tìm nghiệm gần đúng với sai số là  e
n:=1;
while (VectorNorm(V(n+1,F1,F2,x,y)-V(n,F1,F2,x,y))> e) do
           n:=n+1; end do;  
return(evalf(V(n,F1,F2,x,y)));
end proc:

Có thể test một số hệ phương trình hai biến (dĩ nhiên có thể xảy ra trường hợp phương trình vô nghiệm, hoặc không hội tụ, tuy nhiên trong giải thuật ở trên được xin bỏ qua những điều này, việc bổ sung và tổng quát giải thuật không có nhiều khó khăn), chẳng hạn với ví trên

>  U(x^3-y+1, 2*x+y+3, x, y, 1/1000000);

Kết quả:  x=-1.179509057, y=-0.6409818860

Lập một maplet là bước cuối cùng để thu được sản phẩm phần mềm hữu ích
> with(Maplets[Elements]):

> maplet := Maplet(
Window(‘title’ = “Solving System of Equations”, ‘toolbar’ = ‘TB’,
[[“Enter the 1st function with variables x,y”], [TextField[‘f1’](30)],
[“Enter the 2nd function with variables x,y”], [TextField[‘f2’](30)],
[“Enter tolerance”, TextField[‘e’](12)],
[“Solution”],[MathMLViewer[‘ML’]()]]),

ToolBar[TB](
ToolBarButton(caption = “Do It”, image = Image(“run.png”), onclick=Evaluate(‘ML’=’U(f1,f2,x,y,e)’)),
ToolBarSeparator(),
ToolBarButton(caption = “About”, image = Image(“about.png”), onclick = RunDialog(‘DG’)),
ToolBarSeparator(),
ToolBarButton(caption = “Exit”, image = Image(“exit.png”), onclick = Shutdown())),
 
MessageDialog[DG](“Solving System of Equations. Copyringt (C) 2009 Mathematical Diary”)):

> Maplets[Display](maplet);

systemeq

Advertisements

Popup Menu

July 5, 2009 Leave a comment

PopupMenu là một đối tượng dạng menu xuất hiện khi ta kích chuột phải trên cửa sổ ứng dụng, hoặc cục bộ trên các đối tượng TextBox hoặc TextField. Như vậy nó là được coi như là một option của Window hoặc của đối tượng TextBox, TextField. PopupMenu bao gồm các Menu, MenuSeparator, MenuItem.

Thí dụ sau đây về ứng dụng tính đạo hàm của hàm hai biến. Trong đó một TextField để input hàm hai biến cần tính, PopupMenu của nó gồm:

– Menu: gồm hai ItemMenu tương ứng với hai chứng năng là tính đạo hàm theo x hoặc theo y và output ra một MathMLViewer.

– MenuSeparator (dấu ngăn cách)

– MenuItem: Thoát khỏi ứng dụng.

Thực hiện như sau

> with(Maplets[Elements]):

> MyMaplet := Maplet(Window(title=”Differentiate Calculator”,

[

[“Enter a function with variables x and y”],

TextField[‘TF’](‘popupmenu’ = ‘PM’, ‘value’ = “cos(x^2)+sin(x*y^2)”),

[“The result is”],

MathMLViewer[‘ML’](),

Button(“Exit”, Shutdown())

]),

PopupMenu[‘PM’](

Menu(“Differentiate”,

MenuItem(“With respect to x”, Evaluate(‘ML’ = ‘diff(TF, x)’)),

MenuItem(“With respect to y”, Evaluate(‘ML’ = ‘diff(TF, y)’))

),

MenuSeparator(),

MenuItem(“Exit Maplet application”, Shutdown())

)

):

> Maplets[Display](MyMaplet)

Kết quả ta được

PopupMenu

Tool Bar

June 27, 2009 Leave a comment

Tool Bar – Thanh công cụ là đối tượng thường thấy trong các cửa sổ chương trình ứng dụng, nó là một dãy các nút công cụ được xếp trên một thanh thường nằm ở vị trí ở lề dọc hoặc lề ngang. Nó cũng đồng chức năng như button hay menu tuy nhiên thân thiện và dễ sử dụng hơn. Chúng ta sẽ làm quen với đối tượng Toolbar trong một ứng dụng Maplet.

Cú pháp chung

> with(Maplets[Elements]):

> MyMaplet := Maplet(Window(‘title’ = “My Maplet Application”, ‘toolbar’ = ‘TB’,

 [

# Phần thân của cửa sổ

]),

ToolBar[TB](

ToolBarButton(caption = “Tool 1”, image = Image(“image1.png”), onclick = <Command>),

ToolBarSeparator(),

ToolBarButton(caption = “Tool 2”, image = Image(“image2.png”), onclick =<Command>),

 ToolBarSeparator(),

….

ToolBarButton(caption = “Tool n”, image = Image(“imagen.png”), onclick = <Command>)

)):

> Maplets[Display](MyMaplet);

Trong đó chú ý các file hình ảnh phải được lưu cùng thư mục với file maple worksheet, và nếu bạn export thành file maplet thì cũng cần các file này đi kèm.

Thí dụ: Tạo một ứng dụng tính tích phân bất định với ToolBar có các chức năng:

– Run: Tính tích phân.

– About: Thông tin về ứng dụng

– Exit: Thoát khỏi chương trình.

Ta thực hiện như sau:

> with(Maplets[Elements]):

> myMaplet := Maplet(Window(‘title’ = “Integration calculator”, ‘toolbar’ = ‘TB’,

[[“Enter a function with variable x”],

[TextField[‘TF’](40)],

[“Result of integration”],

[MathMLViewer[‘ML’]()]]),

ToolBar[TB](ToolBarButton(caption = “Do It”, image = Image(“run.png”), onclick = Evaluate(‘ML’ = ‘Int(TF, x) = int(TF, x) + C’)),

ToolBarSeparator(),

ToolBarButton(caption = “About”, image = Image(“about.png”), onclick = RunDialog(‘DG’)),

ToolBarSeparator(),

ToolBarButton(caption = “Exit”, image = Image(“exit.png”), onclick = Shutdown())

),

MessageDialog[DG](“Integration Calculator. Copyringt (C) 2009 Mathematical Diary”)):

> Maplets[Display](myMaplet);

Các file nguồn, download ở đây (corrected)

Ta có kết quả là cửa sổ như sau

ToolBar

 Một số file hình ảnh mẫu có thể hữu ích bạn có thể tham khảo thêm ở đây

Categories: Maplet Programming Tags: , ,

Tổng quan về Maplets Package

June 2, 2009 4 comments

Maplets pakage là tập hợp bao gồm các lệnh (commands) được tổ hợp để tạo và biểu diễn các ứng dụng Maplet (giao diện point-and-click).

Maplets pakage được phân thành các gói con (subpakages): Elements, Tools, Utilities, Examples

Gói Elements

 Tập hợp bao gồm các lệnh dùng để tạo các đối tượng (Elements) trong một ứng dụng Maplet, thí dụ: windows, buttons, checkboxs …

Gói này gồm có:

Action  AlertDialog  Argument  BorderLayout 
BoxCell  BoxColumn  BoxLayout  BoxRow 
Button  ButtonGroup  CheckBox  CheckBoxMenuItem 
CloseWindow  ColorDialog  ComboBox  ConfirmDialog 
DropDownBox Evaluate FileDialog Font
GridCell GridCell2 GridLayout GridRow
HorizontalGlue Image InputDialog Item
Label ListBox Maplet MathMLEditor
MathMLViewer Menu MenuBar MenuItem
MenuSeparator MessageDialog PasswordField Plotter
PopupMenu QuestionDialog RadioButton RadioButtonMenuItem
Return ReturnItem RunDialog RunWindow
SetOption Shutdown Slider Table
TableHeader TableItem TableRow TextBox
TextField ToggleButton ToolBar ToolBarButton
ToolBarSeparator VerticalGlue Window  

 

Được chia thành các nhóm: 

– Window Body: các đối tượng trên thân cửa sổ chương trình

– Menu: các đối tượng của thanh Menu

– ToolBar: các đối tượng trên thanh công cụ

– Dialog: các đối tượng hộp thoại

– Command: các đối tượng thực thi

– Layout : các đối tượng layout

và các đối tượng còn lại

> with(Maplets[Elements]):   # khai báo subpackage

> myMaplet := Maplet(

Window(<Option>,            # Các tùy chọn cho cửa sổ chính

[  # Phần thân của cửa sổ

[<Element>, <Element>, …. , <Element>], # Các element trên một hàng

[<Element>, <Element>, …. , <Element>],

[<Element>, <Element>, …. , <Element>],

]),

<Reference>  # Định nghĩa các tham chiếu được sử dụng

):  

>Maplets[Display](myMaplet); # Chạy chương trình có tên là MyMaplet có nội dung như trên

Gói Tools

Gói này gồm có

AddAttribute AddContent Get ListBoxSplit
Print Set SetTimeout StartEngine
StopEngine      

Gói Utilities

Gói này gồm có

ErrorDialog GetFile HelpBrowser

Gói Examples

Bao gồm những mẫu maplet viết sẵn, có thể dùng để nhúng vào các  maple worksheet

Cú pháp chung

>with(Maplets[Examples]):

>Command();

Không cần dùng lệnh Display để chạy các maplet mẫu từ gói này

 Gói này gồm có

Alert

Confirm

GetColor

GetEquation

GetExpression

GetFile

GetInput

Integration

KernelOpts

Message

Question

Selection

ShowTable

SignQuery

Thí dụ:

> with(Maplets[Examples]):

  

> GetEquation();

 

Khi đó ứng dụng maplet mẫu GetEquation sẽ được tự động tạo ra như sau

 

getEquation

 

Kết quả là phương trình nhập vào khung, sau khi nhấp OK sẽ được print ra worksheet. 

 

Categories: Maplet Programming Tags: ,

Tổng quan về Maplets

June 2, 2009 Leave a comment

Các ứng dụng Maplets là gì?

Một ứng dụng Maplet đó là một chương trình với giao diện đồ họa người sử dụng (GUI – graphical user interface) bao gồm các đối tượng: windows, textboxs, menus, buttons và hàng loạt các visual interfaces khác. Các ứng dụng maplet chạy trên nền Java Runtime Environment[TM].

Các thuật ngữ cơ bản

– Window: cửa sổ trên đó bao gồm nhiều đối tượng khác, các đối tượng này có thể điều khiển các chức năng và cách bố trí của window. Một ứng dụng Maplet có thể gồm nhiều windows

– Dialog: hộp thoại, chứa các đối tượng khác tuy nhiên không giống với window là các đối tượng của nó có một cấu trúc địịh trước.

– Elements: các đối tượng, tập hợp các đối tượng sẽ tạo một ứng dụng Maplet, thí dụ: windows, buttons, and check boxes

– Layout: bố trí, một cách bố trí sẽ xác định các đối tượng trong Maplet sẽ được biểu diễn như thế nào.

Cách tạo các ứng dụng Maplets

Có hai cách để tạo các ứng dụng Maplets:

– Sử dụng Maplets package (syntax-based)

– Sử dụng Maplet builder (GUI-based)

Những phần này sẽ được đề cập chi tiết trong các bài sau.

Categories: Maplet Programming Tags: ,

Hello World!

June 2, 2009 Leave a comment

Đây là chương trình đơn giản nhất, được coi là nhập môn kinh điển của mọi ngôn ngữ lập trình. Chúng ta sẽ tạo nó với Maplet như sau:

> with(Maplets[Elements]):

> myMaplet:=Maplet([

[“Hello World!”]

]):

> Maplets[Display](myMaplet);

Kết quả chúng ta nhận được một windows form

helloworld

Categories: Maplet Programming Tags: ,