1. Trang chủ
  2. » Luận Văn - Báo Cáo

LẬP TRÌNH TÍNH TOÁN HÌNH THỨC CHO MỘT SỐ GIẢI THUẬT TRONG MẠNG TÍNH TOÁN

31 824 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 31
Dung lượng 1,07 MB

Nội dung

Trong EXCEL, ta có thể tính được ma trận nghịch đảo của một ma trận không suy biến với các phần tử là các số, song với các phần tử bằng chữ thì máykhông làm được việc đó... Sơ lược về lậ

Trang 1

LỜI CẢM ƠN

Em xin gửi lời cảm ơn chân thành đến PGS.TS Đỗ Văn Nhơn, người đã truyềnđạt những kiến thức quý báu không chỉ là lý thuyết mà Thầy còn hướng dẫn cách thứctìm hiểu, phân tích và vận dụng lý thuyết về phương thức lập trình hình thức, công cụ lậptrình Maple, biểu diễn tri thức để xây dựng các mô hình và tạo các ứng dụng hữu ích dựatrên các miền tri thức cụ thể Em xin chân thành cảm ơn Thầy vì sự hướng dẫn của Thầytrong quá trình thực hiện báo cáo này

Em xin chân thành cảm ơn Phòng Đào tạo sau Đại học đã tạo mọi điều kiện để emhoàn thành báo cáo này

Xin chân thành cảm ơn sự giúp đỡ của các anh chị, bạn bè và những người đãthường xuyên trao đổi, thảo luận và đóng góp ý kiến cho tôi về các vấn đề liên quan trongthời gian qua

Học viên thực hiện

Lê Thanh Trọng

Trang 2

MỤC LỤC

Trang 3

CHƯƠNG 1: CƠ SỞ LẬP TRÌNH TÍNH TOÁN HÌNH THỨC TRONG MAPLE

1.1. Giới thiệu

Như chúng ta đã biết, trong những năm gần đây, với sự phát triển của Công nghệthông tin (CNTT), nhiều phần mềm hỗ trợ cho việc tính toán đã xuất hiện và càng ngàycàng được hoàn thiện Tại nước ta, mặc dù chưa trở thành một hiện trạng phổ biến, nhưngtrong rất nhiều trường Đại học và Cao đẳng, nhiều cô giáo, thầy giáo đã thực hiện “mộtcách tự phát” việc sử dụng CNTT nói chung và phần mềm tính toán nói riêng trong việcgiảng dạy Toán

Nhiều người đã sử dụng phần mềm STATA, SPSS để xử lý các số liệu thống kê,EVIEWS, MFIT để xử lý các số liệu trong các bài toán Kinh tế lượng,MATHEMATICA, MATLAB, MAPLE trong các bài toán về Toán cao cấp, Toán tàichính

Việc sử dụng các phần mềm tính toán đã đặt ra cho các nhà quản lý giáo dục, các

cô giáo, thầy giáo một vấn đề cấp thiết là sử dụng chúng như thế nào trong công tác đổimới phương pháp dạy và học Toán ở các trường Đại học, Cao đẳng và Phổ thông

Một vấn đề còn đang gây nhiều tranh luận quanh việc sử dụng một số phần mềmkhác như MATLAB, MATHEMATICA, MAPLE… trong việc dạy và học môn Toán caocấp Các câu hỏi thường đặt ra là: Nên hay không nên sử dụng chúng? Nếu sử dụng thì sửdụng đến mức nào và nhằm mục đích gì? Các phần mềm nêu trên ngoài việc tính toántrên số, còn có một khả năng rất mạnh là tính toán trên ký hiệu (symbolic) Không phảiphần mềm tính toán nào cũng có thể cộng 2X với 3X cho kết quả 5X, hay lấy đạo hàmmột biểu thức giải tích Trong EXCEL, ta có thể tính được ma trận nghịch đảo của một

ma trận không suy biến với các phần tử là các số, song với các phần tử bằng chữ thì máykhông làm được việc đó

Trang 4

Trong khuôn khổ báo cáo này, chúng tôi xin đề cập đến một trong các phần mềm

mà chúng tôi đang khai thác là MAPLE Cho đến cuối năm 2009, trên thị trường nước ta

đã có phiên bản MAPLE 13 Theo chúng tôi, MAPLE đủ đáp ứng cho các tính toán trên

số và trên các ký hiệu

Kết hợp với công cụ toán giải MAPLE là mô hình mạng tính toán, một mô hình

“thông minh” cho phép giải một số bài toán một cách tự động trong toán học, hóa học,vật lý,… dựa trên tập các sự kiện và các luật dẫn Một số giải thuật hình thức sẽ đượcMAPLE hiện thực và đóng gói để tạo thành các thư viện hỗ trợ cho ứng dụng trong báocáo này Gói này là thành phần cốt lõi của chương trình và được MapleEngine nằm trongthành phần giao diện (C#) triệu gọi các phương thức cần thiết để giải toán

1.2. Sơ lược về lập trình Maple

Maple là một hệ thống tính toán trên các biểu thức đại số và minh hoạ

toán học mạnh mẽ của công tyWarterloo Maple Inc (maplesoft.com) Maple ra đời

năm 1991 đến nay đã phát triển đến phiên bản 16 Maple có cách cài đặt đơngiản, chạy được trên nhiều hệ điều hành, có cấu trúc linh ho ạt để sử dụng tối

ưu cấu hình máy và có trình trợ giúp (help) rất dễ sử dụng Từ phiên bản 7,Maple cung cấp ngày càng nhiều các công cụ trực quan, các gói lệnh tự học gắnliền với toán học phổ thông và đại học Ưu điểm đó làm cho nhi ều người trênthế giới lựa chọn sử dụng Maple cùng các phần mềm toán học khác áp dụng trongdạy học toánvà các công việc tính toán đòi hỏi của thực tiễn và sự phát triển củagiáo dục

C ó thể nhận thấy rằng ngoài các tính năng tính toán và minh hoạ rất mạnh

mẽ bằng các câu lệnh riêng biệt (thường chỉ cho ta kết quả cuối cùng), Maple còn

là một ngôn ngữ lập trình hướng thủ tục (procedure) Thủ tục là một dãy cáclệnh của Maple theo th ứ tự mà người lập trình định sẵn để xử lí một công việcnào đó, khi thực hiện thủ tục này Maple sẽ tự động thực hiện các lệnh có trongthủ tục đó một cách tuần tự và sau đó trả lại kết quả cuối cùng

Trang 5

Mapple có các chức năng cơ bản sau:

• Là một hệ thống tính toán trên các biểu thức đại số

• Có thể thực hiện được hầu hết các phép toán cơ bản trong chương trình toán đại học vàsau đại học

• Cung cấp các công cụ minh họa hình học thuận tiện gồm: vẽ đồ thị động và tĩnh của cácđường và mặt được cho bởi các hàm tùy ý và trong các hệ tọa độ khác nhau

• Là một ngôn ngữ lập trình đơn giản và mạnh mẽ, có khả năng tương tác với các ngôn ngữlập trình khác

• Cho phép trích xuất ra các định dạng khác nhau như word, HTML…

• Một công cụ biên soạn giáo án và bài giảng điện tử, thích hợp với các lớp học tương táctrực tiếp

• Một trợ giáo hữu ích cho học sinh sinh viên trong việc tự học

Vòng lặp while cho phép lặp chuỗi các câu lệnh giữa do và od khi mà điều kiện

condition vẫn còn đúng (tức là biểu thức điều kiện cho giá trị true) Điều kiện condition

được kiểm tra ngay tại đầu mỗi vòng lặp, nếu nó thỏa mãn (giá trị của nó là đúng) thì các

câu lệnh bên trong được thực hiện, sau đó lại tiếp tục kiểm tra điều kiện condition cho đến khi điều kiện không còn thỏa mãn nữa.Vòng lặp while thường được sử dụng khi số

lần lặp một hay một chuỗi biểu thức là không xác định rõ, đồng thời ta muốn các biểuthức đó cần được lặp trong khi một điều kiện nào đó còn được thỏa mãn

Điều kiện condition trong vòng lặp phải là một biểu thức boolean, tức là giá trị của

nó chỉ có thể là đúng hoặc sai, nếu không thì sẽ sinh ra lỗi

Trong trường hợp muốn thoát ra khỏi vòng lặp ngay từ trong giữa vòng lặp, ta có

thể thực hiện bằng cách dùng câu lệnh RETURN, break hoặc quit.

Trang 6

Chú ý rằng vòng lặp while- do- od; không bắt buộc phải nằm trên nhiều dòng lệnh

nhưng người ta thường viết trên nhiều dòng để câu lệnh dễ đọc và dễ hiểu hơn

Vòng lặp While cho phép lặp chuỗi các câu lệnh nằm giữa do và od khi mà điều

(name:=name+change) Sau đó, biến name được so sánh với finish để quyết định xem

việc thực hiện chuỗi lệnh có được tiếp tục nữa không Quá trình so sánh biến chỉ số name

Trang 7

và thực hiện chuỗi lệnh được lặp liên tiếp cho đến khi giá trị của biến name lớn hơn giá trị finish Giá trị cuối cùng của biến name sẽ là giá trị vượt quá finish đầu tiên

Chú ý Nếu các từ khóa from start hoặc by change bị bỏ qua thì mặc định from 1

và by 1 được dùng.

Vòng lặp for- in- do- od thực hiện việc lặp với mỗi giá trị mà biến chỉ số name lấy

từ biểu thức expression đã cho Chẳng hạn vòng lặp này được sử dụng hiệu quả khi mà giá trị của biến name là một phần tử của một tập hợp hoặc danh sách.

Trong trường hợp muốn thoát khỏi từ giữa vòng lặp, ta có thể dùng các câu lệnh

break, quit, RETURN giống như trong vòng lặp while.

1.2.1.3. Lệnh điều kiện if

a Cú pháp

if condition then

statement sequence

| elif condition then statement sequence |

| else statement sequence |

fi;

(Ghi chú: Các câu lệnh trong cặp dấu ngoặc đứng là các lệnh tuỳ chọn Thí dụ:

biểu thức | statement | cho biết rằng statement là một câu lệnh tuỳ chọn).

b Chức năng

Nếu bạn muốn một dãy biểu thức được thực hiện khi điều kiện nào đó được thoả

mãn và một dãy biểu thức khác được thực hiện nếu trái lại thì có thể dùng câu lệnh

if-then- else- fi Trong câu lệnh trên, nếu điều kiện condition là đúng thì chuỗi biểu thức

đứng sau then được thực hiện, nếu trái lại thì điều kiện condition sau từ khoá elif sẽ được kiểm tra, nếu nó đúng thì chuỗi lệnh tương ứng sau then được thực hiện, cứ tiếp tục cho

Trang 8

đến khi các điều kiện condition đều không thỏa mãn, thì các biểu thức sau lệnh else được

bạn sẽ muốn dừng quá trình quét lại ngay khi bạn tìm thấy đối tượng cần tìm Khi đó,

ngay tại thời điểm tìm thấy, bạn dùng lệnh break để nhảy ra khỏi vòng lặp tìm kiếm Trước lệnh break thường có một câu lệnh điều kiện if then

Nếu lệnh break dùng ngoài các vòng lặp while/for thì sẽ sinh ra lỗi

Chú ý: break không phải là từ khoá (từ dành riêng cho Maple), vì vậy ta có thể

gán giá trị cho biến có tên là break mà không hề sinh ra lỗi (mặc dù điều này là không

nên).

1.2.1.5. Lệnh next

a Cú pháp

Next.

Trang 9

b Chức năng.

Cũng giống như câu lệnh break, lệnh next được thực hiện trong vòng lặp

while/for với mục đích bỏ qua một số lệnh bên trong vòng lặp để nhảy qua lần lặp tiếp

theo Khi gặp lệnh next trong vòng lặp, chương trình bỏ qua các lệnh tiếp theo của vòng lặp tận cùng nhất chứa next cho đến khi gặp từ khoá xác định kết thúc vòng lặp (ở đây là lệnh od) Đến đây vòng lặp tiếp tục nhảy qua lần lặp tiếp theo (nếu có thể) bằng cách tăng

chỉ số hoặc kiểm tra điều kiện để quyết định xem có nên thực hiện vòng lặp tiếp theo

Lệnh next sinh ra lỗi nếu nó được gọi ngoài vòng lặp while/for Tương tự như break,

next cũng không phải là từ khóa, do đó ta hoàn toàn có thể gán cho next một giá trị (xem

như next là một biến) Ngay trước lệnh next cũng thường là một câu lệnh điều kiện if

then Sử dụng các hàm RETURN, ERROR.

Maple là một ngôn ngữ lập trình hướng chu trình (procedure) Chúng ta có thể

làm việc với Maple bằng hai chế độ khác nhau: Chế độ tương tác trực tiếp thông qua việcnhập từng lệnh đơn lẻ ngay tại dấu nhắc lệnh của Maple và nhận được ngay kết quả của

lệnh đó Chế độ chu trình được thực hiện bằng cách đóng gói một dãy các lệnh xử lí cùng một công việc vào trong một chu trình (procedure) duy nhất, sau đó ta chỉ cần gọi chu

trình này và Maple tự động thực hiện các lệnh có trong chu trình đó một cách tuần tự vàsau đó trả lại kết quả cuối cùng

Trang 10

Maple chứa một lượng rất lớn các hàm tạo sẵn đáp ứng cho những yêu cầu tínhtoán khác nhau trong nhiều lĩnh vực Các hàm này được lưu trữ trong các gói chu trình

(package) và người sử dụng có thể dễ dàng gọi đến mỗi khi cần thiết Tuy nhiên, người

dùng Maple có thể tự tạo cho riêng mình những gói chu trình cũng như có thể trao đổidùng chung những gói chu trình nào đấy, phục vụ cho công việc mang tính đặc thù riêngcủa mình

Các khái niệm cơ bản cần phải nắm vững để tạo ra một chu trình (procedure) là:

Cấu trúc proc() end; cùng với các khai báo trong cấu trúc này (global, local, option, ).

Các cấu trúc dữ liệu và các hàm có liên quan (dãy-sequence, tập hợp-set, danh sách-list, mảng-array, bảng-table).

 Các hàm lập trình cơ bản (đã nêu ở trên) và các hàm liên quan đến việc xử lí dữ liệu

(eval, evalf, subs, map, convert, ).

1.2.2.2. Khai báo chu trình

Lời gọi khai báo một chu trình:

Giải thích các khai báo:

parameter_name: Là một dãy các kí hiệu, ngăn cách nhau bởi các dấu phẩy, chứa

tên các tham biến truyền cho chu trình

Trang 11

local_sequence: Là một dãy các tên được khai báo là biến cục bộ trong chu trình,

nó chỉ có giá trị sử dụng trong phạm vi chu trình đang xét (local được sử dụng để khai

báo cho các biến chỉ sử dụng bên trong một chu trình)

global_sequen: Dãy các tên biến toàn cục có giá trị sử dụng ngay cả bên ngoài

chu trình

options_sequence: Dãy các tuỳ chọn cho một chu trình.

statements_sequence: Dãy các câu lệnh do người lập trình đưa vào.

1.2.2.3. Tham biến

Tham biến (parameter) là các biến được đặt giữa hai dấu ngoặc trong biểu thức

proc( ) Tham biến được dùng để nhận dữ liệu truyền cho chu trình khi gọi chu trình đó.

Ví dụ ta có thể khai báo chu trình tính tổng của 2 số [tong:=proc(x,y) x+y; end.] thì khi

gọi chu trình này để tính tổng của hai số 10 và 5 ta phải truyền các dữ liệu này cho cáctham biến (cho x nhận giá trị là 10, y nhận giá trị là 5), tức là tại dấu nhắc lệnh ta phải

viết tong(10, 5); và sau khi thực hiện chu trình trả lại kết quả là 15.

Tham biến có tính cục bộ: chúng chỉ được sử dụng bên trong chu trình đã được

khai báo, bên ngoài chu trình này chúng không mang ý nghĩa gì

Kiểu của tham biến có thể được khai báo trực tiếp.

1.2.2.4. Phạm vi các biến

Biến toàn cục:

Biến toàn cục được khai báo sau từ khoá global trong khai báo chu trình.

 Biến toàn cục được khai báo bên trong một chu trình, nhưng có phạm vi giá trị trong toàn

bộ chương trình, tức là bên ngoài phạm vi của chu trình mà nó được khai báo trong đó

Biến cục bộ:

Trang 12

Biến cục bộ được khai báo sau từ khoá local trong khai báo chu trình.

 Biến cục bộ chỉ có giá trị bên trong chu trình mà nó được khai báo Ngoài chu trình này

nó không mang ý nghĩa gì

Tham biến:

Cũng giống như biến cục bộ, các tham biến chỉ có giá trị bên trong phạm vi của chu trình

mà nó được khai báo Sau khi chu trình kết thúc, chúng không còn giá trị

Tham biến còn được sử dụng để trả lại kết quả, như các ngôn ngữ lập trình truyền thống.

Ngoài ra, do Maple có những hàm có khả năng trả lại nhiều hơn một giá trị Ta có thểgộp các giá trị này vào một danh sách để trả lại như một phần tử

1.2.2.5. Định giá các biến

Định giá tên hàm và tham biến: Như đã đề cập trước đây, các tên biến trong một

biểu thức được Maple định giá trước khi thực hiện các phép tính trên chúng Đối với việcthực hiện các hàm cũng tương tự như vậy Trước tiên là tên chu trình được định giá Sau

đó lần lượt đến các đối số trong danh sách các đối số truyền cho chu trình (được định giá

từ trái sang phải) Nếu tên chu trình được định giá trỏ đến một chu trình, thì chu trình ấy

được thực thi trên các đối số đã được định giá Tuy nhiên vẫn có một số chu trình ngoại

lệ: đó là các hàm eval, assigned, seq.

Định giá biến cục bộ và biến toàn cục: Các biến cục bộ và tham biến truyền cho

chu trình được định giá một cấp (định giá một lần), còn các biến toàn cục thì được định giá hoàn toàn (full evaluation) Hàm eval( ) được dùng để ép định giá hoàn toàn cho

biến cục bộ và tham biến, và định giá một mức cho các biến toàn cục

Trang 13

- Dò từng lệnh trong chu trình:

trace(f)

trace(f, g, h, )

Tham số: Các hàm f, g, h, là các hàm cần chạy từng bước.

Lệnh trace cho in cách thức hiện từng lệnh của một chu trình ra màn hình

Lệnh dò trace() hoạt động tương tự như khi ta gán cho biến printlevel một số đủ

lớn để có thể hiện ra màn hình tất cả các câu lệnh cũng như điểm vào và điểm ra của hàm

mà ta đang thực hiện

Trong suốt quá trình thực hiện, các điểm vào, các kết quả của các câu lệnh, cácđiểm ra của hàm cần dò được hiện ra màn hình Các tham biến được hiện ra ở điểm vàochu trình, giá trị trả lại của hàm được hiện ra ở điểm cuối chu trình

Chú ý: Không thể dò từng bước một số hàm có quy tắc định giá đặc biệt, bao gồm: assigned, eval, evalhf, evalf, evaln, traperror, seq, userinfo.

- Xem mã nguồn một chu trình:

showstat(procName)

showstat(procName, statRange)

Tham số: procName: Tên của chu trình cần hiển thị mã nguồn.

StatRange: Phạm vi các dòng lệnh cần được hiển thị (từ dòng nào đến dòng nào).

Phần lớn các lệnh trong Maple đều được viết bằng ngôn ngữ Maple, do đó chúng

ta có thể đọc được mã nguồn của những lệnh này Maple cung cấp hàm showstat() để

hiện đoạn chương trình là mã nguồn của các lệnh trên Nhờ có hàm này mà người học lậptrình trên Maple có thể dễ dàng học được cách thức cũng như đặc trưng ngôn ngữ bằngcách nghiên cứu phương thức mà các lệnh của Maple thực hiện (thông qua việc xem mã

Trang 14

nguồn của chúng) Ta có thể hiển thị một phần mã nguồn của các chu trình bằng cáchđịnh rõ phạm vi của các dòng cần thể hiện

Chúng ta cũng có thể sử dụng các hàm print() và interface() để đọc mã nguồn của

các hàm trong Maple Thông thường thì Maple không hiển thị phần thân của các chu

trình đó nếu ta cho hiển thị chúng Muốn làm điều này, ta phải gọi lệnh interface() với

tham số verbosepro =2 trước, sau đó dùng lệnh print thì ta có thể xem được thân của chu

trình

- Chặn bắt lỗi:

traperror(expr1, expr2, )

Tham số: expr1, expr2, là các biểu thức.

Maple sử dụng biến lasterror để lưu thông báo lỗi của lỗi xảy ra mới nhất trong

quá trình tính toán Ta có thể sử dụng biến này giống như bất cứ biến nào khác trongMaple, cụ thể là ta có thể gán giá trị bất kì nào đó cho nó, tính toán trên biến này và ghigiá trị nó đang lưu trữ ra màn hình Tuy nhiên khi xảy ra lỗi, Maple tự động gán cho biến

này xâu kí tự thông báo lỗi mà hàm ERROR() sẽ hiển thị ra màn hình.

Cùng với biến lasterror, hàm traperror() được sử dụng để chặn bắt một lỗi nào

đó trong một biểu thức trước khi lỗi đó được thông báo ra màn hình Nếu có lỗi nào đó

xảy ra trong lúc định giá trị hoặc đơn giản biểu thức, hàm traperror() sẽ trả lại xâu kí tự

thông báo lỗi của lỗi đầu tiên gặp phải khi tính toán biểu thức đó Nếu không có lỗi, hàm

traperror() trả lại kết quả tính toán biểu thức Mỗi lần gọi đến hàm traperror(), Maple

tự động xoá đi giá trị cũ có trong bốn lần tính toán trước

Trang 15

CHƯƠNG 2: LẬP TRÌNH TÍNH TOÁN HÌNH THỨC CHO MỘT SỐ GIẢI THUẬT TRONG MẠNG TÍNH TOÁN

2.1. Giới thiệu mạng tính toán

2.1.1. Giới thiệu

Nhận thấy có nhiều vấn đề trong các lĩnh vực khác nhau đặt ra dưới dạng một

“mạng” của các yếu tố, trong đó giữa các yếu tố có những mối liên hệ (hay quan hệ) chophép ta suy ra được một số yếu tố này từ một số yếu tố khác

Mô hình mạng suy diễn – tính toán là một sự khái quát dạng tri thức trên có thểdùng để biểu diễn tri thức và thiết kế các chương trình giải toán tự động

2.1.2. Các định nghĩa

2.1.2.1. Quan hệ suy diễn

Cho M = {x1,x2, ,xm} là một tập hợp các biến có thể lấy giá trị trong các miền xácđịnh D1, D2, ,Dm Mỗi quan hệ suy diễn R trên M được xác định bởi một (hay một số)ánh xạ có dạng:

fR,u,v : Du→ Dv,trong đó u,v là các bộ biến được phân chia từ bộ biến x = <x1,x2, ,xm>; Du và Dv

là tích của các miền xác định tương ứng của các biến trong u và trong v

Quan hệ suy diễn R(x) có thể được biểu diễn bởi một (hay một số) ánh xạ fR,u,v và

Mạng suy diễn, viết tắt là MSD, là một cấu trúc (M,F) gồm 2 tập hợp:

M = {x1,x2, ,xn}, là tập hợp các thuộc tính hay các biến lấy giá trị trong các miềnxác định nào đó

F = {f1,f2, ,fm}, là tập hợp các luật suy diễn có dạng:

Ngày đăng: 10/04/2015, 08:27

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w