intTypePromotion=3

Phần mền Toán Học

Chia sẻ: Nguyen Minh Phung | Ngày: | Loại File: PDF | Số trang:43

0
207
lượt xem
92
download

Phần mền Toán Học

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Maple là một phần mềm Toán học do Đại Học Tổng Hợp Waterloo(Canada) xây dựng và đưa vào sử dụng năm 1985. Sau nhiều lần cải tiến và phát triển qua nhiều phiên bản khác nhau và ngày càng được hoàn thiện, hiện nay đó cú Maple 11.

Chủ đề:
Lưu

Nội dung Text: Phần mền Toán Học

  1. TRÖÔØNG ÑAÏI HOÏC ÑAØ LAÏT KHOA TOAÙN - TIN HOÏC VOÕ TIEÁN GIÔÙI THIEÄU PHAÀN MEÀM TOAÙN HOÏC (Baøi Giaûng Toùm Taét) -- Löu haønh noäi boä -- Ñaø Laït 2008
  2. MỤC LỤC NỘI DUNG TRANG 2 Chương I : Các tính toán cơ bản A. Số học 2 I. Giới thiệu 2 II. Tính toán số học thông dụng 3 B. Đại số 8 C. Vẽ đồ thị 11 16 Chương 2: Phép tính vi- tích phân 1. Tính giới hạn 16 2. Tính đạo hàm 16 3. Tính tích phân 18 4. Một số ứng dụng 19 26 Chương 3: Đại số tuyến tính và hình học giải tích A. Hình học giải tích 26 1. Các tính toán trong hình học phẳng 26 2. Các tính toán trong hình học không gian 33 B. Đại số tuyến tính 36 1.Tạo Vector, matrận 36 2. Thao tác trên ma trận 37 3. các phép toán trên ma trận 37 4. Tìm cơ sở 37 5. Một số toán tử 38 6. Đa thức đặc trưng 38 7. Hệ phương trình tuyến tính 38 8. Một số ma trận đặc biệt 38 40 Chương 4: Phương trình vi phân 1. Ký hiệu 40 2. Giải phương trình, hệ phương trình vi phân 40 3.Thừa số tích phân 40 4.Phân loại 40 5.Vẽ đồ thị nghiệm 40 6. Phương trình đạo hàm riêng 41 Tài liệu tham khảo 42
  3. 2 CHƯƠNG 1. CÁC TÍNH TOÁN CƠ BẢN A. SỐ HỌC: I. GIỚI THIỆU VỀ MAPLE • Maple là một phần mềm Toán học do Đại Học Tổng Hợp Waterloo(Canada) xây dựng và đưa vào sử dụng năm 1985. Sau nhiều lần cải tiến và phát triển qua nhiều phiên bản khác nhau và ngày càng được hoàn thiện, hiện nay đã có Maple 11. • 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. + 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 plots), hình học giải tích (gói geometry), đại số tuyến tính (gói linalg), GiảI tích (gói student), phương trình vi phân(gói DEtools), lý thuyết số(gói numtheory), Dữ liệu rời rạc(gói DiscreteTransforms),... + Thiết kế các đối tượng 3 chiều. + Và các vấn đề khác,… • Lệnh của Maple : phải kết thúc bằng ; hay : và enter. Chú ý nhóm lệnh: SHIFT+ENTER Tính toán các số lớn, các biểu thức cần độ chính xác cao > 100!; > 2^64; > evalf(Pi,500); Vẽ đồ thị các hàm số > with(plots); Warning, the name arrow has been redefined [ animate , animate3d , animatecurve , arrow , changecoords , complexplot , complexplot3d , conformal , conformal3d , contourplot , contourplot3d , coordplot , coordplot3d , cylinderplot , densityplot , display , display3d , fieldplot , fieldplot3d , gradplot , gradplot3d , implicitplot , implicitplot3d , inequal , listcontplot , listcontplot3d , listdensityplot , listplot , listplot3d , loglogplot , logplot , matrixplot , odeplot , pareto , pointplot , pointplot3d , polarplot , polygonplot , polygonplot3d , polyhedra_supported , polyhedraplot , replot , rootlocus , semilogplot , setoptions , setoptions3d , spacecurve , sparsematrixplot , sphereplot , surfdata , textplot , textplot3d , tubeplot ] > plot(x^3+4*x^2-1,x=-10..5,y=-10..15,thickness=2,numpoints=1000); Và : > with(plottools); Warning, the name arrow has been redefined
  4. 3 [ arc , arrow , circle , cone , cuboid , curve , cutin , cutout , cylinder , disk , dodecahedron , ellipse , ellipticArc , hemisphere , hexahedron , homothety , hyperbola , icosahedron , line , octahedron , pieslice , point , polygon , project , rectangle , reflect , rotate , scale , semitorus , sphere , stellate , tetrahedron , torus , transform , translate , vrml ] > c := circle([1,1], 1, color=red): > plots[display](c); > with(plottools): > c := disk([1,1], 5, color=red): > plots[display](c); Tính đạo hàm, tích phân các hàm số > with(student); [ D, Diff , Doubleint , Int, Limit , Lineint , Product , Sum, Tripleint , changevar , completesquare , distance , equate , integrand , intercept , intparts , leftbox , leftsum , makeproc , middlebox , middlesum , midpoint , powsubs, rightbox , rightsum , showtangent , simpson, slope , summand, trapezoid ] > diff(sin(2*x^2-1),x): > int(sin(x)*cos(x)^2,x); Thiết kế đối tượng 3 chiều: >tubeplot([10*cos(t),10*sin(t),0,t=0..2*Pi,radius=2*cos(7*t),numpoints=120,tubepoin ts=24],scaling=CONSTRAINED); >tubeplot({[10*cos(t),10*sin(t),0,t=0..2*Pi,radius=2*cos(7*t),numpoints=120,tubepoi nts=24],[0,10+5*cos(t),5*sin(t),t=0..2*Pi,radius=1.5,numpoints=50,tubepoints=18]}, scaling=CONSTRAINED); Chú ý : + Bắt đầu một tính toán mới dùng : restart; để xóa các dữ liệu cũ. + Mở gói : with(têngói); Đóng 1gói : unwith(têngói ); + Hiển thị các gói đang mở : packages(); II. TÍNH TOÁN SỐ HỌC THÔNG DỤNG 1. Tính toán số học thông dụng: • Các phép toán số học: +, -, *, /, ^ hay ** • Các phép toán logic : not, and, or, implies, xor và các hằng: true, false, FAIL. • Các phép toán so sánh : =, =, và Chú ý : Các ký hiệu : %, %%, %%% • Một số hàm thư viện : - abs(x) - Gía trị tuyệt đối. - binomial(n, r) - Tổ hợp
  5. 4 - trunc(x) : số nguyên lớn nhất, nhỏ hơn hoặc bằng x nếu >= 0, trunc(x)=-trunc(-x)với x
  6. 5 - Các hàm lượng giác và hyperbolic lượng giác: sin, cos, tan, sec,csc, cot, sinh, cosh, tanh, sech, csch, coth - Hàm lượng giác ngược và hyperbolic lượng giác ngược: arcsin, arccos, arctan, arcsec, arccsc, arccot, arcsinh, arccosh, arctanh, arcsech, arccsch, arccoth Ví dụ : > (-10+5^2)*(4-sqrt(36)); > 7!!; > cot(Pi/4); 2. Tính toán với độ chính xác theo yêu cầu • Hàm 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ố. Ta có thể thay mặc định bằng Digits=n; - 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ố. > sqrt(2)/surd(5,3); > evalf(%); > evalf(Pi,500); > evalf(exp(1),100); 3. Các thao tác với số nguyên tố - Phân tích một số n thành thừa số nguyên tố: hàm ifactor(n); - Kiểm tra một số n có phải là số nguyên tố không?: hàm isprime(n); - Tìm số nguyên tố đứng sau một số n cho trước: hàm nextprime(n); - Tìm số nguyên tố đứng trước một số n cho trước: hàm prevprime(n); - Tìm ước số chung lớn nhất của 2 số nguyên dương a, b: hàm igcd(a,b); - Tìm bội số chung nhỏ nhất của 2 số nguyên dương a, b: hàm ilcm(a,b); - Tìm số dư khi chia a cho b: hàm irem(a,b); - Tìm thương nguyên khi chia a cho b: hàm iquo(a,b); > isprime(2^64-1); > ifactor(122333444455555666666777777788888888999999999); > igcd(157940,78864); > ilcm(12,15); > prevprime(1234567); > nextprime(1234567); > nextprime(%); > irem(145,7); > iquo(145,7); > y:=irem(145,7,'x'); >x; 4. Giải phương trình nghiệm nguyên • Lệnh isolve:
  7. 6 - 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({x^2+y^2=50,x+y=8},(x,y}); > isolve(x^2+y^2=5,{x,y}); • Giải PT hay hệ PT theo modulo : msolve(eqns,vars,m); hay msolve(eqns,m); Ví dụ : > msolve({3*x-4*y=1,7*x+y=2},19); > msolve(8^j=2,x,17); • Tính toán theo modulo : e mod m tương đương `mod`(e, m) modp(e, m) :∈ [0,abs(m)-1] mods(e, m) : ∈[-iquo(abs(m)-1,2), iquo(abs(m),2)] Ví dụ : > modp(12,7); cho 5 > 12 mod 7; cho 5 > mods(12,7); cho -2 5. Giải công thức truy hồi(đệ qui): • Lệnh rsolve: - Cú pháp: rsolve(pt/he_pt_truy_hoi, ten_day_so); > rsolve({f(n)=f(n-1)+f(n-2),f(0)=1,f(1)=1},f(n)); > rsolve({f(n)=2*f(n-1)},f(n)); > rsolve({g(n)=3*g(n/2)+5*n},g); > rsolve(f(n)-f(n-1)=n^3,f); > simplify(%); > eqn:=f(n)=f(n-1)+4*n: > rsolve(eqn,f); > simplify(%); > A:=rsolve({f(n)=f(n-1)+f(n-2),f(0)=1,f(1)=1},f(k)); > h:=unapply(A,k); > h(5); > eval(A,k=5); subs(k=5,A); 6. Khái niệm biến số, hằng số - Trong Maple, biến số không cần khai báo, định nghĩa trước, dùng lúc nào khai báo lúc đó, Maple nhớ và ghi lại trong quá trình làm việ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ố. Bắt đầu bằng ký tự chữ. + 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: D, sin, cos, ln, min, max, for,if, while, I, Pi, ... - 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'; > isolve({x+y=36,2*x+4*y=100}): > x:=2;
  8. 7 > isolve({x+y=36,2*x+4*y=100}): > x:='x'; > isolve({x+y=36,2*x+4*y=100}); • Hằng : I, Pi , exp(1), infinity, true, false, FAIL. Chú ý : 1/ > 2e-3; cho .002 > -2.3e4; cho -23000 Và .2 , 2. là 0.2 , 2..0 2/ Dùng cặp ` ` để đặt tên "sai" . VD : `day la ten ` 3/ Để biến trở lại tên ta dùng : unassign('name1', 'name2', ...); assign(a, B); hay assign(a = B); cho a := B; assign(A, B) ; A, B là các đối tượng,v d: > assign(('a', 'b') = (3, 4)); assigned(n); kiểm tra n đã gán trị chưa. 7. Tính tổng và tích • Tính tổng: sum (tính trực tiếp ra kết quả) ; hoặc Sum(biểu diễn dạng công thức); Cú pháp: sum(bieu_thuc_trong_tong, bien =gia_tri_dau .. gia_tri_cuoi); Sum(bieu_thuc_trong_tong, bien =gia_tri_dau .. gia_tri_cuoi); Hay add(bt, i=m..n); • Tính tích: product (tính trực tiếp ra kết quả); hoặc Product (biểu diễn dạng công thức); Cú pháp: product(bieu_thuc_trong_tong, bien =gia_tri_dau .. gia_tri_cuoi); Product(bieu_thuc_trong_tong, bien =gia_tri_dau .. gia_tri_cuoi); Hay mul(bt, i=m..n); Chú ý: giá trị vô cùng được biểu diễn bằng từ khóa infinity > Sum(x^2,x=1..5); > value(%); > sum(x^2,x=1..5); > Sum(1/(x^2),x=1..infinity); > value(%); > Product((i^2+3*i-11)/(i+3),i=0..10); > value(%); > product((i^2+3*i-11)/(i+3),i=0..10); >Sum( 2^(2*k)/Pi^(1/2),k=0..infinity) =sum(2^(2*k)/Pi^(1/2),k=0..infinity); Chú ý : > sum(i^2,i); tương đương > sum(k^2,k=1..i-1); 8. Tập hợp, dãy, danh sách. • Tập hợp : dùng {}, các phép toán : member, union, intersect, minus, subset. Ví dụ : > {a,b} union {b,c}; > {a,b} intersect {b,c}; > {a,b} minus {b,c}; • Dãy : seq(bt, i=1..n); seq(f, i = x) hay bt$i=1..n; > seq( sin(Pi*i/6), i=0..6 );
  9. 8 11 1 1 0, , 3 , 1, 3, , 0 22 2 2 > Y := [seq( i^2, i=X )]; Y := [ 0, 1, 4, 9, 16, 25, 36 ] > [seq( [X[i],Y[i]], i=1..nops(X) )]; [ [ 0, 0 ], [ 1, 1 ], [ 2, 4 ], [ 3, 9 ], [ 4, 16 ], [ 5, 25 ], [ 6, 36 ] ] • Danh sách : Dùng [ ], các phép toán : nops(L), op(i,L) chú ý :op(L) cho dãy. op(L1,L2); L1,L2 là các danh sách Ví dụ : > u := [1,4,9]; > op(2..3,u); cho 4,9 > op(-1,u); cho 9 > [op(u),16]; > w := f(g(a,b),h(c,d,e,j,k,l)); > op(1,op(2,w)); c > op([2,1],w); c > op([2,2..4],w); d, e , j > op([-1,-1],w); l Lệnh zip(f, u, v); zip(f, u, v, d); thực hiện phép toán f trên 2 danh sách u,v. Với d là giá trị mặc nhiên cho dữ liệu danh sách ngắn hơn. Chú ý: select(f, e, b1, ..., bn); chọn dữ liệu từ biểu thức remove(f, e, b1, ..., bn); di chuyển dữ liệu từ biểu thức selectremove(f, e, b1, ..., bn): chọn và di chuyển dữ liệu từ biểu thức f : biểu thức logic; e: biểu thức bất kỳ, b1,..,bn : các tùy chọn Ví dụ : > integers := [$10..20]; integers := [ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 ] > select(isprime, integers); cho [ 11, 13, 17, 19 ] > remove(isprime, integers); cho [ 10, 12, 14, 15, 16, 18, 20 ] > selectremove(isprime, integers); cho [ 11, 13, 17, 19 ], [ 10, 12, 14, 15, 16, 18, 20 ] B. ĐẠI SỐ : 1. Khai triển, đơn giản và phân tích biểu thức đại số • Định giá biểu thức : value(%); • Khai triển biểu thức đại số - Cú pháp: expand(bieu_thuc_dai_so); > expand(bt); > bt:=(x+y)^15;
  10. 9 > expand(bt); • Phân tích đa thức thành nhân tử Cú pháp: factor(bieu_thuc_dai_so); > factor(x^4-10*x^3+35*x^2-50*x+24); • Đơn giản biểu thức đại số Cú pháp: simplify(bieu_thuc_dai_so); > P:=1/(a*(a-b)*(a-c))+1/(b*(b-a)*(b-c))+1/(c*(c-b)*(c-a)); > simplify(P); > bt:=cos(x)^5+sin(x)^4+2*cos(x)^2-2*sin(x)^2-cos(2*x); > simplify(bt); • Tối giản phân thức Cú pháp: normal(phan_thuc); chú ý : radnormal(btchuacan); > tu := x^3-y^3; > mau := x^2+x-y-y^2; > phanthuc := tu/mau; > normal(phanthuc); Chú ý : numer(PT); denom(PT); • 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; bt := x2-1 > subs(x=2,bt); cho 3 > subs( {x=y, y=x}, [x,y] ); Chú ý : eval(BT,x=a);# Tính toán biểu thức khi x=a hay Eval(bt,x=a); > poly := x*y+3*z+2; poly := x y + 3 z + 2 > eval(poly,[x=2,y=3,z=t]); 8+3t > expr := sin(x)/cos(x); sin( x ) expr := cos( x ) > subs(x=0,expr); sin( 0 ) cos( 0 ) > eval(expr,x=0); 0 • Chuyển đổi dạng biểu thức Cú pháp: convert(bieu_thuc, kieu_chuyen_doi); Một số kiểu chuyển đổi: abs,algebraic, and, array, base, binary, binomial, boolean_function, boolean_operator, bytes, Chebyshev, compose, confrac, D, decimal, degrees, diff, dimensions, elementary, exp, expln, expsincos, factorial, float, fullparfrac, hex, hexadecimal,Int, int, list, listlist,ln, Matrix,matrix,metric, name,octal, or, parfrac,
  11. 10 piecewise, polar, polynom,power, radians,radical, rational, ratpoly, RealRange, set, signum ,sincos, sqrfree,string, Sum,sum,surd, symbol, tan, trig, trigh, truefalse,Vector, vector, xor,`*`, `+` > bt:=(a*x^2+b)/(x*(-3*x^2-x+4)): > convert(bt,parfrac,x): > bt:=(x^2-1)/(x+2); > convert(bt,parfrac); • Chuyển đổi và rút gọn : combine(f); hay combine(f,tên); • Khử căn ở mẫu : radsimp(bt,ratdenom); 2. Định nghĩa hàm số • Cách 1: sử dụng toán tử -> Cú pháp: ten_ham := bien -> bieu_thuc_ham_so; > f := x->x^2+1/2: > f(a+b): • Cách 2: sử dụng lệnh unapply Cú pháp: ten_ham := unapply(bieu_thuc, bien); > g:=unapply(x^3+2,x); > g(4); • Định nghĩa hàm từng khúc Cú pháp: ten_ham := bien -> piecewise(đk_1, bt_1, đk_2, bt_2, ..., đk_n, bt_n); Ý nghĩa: nếu đk_i đúng thì hàm nhận giá trị là bt_i > f:=x->piecewise(x (sin@@2)(Pi/2); tương dương sin(sin(Pi/2)); > (sin@@(-1))(Pi/2); cho arcsin(Pi/2) 3. Giải (bất) phương trình, hệ (bất) phương trình • Sử dụng một lệnh chung duy nhất: lệnh solve - Cú pháp: solve(phuong_trinh , {bien_1, bien_2, ...}); solve ({pt_1, pt_2, ...}, {bien_1, bien_2, ...}); solve(bat_phuong_trinh , {bien_1, bien_2, ...}); solve ({bpt_1, bpt_2, ...}, {bien_1, bien_2, ...}); > pt:=x^3-a*x^2/2+13*x^2/3=13*a*x/6+10*x/3-5*a/3: > solve(pt,{x}): > pt1:=abs((z+abs(z+2))^2-1)^2=9: > solve(pt1,{z}): > pt2:=(cos(x)-tan(x)=0): > solve(pt2,{x}): > pt3:=x^4-x^3+x^2-x+1: > solve(pt3,{x}): > hpt1:={x+y=36, x*4+y*2 = 100}: > solve({x+y=36, x*4+y*2 = 100},{x,y}): > solve((x-1)*(x-2)*(x-3) < 0, {x}): > solve((x-1+a)*(x-2+a)*(x-3+a) < 0, {x}):
  12. 11 • Giải gần đúng : fsolve( eqns, vars, options ); Trong đó : options: avoid=s : tránh các nghiệm s dạng {var = value}. complex : Tìm nghiệm gần đúng trên trường C. fulldigits : mọi tính toán xấp xỉ trong fsolve dùng nhiều hơn kí số thập phân của Digits maxsols=n : tìm ít nhất n nghiệm của đa thức Tìm nghiệm trên khoảng a..b hay x = a..b hay {x=a..b, y=c..d, ...}. Chú ý : lhs(expr); rhs(expr); isolate(eqn, expr); Ví dụ : > isolate(x^2-3*x-5,x^2); x2 = 3 x + 5 • Tính toán số phức: đơn vị ảo I, dùng các phép tính số học bình thường, Tính toán tổng quát dùng: evalc(bt); Phần ảo: Im(bt); phần thực :Re(bt); Số phức liên hợp : conjugate(x); Tính modun : abs(sphức); Tính argument: argument(x); Chuyển số phức sang tọa độ cực :convert(Sphức,polar); Ví dụ: > abs(1+2*I); > argument(abs(z)*exp(I*2*Pi/3)); • Giả thiết : assume(x1, prop1, x2, prop2, ...); assume(x1::prop1, x2::prop2, ...); expr assuming property; expr assuming x1::prop1, x2::prop2, ... Ví dụ : >assume(a>0, a e1 := ln(exp(-k[1]*t)); ( −k t ) 1 e1 := ln( e ) > e1 assuming real; −k 1 t > assume(x::real); > about(x); Originally x, renamed x~: is assumed to be: real 4. Đa thức : • Sắp xếp hệ số theo lũy thừa : collect(a, x); collect(a, x, form, func); • Tìm bậc đa thức : degree(P,x); • Tìm hệ số: coeff(P,x,n); • Dư : rem(a, b, x); hay rem(a, b, x, 'q'); • Thương : quo(a, b, x); hay quo(a, b, x, 'r');
  13. 12 C. VẼ ĐỒ THỊ: 1. Khởi tạo các hàm vẽ đồ thị > with(plots): Warning, the previous binding of the name arrow has been removed and it now has an assigned value > with(plottools): 2. Vẽ đồ thị trong không gian 2 chiều Oxy • Vẽ đồ thị hàm thông thường: Cú pháp: plot(ham_can_ve, x=gt_dau..gt_cuoi, y=gt_dau..gt_cuoi, cac_tuy_chon); Một số tùy chọn thông dụng: - Đặt màu cho đồ thị: color = - Đặt độ dày k cho đồ thị: thickness = k - Đặt số điểm vẽ cho đồ thị: numpoints = k; > plot(x^3-3*x^2+1,x=-5..5,y=-5..5): > f:=x->abs(x^3-x^2-2*x)/3-abs(x+1): > plot(f(x),x=-5..5,y=-5..5): • Vẽ nhiều đồ thị trên cùng một hệ trục Cú pháp: plot([ham_1, ham_2,...], x=gt_dau..gt_cuoi, y=gt_dau..gt_cuoi, cac_tuy_chon); > plot([x^2,sin(x)],x=-2..2,color=[red,green]): > with(plots): >polarplot(1); > polarplot([cos(t),sin(t),t=0..4*Pi],color=gold);
  14. 13 >polarplot({t,[2*cos(t),sin(t),t=-Pi..Pi]},t=-Pi..Pi,numpoints=50); > # Vẽ lá Maple > S := t->100/(100+(t-Pi/2)^8): R := t -> S(t)*(2-sin(7*t)-cos(30*t)/2): > polarplot([R,t->t,-Pi/2..3/2*Pi],numpoints=2000,axes=NONE);
  15. 14 • Vẽ đồ thị của hàm số không liên tục Khi vẽ đồ thị của một hoặc nhiều hàm số có điểm gián đoạn, ta phải thêm tùy chọn discont =true để đồ thị được vẽ chính xác hơn > g:=x->(x^2-1)/(x-2): > plot(g(x),x=-10..10,y=-5..15,discont=true,color=blue): • Vẽ đồ thị hàm ẩn Có những hàm số mà chúng ta không có được công thức tường minh y=f(x), khi đó để vẽ được đồ thị của chúng, ta sẽ dùng hàm implicitplot Cú pháp: implicitplot([bt_1, bt_2,...], x=gt_dau..gt_cuoi, y=gt_dau..gt_cuoi, cac_tuy_chon); > implicitplot(x^2/9+y^2/4=1,x=-4..4,y=-2..2); > implicitplot(x^2-y^2-x^4=0,x=-1..1,y=-1..1); • Ứng dụng: vẽ đồ thị của hàm hữu tỷ > f:=x->(x^2-1)/(x-2); > bt:=convert(f(x),parfrac); > tcx:= unapply(quo(numer(f(x)),denom(f(x)),x),x); > g1:=plot([f(x),tcx(x)],x=-10..10,y=-5..15,color=[blue,red],discont=true); > g2:=implicitplot(x=2,x=-10..10,y=-5..15,color=green);
  16. 15 > display({g1,g2}); • Vẽ từng điểm : plot([x(t),y(t),t=a..b]); • Vẽ trong tọa độ cực : polarplot(L,options); Ví dụ :> polarplot(2*sin(x),x=-Pi..Pi); > polarplot([cos(t),sin(t),t=0..4*Pi],color=gold); >polarplot({t,[2*cos(t),sin(t),t=-Pi..Pi]},t=-Pi..Pi, numpoints=50); hoặc plot([r(t),theta(t),t=range of t ],h,v,coords=polar) Ví dụ : > plot(sin(x),x=0..2*Pi, coords=polar); > plot(sin,0..2*Pi, coords=bipolar); > P:=polarplot([2*sin(3*t),2*sin(3*t+Pi)],t=0..2*Pi): > display(P); 3. Vẽ đồ thị trong không gian 3 chiều Oxyz • Vẽ đồ thị hàm thông thường Cú pháp: plot3d(expr1, x=a..b, y=c..d); plot3d(f, a..b, c..d); plot3d([exprf,exprg,exprh], s=a..b, t=c..d); plot3d([f,g,h], a..b, c..d); > plot3d(x*exp(x^2),x=-2..2,y=-2..2,title="Do thi trong khong gian 3 chieu"): > plot3d(-exp(-abs(x*y)/10)*sin(x+y)-cos(x*y),x=-Pi..Pi,y=-Pi..Pi,grid=[51,51]): • Vẽ đồ thị hàm ẩn Cú pháp: implicitplot3d(ham_can_ve, x=gt_dau..gt_cuoi, y=gt_dau..gt_cuoi,z=gt_dau..gt_cuoi, cac_tuy_chon); > implicitplot3d(x^2+y^2/4+z^2/9=1,x=-3..3,y=-3..3,z=-3..3): 4. Sự vận động của đồ thị Cú pháp: animate(ham_co_tham_so,x=gt_dau..gt_cuoi, tham_so = gt_dau..gt_cuoi); animate3d(ham_co_tham_so,x=gt_dau..gt_cuoi, y=gt_dau..gt_cuoi, tham_so =gt_dau..gt_cuoi); Ý nghĩa: hiển thị sự biến đổi, vận động của đồ thị khi tham số thay đổi trong khoảng cho trước > animate3d(cos(t*x)*sin(t*y),x=-Pi..Pi,y=-Pi..Pi,t=1..5): > animate(t*x^2,x=-3..3,t=-5..5):
  17. 16 CHƯƠNG 2. PHÉP TÍNH VI-TÍCH PHÂN with(student); 1. Tính giới hạn • Giới hạn, liên tục: Cú pháp: limit(ham_so,x=a); Limit(ham_so,x=a); value(%); Ý nghĩa: tính giới hạn của ham_so khi x tiến đến a. Kết quả được thể hiện dưới dạng công thức(lệnh Limit) hoặc kết quả cụ thể (lệnh limit) > f:=x->((sin(2*x))^2-sin(x)*sin(4*x))/x^4: > Limit(f(x),x=0); > value(%); > limit(f(x),x=0); Chú ý: muốn tính giới hạn của hàm số khi x tiến đến vô cực, ta chỉ việc thay a bằng từ khóa infinity. • Giới hạn kép : Limit(f,{x=a,y=b}); hay limit(f,{x=a,y=b}); > g := x->(2*x+3)/(7*x+5): > Limit(g(x),x=infinity): > value(%): > limit(g(x),x=infinity): Chú ý: muốn tính giới hạn của hàm số khi x tiến đến a từ bên trái hay bên phải, ta thêm vào một trong hai tùy chọn left hoặc right. > h := x->tan(x+Pi/2): > Limit(h(x),x=0,left)= value(%); > Limit(h(x),x=0,right)=limit(h(x),x=0,right); • Liên tục : + Kiểm tra hàm liên tục: iscont(expr, x = a .. b); iscont(expr, x = a .. b, 'closed'); iscont(expr, x = a .. b, 'open'); +Tìm điểm gián đoạn : discont(f, x ); Ví dụ : > discont(1/(sin(x)-1/2),x); 1 2 { π + π _B1~ + 2 π _Z3~ } 6 3 2. Tính đạo hàm • Tính đạo hàm cấp 1 Cú pháp: diff(ham_so, bien); Diff(ham_so, bien); value(%); Ý nghĩa: tính đạo hàm cấp 1 của ham_so theo bien. Kết quả được thể hiện dưới dạng công thức(lệnh Diff) hoặc kết quả cụ thể (lệnh diff) > f := x->x^2*sqrt(x^2+1): > Diff(f(x),x)= diff(f(x),x); > simplify(%);
  18. 17 • Tính đạo hàm cấp cao Cú pháp: diff(ham_so, bien, bien, bien, ...); Diff(ham_so, bien, bien, bien, ...); hoặc diff(ham_so, bien$k); Diff(ham_so, bien$k); Ý nghĩa: tính đạo hàm cấp k của ham_so theo bien. Kết quả được thể hiện dưới dạng công thức (lệnh Diff) hoặc kết quả cụ thể (lệnh diff) > g := x->5*x^3-3*x^2-2*x^(-3): > diff(g(x),x,x); > h := x -> x^4 + x*sin(x): > diff(h(x),x$2); >simplify(%); • Toán tử đạo hàm : D(f); D[i](f); D[i](f)(x); Cấp n : (D@@n)(f); Ví dụ: F:=n->diff(ln(x),x$n); F(100); • Đạo hàm hàm ẩn: implicitdiff(f, y, x); implicitdiff(f, y, x1,...,xk) implicitdiff({f1,...,fm}, {y1,...,yn}, u, x); implicitdiff({f1,...,fm}, {y1,...,yn}, u, x1,...,xk ); implicitdiff({f1,...,fm}, {y1,...,yn}, {u1,...,ur}, x); implicitdiff({f1,...,fm}, {y1,...,yn}, {u1,...,ur}, x1,...,xk); Ví dụ : > f := x^2+y^3=1; 2x − 3 y2 > implicitdiff(f,x,y); 3 y2 − 2x > implicitdiff(f,y,z); 0 > implicitdiff(f,y(x),x); 2x − 3 y2 > f := y^2-2*x*z = 1; f := y 2 − 2 x z = 1 > g := x^2-exp(x*z) = y; (x z) g := x 2 − e =y > implicitdiff({f,g},{y,z},y,x); x 2 (x z) +1 ye > implicitdiff({f,g},{y,z},{y,z},x);
  19. 18 (x z) ⎧ z−z⎫ 2yx−ye x ⎪ D( y ) = 2 ⎪ , D( z ) = ⎪ ⎪ ⎨ ⎬ ⎪ + 1) ⎪ (x z) (x z) +1 ye x (y e ⎩ ⎭ > implicitdiff({f,g},{y(x),z(x)},{y,z},x,notation=Diff); (x z) ⎧∂ z−z⎫ ∂ 2yx−ye x ⎪ y=2 ⎪ , z= ⎪ ∂x ⎪ ⎨ ⎬ ∂x ⎪ + 1) ⎪ (x z) (x z) +1 ye x (y e ⎩ ⎭ 2. Tính tích phân • Tính tích phân bất định Cú pháp: int(ham_so, bien); Int(ham_so, bien); value(%); Ý nghĩa: tính tích phân của ham_so theo bien. Kết quả được thể hiện dưới dạng công thức (lệnh Diff) hoặc kết quả cụ thể (lệnh diff) > h := x->(3*x^2+3*x+3)/(x^3-3*x+2): > t:=x->int(h(x),x): > t(x); • Tính tích phân xác định Cú pháp: int(ham_so, bien=a..b); Int(ham_so, bien=a..b); value(%); Ý nghĩa: tính tích phân của ham_so với bien đi từ a đến b. Kết quả được thể hiện dưới dạng công thức (lệnh Diff) hoặc kết quả cụ thể (lệnh diff) > f := x->1/(exp(x)+5): > Int(f(x),x=0..ln(2)) = value(%); > evalf(%): > g := x->cos(x)^2*cos(4*x): > int(g(x),x=0..Pi/2); Chú ý: ta có thể tính tích phân mở rộng khi a hay b có thể là vô cực (infinity) > t := x->x/(x^4+1); > int(t(x),x=0..infinity); • Tính tích phân 2 lớp : Doubleint(g, x, y); Doubleint(g, x, y, Domain); Doubleint(g, x = a..b , y = c..d); Ví dụ : > with (student): > Doubleint(g(x),x,y); > Doubleint(h*g,x=1..n,y=2..4); > Doubleint(h*g,x,y,C); • Tính tích phân 3 lớp : Tripleint(g, x, y, z); Tripleint(g, x, y, z, Domain); Tripleint(g, x = a..b, z = e..f, y = c..d); VD: > with (student):
  20. 19 > Tripleint(g(x,y,z),x,y,z); > Tripleint(h*g,x=1..n,y=2..4,z=a..b); > Tripleint(h*g,x,y,z,C); • Các phương pháp tích phân : + Công thức Newton-Leibniz: >f:=x->bt; >I1:=int(f(x),x); >F:=makeproc(I1,x); >T:=F(b)-F(a); + Đổi biến : changevar(s, f); changevar(s, f, u); changevar(t, g, v); Trong đó : s – dạng h(x) = g(u), f - Int(F(x), x = a...b), u – biến mới. Ví dụ : > changevar(cos(x)+1=u, Int((cos(x)+1)^3*sin(x), x), u); + Từng phần: intparts(f, u); f - Int(u*dv, x) u –thừa số tích phân sẽ được lấy vi phân 4. Một số ứng dụng • Bài toán tính diện tích hình thang cong Bài 1. Tính diện tích hình thang cong giới hạn bởi hàm số f(x)=3*x-x^3 , trục Ox và hai đường thẳng x=0, x=1.Ta dùng int(abs(f(x)),x=a..b); > restart: > with(plots): Warning, the name changecoords has been redefined > with(plottools): Warning, the assigned name arrow now has a global binding > f := x->3*x-x^2; > g1:=plot(f(x),x=0..3,y=0..3,filled = true); > g2:=implicitplot(x=3,x=0..4,y=0..3,color=blue); > display({g1,g2}); > int(abs(f(x)),x=0..3); Bài 2. Tính diện tích hình phẳng giới hạn bởi hai đường cong f(x) = x^2 và g(x) = x Ta dùng : int(abs(f(x)-g(x)),x=a..b); > f := x->x^2: > g := x->sqrt(x): > a:=min(solve(f(x)=g(x),x)): > b:=max(solve(f(x)=g(x),x)): > plot([f(x),g(x)],x=a..b); > int(abs(f(x)-g(x)),x=a..b); Bài 3. Tính diện tích miền phẳng cho bởi tham số :x=x(t), y=y(t),a≤t≤b S:=int(abs(y(t)*diff(x(t),t)),t=a..b); hay S:=int(abs(x(t)*diff(y(t),t)),t=a..b); Bài 4. Tính diện tích miền phẳng cho bởi tọa độ cực::r=r(t),a≤t≤b S:=1/2*int(r(t)^2,,t=a..b);

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản