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

LẬP TRÌNH SYBOLIC -MAPLE VÀ ỨNG DỤNG

43 361 1

Đ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 43
Dung lượng 2,61 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Thủ tục là một dãy các lệnh của Maple theo thứ tự mà người lập trình định sẵn để xử lí một công việc nào đó, khi thực hiện thủ tục này Maple sẽ tự động thực hiện các lệnh có trong thủ tụ

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

Giao viên hướng dẫn : PGS.TS Đỗ Văn Nhơn

Học viên thực hiện: Nguyễn Thị Thu Thủy

Trang 2

CHƯƠNG 1 TÍNH TOÁN SYMBOLIC TRONG MAPLE 5

1.1 Giới thiệu Maple 5

1.2 Các hàm tính toán cơ bản 6

1.2.1 Tính toán số chính xác và gần đúng 6

1.2.2 Tính toán symbolic 6

1.2.3 Tính toán số nguyên, số hữu tỉ, số thực, số phức 7

1.2.4 Tính đạo hàm: 9

1.2.5 Tính tổng vô hạn 10

1.2.6 Khai triển Maclaurin 10

1.2.7 Giải phương trình, hệ phương trình (có thể tính theo tham số) 10

1.2.8 Đơn giản biểu thức 10

1.3 Các kiểu cấu trúc cơ bản 11

1.3.1 Sequence (dãy) 11

1.3.2 Lists (danh sách) 12

1.3.3 Sets (tập hợp) 13

1.3.4 Arrays (mảng) 14

1.3.5 Tables (bảng) 15

1.3.6 Strings 15

1.4 Xử lý các biểu thức 16

1.5 Tính toán đa thức 17

1.5.1 Các hàm tiện ích 17

1.5.2 Các toán tử trên các đa thức 19

1.6 Tìm nghiệm phương trình, hệ phương trình, bất phương trình 19

CHƯƠNG 2 CƠ SỞ LẬP TRÌNH SYMBOLIC TRONG MAPLE 21

2.1 Các yếu tố của ngôn ngữ lập trình 21

2.2 Lệnh cơ sở, lệnh điều khiển 21

2.2.1 Lệnh điều kiện IF 21

Trang 3

2.2.3 Vòng lặp for 22

2.2.4 Lệnh Break 24

2.2.5 Lệnh Next 24

2.2.6 Hàm Return, Error 25

2.3 Thủ tục, hàm hay chu trình (procedure) 25

2.3.1 Cấu trúc thủ tục 26

2.3.2 Cấu trúc chu trình 27

2.4 Giải một số bài tập sử dụng hàm trong Maple 29

2.4.1 Giải phương trình bậc 2 29

2.4.2 Giải hệ phương trình 29

2.4.3 Giải bất phương trình 30

2.4.4 Tìm hình chiếu của 1 đường thẳng 30

CHƯƠNG 3 : LẬP TRÌNH MỘT SỐ ỨNG DỤNG TRONG MAPLE 31 Chương trình xây dựng trên thư viện hỗ trợ tính toán Maple 16 31

3.1 Giải phương trình bậc 2: 31

3.1.1 Đặt vấn đề bài toán 31

3.1.2 Biểu diễn bài toán 31

3.1.3 Thuật toán 31

3.1.4 Cài đặt thuật toán 32

3.1.5 Chạy thử nghiệm 33

3.2 Giải bài toán đại số vector 2D: 33

3.2.1 Cơ sở lý thuyết về vector 33

3.2.2 Đặt vấn đề bài toán 38

3.2.3 Cài đặt thuật toán 38

3.2.4 Chạy thử nghiệm 39

CHƯƠNG 4 KẾT LUẬN 41

* * *

Trang 4

LỜI CẢM ƠN

Trong suốt thời gian học vừa qua, chúng em đã nhận được sự quan tâm, động viên và tận tình dạy dỗ của thầy, đã cung cấp những kiến thức hết sức bổ ích và cần thiết để chuẩn bị cho các môn học tiếp theo ở khóa học

Chúng em xin chân thành cảm ơn quý thầy cô trường Đại học Công Nghệ Thông Tin, Ban Giám Hiệu đã tạo cho chúng em một môi trường học tập, rèn luyện đạo đức, nhân cách trong suốt thời gian học đã cung cấp những kiến thức cũng như những kinh nghiệm hết sức cần thiết cho việc học tập và nghiên cứu

Đặc biệt, chúng em xin gửi lời cảm ơn chân thành đến PGS.TS Đỗ Văn Nhơn, Thầy đã truyền đạt những kiến thức quý báu về môn học Lập trình Symbolic trong Trí tuệ nhân tạo, tận tình hướng dẫn chúng em thực hiện tiểu luận môn Lập trình Symbolic trong Trí tuệ nhân tạo

Tuy nhiên, do những hạn chế về mặt thời gian, chúng tôi rất mong nhận được sự chỉ bảo tận tình của quý thầy cô và sự phản hồi góp ý của các bạn đối với những thiếu xót còn tồn tại trong đề tài này Nhóm chúng em rất mong được

sự đóng góp nhiệt tình của quý Thầy Cô để bài luận được hoàn thiện hơn

Trang 5

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN

Trang 6

CHƯƠNG 1 TÍNH TOÁN SYMBOLIC TRONG MAPLE

1.1 Giới thiệu Maple

Maple là hệ thống tính toán trên các biểu thức đại số và minh họa toán học mạnh mẽ của công ty Warterloo Maple Inc 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 đơn giả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 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ắn liề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ên thế 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 trong dạy học toán và 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ủa giá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 họa 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ác lệnh của Maple theo thứ tự mà người lập trình định sẵn để xử lí một công việc nào đó, khi thực hiện thủ tục này Maple sẽ tự động thực hiện các lệnh có trong thủ tục đó một cách tuần tự và sau đó trả lại kết quả cuối cùng

Maple 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

Trang 7

+ 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ác trực tiếp

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

Trang 8

1.2.3 Tính toán số nguyên, số hữu tỉ, số thực, số phức

Maple được sử dụng giống như 01 máy tính tính toán, nó có khả năng nhận biết được các toán tử như giai thừa, tìm ước chung lớn nhất, bội chung nhỏ nhất, tính toán trên các số nguyên cực lớn

- Các tính toán số nguyên gồm:

+ biểu thức thông thường

Ví dụ: nhân 2 số 17x15

>

Trang 9

+ giai thừa, hàm length

Ví dụ: Tính giai thừa của 10 và tính chiều dài của 1 số

>

>

+ Các hàm:

abs Lấy giá trị tuyệt đối > abs(-11);

ifactor Phân tích ra thừa số nguyên

isprime Kiểm tra 1 số có phải là số

nguyên hay không?

>

ithprime Xác định số nguyên tố thứ n

(mặc định 2 là số nguyên tố thứ 1)

>

Trang 10

prevprime(n)

nextprime(n)

Số nguyên tố lớn nhất nhỏ hơn n và nhỏ nhất lớn hơn n

>

>

min Tìm số nhỏ nhất

convert Chuyển một số từ dạng này

sang dạng khác

> convert(9, binary);

>

convert(1.23456,rational);

- Tính toán số phức: bao gồm các hàm toán học

+ sin, cos, tan,

+ sinh, cosh, tanh,

+ arcsin, arccos, arctan,

Trang 11

Kết quả:

Trang 12

1.3 Các kiểu cấu trúc cơ bản

Cú pháp:

> seq(a^n,n=0 10);

a$4;

Kết quả:

Trang 15

Identity: tạo ma trận đơn vị

Map(f,expr): tính giá trị hàm với đối số là 1 thành phần biểu thức Expr có thể là list, set, phương trình, mảng, bảng… hoặc có dạng tổng, tích

Sort(expr): sắp xếp theo thức tự abc hoặc số mũ

Sort(expr, varlist, plex): sắp xếp bt theo kiểu từ điển

Sort(expr, varlist, tdeg): sắp xếp theo tổng bậc

Sort(list), sort(list, odering): sắp xếp list theo trật tự cho bởi odering

- Cú pháp:

> squares := array(1 3);

squares := array(1 3, [1,8,127]);

squares[2];

Kết quả:

Trang 16

1.3.5 Tables (bảng)

- Cấu trúc bảng gồm hai thành phần có cú pháp như sau:

- Hàm table tạo ra bảng với giá trị khởi đầu được chỉ ra bởi L Nếu L có dạng dãy các đẳng thức thì vế trái sẽ là khóa, vế phải là giá trị tương ứng với khóa Nếu L có dạng dãy của các giá trị thì các chỉ số là 1,2,3,…

- Dùng 02 hàm indices(bảng) và entries(bảng) để tạo ra một dãy gồm các khóa và giá trị của bảng

- Bảng là công cụ thích hợp để lập sổ tra cứu

Trang 18

- Các lệnh khác: value, eval, evalf

Trang 19

tcoeff Lấy hệ số của biến có mũ thấp nhất

collect Rút gọn biểu thức > f :=

Trang 20

1.5.2 Các toán tử trên các đa thức

Bao gồm các phép toán sau:

+, - Cộng và trừ

*, ^ Nhân và lũy thừa content Nội dung của đa thức divide Phép chia chính xác gcd USCLN của 2 đa thức lcm Bội số chung nhỏ nhất của 2 đa thức prem

primpart Phần nguyên của đa thức rem

quo Thương của 2 đa thức

1.6 Tìm nghiệm phương trình, hệ phương trình, bất phương trình

Để tìm nghiệm các phương trình, bất phương trình và hệ phương trình… trong

maple cho sử dụng hàm solve và fsolve để tìm nghiệm cho các phương trình trên

Trang 21

fsolve( poly, x, -1 1 );

Kết quả:

Trang 22

CHƯƠNG 2 CƠ SỞ LẬP TRÌNH SYMBOLIC TRONG MAPLE 2.1 Các yếu tố của ngôn ngữ lập trình

2.2 Lệnh cơ sở, lệnh điều khiển

2.2.1 Lệnh điều kiện IF

Cấu trúc cú pháp:

if condition then

statement sequence

| elif condition then statement sequence |

| else statement sequence |

fi;

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 đế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 thực hiện Các biểu thức điều kiện condition được sử dụng trong câu lệnh if phải được tạo thành từ các bất đẳng thức, các đẳng thức (các phép toán quan hệ), các biến

số, các phép toán logic, các hàm có giá trị trả lại là giá trị logic Nếu trái lại thì

sẽ gây ra lỗi

Ví dụ:

> a:= 3: b:=5: if evalb(a > b) then a else b end if; 5*(Pi + `if`(a > b,a,b));

Trang 23

>

2.2.2 Vòng lặp While

Cấu trúc cú pháp:

While <điều kiện> do <dãy lệnh> od;

Chức năng: 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ểu thứ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 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 kiện vẫn còn đúng Để thoát ra khỏi vòng lặp, ta có thể sử dụng các lệnh sau: RETURN, break hoặc quit, done, stop

Trang 24

od;

Chức năng: Vòng lặp for được dùng để lặp một chuỗi các biểu thức được

đặt giữa do và od, mỗi lần lặp tưng ứng với một giá trị phân biệt của biến chỉ số name đứng sau từ khoá for Ban đầu, giá trị start được gán cho biến chỉ số Nếu giá trị của biến name nhỏ hơn hay bằng giá trị finish thì chuỗi lệnh nằm giữa do

và od được thực hiện, sau đó biến name được gán giá trị tiếp theo bằng cách cộng thêm vào nó giá trị change (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 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, done, stop, RETURN giống như trong vòng lặp while

Trang 25

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)

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

Trang 26

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

2.2.6 Hàm Return, Error

Hàm RETURN được sử dụng để cho giá trị hàm trước khi thoát khỏi chu trình Nếu không có lệnh RETURN, chu trình tự động cho kết quả của phép tính cuối cùng trong chu trình

Hàm ERROR được sử dụng để đưa thông điệp lỗi ra màn hình từ bên trong chu trình

Ví dụ: Nếu không có lệnh return thì kết quả tính toán sau cùng của thủ tục chính là kết quả trả về

2.3 Thủ tục, hàm hay chu trình (procedure)

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ệc nhậ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

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ính toá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 đổi dù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êng của mình

Trang 27

Một chương trình tính toán thường có 03 phần:

+ Dữ liệu vào + Phương pháp + Kết quả Cấu trúc của Maple có dạng:

Tên_chương_trình := proc(các đối số)

statseq end proc proc (argseq)::type;

local var1::type1, var2::type2, ;

global nseq; options nseq; description stringseq;

statseq end proc Trong đó:

argseq: Tên tham số

type Kiểu giá trị trả về

nseq Tên biến toàn cục

var1,var2 Tên biến cục bộ thủ tục

type1,type2 Kiểu của biến

stringseq Mô tả cho thủ tục

Trang 28

statseq Nội dung của thủ tục

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

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

 Tham biến

Trang 29

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ác tham 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

được khai báo trong đó

2.Biến cục bộ: 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ì

3.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ử

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

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