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

Tiểu luận LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG

38 402 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 38
Dung lượng 2,47 MB

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

Nội dung

CHƯƠNG 2: LẬP TRÌNH SYMBOLIC TRONG MAPLE 1.1 Các yếu tố của ngôn ngữ lập trình 1.2 Lệnh cơ sở, lệnh điều khiển 1.2.1 Lệnh điều kiện IF Cấu trúc cú pháp: statement sequence | elif co

Trang 1

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

- - CHƯƠNG TRÌNH ĐÀO TẠO THẠC SĨ CNTT QUA MẠNG

Trang 2

MỤC LỤC

LỜI MỞ ĐẦU 5

CHƯƠNG 1 : TỔNG QUAN VỀ LẬP TRÌNH SYMBOLIC 7

1.1 Các hàm tính toán cơ bản 7

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

1.1.2 Tính toán symbolic 7

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

1.1.4 Tính đạo hàm 10

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

1.1.6 Khai triển Maclaurin 11

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

1.1.8 Đơn giản biểu thức 11

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

1.2.1 Sequence (dãy) 11

1.2.2 Lists (danh sách) 12

1.2.3 Sets (tập hợp) 13

1.2.4 Arrays (mảng) 14

1.2.5 Tables (bảng) 15

1.2.6 Strings 15

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

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

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

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

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

CHƯƠNG 2: LẬP TRÌNH SYMBOLIC TRONG MAPLE 20

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

Trang 3

1.2.1 Lệnh điều kiện IF 20

1.2.2 Vòng lặp While 20

1.2.3 Vòng lặp for 21

1.2.4 Lệnh Break 22

1.2.5 Lệnh Next 22

1.2.6 Hàm Return, Error 23

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

1.3.1 Cấu trúc thủ tục 24

1.3.2 Cấu trúc chu trình 24

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

1.4.1 Giải phương trình bậc 2 26

1.4.2 Giải hệ phương trình 26

1.4.3 Giải bất phương trình 26

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

CHƯƠNG 3: LẬP TRÌNH MỘT SỐ ỨNG DỤNG TRONG MAPLE 28

1.5 Giải và biện luận hệ phương trình bậc nhất hai ẩn số: 28

1.5.1 Đặt vấn đề bài toán 28

1.5.2 Biểu diễn bài toán 28

1.5.3 Thuật toán 28

1.5.4 Cài đặt thuật toán 29

1.5.5 Chạy thử nghiệm 31

1.6 Giải bài toán hình học vectơ trong mặt phẳng hình học không gian: 32

1.6.1 Đặt vấn đề bài toán 32

1.6.2 Biểu diễn bài toán 32

1.6.3 Thuật toán 33

1.6.4 Cài đặt thuật toán 33

1.6.5 Chạy thử nghiệm 36

KẾT LUẬN 37

Trang 4

TÀI LIỆU THAM KHẢO 38

Trang 5

LỜI MỞ ĐẦU

aple là một hệ phần mềm chuyên dụng cho công việc tính toán, bao gồm các tính toán thuần túy bằng ký hiệu toán học, tính toán số và các tính toán đồ thị Sản phẩm này do trường Đại học Tổng hợp Waterloo (Canada) và trường Đại học kỹ thuật Zurich (ETZ) xây dựng và đưa vào thương mại đầu tiên vào năm 1985 Qua nhiều lần cải tiến và phát triển, Maple trở nên phổ biến và là công cụ hỗ trợ tính toán không thể thiếu trong quá trình dạy và học toán trên máy tính

Những đặc tính cơ bản của Maple là dễ sử dụng, đòi hỏi cấu hình máy tính không lớn, đáp ứng được nhu cầu tính toán của nhiều đối tượng Ngoài ra, Maple còn được thiết kế thích hợp với chế độ tương tác người và máy, cho phép người dùng phát triển các modul chuyên dụng, lập trình hoặc tạo thư viện tính toán riêng bên trong phần mềm

Trong khuôn khổ bài bài thu hoạch này em xin trình bày khái quát về các lệnh, thủ tục và hàm tính toán cơ bản trong Maple (version 16), xây dựng ứng dụng đơn giản để minh họa quá trình

xử lý và tính toán

Vì thời gian nghiên cứu có hạn nên không tránh khỏi sai sót, mong được sự góp ý, phê bình từ thầy cô và các bạn

Em xin chân thành cảm ơn:

- Trường Đại Học Công Nghệ Thông Tin TP HCM đã tạo điều kiện cho em được nghiên cứu

Trang 6

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

Trang 7

CHƯƠNG 1 : TỔNG QUAN VỀ LẬP TRÌNH SYMBOLIC

Trang 8

- Ký hiệu "->" trong định nghĩa hàm

Ví dụ:

> f := (x,y) -> 2*x^2 -3*x*y + 4*y^2;

f(m,2*m+1);

Kết quả:

1.1.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

+ Giai thừa, hàm length (tính chiều dài của 1 số)

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

> 10!

Kết quả:

> length(100000) Kết quả:

+ Các hàm:

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

Trang 9

iquo Lấy số nguyên của phép

chia iquo(m, n) iquo(m,

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)

>

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

>

>

max Tìm số lớn nhất >

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

Trang 10

- Tính toán sơ cấp: bao gồm các hàm toán học

+ sin, cos, tan,

+ sinh, cosh, tanh,

+ arcsin, arccos, arctan,

Trang 11

1.1.6 Khai triển Maclaurin

Trang 12

Tạo dãy bằng cách cho f tác động lên các thành phần của biểu thức expression

Expression có thể là tập hợp, danh sách hoặc biểu thức dạng tổng tích.Ký hiệu toán tử

- Để truy cập các phần tử trong danh sách, ta dùng lệnh nops, op hoặc dùng

listname[index] để thay đổi phần tử trong danh sách

Trang 14

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 15

1.2.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

lcoeff Lấy hệ số của biến có mũ cao nhất > p := x + 4*x*y + 5*y

- 7*x^2;

> lcoeff(p);

> tcoeff(p);

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

1.4.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

Trang 19

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

1.5 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

fsolve( poly, x, -1 1 );

Kết quả:

Trang 20

CHƯƠNG 2: LẬP TRÌNH SYMBOLIC TRONG MAPLE

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

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

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

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

statement sequence

| elif condition then statement sequence |

| else statement sequence |

fi;

Chức năng: 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));

>

1.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

Trang 21

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

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

Ví dụ:

1) In các số chẵn từ 6-100

> for i from 6 by 2 to 100 do print(i) end do;

Trang 22

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.5 Lệnh Next

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

next

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ị

Trang 23

1.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ề

1.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

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

local các_biến;

Thuật toán xử lý;

end;

Trang 24

1.3.1 Cấu trúc thủ tục

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

proc (argseq)

local nseq; global nseq; options nseq; description stringseq;

end proc proc (argseq)::type;

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

global nseq; options nseq; description stringseq;

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

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

Trang 25

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

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

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ử

 Định giá trên các biến

1.Định giá trị tên hàm và tham biến

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ệc thự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

2.Định giá biến cục bộ và biến toàn cục

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

🧩 Sản phẩm bạn có thể quan tâm

w