1.1 Giới thiệu Maple•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 hình học mạnh mẽ của công ty Warterloo Maple Inc.. 1.1 Giới thiệu Maple• Các chức năng cơ bản c
Trang 1Chương 1
Giao diện và môi trường
làm việc của Maple
Trang 21.1 Giới thiệu Maple
•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 hình học mạnh mẽ của công ty Warterloo Maple Inc.
•(http://www.maplesoft.com), ra đời năm 1991, đã phát triển đến phiên bản 1 8 (đến 2014) Maple chạy trên tất cả các hệ điều hành, có trình trợ giúp (Help) rất dễ sử dụng.
Trang 31.1 Giới thiệu Maple
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 phổ thông và ñại học.
Trang 41.1 Giới thiệu Maple
• Các chức năng cơ bản của Maple:
– 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ệc đượ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ị tĩnh và động của các đường và mặt được cho bởi các hàm tùy ý trong nhiều hệ tọa độ khác nhau;
Trang 51.1 Giới thiệu Maple
• Các chức năng cơ bản của Maple:
– 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ư LaTex, 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;
– .
Trang 6Execution Group
1.2 Giao diện
Trang 71.3 Môi trường tính toán và các đối tượng trong trang làm việc
Cụm xử lí - Execution Group
• Cụm xử lí là khái niệm cơ bản của Maple [>
• Các lệnh của Maple đặt trong cụm xử lí và kết thúc bởidấu “;” hoặc dấu “:”
• Khi gõ Enter các lệnh trong cụm xử lí sẽ được thực thi vàtrả lại kết quả
• Có thể đặt nhiều lệnh trong cùng một cụm xử lí bằngcách nhấn Shift Enter
Trang 8Chương 2
Thực hành tính toán
trên Maple
Trang 10Tính toán với số (nguyên)
[>99! + 2^100;
2.1 Các phép toán của Maple
933262154439441526816992388562667004907159682 643816214685929638952175999932299156089414639 761565182862536979208272237582511853376819240 228229401496703205376
Trang 13Phân tích một số ra tích các thừa số nguyên tố
Trang 14Tìm số nguyên tố
Trước một số a cho trước
2.1 Các phép toán của Maple
Trước một số a cho trước
[> prevprime(a);
Sau một số a cho trước
[> nextprime(a);
Trang 15Tìm thương và phần dư
Tìm phần dư nguyên
[> irem(m,n); hoặc irem(m,n,’q’);
2.1 Các phép toán của Maple
[> irem(m,n); hoặc irem(m,n,’q’);
Tìm thương nguyên
[> iquo(m,n); hoặc iquo(m,n,’r’);
Trang 17Tính toán với số thập phân
Maple có thể tính toán các số thập phân với ñộ chính xáctùy ý
2.1 Các phép toán của Maple
tùy ý
Muốn tính chính xác ñại lượng P với ñộ chính xác m
[>evalf(P,m);
Trang 18Tính e với ñộ chính xác 20 chữ số thập phân
[> evalf(exp(1.0), 20);
2.7182818284590452354
Trang 2210
4 1
1 1
i
i i
=
+ +
1 1
i
i i
=
+ +
∑
[> value(%);
51508056727594732913722 40626648938819200088497
1 1
i= + i
Trang 23Tính 3
1
n k
Trang 242 1
6 π
Trang 27Ví dụ
Tính
2 20
2 2
1
i
i i
∏
2140
Công thức Euler
[> product(1-1/(4*n^2),n=1 infinity);
2 1
Trang 282.2 Tính toán với biểu thức ñại số
Maple cho phép tính toán với các biểu thức ñại số
Có thể khai triển, thu gọn, ñơn giản, phân tích, … mộtbiểu thức ñại số
Trang 29Khai triển biểu thức ñại số
Trang 31Cú pháp:
ðơn giản biểu thức
2.2 Tính toán với biểu thức ñại số
[>simplify(expr);
Ví dụ: ðơn giản biểu thức
cos5(x) + sin4(x) + 2cos2(x) – 2sin2(x) – cos(2x)
[>simplify(cos(x)^5+sin(x)^4+2*cos(x)^2-2*sin(x)^2-cos(2*x));
4
cos( ) (cos( ) 1) x x +
Trang 32Cú pháp:
Tối giản phân thức
2.2 Tính toán với biểu thức ñại số
Trang 34Chuyển ñổi dạng của biểu thức
Trang 35ðịnh nghĩa hàm số
Hàm số thông thường
2.2 Tính toán với biểu thức ñại số
– Maple cung cấp nhiều cách ñể ñịnh nghĩa hàm số ví dụ như cách dùng , cách dùng lệnh unapply
– Sau khi ñịnh nghĩa hàm số có thể tính giá trị của nó
Hàm từng khúc
– Trong Maple có thể ñịnh nghĩa hàm từng khúc bằng piecewise
– Trong Maple có thể ñịnh nghĩa hàm từng khúc bằng piecewise
với cú pháp:
piecewise(cond1,func1,cond2,func2,…,condn,funcn,func)
Trang 38Giải phương trình nghiệm nguyên
Cú pháp:
[>isolve(eqns,vars);
2.2 Tính toán với biểu thức ñại số
[>isolve(eqns,vars);
– Eqns: tập các phương trình cần giải
– Vars: tập các biến tự do Nếu không cung cấp thì Maple
tự ñộng tạo ra các biến tự do
Ví dụ:
Ví dụ:
[> isolve(3*x+4*y=13);
{x = −3 4 _ Z y1, = +1 3 _ Z1}
Trang 39Trăm trâu ăn trăm bó cỏ
Trâu ñứng ăn năm
2.2 Tính toán với biểu thức ñại số
Trang 41Giải phương trình & hệ phương trình
Trang 43[>solve({eqn1,eqn2,eqn3},{a,b,c}); {a = 10,b = 9,c = 6}
Trang 44Giải công thức truy hồi của dãy số
Trang 45Giải công thức truy hồi của dãy số
Ví dụ: Tìm công thức tổng quát của dãy Fibonaci
Trang 46Giải hệ 1
2.2 Tính toán với biểu thức ñại số
Giải công thức truy hồi của dãy số
{ f n ( ) = + n 1, ( ) y n = − + 1 2n}
Trang 47Các phép toán trên vector và ma trận
Trước hết cần nạp gói công cụ linalg
Trang 48Muốn tạo ma trận ta dùng một trong các lệnh sau:
2.3 Tính toán trong ñại số tuyến tính
Các phép toán trên vector và ma trận
> matrix(L); #L: bảng các danh sách, vector dòng
Trang 49Ví dụ: Nhập ma trận
1 2
2.3 Tính toán trong ñại số tuyến tính
Các phép toán trên vector và ma trận
Trang 50ðể nhập một ma trận gồm các phần tử giống nhau:
> B:= matrix(2,2,3);
2.3 Tính toán trong ñại số tuyến tính
Các phép toán trên vector và ma trận
Trang 54Tính tích trong của ma trận và vector
Dùng lệnh innerprod ñể tính tích trong của một dãy các
Trang 55Tích trực tiếp của hai vector
Tích trực tiếp của hai vector là một vector
Trang 56Tích vô hướng của hai vector
Tích vô hướng của hai vector cho kết quả một số thựchoặc phức
2.3 Tính toán trong ñại số tuyến tính
hoặc phức
> dotprod(vector1, vector2);
> dotprod(vector1, vector2, ‘orthogonal’);
Trang 57Tích vô hướng của hai vector
Trang 58Tính giá trị riêng & vector riêng của ma trận
Trang 59Xác ñịnh vector riêng bằng lệnh:
2.3 Tính toán trong ñại số tuyến tính
Tính giá trị riêng & vector riêng của ma trận
Trang 60Xác ñịnh giá trị riêng:
2.3 Tính toán trong ñại số tuyến tính
Tính giá trị riêng & vector riêng của ma trận
Trang 62Giải phương trình ñại số tuyến tính
Trang 63Ví dụ:
>eqns := {x+2*y=3,3*x-5*y=0};
2.3 Tính toán trong ñại số tuyến tính
Giải phương trình ñại số tuyến tính
Trang 64> eqns := {x+2*z=a,3*x-5*y=6-z};
eqns := {x + 2 z = a, 3 x - 5 y = 6 - z}
2.3 Tính toán trong ñại số tuyến tính
Giải phương trình ñại số tuyến tính
eqns := {x + 2 z = a, 3 x - 5 y = 6 - z}
> A := genmatrix(eqns, [x,y,z], flag);
>A := genmatrix(eqns, [x,y,z], 'b');
Trang 65Giải phương trình: Ax=u
> linsolve(A,u);
2.3 Tính toán trong ñại số tuyến tính
Giải phương trình ñại số tuyến tính
Trang 66Tìm cơ sở của không gian vector
Tìm các vector cơ sở của một họ vector bằng basis
Trang 67Tìm cơ sở của không gian sinh bởi cột và hàng của ma trận
Trang 68Tìm cơ sở của nhân
Trang 69Tìm cơ sở trực chuẩn của không gian sinh bởi một họ các vector
> GramSchmidt(vects);
2.3 Tính toán trong ñại số tuyến tính
> GramSchmidt(vects);
vects : tập các vector
Trang 70Các lệnh vẽ ñồ thị thường yêu cầu bộ nhớ lớn do ñó cầnlàm sạch bộ nhớ bằng lệnh
Trang 71[Interactive, animate, animate3d, animatecurve, arrow, changecoords, complexplot,
complexplot3d, conformal, conformal3d, contourplot, contourplot3d, coordplot,
coordplot3d, cylinderplot, densityplot, display, display3d, fieldplot, fieldplot3d,
gradplot, gradplot3d, graphplot3d, implicitplot, implicitplot3d, inequal, interactive,
interactiveparams,
listcontplot, listcontplot3d, listdensityplot, listplot, listplot3d, loglogplot, logplot,
matrixplot, multiple, odeplot, pareto, plotcompare, pointplot, pointplot3d, polarplot,
polygonplot, polygonplot3d, polyhedra_supported, polyhedraplot, replot, rootlocus,
semilogplot, setoptions, setoptions3d, spacecurve, sparsematrixplot, sphereplot,
surfdata, textplot, textplot3d, tubeplot]
surfdata, textplot, textplot3d, tubeplot]
Warning, the assigned name arrow now has a global binding [arc, arrow, circle, cone, cuboid, curve, cutin, cutout, cylinder, disk, dodecahedron,
ellipse, ellipticArc, hemisphere, hexahedron, homothety, hyperbola, icosahedron, line,
octahedron, parallelepiped, pieslice, point, polygon, project, rectangle, reflect, rotate,
scale, semitorus, sphe stellate, tetrahedron, torus, transform, translate, vrml]
Trang 722.4 Vẽ ñồ thị và các vấn ñề liên quan
Có thể vẽ ñồ thị hàm y = f(x) bằng cú pháp
> plot (f(x), x=a b, y=c d, title=‘hello’);
Vẽ ñồ thị 2D
> plot (f(x), x=a b, y=c d, title=‘hello’);
ðồ thị hàm số sẽ ñược vẽ trong hình chữ nhật [a,b] x [c,d] Nếu không cung cấp c, d, Maple sẽ tự chọn
Trang 752.4 Vẽ ñồ thị và các vấn ñề liên quan
Hàm ẩn là hàm cho bởi công thức h(x,y)=0 Dưới một
số ñiều kiện nhất ñịnh ta có thể giải ñược y=f(x)
Trang 77> plot([ sin(t), cos(t), t=0 2*Pi ]);
Cần phân biệt lệnh trên với:
> plot([ sin(t), cos(t)], t=0 2*Pi);
Trang 782.4 Vẽ ñồ thị và các vấn ñề liên quan
Các tùy chọn trong vẽ ñồ thị
Vẽ ñồ thị 2D
Cú pháp tổng quát ñể vẽ ñồ thị:
> plot (expr, range, options);
Range là tham số chỉ vùng vẽ ñồ thị Nếu bỏ qua tham
số range thì Maple sẽ mặc ñịnh lấy x=-10 10
Options là tập các thiết lập tùy chọn giúp cho việc vẽ ñồthị Các thiết lập này có dạng thuộc_tính = giá_trị
Trang 792.4 Vẽ ñồ thị và các vấn ñề liên quan
Các tùy chọn trong vẽ ñồ thị
Thiết lập hệ trục tọa ñộ thông qua axes với các giá trị none,
normal, boxed, frame.
Vẽ ñồ thị 2D
normal, boxed, frame.
Màu của ñồ thị ñược ấn ñịnh bằng thuộc tính color với các màu
red, green, blue…
Chọn loại ñường viền (liền hay ñứt ñoạn) thông qua linestyle với
giá trị 0, 1, 2…Trong trường hợp ñường viền là chấm, tiếp tục tùy
cross, box và diamond.
cross, box và diamond.
Chọn số ñiểm ñể vẽ ñồ thị thông qua numpoints Mặc ñịnh, numpoints bằng 50.
Tỉ lệ co giãn ñược thiết lập thông qua scaling với uncontrained và
constrained.
Chọn hệ trục ñể vẽ ñồ thị thông qua coords
Trang 83Ví dụ: Vẽ ñường ống
[x(t), y(t), z(t)] = [10cost, 10sint, 0]
[x(t), y(t), z(t)] = [10cost, 10sint, 0]
r(t) = 2 + cos6t
>tubeplot([10*cos(t),10*sin(t),0,t=0 2*Pi,radius= 2+cos(6*t),numpoints=200,tubepoints=50]);
Trang 84Có thể animate trong không gian 3D.
>animate3d(cos(t*x)*cos(t*y), x=-Pi Pi, y=-Pi Pi, t=1 2);
Trang 87Giới hạn bên trái – bên phải
Giới hạn bên trái:
> limit(f(x), x=a, left);
2.5 Phép tính vi phân và tích phân
> limit(f(x), x=a, left);
Giới hạn bên phải:
> limit(f(x), x=a, right);
Trang 88> limit(f(x),x=2,left)-limit(f(x),x=2,right);
0
2 ( 2, 2, 3 4)
Trang 90> evalf(%);
0.2938933330
1 ln(3) ln(5)
2
−
Trang 94−
Trang 96Khai triển hàm số thành chuỗi số
Maple có thể xấp xỉ một hàm số bởi phần chính chuỗiTaylor khá hoàn hảo
2.5 Phép tính vi phân và tích phân
Taylor khá hoàn hảo
> approx:= series(expr, x=a);
> poly:= convert(approx,polynom);
Trang 97Ví dụ: Khai triển y=sin(2x).cos(x) tại x=0.
Trang 98Chương 3
Lập trình trên Maple
Trang 992 Lập trình tính toán
3.1 Các khái niệm cơ bản
Tên (name) và chuỗi ký tự
Tên là một chuỗi các chữ cái (string of letters) được dùng
như một chỉ mục hay một nhãn để đại diện cho các đối tượng trong Maple có thể thay đổi được như: biến, ký hiệu toán học, các biểu thức, mà ta có thể gán cho nó.
Chiều dài tối đa của tên phụ thuộc hệ máy tính mà Maple chạy trên đó (máy 32-bit thì chiều dài tối đa của tên là 524275).
Tên bắt đầu với một dấu gạch dưới ( _ ) được sử dụng làm biến toàn cục.
Trang 1003 Lập trình tính toán
3.1 Các khái niệm cơ bản
Tên (name) và chuỗi ký tự
Chuỗi ký tự (string of characters) có thể không phải là
một chuỗi các chữ cái (vì có chứa các ký tự đặc biệt như: khoảng trống, dấu chấm than, ) và do đó không phải là một tên hợp lệ.
Maple cho phép tạo một tên từ một chuỗi ký tự bằng
cách cho nó vào trong cặp dấu nháy đơn ( ` ).
VD: `a variable!`:=10
x hay `x` cùng chỉ đến một tên.
Trang 1014 Lập trình tính toán
3.1 Các khái niệm cơ bản
Biến trong Maple
Biến trong Maple là những tên được dùng để thay thế cho
một đối tượng nào đó, thông thường là các giá trị cần thay đổi, hoặc các biểu thức tính toán cần cho giá trị Có hai
loại biến trong Maple: Biến lập trình và biến toán học.
Biến lập trình là những biến có thể gán bởi một giá trị nào
đó và giá trị đó được lưu trữ cho đến tận lúc nó thực sự bị thay đổi.
Một biến toán học thể hiện cho ẩn số trong toán học,
không thể gán giá trị, không thể dùng nó như là một biến lập trình.
Trang 1025 Lập trình tính toán
3.1 Các khái niệm cơ bản
Biến trong Maple
Trang 1047 Lập trình tính toán
3.1 Các khái niệm cơ bản
Sự định giá
Ví dụ:
>i:=5;
sum(i 2 , i=1 4);
Trang 1058 Lập trình tính toán
3.1 Các khái niệm cơ bản
Trang 1069 Lập trình tính toán
3.2 Các hàm thường dùng trong Maple
-Tìm giá trị lớn nhất, nhỏ nhất: max, min
(Tham khảo thêm trong sách)
Trang 10710 Lập trình tính toán
3.3 Cách tạo lập hàm trong Maple
Sử dụng chu trình proc( )… end
Trang 10811 Lập trình tính toán
3.3 Cách tạo lập hàm trong Maple
Sử dụng chu trình proc( )… end
Parameter_sequence:
– Một dãy các kí hiệu ngăn cách bởi dấu phẩy.
– Tên các tham biến truyền cho chương trình.
Trang 10912 Lập trình tính toán
3.3 Cách tạo lập hàm trong Maple
Sử dụng chu trình proc( )… end
Trang 11013 Lập trình tính toán
3.3 Cách tạo lập hàm trong Maple
Sử dụng chu trình proc( )… end
Trang 11114 Lập trình tính toán
3.3 Cách tạo lập hàm trong Maple
Sử dụng chu trình proc( )… end
Global_sequence:
– Là một dãy gồm các biến toàn cục.
– Các biến toàn cục có thể sử dụng bên ngoài thủ
tục.
Trang 11215 Lập trình tính toán
3.3 Cách tạo lập hàm trong Maple
Sử dụng chu trình proc( )… end
myProc(); #goi thu tuc myProc
printf("Gia tri cua a ben ngoai myProc: %d", a);
Trang 11316 Lập trình tính toán
3.4 Các cấu trúc dữ liệu cơ bản
Dãy
- Là một nhóm các đối tượng được sắp xếp theo thứ
tự và ngăn cách nhau bởi dấu phẩy.
- Dãy có thể được gán cho 1 biến.
VD: x:=a, b, c, d.
- Kí hiệu NULL dùng để thay thế cho một dãy trống.
Trang 11417 Lập trình tính toán
3.4 Các cấu trúc dữ liệu cơ bản
Trang 11518 Lập trình tính toán
3.4 Các cấu trúc dữ liệu cơ bản
– Expression có thể là một tập hợp,danh sách hoặc một biểu thức dạng tổng tích.
Trang 11619 Lập trình tính toán
3.4 Các cấu trúc dữ liệu cơ bản
3 n + − 2 n + 6 n 6
Trang 11720 Lập trình tính toán
3.4 Các cấu trúc dữ liệu cơ bản
2 2 4 2 7 2 9
⎜ ⎟ ⎜ ⎟
⎝ ⎠ ⎝ ⎠
Trang 11821 Lập trình tính toán
3.4 Các cấu trúc dữ liệu cơ bản
Trang 11922 Lập trình tính toán
3.4 Các cấu trúc dữ liệu cơ bản
Tập hợp
Ví dụ:
>set3:=set1 union set2; set3:={x,y,z,a,b};
>set5:= set1 intersect set2; set5:={x,z}
Trang 12023 Lập trình tính toán
3.4 Các cấu trúc dữ liệu cơ bản
> x:= [a,b],[c,d] #dãy gồm 2 list
> x:=(a,b),(c,d) #dãy a,b,c,d
Trang 12124 Lập trình tính toán
3.4 Các cấu trúc dữ liệu cơ bản
Danh sách
Có thể dùng lệnh op để truy cập phần tử trong danh
sách.
Hoặc dùng listname[index] Với cách này ta có thể
thay đổi phần tử của danh sách.
Trang 12225 Lập trình tính toán
3.4 Các cấu trúc dữ liệu cơ bản
Trang 12326 Lập trình tính toán
3.4 Các cấu trúc dữ liệu cơ bản
Trang 12427 Lập trình tính toán
3.4 Các cấu trúc dữ liệu cơ bản
Trang 12528 Lập trình tính toán
Trong khi điều_kiện đúng, thực thi công việc.
Dùng các câu lệnh như RETURN, break, quit để thoát ra giữa vòng lặp.
Phải là kiểu Boolean
Trang 12629 Lập trình tính toán
r := x mod y
x:=y y:=r
In ra x
Trang 12730 Lập trình tính toán
Trang 12831 Lập trình tính toán
n:=n+1:
od:
seq(F(k),k=10 20);
Trang 13033 Lập trình tính toán
Trang 13134 Lập trình tính toán
Trang 13235 Lập trình tính toán
Trang 133tam:=a[i]; a[i]:=a[j]; a[j]:=tam;
fi; od; od;