Archive
Phương pháp Newton cho hệ phi tuyến
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
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ả:
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);

Tổng quan về Maplets Package
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 |
| 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

Kết quả là phương trình nhập vào khung, sau khi nhấp OK sẽ được print ra worksheet.
Tổng quan về Maplets
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.


Comments