Tải bản đầy đủ (.pdf) (77 trang)

thực hành tính toán trên 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 (943.83 KB, 77 trang )

11
Chơng 2
Thực hành tính toán trên
Maple

2.1. tính toán số học và đại số thông dụng 14

2.1.1. Tính toán với số nguyên 14

Tính giai thừa 14
Tìm ớc số chung lớn nhất (gcd) 14
Tìm bội số chung nhỏ nhất (lcm) 14

Phân tích một số ra thừa số nguyên tố 15

Tìm các số nguyên tố trớc và sau một số cho trớc 15
Tìm nghiệm nguyên của phơng trình 15
Tìm thơng và phần d 16
Tính theo công thức truy hồi 17
2.1.2. Tính toán với các số thập phân 20

Về độ chính xác của các phép tính số học 20
Tính giá trị của biểu thức số học 21
Tính tổng của hữu hạn và của vô hạn các số hạng 21
Tính tích của hữu hạn hoặc vô hạn thừa số 22
2.1.3. Tính toán với số phức 23

2.1.4. Tính toán theo Modul 24

Các tính toán Modul thông thờng 24
Giải phơng trình với Modul 26



2.1.5. Khai triển, đơn giản và phân tích biểu thức đại số 27

Khai triển biểu thức đại số 27

Phân tích ra thừa số 28

Phép đơn giản biểu thức 28
Tối giản phân thức 29
Gán tên cho biểu thức và gán trị cho biến 29
Chuyển đổi dạng của biểu thức 30
2.1.6. Định nghĩa hàm số 31

Hàm số thông thờng 31
Hàm từng khúc 31
12
2.1.7. Giải phơng trình và hệ phơng trình 32

Giải phơng trình đại số (có hệ số bằng số hoặc bằng chữ). 32
Giải phơng trình vô tỷ 33
Giải hệ phơng trình 33
2.1.8. Giải bất phơng trình 34

2.2. Vẽ đồ thị và các vấn đề liên quan 35

2.2.1. Vẽ đồ thị trong mặt phẳng 35

Vẽ đồ thị hàm thông thờng 35
Vẽ đồ thị hàm ẩn 37
Các tuỳ chọn cơ bản trong lệnh vẽ đồ thị 38

Một số thí dụ minh họa 41
2.2.2. Vẽ đồ thị trong không gian 3 chiều 42

Vẽ đồ thị hàm 2 biến 42
Vẽ đờng mức của các hàm 2 biến 44
Vẽ đờng ống trong không gian 3 chiều 46

2.2.3. Vận động của đồ thị 46

2.3. Tính toán trong đại số tuyến tính 48

2.3.1. Các phép toán trên vectơ và ma trận 48

Tạo vectơ và ma trận 48
So sánh hai ma trận 50
Tính tổng của hai ma trận (lệnh đánh giá ma trận tổng) 51
Nhân ma trận 51

Tính tích trong của ma trận và véc tơ (lệnh innerprod) 52

Tính tích véc tơ (tích trực tiếp) bằng lệnh
crossprod
53
Tính tích vô hớng của hai véc tơ (lệnh dotprod) 53
2.3.2. Tính giá trị riêng và vectơ riêng của ma trận 54

Tính đa thức đặc trng 54
Tính giá trị riêng và véc tơ riêng của ma trận 54
Tính giá trị riêng và véc tơ riêng của ma trận số 55
2.3.3. Tính hạng, tính định thức và tính ma trận ngợc 56


Tìm hạng của ma trận 56
Tính định thức và ma trận ngợc của ma trận 57
2.3.4. Giải phơng trình đại số tuyến tính 57

Thiết lập ma trận từ phơng trình và ngợc lại 57

Giải phơng trình đại số tuyến tính 59

2.3.5. Tìm cơ sở cho không gian vectơ 60

Tìm họ véc tơ cơ sở 60

Tìm cơ sở cho không gian véc tơ sinh bởi các dòng (cột) của ma trận 61
Tìm cơ sở cho hạch của ma trận 61
Tìm cơ sở trực chuẩn của không gian sinh bởi một họ các véc tơ 61
13
2.4. Phép tính vi phân và tích phân 62

2.4.1. Phép tính giới hạn 62

Tính giới hạn của hàm số tại một điểm 62

Tính giới hạn theo hớng (trái hoặc phải) 63

2.4.2. Tính đạo hàm của hàm số một biến 63

Tính đạo hàm bậc nhất 63
Các ví dụ minh hoạ 64
Tính đạo hàm cấp cao 65

2.4.3. Tính vi phân hàm nhiều biến, hàm vectơ và ma trận hàm 66

Phép tính đạo hàm của hàm nhiều biến 66
Tính đạo hàm của một hàm véc tơ 67
Tính đạo hàm của một ma trận hàm 67
2.4.4. Hàm ẩn và đạo hàm của nó 68

Hàm ẩn vô hớng 68
Hàm ẩn véc tơ 70
2.4.5. Phép tính tích phân 72

Tính tích phân xác định 72
Tính tích phân không xác định 74

Tính tích phân suy rộng 76

2.4.6. Khai triển hàm số thành chuỗi 76

2.5. Phơng trình Vi phân và Vật lý toán 78

2.5.1. Giải phơng trình vi phân thờng 78

Các phơng trình vi phân thông thờng 78
Các tuỳ chọn trong giải phơng trình vi phân 79

Phơng trình vi phân với các hàm đặc biệt 80

2.5.2. Giải hệ phơng trình vi phân thờng 81

Giải hệ phơng trình vi phân thờng 81


Các tuỳ chọn trong giải hệ phơng trình vi phân 82
Vẽ đồ thị nghiệm của hệ phơng trình vi phân 84
2.5.3. Giải phơng trình đạo hàm riêng 86

Giải phơng trình đạo hàm riêng 86
Vẽ đồ thị nghiệm của phơng trình đạo hàm riêng 86


Phần này giới thiệu những chủ đề tính toán thông dụng nhất. Qua đây chúng ta
sẽ mau chóng nắm bắt đợc phơng thức làm việc với Maple, để rồi tự mình khám
phá và tìm hiểu về khả năng tính toán tuyệt vời của Maple. Các tính toán chuyên
ngành sâu hơn sẽ đợc đề cập trong phần tính toán thực hành trên máy của các giáo
trình cho từng bộ môn.
14
2.1. tính toán số học và đại số thông dụng
2.1.1. Tính toán với số nguyên
MAPLE là một công cụ mạnh, cho phép tính toán với những số lớn.
Đ
ể thực hành tính toán, trớc tiên hãy đa vào một cụm xử lý (bằng chức năng
Insert/Execution Group/After Cursor
). Sau khi hiện ra dấu nhắc " [>" thì đa lệnh tính
toán vào. Với những tính toán số học thông thờng, câu lệnh cũng chính là biểu
thức tính toán. Thí dụ, để tính (32).(12
13
) ta đa vào sau dấu nhắc biểu thức mô tả
phép tính này (nhắc lại rằng phép nhân ký hiệu là dấu sao (
*
) và phép luỹ thừa biểu
thị bằng dấu mũ (^), còn dấu chấm phẩy (

;) biểu thị kết thúc của câu lệnh). Sau khi
cho thực hiện lệnh thì việc tính toán sẽ đợc thực hiện và ta sẽ nhận đợc ngay đáp
số:
[>
32*12^13;
342378257213030
4

Maple biết làm rất nhiều phép toán đặc biệt, trong đó có
Tính giai thừa
Thí dụ Tính 99! nh sau
[>99!;
9332621544394415268169923885626670049071596826438162146859296
3895217599993229915608941463976156518286253697920827223758251
1852109168640000000000000000000000
Tìm ớc số chung lớn nhất (gcd)
Thí dụ Tìm ớc số chung lớn nhất của 2 số 157940 và 78864 bằng câu lệnh sau:
[>gcd(157940,78864);
212

Tìm bội số chung nhỏ nhất (lcm)
Thí dụ
Tìm bội số chung nhỏ nhất của 2 số 18230 và 3224 bằng câu lệnh sau:
[>
lcm(18230,3224);
29386760

Dĩ nhiên, có thể tìm bội số chung nhỏ nhất của nhiều số:
15
[>lcm(24,15,7,154,812);

267960

Phân tích một số ra thừa số nguyên tố
Thí dụ Phân tích số 122333444455555666666777777788888888999999999 ra
thừa số nguyên tố bằng câu lệnh có cú pháp nh sau:
[>
ifactor(122333444455555666666777777788888888999999999
);
(3)(12241913785205210313897506033112067347143)(3331)
Nh vậy, ta đã tìm đợc "của hiếm" - một số nguyên tố lớn (trên 40 chữ số !!!).
Muốn thiết lập lại tích của các thừa số này ta dùng lệnh bung tích trên ra
(Maple hiểu ngầm định ký hiệu (%) là chỉ biểu thức ngay trớc đó, trong các phiên
bản cũ ký hiệu này là dấu nháy kép):
[>
expand(%);
122333444455555666666777777788888888999999999
Tìm các số nguyên tố trớc và sau một số cho trớc
Tìm số nguyên tố đứng trớc số nguyên
a
cho trớc bằng lệnh
prevprime(a);
Thí dụ:
[>prevprime(122333444455555666666777777788888888
999999999);
122333444455555666666777777788888888999999893
Tìm số nguyên tố đứng sau số nguyên
a
cho trớc bằng lệnh
nextprime(a);


Thí dụ:
[>
nextprime(122333444455555666666777777788888888999999999
);
122333444455555666666777777788888889000000069
Tìm nghiệm nguyên của phơng trình
Giải phơng trình để tìm nghiệm nguyên bằng lệnh
isolve
với cú pháp nh
sau
[>
isolve(eqns,vars);
Trong đó:
eqns
-
tập các phơng trình hoặc một phơng trình
16

vars
-
tập các tên biến vô định
Thủ tục
isolve
giải phơng trình trên tập các số nguyên, cho phép tìm mọi ẩn
vô định tham gia trong các phơng trình.
Tập tên các biến vô định (vars) đợc sử dụng để biểu diễn nghiệm, có giá trị
nguyên. Nếu ta không chỉ rõ các biến này, hoặc đa không đủ, thì chơng trình sẽ
tự tạo ra các tên _N1, _N2 Nếu ta khai báo thừa (nhiều hơn số biến vô định thực
tế) thì cũng không sao, chơng trình sẽ không động chạm đến các biến thừa.
Nếu không có nghiệm nguyên (hoặc MAPLE không có khả năng tìm nghiệm)

thì máy thông báo NULL.
Thí dụ
[>
isolve(3*x-4*y=7);
{},

= y

+ 23_N1

=
x

+ 54_N1

[>isolve(x+2*y+3*z=4,{a});
{},, = y _N2

=
x



43a 2 _N2

=
z
a

[>isolve(x+y+z=0,{a,b,c,d});

{},,

=
z
a

= yb

=
x


ab

[>
isolve(x^2+y^2=z^2,{u,v});
= x
_N3 () + v
2
u
2
()igcd , , + v
2
u
2
+ v
2
u
2
2 vu

= z
_N3 ()

+ v
2
u
2
()igcd , , + v
2
u
2
+ v
2
u
2
2 vu
,,{
= y 2
_N3 v u
()igcd , , + v
2
u
2
+ v
2
u
2
2 vu
}


Tìm thơng và phần d
Lệnh : irem - tìm phần d nguyên

iquo
- tìm thơng nguyên
Cú pháp:
irem(m,n) irem(m,n,'q')

iquo(m,n) iquo(m,n,'r')
Tham biến: m,n - biểu thức

q,r
- tên
Nếu
m và n là hai số nguyên thì lệnh irem tính phần d của m khi chia cho n ,
và nếu có sự tham gia của biến thứ ba '
q
' thì nó sẽ đợc gán cho thơng. Tơng tự,
lệnh
iquo tính thơng khi chia m cho n và nếu có sự tham gia của biến thứ ba 'r'
thì nó đợc gán cho phần d.
Nếu
m

n
không phải cả hai là những số nguyên thì
irem
không xác định.
17
Thí dụ

Muốn tìm phần d của 23 cho 4 ta dùng lệnh
[>irem(23,4,'q');
3

và thơng của phép chia này biết đợc nhờ lệnh
[>
q;
5

Ngợc lại, ta có thể thực hiện các lệnh sau để đạt cùng mục đích
[>
iquo(23,4,'r');
5

[>r;
3

Khi không có biến thứ 3
[>irem(-23,4);
-3

[>
irem(23,-4);
3

[>iquo(-23,-4);
5

[>irem(x,3);
()ire

m
,
x
3

Tính theo công thức truy hồi
Nhờ MAPLE, bạn có thể tính giá trị của các biểu thức theo công thức truy hồi
nh tính số hạng tổng quát của dãy Fibonachi. Muốn tính theo công thức truy hồi,
bạn hãy vào lệnh
[>
rsolve(eqns, fcns);
Trong đó, eqns là phơng trình hoặc tập các phơng trình, fcns là tên hàm hoặc
tập tên các hàm mà lệnh rsolve phải tìm.
18
Thí dụ
Tìm công thức cho hàm f(k) theo công thức truy hồi

=
()
f
n



3( )
f

n
12( )
f


n
2

với giá trị ban đầu bất kỳ
[>
rsolve(f(n)=-3*f(n-1)-2*f(n-2),f(k));

+ ()

+ 2( )f0 ( )f1 ( )-1
k
()


()f0 ( )f1 ( )-2
k

Nếu muốn có công thức của f(k) với giá trị ban đầu cho trớc thì ta phải khai báo
giá trị ấy vào eqns
[>
rsolve({f(n)=-3*f(n-1)-2*f(n-2),f(1 2)=1},{f});
{}

= ()f n


+ 3( )-1
n
()-2

n

Thí dụ Tính số hạng f(n) của dãy Fibonachi

= ()f n

+ ()f

n 1( )f

n 2

với điều kiện ban đầu f(1)=1, f(2)=1
[>
rsolve({f(n)=f(n-1)+f(n-2),f(1)=1,f(2)=1},{f});



















= ()f n +








1
1
5
5








2

51
n
51









1
1
5
5









2
+
51
n
+ 51

[>
simplify(%);
{}
=

()
f
n
4
5
52
n
()


()

+
51
()

n
()-1
n
()


51
()

n
()


51( )


+
51

Thí dụ Tính số hạng f(n) theo công thức truy hồi
= ()f n + 3








f
n
2
5 n

[>
rsolve(f(n) = 3*f(n/2) + 5*n, f(n));


+
()
f
1
n







()ln 3
()ln 2
n






()ln 3
()ln 2










+
15







2
3







+
()ln n
()ln 2
1
10

Muốn có công thức tờng minh của biểu thức truy hồi ta phải làm hai bớc sau
Bớc 1
. Gán tên cho biểu thức truy hồi
19
Bớc 2. Tìm công thức tổng quát bằng lệnh
rsolve
.
Thí dụ Giải phơng trình

= ()f

+ n 1


3( )f n 2( )f

n 1

với điều kiện ban đầu
,

= ()f1 2

= ()f2 3

Bớc 1
. Gán tên
reqn
(phơng trình truy hồi) cho biểu thức truy hồi đã cho
[>
reqn:=f(n+1)=3*f(n)-2*f(n-1);
:= reqn

= ()f

+ n 1

3( )f n 2( )f

n 1

Bớc 2. Giải phơng trình với điều kiện ban đầu f(1)=2,f(2)=3
[>rsolve({reqn,f(1)=2,f(2)=3},f(n));

+
1
2
2
n
1

Kết quả tính toán truy hồi có thể cho ta một hàm đặc biệt.
Thí dụ Tìm ()yn , biết

= ()y nn()y

n 1
,

= ()y0 1

[>rsolve({y(n) = n*y(n-1), y(0)=1}, y);
()


+ n
1

Trong đó

(.) là hàm GAMMA đã quen biết trong Giải tích Toán học.
Maple có thể giải phơng trình truy hồi phi tuyến.

Thí dụ Giải phơng trình truy hồi

,

=

+


()y
n
()y

n
1()y
n
()y

n
10

=
()y0
a

[>
rsolve({y(n)*y(n-1)+y(n)-y(n-1)=0,y(0)=a},y);
a
+ 1 na

MAPLE cũng có thể giải hệ phơng trình truy hồi.
Thí dụ Giải hệ

= +
()y
+
n
1()f
n

+
2
()

+
n 1
n

= ()f + n 1()y n

+ n 2
n
3

với điều kiện ban đầu
,
=
(
)
y
=
k
15


2
k
1

=
(
)
f5 6
;
20
[>rsolve({y(n+1)+f(n)=2^(n+1)+n,f(n+1)-y(n)=n-2^n+3,
y(k=1 5)=2^k-1,f(5)=6},{y, f});
{},

= ()y n

2
n
1

= ()f n

+ n 1

2.1.2. Tính toán với các số thập phân
Về độ chính xác của các phép tính số học
Bạn có thể thực hiện các phép toán số học trên các số thập phân (với dấu phẩy
động) với độ chính xác theo ý muốn. Trong thực tế, MAPLE có thể xử lý các số với
hàng trăm nghìn chữ số.

Muốn tính giá trị của đại lợng
P
chính xác tới
m
con số, ta sử dụng lệnh
evalf(P,m)
.
Thí dụ Ta hãy tính số Pi chính xác đến 500 chữ số thập phân
[>evalf(Pi,500);
3.141592653589793238462643383279502884197169399375105820974944
5923078164062862089986280348253421170679821480865132823066470
9384460955058223172535940812848111745028410270193852110555964
4622948954930381964428810975665933446128475648233786783165271
2019091456485669234603486104543266482133936072602491412737245
8700660631558817488152092096282925409171536436789259036001133
0530548820466521384146951941511609433057270365759591953092186
1173819326117931051185480744623799627495673518857527248912279
381830119491

Muốn tính số e ta hãy lu ý rằng Maple coi nó là giá trị của hàm số mũ exp(x)
tại điểm
x=1.
Thí dụ Tính số
e
với độ chính xác là 40 chữ số
[>evalf(exp(1.0),40);
2.718281828459045235360287471352662497757

Maple hiểu và làm việc trên tất cả các hàm đặc biệt mà chúng ta có trong giáo trình
giải tích.

Thí dụ
Tính giá trị của hàm Gamma tại điểm 2.5,
[>
evalf(GAMMA(2.5));
1.329340388
Chú ý Chữ GAMMA trong dòng lệnh là tên riêng chỉ hàm số ga-ma (đã biết trong
chơng trình giải tích) nên phải viết hoa theo đúng tên qui định của hàm số này.
21
Tính giá trị của biểu thức số học
Tính chính xác các phép toán số học là khả năng mạnh có tính nguyên tắc của
MAPLE.
Các phép chia và khai căn trong tính toán không bị đổi sang các phân số thập
phân (gần đúng) tơng đơng. Khả năng này cho phép tránh đợc sai số khi làm
tròn.
Thí dụ Biểu thức
30
20
23
3
không bị đổi sang số thập phân mà vẫn giữ nguyên giá
trị đúng của nó:
[>(2^30/3^20)*sqrt(3);
1073741824
3486784401
3

Tuy nhiên, MAPLE có đầy đủ khả năng cung cấp giá trị xấp xỉ của biểu thức này
dới dạng số thập phân với dấu chấm động (với độ chính xác tuỳ ý ta chọn, mặc
định là 10 chữ số thập phân). Muốn làm điều này ta dùng lệnh lệnh
evalf(.)


(đánh giá biểu thức trên đây), cụ thể là:
[>
evalf(%);
.5333783739
Trong đó (%) là k í hiệu biểu thức trớc đó, mà trong các phiên bản Maple từ
R4 trở về trớc thờng đợc k
hiệu là ().
Tính tổng của hữu hạn và của vô hạn các số hạng
1.Bài toán tính tổng hữu hạn
Ta sẽ tiến hành các bớc sau:
Bớc 1
.
Lấy dấu nhắc "[>" (bằng việc vào chức năng Insert/Execution
group/After cursor) rồi đa vào dòng lệnh có cú pháp nh sau:
[>
Sum(f(i),i=m n);
Trong đó,
Sum
là viết tắt của tổng,
f(i)
là số hạng thứ i của tổng,
i=m n

nghĩa là
i chạy từ m đến n. Sau khi cho thực hiện lệnh này, máy sẽ cho ta công
thức biểu diễn tổng cần tính.
Bớc 2
.


Muốn tính giá trị của tổng, lại lấy dấu nhắc mới " [>" và đa vào lệnh
[>
value(%);
Nghĩa là "giá trị của biểu thức (tổng) trên đây". Sau khi cho thực hiện lệnh, trên
màn hình sẽ hiện giá trị tổng cần tính.
22
Thí dụ
Muốn tính tổng
10
4
1
1
1
i
i
i
=
+
+

, bạn hãy vào hai lệnh sau và ấn "Enter", máy sẽ
cho ngay kết quả :
[>
Sum((1+i)/(1+i^4),i = 1 10);


=
i
1
10


+
1
i

+
1
i
4

[>
value(%);
5150805672759473291372
2
4062664893881920008849
7

2. Tính tổng vô hạn
Thao tác giống hệt nh trên, chỗ khác duy nhất là thay chỉ số n bằng chữ
infinity (vô hạn).
Thí dụ Muốn tính tổng vô hạn
2
1
1
k
k

=

ta cũng sử dụng hai lệnh sau đây:

[>
Sum( 1/(k^2),k = 1 infinity);

= k 1

1
k
2

[>
value(%);
1
6

2

Chú ý Muốn có kết quả nhanh, bạn thay chữ S (hoa) trong chữ "Sum" bằng chữ s
thờng, máy sẽ đa ta đến thẳng đáp số (bỏ qua công đoạn biểu diễn công thức) .
[>sum( 1/(k^2),k = 1 infinity);
1
6

2

Chú ý Bài toán 2 chính là bài toán tính tổng của chuỗi, một bài toán khó trong giải
tích toán học và ta sẽ có dịp thực hành kỹ hơn trong phần tính toán thực hành với bộ
môn Giải tích.
Tính tích của hữu hạn hoặc vô hạn thừa số
Thao tác giống hệt phần trên, chỉ thay chữ "Sum" (tổng) bằng chữ
"

Product" (tích).
23
Thí dụ
Muốn tính tích
2
10
0
311
3
i
ii
i
=
+

+

ta vào hai lệnh sau và ấn "Enter", máy sẽ cho
biểu thức của tích cần tính và đáp số.
[>
Product((i^2+3*i-11)/(i+3),i=0 10) ;


=
i
0
10

+



i
2
3
i
11

+
i
3

[>
value(%);
-778170651265
7
40435200

Thí dụ Muốn tính nhanh tích
2
2
1
1
n
n

=






ta vào lệnh sau (dùng "product" thay cho
"Product") và ấn "Enter", máy sẽ cho ngay đáp số (bỏ qua công đoạn biểu diễn
bằng công thức),
[>product((1-1/n^2),n=2 infinity) ;
1
2

Nhận xét:
Tích vô hạn liên quan mật thiết với tổng vô hạn và có nhiều công thức
thú vị. Dùng MAPLE, bạn có thể dễ dàng tính đợc các tích đó.
Thí dụ (Công thức Euler ) Tính

= n 1









1
1
4 n
2

[>
product(1-1/(4*n^2),n = 1 infinity) ;

2


2.1.3. Tính toán với số phức
MAPLE cho phép thực hiện tính toán với số phức. Chữ I (hoa) đợc dùng
làm ký hiệu chỉ đơn vị ảo.
Thí dụ
Tính
+ 35
I
+ 74I

[>
(3+5*I)/(7+4*I);
+
41
65
23
65
I

24
Bằng lệnh "biến đổi f về dạng toạ độ cực"
convert(f,polar)
bạn có thể dễ
dàng biến đổi số phức f về dạng toạ độ cực (r,
), trong đó r là môđun và là
argumen của số phức trong biểu thức.
[>convert((3+5*I)/(7+4*I),polar);









polar ,
1
65
2210








arctan
23
41

2.1.4. Tính toán theo Modul
Các tính toán Modul thông thờng
Tính modul m trên tập số nguyên
Lệnh :
e mod m
với các dạng riêng:


modp(e,m) - lấy biểu diễn dơng của e theo modul m (trong tập giá trị từ 0
đến)
1m ;
mods(e,m)
- lấy biểu diễn đối xứng của
e
theo modul
m

(trong tập giá trị từ [
1
2
m
] đến [
m
2
] )
Trong đó:
e - biểu thức đại số

m - số nguyên khác 0
Toán tử
mod
tính giá trị biểu thức
e
trên tập số nguyên modul
m
. Nó hợp
nhất việc tính toán trên trờng số hữu hạn và các phép tính số học đối với đa thức,
ma trận trên trờng hữu hạn, kể cả phép phân tích ra thừa số.

Việc ấn định
modp
hay
mods
đợc thực hiện thông qua biến môi trờng
`mod` (giá trị modp đợc xem là mặc định).
Khi tính
n
q mod m
, trong đó
q
là số nguyên, thì không nên sử dụng cú
pháp 'hiển nhiên' nh
q^n mod m, bởi vì phép luỹ thừa sẽ chuyển số thứ nhất thành
số nguyên (có thể là rất lớn) trớc khi rút gọn theo modul
m. Thay vào đó, nên
dùng toán tử trơ (inert) &^, nghĩa là
q&^n mod m
. Trong dạng đó, luỹ thừa sẽ
đợc biến đổi khéo léo theo phép lấy mod. Tơng tự Powmod(a,n,b,x) mod m tính
Rem(a^n,b,x) mod m ( a và b là những đa thức của x) không cần tính a^n mod m.
Những phép toán modul số học khác đợc biểu diễn dới dạng tự nhiên của
chúng.
i+j mod m; i-j mod m; i*j mod m;
j^(-1) mod m; i/j mod m;
Trong đó
i/j mod m
đợc hiểu là
i*j^(-1)
(modul m).

Thí dụ Tính
25
[>12 mod 7;
5
[>
modp(12,7);
5
[>mods(12,7);
-2
[>
5*3 mod 7;
1

[>11+5*3 mod 7;
5

[>(11+5*3)^(-1) mod 7;
3

[>1/(11+5*3) mod 7;
3

[>
1/3 mod 7;
5

[>5&^1000 mod 23;
9

Khi biểu thức

e
không phải là một số, mà là một đa thức thì phép lấy modul của
nó đợc hiểu là phép lấy modul của tất cả các hệ số của đa thức.
Thí dụ Tính
[>a := 15*x^2+4*x-3 mod 11;
:= a

+

4
x
2
4
x
3

Nh đã nói, theo mặc định thì phép lấy modul luôn sử dụng biểu diễn dơng
(modp). Muốn chuyển sang dùng biểu diễn đối xứng thì ta dùng lệnh
[>
`mod` := mods:
[>b := 3*x^2+8*x+9 mod 11;
26
:= b



3
x
2
3

x
2

và lệnh này chỉ có hiệu lực trong cụm xử lý có nó tham gia mà thôi. Thật vậy:
[>
3*x^2+8*x+9 mod 11;

+

+ 3
x
2
8
x
9

Các phép toán khác: tìm ớc số chung lớn nhất, phân tích ra thừa số (với cả số
và đa thức), cũng đợc thực hiện theo phơng thức thông thờng (ngoại trừ một
khác biệt nhỏ là các lệnh trong phép tính với modul đợc bắt đầu với chữ hoa). Một
điều dễ nhận ra là kết quả của phép tính theo modul luôn "khác thờng". Thí dụ:
[>
gcd(a,b);
1

[>Gcd(a,b) mod 11;

+
x
5


[>factor(x^3+2);

+
x
3
2

[>Factor(x^3+2) mod 5;
()

+


x
2
2
x
1( )


x
2

[>Expand(%) mod 5;

+
x
3
2


Giải phơng trình với Modul
Lệnh : msolve - giải phơng trình trong Z theo mod m
Cú pháp:
msolve(eqns,vars,q)
hoặc
msolve(eqns,q)

Tham số:
eqns -
tập các phơng trình (hoặc một phơng trình)
vars - tập các tên biến

q -
số nguyên
Lệnh
msolve
giải các phơng trình eqns trên các số nguyên (theo mod q).
Nó giải theo mọi ẩn bất định có trong các phơng trình.
Nếu nghiệm là vô định, thì họ các nghiệm đợc biểu thị thông qua các biến có
tên đợc cho trong tập tên biến vars , và nếu nh vars bị bỏ qua thì đợc thay thế
27
bằng các tên mặc định toàn cục _NN1, _NN2, _NN3, Những tên này không
trùng với các ẩn vô định và đợc phép lấy mọi giá trị nguyên.
Thí dụ
[>msolve({3*x-4*y=1,7*x+y=2},19);
{},

=
x
15


= y 11

[>msolve(2^i=3,z,19);
{}

= i

+ 13 18
z

[>
msolve(8^i=2,17);
{}

= i

+ 38_NN1~

[>msolve(8^i=2,u,17);
{}

= i

+ 38u

[>msolve(sum(x[i],i=1 9),3 );
x[3] = 2x[1]+2x[2]+2x[7]+2x[4]+2x[5]+2x[6]+2x[8]+2x[9], x[4] = x[4], x[5] =
x[5], x[6] = x[6], x[7] = x[7], x[9] = x[9], x[1] = x[1], x[2] = x[2], x[8] = x[8]
Nếu phơng trình không có nghiệm trên các số nguyên (mod m) thì ta sẽ

không nhận đợc kết quả nào.
Thí dụ
[>msolve(x^2=3,5);
(Phơng trình này vô nghiệm)
2.1.5. Khai triển, đơn giản và phân tích biểu thức đại số
Khai triển biểu thức đại số
MAPLE có thể khai triển các nhị thức.
Thí dụ Khai triển nhị thức
()

+
x
y
15
. Công việc này đợc tiến hành nh sau:

Bớc 1.
Đa vào dòng lệnh gán tên cho biểu thức cần khai triển:
[>expr:=(x+y)^15;
Trong đó expr là viết tắt của chữ " biểu thức", dấu ":= " thay cho định nghĩa (vì
vậy, dòng lệnh trên có nghĩa nh là : "biểu thức
expr
đợc định nghĩa bằng
(x+y)^15 " ).
Sau khi cho thực hiện lệnh, máy hiện biểu thức mà ta sẽ khai triển, tức là
28

:= exp
r
()


+
x
y
15

Bớc 2.
Tiếp tục đa vào lệnh:
[>
expand(expr);
(nghĩa là: " Khai triển biểu thức
expr
"). Sau khi cho thực hiện lệnh máy hiện
dạng khai triển của biểu thức.
15 14 2 13 3 12 4 11 5 10 6 9
78 87 96 105 114 123
13 2 14 15
x 15 105 455 1365 3003 5005
6435 6345 5005 3003 1365 455
105 15
yx yx yx yx yx yx
yx yx yx y x y x y x
yx yx y
++ + + + +
++ + + + +
+++

Phân tích ra thừa số
Phép toán này thực chất là ngợc của phép khai triển nói trên. Bạn có thể dùng
nó để kiểm tra các tính toán đã thực hiện ở trên. Lệnh phân tích một đa thức ra thừa

số là
factor(.). Thí dụ, ta phân tích đa thức sau đây ra thừa số



+



+
x
4
10
x
3
35
x
2
50
x
24

bằng lệnh
[>
factor(x^4-10*x^3+35*x^2-50*x+24);
()


x
1( )



x
2( )


x
3( )


x
4

Chú ý Đa thức đại số luôn đợc hiểu là có hệ số nguyên, cho nên máy chỉ tìm
những thừa số là đa thức nguyên mà thôi. Muốn tìm những đa thức không nguyên
thì tốt nhất là dùng cách giải phơng trình để tìm nghiệm. Các tính toán này sẽ
đợc xem xét sau.
Phép đơn giản biểu thức
Bằng lệnh simplify (đơn giản hoá) MAPLE có thể áp dụng các đồng nhất
thức để đơn giản rất nhiều biểu thức toán học cồng kềnh, thí dụ các biểu thức
lợng giác
Thí dụ Muốn đơn giản biểu thức lợng giác
+

+



()cos
x

5
()sin
x
4
2()cos
x
2
2()sin
x
2
()cos 2
x

ta dùng lệnh:
[>
simplify(cos(x)^5+sin(x)^4+2*cos(x)^2-2*sin(x)^2-
cos(2*x));
Sau khi cho thực hiện lệnh máy hiện biểu thức đã đơn giản là

+ ()cos
x
5
()cos
x
4
.
29
Tối giản phân thức
Tối giản phân thức cũng là đa nó về dạng chuẩn tắc (normal), tức là giản ớc
các thừa số chung của tử số và mẫu số. Muốn làm việc này ta sử dụng lệnh

normal
. Thí dụ, ta tối giản phân thức


x
3
y
3
+ x
2
xyy
2

bằng lệnh sau đây:
[>normal((x^3-y^3)/(x^2+x-y-y^2));
Sau khi cho thực hiên lệnh là sẽ thấy ngay kết quả

+

+
x
2
y
x
y
2
+ + x 1 y

Gán tên cho biểu thức và gán trị cho biến
Nếu một biểu thức cồng kềnh mà đợc dùng đi dùng lại nhiều lần thì tốt nhất

là gán cho nó một cái tên, để mỗi lần sử dụng đến nó ta không mất công viết lại (và
cũng đỡ nhầm lẫn). Thí dụ, ta gán cho biểu thức
22
(41 1) (2 1)xx x
+
+
cái tên là
expr1 (biểu thức 1) bằng lệnh
[>expr1:=(41*x^2+x+1)^2*(2*x-1);
:= expr1 () + + 41 x
2
x 1
2
() 2 x 1

và sau đó ta có thể thoải mái tiến hành mọi phép toán trên nó.
Thí dụ, ta có thể khai triển nó bằng lệnh
expand
và, cùng một lúc, lại có thể
gán cho biểu thức kết quả một cái tên khác, thí dụ nh là
expr2
(biểu thức 2), với
lệnh:
[>
expr2:=expand(expr1);
:= expr2



+




3362
x
5
1517
x
4
84
x
3
79
x
2
1

và có thể thiết lập phân thức với tử số là một đa thức nào đó (thí dụ :
2
1
x
x++và
mẫu số là biểu thức trên, với lệnh:
[>phanthuc:=(x^2+x+1)/expr2;
2
5432
1
:
3362 1517 84 79 1
xx

phanthuc
x
xxx
++
=

+

30
Muốn gán một giá trị cho biến của một biểu thức ta dùng lệnh
subs
(viết tắt của từ
substitution
- thay thế), thí dụ ta có thể tính giá trị của biểu thức 2 tại x = 1
bằng lệnh gán cho biến
x
giá trị bằng 1, cụ thể là:
[>subs (x=1, phanthuc);
3
1849

Dĩ nhiên, giá trị đợc gán cho biến số cũng có thể là một biểu thức (và khi ấy ý
nghĩa của từ "thay thế" càng trở nên sáng tỏ), thí dụ
[>subs(x=x+y,phanthuc);

+

+

+ ()


+
x
y
2
x
y 1
+ 3362 ( ) + xy
5
1517 ( ) + xy
4
84 ( ) + xy
3
79 ( ) + xy
2
1

Chuyển đổi dạng của biểu thức
Lệnh convert (chuyển đổi) cho phép ta đa các biểu thức về những dạng đặc
biệt xác định trớc.
Thí dụ, ta biến đổi biểu thức

+ a
x
2
b
x () + 3 x
2
x 4
về dạng tổng các phân thức

riêng (partial fractions) nhờ các lệnh sau đây:
Khai báo biểu thức
[>my_expr:= (a*x^2+b)/(x*(-3*x^2-x+4));
:= my_expr

+ a
x
2
b
x
() + 3 x
2
x 4

Chuyển đổi biểu thức vừa khai báo về dạng tổng các phân thức riêng:
[>
convert(my_expr,parfrac,x);

1
4
b
x
1
28

+ 16 a 9 b
+
3 x 4
1
7


+ ab
x
1

Ta cũng có thể biểu diễn hàm
cot(x)
qua dạng hàm số mũ (
exp
)
[>
convert(cot(x),exp);
I () + ()e
()Ix
2
1
()e
()Ix
2
1

31
2.1.6. Định nghĩa hàm số
Hàm số thông thờng
MAPLE cung cấp nhiều phơng tiện để xác định hàm số. Cách thứ nhất là
dùng ký hiệu mũi tên ->, giống nh kí hiệu toán học thông thờng.
Thí dụ Muốn xác định hàm số
2
1
2

xx+
ta đa vào lệnh sau:
[>f:=x->x^2+1/2;
:= f x + x
2
1
2

Nghĩa là: " Hàm
f
ánh xạ
x
vào
2
1
2
x
+
".
Sau khi đã định nghĩa, ta có thể tính giá trị của hàm
f
tại các điểm tuỳ ý (là số
2x = hoặc là ký hiệu hình thức (
x
ab
=
+ ) bằng các lệnh sau:
[>f(2);
9
2


[>f(a+b);
+ () + ab
2
1
2

Một điểm khác cơ bản giữa định nghĩa hàm số nh trên và phép gán tên (ở mục
trớc) là giá trị của hàm số đợc tính trực tiếp (chứ không phải bằng lệnh thay thế).
Cũng có thể sử dụng lệnh
unapply để chuyển một biểu thức về hàm số
[>
g:=unapply(x^2+1/2,x);
:= g x + x
2
1
2

Lu ý rằng đây cũng không phải là lệnh gán tên cho biểu thức, vì trong lệnh gán tên
không có chữ
unapply, và kết quả của lệnh gán tên không có mũi tên ánh xạ từ
x
(
x

->
Biểu thức).
Hàm từng khúc
Một phơng pháp phổ biến để định nghĩa hàm số là định nghĩa hàm số mới
thông qua các hàm số đã biết. Cách đơn giản nhng đem lại lớp hàm vô cùng phong

32
phú và đa dạng là chia miền xác định ra một số mảnh, trên mỗi mảnh ta cho hàm
nhận giá trị của một hàm nào đó đã biết trớc. Các hàm nh vậy thờng đợc gọi là
hàm từng khúc. Nó đợc xác định bằng lệnh
piecewise(.)
.

Thí dụ Hàm từng khúc:
:= f













x
2
1


x
-1
1

x x 1
()sin x 1
x
otherwise

đợc xác định bằng lệnh
[>
f:=piecewise(x<=-1,x^2-1,x<=1,-abs(x)+1,sin(x-1)/x);
Sau khi cho thực hiện lệnh, ta sẽ đợc công thức nh ở trên.
2.1.7. Giải phơng trình và hệ phơng trình
Giải phơng trình đại số (có hệ số bằng số hoặc bằng chữ).
Thí dụ Giải phơng trình


=

+
x
3
a
x
2
2
13
x
2
3

+



13
a
x
6
10
x
3
5
a
3
.
Bớc 1. Sử dụng lệnh eqn:= để xác định phơng trình cần giải:
[>eqn:=x^3-a*x^2/2+13*x^2/3=13*a*x/6+10*x/3-5*a/3;
:=
eqn

=



+
x
3
1
2
a
x
2
13

3
x
2

+


13
6
a
x
10
3
x
5
3
a

Bớc 2.
Giải phơng trình bằng lệnh
solve(eqn,{x})

[>
solve(eqn,{x});
,,{} = x -5 { } = x
2
3
{} = x
1
2

a

Ta có thể chỉ dùng một lệnh solve (giải) và có ngay đáp số.
Thí dụ

Giải phơng trình chứa dấu giá trị tuyệt đối (abs):
22
(( 2 ) 1) 9zz
+
+=
[>
solve(abs((z+abs(z+2))^2-1)^2=9,{z});
,{}

=
z
0{ }


z
-2

33
Thí dụ
Giải phơng trình lợng giác
[>solve(arccos(x)-arctan(x)=0,{x});
{} = x
1
2
+ 225


Giải phơng trình vô tỷ
Phơng trình
432
1++
x
xxx, khó mà giải đợc bằng mẹo, nhng thật dễ
dàng khi ta dùng lệnh
[>
solve(x^4-x^3+x^2-x+1,{x});
{}

=
x


+


1
4
5
1
4
1
4
I
2

+

5
5

{} = x +
1
4
1
4
5
1
4
I
2 5 5

{} = x + +
1
4
1
4
5
1
4
I
2 5 5

{} = x + +
1
4
5
1

4
1
4
I
2 + 5 5

Mặc dù là phức tạp, nhng nghiệm của nó vẫn là những số vô tỷ "nhận ra
đợc", tức là có thể biểu diễn đợc qua các số vô tỷ đã biết (ở đây I là ký hiệu đơn
vị ảo). Tuy nhiên điều này không phải lúc nào cũng xảy ra. Nói chung, với một
phơng trình bất kỳ, nghiệm của nó thờng là những số vô tỷ "lạ hoắc", và có thể
không biểu diễn đợc qua các ký hiệu sẵn có. Khi ấy thì chỉ còn cách là cho nó một
cái tên nào đó (nh ta đã từng làm với số e, số , ) và ta có thể nhận biết các số vô
tỷ mới này thông qua các đánh giá xấp xỉ thập phân của chúng (với mức độ chính
xác tuỳ ý).
Tuy nhiên, khi gặp phải một phơng trình siêu việt, việc tính toán nghiệm
thờng rất khó khăn, nên Maple thờng chỉ cho ta 1 nghiệm nào đó. Muốn có đầy
đủ các nghiệm, ta phải biết cách "chỉ dẫn" cho máy. Xin xem chi tiết trong mục:
Giải phơng trình và phơng pháp đồ thị (Chơng 5).
Giải hệ phơng trình
Thí dụ Giải hệ 5 phơng trình bậc nhất 5 ẩn:

= +

+

+

+ a
2
b

3
c
4
d
5
e
41


=

+

+

+

+
5
a
5
b
4
c
3
d
2
e
20



=

+



+
3
b
4
c
8
d
2
e
125


= +

+

+

+ abcde9


=


+

+

+ 8 a 4 c 3 d 2 e 11

Bớc 1
:
Vào các lệnh xác định các phơng trình của hệ:
34
[>eqn1:=a+2*b+3*c+4*d+5*e=41;
:= eqn1

=

+

+

+

+ a 2 b 3 c 4 d 5 e 41

[>eqn2:=5*a+5*b+4*c+3*d+2*e=20;
:= eqn2

=

+


+

+

+ 5 a 5 b 4 c 3 d 2 e 20

[>
eqn3:=3*b+4*c-8*d+2*e=125;
:= eqn3

=

+



+ 3 b 4 c 8 d 2 e 125

[>eqn4:=a+b+c+d+e=9;
:= eqn4

=

+

+

+

+ abcde9


[>eqn5:=8*a+4*c+3*d+2*e=11;
:= eqn5

=

+

+

+ 8 a 4 c 3 d 2 e 11

Bớc 2:
Giải hệ phơng trình theo mọi ẩn a,b,c,d,e.
[>
solve({eqn1,eqn2,eqn3,eqn4,eqn5},{a,b,c,d,e});
{},, ,, = b 3

= e 16

= d -11

= c -1

= a 2

2.1.8. Giải bất phơng trình
Thí dụ Giải hệ gồm 3 bất phơng trình:

<

x
2
1
,

y
2
1
,
< + xy
1
2

bằng một lệnh trực tiếp
[>solve({x^2<1,y^2<=1,x+y<1/2},{x,y});
{},,,, < + xy
1
2
0 -1 y y 1 < -1 x < x 1

Cũng có thể giải bất phơng trình qua 2 bớc (với một bớc xác định phơng trình)
Thí dụ
Giải bất phơng trình theo ẩn
x
(với tham số
m
):
4
10xm
x

m
+
+<
+

[>ineq:=(x+m+4/(x+m)<10);
:= ineq < + + xm
4
+ xm
10

35
[>solve(ineq,{x});
,{} < x m {},

<



5 21 mx

< x

+

5 21 m

MAPLE có thể xét các bất phơng trình phức và tính giá trị Bool của biểu thức nhờ
sử dụng lệnh
is (là)

Thí dụ Xét xem số phức 21 1
I
I

+có bằng 0 hay không?
[>
expr:=2*sqrt(-1-I)*sqrt(-1+I);
:= expr 2


1 I


+ 1 I

[>
is(expr=0);
f
alse

2.2. Vẽ đồ thị và các vấn đề liên quan
2.2.1. Vẽ đồ thị trong mặt phẳng
Mọi việc tính toán đều đợc tiến hành trong cụm xử lý (Execution Group), cho
nên trớc tiên phải đa nó vào (bằng chức năng
Insert/Execution Group/After Cursor
).
Các tính toán với đồ hoạ thờng yêu cầu bộ nhớ lớn, cho nên ta nên "làm sạch bộ
nhớ" bằng lệnh:
[>restart;
Sau đó ta nạp các gói chức năng chuyên dụng cho vẽ đồ thị, bằng các lệnh

[>with(plots);
[>with(plottools);
Khi thực hiện mỗi lệnh này ta sẽ thấy xuất hiện bản thống kê các chức năng chuyên
dụng của nó. Việc nạp các lệnh này là bắt buộc trớc khi vẽ đồ thị. Nếu không,
chơng trình sẽ không làm việc chuẩn xác.
Công cụ vẽ đồ thị hai chiều của MAPLE cho phép bạn vẽ đồ thị của các hàm
phức tạp, tạo ra các đồ thị theo tham số, theo toạ độ pha, toạ độ cực, Bạn có thể vẽ
đồ thị các hàm cho dới dạng ẩn, nghiệm của phơng trình vi phân và quỹ tích. Bạn
cũng hoàn toàn kiểm soát đợc các phông sử dụng cho tiêu đề, nhãn hiệu hoặc các
văn bản khác trong các đồ thị của bạn.
Vẽ đồ thị hàm thông thờng
Ta vẽ đồ thị của hàm ()yfx= bằng dòng lệnh có cú pháp nh sau:
[>
plot(f(x),x=a b,y=c d,title=`abcd`);

×