Tải bản đầy đủ (.docx) (25 trang)

Tiểu luận môn LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG Tìm hiều về phần mềm toán học Maple

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (934.78 KB, 25 trang )

Tìm hiều về phần mềm toán học Maple Vũ Công Tâm
MỤC LỤC
Lời nói đầu
Maple là một 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ẽ.
Maple cung cấp nhiều 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.
Qua quá trình nghiên cứu Maple, tôi nhận thấy rằng ngoài tính năng tính toán
mạnh trong toán học, Maple còn là ngôn ngữ lập trình hướng thủ tục. Thủ tục là một dãy
các lệnh do người dùng định sẵn để xử lý.
Mục tiêu của bài báo cáo này là sử dụng phần mềm Maple để phân tích bài toán
khảo sát hàm số.
1
Tìm hiều về phần mềm toán học Maple Vũ Công Tâm
Tôi xin chân thành cảm ơn PGS.TS Đỗ Văn Nhơn đã tận tình truyền đạt những
kiến thức quý báo.
Chân thành cảm ơn!
Vũ Công Tâm
TP.HCM 31-01-2013
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN





2
Tìm hiều về phần mềm toán học Maple Vũ Công Tâm













CHƯƠNG I: TỔNG QUAN VỀ MAPLE
I.1 GIỚI THIỆU VỀ MAPLE
Maple là một phần mềm tính toán do hãng Maple Soft, một bộ phận chủ yếu của
liên hợp công ty Waterloo Maple phát triển.
Cho đến nay Maple đã được phát triển qua nhiều phiên bản khác nhau và ngày
càng hoàn thiện
Với phần mềm Maple, chúng ta có thể:
+ Thực hiện các tính toán với khối lượng lớn, với thời gian nhanh và độ chính xác cao.
3
Tìm hiều về phần mềm toán học Maple Vũ Công Tâm
+ Sử dụng các gói chuyên dụng của Maple để giải quyết các bài toán cụ thể như: vẽ đồ
thị (gói plot), hình học giải tích (gói geometry), đại số tuyến tính (gói linalg),
+ Thiết kế các đối tượng 3 chiều
+ v.v
I.2 CÁC LỆNH CƠ BẢN TRONG MAPLE.
1.2.1 Tính toán số học thông dụng.
￧Các phép toán số học: +, -, *, /
￧Lũy thừa: ^, giai thừa: x!
￧Logarit: ln(x), log[a](b), exp(x)
￧Các hàm lượng giác: sin(x), cos(x), tan(x), cot(x),
￧Một số hàm khác: abs(x) - |x|, sqrt(x) - căn bậc 2 của x
1.2.2 Tính toán với độ chính xác theo yêu cầu

Lệnh evalf
- Cú pháp 1: evalf(bieu_thuc) - tính toán chính xác giá trị của biểu thức và biểu diễn
kết quả với mặc định là 10 chữ số.
- Cú pháp 2: evalf(bieu_thuc, k) - tính toán chính xác giá trị của biểu thức và biểu diễn
kết quả với k chữ số.
>
4
Tìm hiều về phần mềm toán học Maple Vũ Công Tâm
> evalf(Pi);
> evalf(cos(1) + sin(1)*I);
> evalf(3/4*x^2+1/3*x-sqrt(2));
1.2.3 Các thao tác với số nguyên.
Phân tích một số n thành thừa số nguyên tố: lệnh ifactor(n);
> ifactor( -144 );
> expand( );
> ifactor( 60, easy );
> ifactor( 4/11 );
> n := 1842140223038358851257:
> ifactor( n, easy );
> ifactor( n );
Kiểm tra một số n có phải là số nguyên tố không?: lệnh isprime(n);
> isprime(17);
> isprime(21);
5
Tìm hiều về phần mềm toán học Maple Vũ Công Tâm
> isprime(11!+1);
> isprime(2^30*3^30+7);
Tìm số nguyên tố đứng sau một số n cho trước: lệnh nextprime(n);
> nextprime(1);
> nextprime(0);

Tìm số nguyên tố đứng trước một số n cho trước: lệnh prevprime(n);
> prevprime(3);
> prevprime(25);
Tìm ước số chung lớn nhất của 2 số nguyên dương a, b: lệnh gcd(a,b);
> gcd(6,-8,a,b);
> a;
> b;
Tìm bội số chung nhỏ nhất của 2 số nguyên dương a, b: lệnh lcm(a,b);
> lcm(6,-8,3,4,12);
> gcd(x^2-y^2,x^3-y^3,c,d);
6
Tìm hiều về phần mềm toán học Maple Vũ Công Tâm
> c;
> d;
Tìm số dư khi chia a cho b: lệnh irem(a,b);
> irem(-23,4);
> iquo(-23,4);
> irem(23,-4);
Tìm thương nguyên khi chia a cho b: lệnh iquo(a,b);
> irem(23,4,'q');
> q;
> iquo(23,4,'r');
> r;
1.2.4 Giải phương trình.
Lệnh isolve:
- Cú pháp 1: isolve(phuong_trinh/he_phuong_trinh);
- Cú pháp 2: isolve(phuong_trinh/he_phuong_trinh, <danh_sach_tham_so>);
> isolve(3*x-4*y=7);
7
Tìm hiều về phần mềm toán học Maple Vũ Công Tâm

> isolve(3*x-4*y=7,a);
> isolve({3*x-4*y=7,x+y=14});
1.2.5 Khái niệm biến số, hằng số
Trong Maple, biến số được sử dụng thoải mái mà không cần khai báo, định nghĩa
trước:
Biến số, hằng số được đặt tên thỏa mãn một số quy tắc sau:
+ Không bắt đầu bằng chữ số
+ Không chứa khoảng trắng và một số ký tự đặc biệt như: %,^,&,*,$,#,
+ Không được trùng với tên một số hàm và lệnh của Maple: sin, cos, ln, min, max,
Một biến số sẽ trở thành hằng số ngay khi nó được gán cho một giá trị nào đó.
Nếu muốn biến một hằng số trở lại biến số, ta dùng phép gán: ten_bien:='ten_bien';
1.2.6 Triển khai biểu thức:
expand(expr, expr1, expr2, , e xprn)
> expand((x+1)*(x+2));
> expand((x+1)/(x+2));
> expand(1/(x+1)/x);
> expand(sin(x+y));
8
Tìm hiều về phần mềm toán học Maple Vũ Công Tâm
> expand(cos(2*x));
> expand(exp(a+ln(b)));
> expand((x+1)*(y+z));
Expand sẽ không thể khai triển biểu thức không thể khai triển và nó sẽ giữ nguyên giá trị
> expand(ln(x/(1-x)^2));
> assume(x,real);
> expand(ln(x/(1-x)^2));
Một số hàm nâng cao:
> expand(BesselJ(2,t));
> expand(LegendreQ(2,t));
> expand(JacobiP(3,1,1/4,t));

1.2.7 Phân tích đa thức thành nhân tử
Cú pháp: factor(a)
factor(a, K)
> factor(6*x^2+18*x-24);
> factor(6);
> ifactor(6);
9
Tìm hiều về phần mềm toán học Maple Vũ Công Tâm
> factor((x^3-y^3)/(x^4-y^4));
> factor(x^3+5.0);
> factor(x^3+5,complex);
> factor(y^4-2,sqrt(2));
> alias(alpha = RootOf(x^2-2)):
> factor(y^4-2,alpha);
> factor(x^3+y^3);
> factor(x^3+y^3,(-3)^(1/2));
1.2.8 Đơn giản biểu thức đại số
Cú pháp: simplify(bieu_thuc_dai_so);
> simplify(4^(1/2)+3);
> simplify(exp(a+ln(b*exp(c))));
> simplify(sin(x)^2+ln(2*x)+cos(x)^2);
> simplify(sin(x)^2+ln(2*x)+cos(x)^2,trig);
> simplify(sqrt(x^2),assume=positive);
> eqns:= {sin(x)^2 +cos(x)^2=1}:
> e:=sin(x)^3-11*sin(x)^2*cos(x)+3*cos(x)^3-sin(x)*cos(x)+2;
10
Tìm hiều về phần mềm toán học Maple Vũ Công Tâm
> simplify(e,eqns);
> simplify(e,eqns, [sin(x),cos(x)]);
1.2.9 Tối giản phân thức

Cú pháp: normal(phan_thuc);
> normal( x^2-(x+1)*(x-1)-1 );
> normal( (x^2-y^2)/(x-y)^3 );
> normal( (f(x)^2-1)/(f(x)-1) );
> normal( {2/x + y/3 = 0, 1/x-5/x^2 =1} );
> normal( sin(x*(x+1)-x) );
> normal( 1/x -1/x^2<5);
> g:=[seq(7*i*x/(i^2*x+1)+1/x, i=1 4)];
> normal(g);
> normal( 1/x+x/(x+1) );
> normal( 1/x+x/(x+1), expanded );
11
Tìm hiều về phần mềm toán học Maple Vũ Công Tâm
1.2.10 Thay giá trị cho biến trong biểu thức
Cú pháp: subs(bien = gia_tri , bieu_thuc);
> bt := x^2-1;
> subs(x=2,bt):
> bt := x^2-1;
1.2.11Chuyển đổi dạng biểu thức
Cú pháp: convert(bieu_thuc, kieu_chuyen_doi);
Chuyển đổi kiểu dữ liệu từ kiểu này sang kiểu khác:
   
   
   
   
   
   
   
!   !
  " 

 "#$ % 
12
Tìm hiều về phần mềm toán học Maple Vũ Công Tâm
& # # 
#  ' 
  ( (
(  ) *
+,$ - -.
 /  /  
0. 0! 0 (
   1
 )! ) 2
'  3"# 
 45  
 ( -( -(+3
&
-&/  45 -
-6 -7  -8-&/
   
 3"# 3"# 
.   
+9 , +23:;" +23:
 +327/3$  +1
13
Tìm hiều về phần mềm toán học Maple Vũ Công Tâm
, ,  
   
   3
$)   
 ' $ 

   $
   
   
   
! 9 <. ,
( (
Ví dụ:
> convert(9, binary);
> convert(Pi,degrees);
> convert(22, `units`,`inches`,`m`);
> convert("XI",arabic);
> convert( [1,2,3,4], `+` );
> f := seq( x[i]^i, i=1 4 );
> convert([f], `*`);
14
Tìm hiều về phần mềm toán học Maple Vũ Công Tâm
> s := series(f,x,4);
> convert(s, polynom); # Drop the order term
I.3 CẤU TRÚC DỮ LIỆU.
I.3.1 Dãy biểu thức ( Expression Sequence)
Dãy là một cấu trúc dữ liệu gồm:
Các phần tử ngăn cách nhau bởi dấu ,
Các phần tử của dãy có thể là bất cứ gì.
Maple áp dụng sự định giá đầy đủ khi định giá một dãy.
I.3.2 Danh sách (List)
Danh sách là dãy được bao trong cặp dấu ngoặc vuông.
Các phần tử của danh sách co thể là bất cứ gì.
Ví d ụ 1
>
I.3.3 Tập hợp (Set)

Tập hợp là dãy được bao trong cặp dấu ngoặc nhọn.
Trong tập hợp thứ tự các phần tử không quan trọng.
Cac phép tóan trên tập hợp như union(hợp),intersect(giao),minus(trừ).
Ví d ụ 1
15
Tìm hiều về phần mềm toán học Maple Vũ Công Tâm
>
I.3.4 Mảng (Array)
Mảng là cấu trúc dữ liệu bao gồm.
Một hay nhiều chiều.
Miền chỉ mục của các chiều phải là khỏang số nguyên.
Các phần tử của mảng có thể là mọi thứ.
Cú pháp : > array(indexfcn , bounds ,list);
- indexfcn (tùy chọn) : hàm chỉ số.
- bounds (tùy chọn) : dãy của các khỏang.
- list (tùy chọn) : danh sách các giá trị khởi đầu.
Ví d ụ
> v := array(1 4):
for i to 3 do v[i] := i^2 end do:
print(v);
I.3.5 Bảng (Table)
Bảng là cấu trúc dữ liệu trong đó các chỉ mục có thể là bất cứ gì.
Cú pháp: > table (F,L);
* F (tùy chọn): hàm chỉ số
* L (tùy chọn): dãy hay tập hợp gồm các phần tử của bảng.
Nếu L có dạng danh sách hay tập hợp các đẳng thức thì các vế trái sẽ là các chỉ số
của mảng ; các phần tử vế phải sẽ là các phần tử của bảng.
Trái lại, các chỉ số là các số nguyên 1,2,3
16
Tìm hiều về phần mềm toán học Maple Vũ Công Tâm

indices(bang) : trả về dãy chỉ số.
entries(bang) : tra về dãy các phần tử của bảng.
Các ví d ụ
> table();
> T:=table([22,42]);
T[2];
I.3.6 Các hàm thông dụng trong cấu trúc dữ liệu.
a Hàm rand
rand(m n)sẽ trả về thủ tục nếu gọi có thể sinh số nguyên ngẫu nhiên trong khỏang
m n
rand(m n)( ): sinh số nguyên ngẫu nhiên trong khỏang m n.
rand( ): sinh số nguyên ngẫu nhiên không âm có 12 chữ số.
randomize( ): gieo giống lại bộ sinh số.
b Hàm tìm max,min một dãy
Cú pháp: > max( day );
> min( day );
c Hàm map
Ví d ụ
> map(f, x + y*z);
d Hàm add,mul
add dùng để cộng dãy các giá trị.
mul dùng để nhân dãy các giá trị.
Cú pháp: add(f, i = m n) add(f, i = x) add(f,
i in x) mul(f, i = m n) mul(f, i = x) mul(f, i in x)
e Hàm subsop
17
Tìm hiều về phần mềm toán học Maple Vũ Công Tâm
Hàm subsop dùng để thay thế một lúc tại nhiều vị trí một biểu thức hoặc một cấu
trúc dữ liệu.
Cú pháp: > subsop(vt1=bt1,vt2=bt2, ,vtn=btn,bt);

I.4 CÁC VÒNG LẶP TRONG MAPLE
I.4
I.4.1 Vòng lặp While
Cấu trúc cú pháp:
While <điều kiện> do <dãy lệnh> od;
I.4.2 Vòng lặp for
Cấu trúc cú pháp:
for name from start by change to finish
do
statement sequence
od;
Hoặc dạng phát biểu khác:
for name in expression
do
statement sequence
od;
I.4.3 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;
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.
18
Tìm hiều về phần mềm toán học Maple Vũ Công Tâm
I.4.4 Lệnh break
Cấu trúc cú pháp:
break

I.4.5 Lệnh next
Cấu trúc cú pháp:
next
I.4.6 Sử dụng các 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.
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.
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).
19
Tìm hiều về phần mềm toán học Maple Vũ Công Tâm
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, ).

I.4.7 Khai báo chu trình
Lời gọi khai báo một chu trình:
procedure_name:=proc(parameter_sequence)
[local local_sequence]
[global global_sequence]
[options options_sequence]
statements_sequence;
end;
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.
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 (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.
I.4.8 Phạm vi các biến (biến toàn cục, biến cục bộ và tham biến)
20
Tìm hiều về phần mềm toán học Maple Vũ Công Tâm

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ộ
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ử.
CHƯƠNG II: ỨNG DỤNG MAPLE
II.1 Mô tả chương trình
Chương trình giải 1 bài toán về hàm số gồm những bài toán nhỏ sau:
 Khảo sát và vẽ đồ thị hàm số dạng hàm bậc hai chia cho bậc nhất khi biết giá
trị tham số m.
 Tìm giá trị tham số m để hàm số đại cực trị (cực đạ và cực tiểu).
II.2 Cơ sở lý thuyết
II.2.1 Khảo sát hàm số:
21
Tìm hiều về phần mềm toán học Maple Vũ Công Tâm
- Tìm tập xác định
- Nêu tính chất đặc biệt của hàm số (nếu có) như: hàm số chẵn, hàm số lẻ, hàm số tuần hoàn.
- Xét sự biến thiên của hàm số:
+ Tìm giới hạn tại vô cực và giới hạn vô cực (nếu có) của hàm số
+ Tìm các đường tiệm cận của đồ thị (nếu có)

+ Lập bảng biến thiên: Gồm: tìm đạo hàm, xét dấu,
- Vẽ đồ thị:
+ Vẽ hệ trục toạ độ Đề các vuông góc
+ Xác định các điểm đặc biệt: cực trị, điểm uốn, giao điểm với Ox, Oy
+ Vẽ các đường tiệm cận, trục đối xứng (nếu có)
+ Dựa vào bảng biến thiên và các điểm, đường đã xác định để vẽ đồ thị.
II.2.2 Tìm giá trị tham sô m để đồ thị có cực trị (cực đại và cực tiểu)
Để đồ thị hàm số có cực đại và cực tiểu thì phương trình đạo hàm bậc nhất y’=0 có hai nghiệm
phân biệt.
1. Điều này suy ra của y’ phải lớn hơn không.
2. Giải bất phương trình > 0 theo m
3. Từ đây suy ra giá trị m để Delta > 0, cũng là giá trị m để phương trình y’=0 có 2 nghiệm
phân biệt.
II.3 Procedure để vẽ đồ thị và biện luận m
22
Tìm hiều về phần mềm toán học Maple Vũ Công Tâm
THAM KHẢO
[1] PGS.TS Đỗ Văn Nhơn. Bài giảng mông lập trình symbolic .ĐH CNTT TPHCM
[2] Thư viện của phần mềm maple
[3] />23

×