thực hành tính toán đại số tuyến tính với maple

25 288 3
thực hành tính toán đại số tuyến tính với maple

Đ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ực hành tính toán ĐẠI SỐ TUYẾN TÍNH với MAPLE Trònh Thanh Đèo Khoa Toán - Tin học,Trường Đại học Khoa học Tự nhiên Tp.HCM, 227 Nguyễn Văn Cừ, Quận 5, Tp Hồ Chí Minh e-mail: ttdeo@math.hcmus.edu.vn; ttdeo@yahoo.com Website: www.math.hcmus.edu.vn/∼ttdeo/DSTT/ Mục lục Mở đầu 2 Gói lệnh đại số tuyến tính 3 Khai báo ma trận 4 Khai báo vectơ Các lệnh thực hành tính toán 6 Các ví dụ 13 Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple Mở đầu Maple chương trình tính toán sử dụng rộng rãi trường đại học giới Đây chương trình tính toán vạn đồ sộ, có khả tính toán ký hiệu hình thức Việc cài đặt sử dụng chương trình hoàn toàn dễ dàng chương trình ứng dụng khác Nếu biết sử dụng Maple cách thành thạo, người dùng tiếp cận dễ dàng với chương trình tính toán khác (như Mathematica, Mathlab, ) Với hướng dẫn chi tiết, giáo trình giúp sinh viên tự tiến hành công việc cách nhẹ nhàng, không cần chuẩn bò đặc biệt kiến thức tin học, vài quy ước quen biết như: phép nhân biểu thò dấu *, phép chia dấu /, phép lũy thừa dấu ^, Ta bắt đầu việc tính toán thực hành cách đưa vào cụm xử lý (bằng cách nhấn chuột vào biểu tượng `[>' lệnh giao diện làm việc) Một dấu nhắc lệnh `[>' chờ ta đưa lệnh vào thực Các lệnh kết thúc dấu hai chấm (:) dấu chấm phẩy (; ), lệnh thực cách nhấn phím ENTER trỏ đặt cuối dòng lệnh Kết tính toán thò bên dòng lệnh dấu kết thúc lệnh dấu chấm phẩy (;), kết thực không hiển thò dấu kết thúc lệnh dấu hai chấm (:) - điều có lợi ta không muốn máy hiển thò không cần thiết Để gán giá trò cho biến ta sử dụng dấu `:=' Để đặt thích cho dòng lệnh, ta dùng dấu `#' Khi đó, ký tự nằm sau dấu `#' Maple bỏ qua qua trình thực thi Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple Gói lệnh đại số tuyến tính Để thực hành tính toán vấn đề liên quan đến đại số tuyến tính, MAPLE cung cấp hai gói lệnh (packages) linalg (gói lệnh bản) LinearAlgebra (gói lệnh nâng cao) Khả tính toán gói lệnh mô tả cửa sổ Help Maple Ta xem nhanh cách gõ dòng lệnh tương ứng sau đây: [> ?linalg; [> ?LinearAlgebra; Để gọi gói lệnh linalg LinearAlgebra, ta gõ dòng lệnh [> with(linalg): [> with(LinearAlgebra): Trong tài liệu này, trình bày lệnh có gói lệnh linalg Độc giả tự tham khảo lệnh gói lệnh LinearAlgebra sau làm quen với Maple thông qua gói lệnh linalg Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple Khai báo ma trận Trong Maple, ma trận danh sách danh sách, danh sách dòng ma trận Một ma trận A loại m×n   a11 a12 a1n  a21 a22 a2n   A=   am1 am2 amn tạo lệnh sau đây: [> A:=array(1 m,1 n,list_of_rows); hoaëc [> A:=array(list_of_rows); hoaëc [> A:=matrix(list_of_rows); Trong đó, list_of_rows danh sách dạng [[a11, a12, , a1n], [a21, a22, , a2n], , [am1, am2, , amn]] Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple Ví dụ [> with(linalg): #Gọi gói lệnh đại số tuyến tính [> A:=array(1 2,1 3,[[1,2,1],[2,3,5]]); #Tạo ma traän A A := 2 [> B:=array([[1,2,3,4],[3,4,5,6],[1,2,3,1]]); #Tạo ma trận B   B :=   Một ma trận A loại m × n khai báo lệnh [> A:=matrix(m,n,list_of_entries); Trong đó, list_of_entries danh sách dạng [a11, a12, , a1n, a21, a22, , a2n, , am1, am2, , amn] Ví dụ [> with(linalg): Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple [> A:=matrix(2,3,[1,2,3,4,5,6]); Khai báo vectơ Trong Maple, vectơ danh sách số Một vectơ v = (x1, x2 , , xn) khai báo leänh sau: [> [> [> [> [> v:=array(1 n,[x1,x2, , xn]); v:=array([x1,x2, , xn]); v:=vector(n, [x1,x2, , xn]); v:=vector([x1,x2, , xn]); v:=[x1,x2, , xn]; Các lệnh thực hành tính toán • diag(a1,a2, ,an): Tạo ma trận đường chéo với phần tử đường chéo a1 , a2, , an • row(A, i): Vectơ dòng thứ i ma trận A • row(A, i k): Các vectơ dòng thứ i đến thứ k ma trận A • col(A, i): Vectơ cột thứ i ma trận A Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple • col(A, i k): Các vectơ cột thứ i đến thứ k ma trận A • rowdim(A) coldim(A): Xác đònh số dòng số cột ma trận A • vectdim(v): Xác đònh chiều vectơ v • equal(A, B): Kiểm tra hai ma trận A B có không? • transpose(A): Xác đònh ma trận chuyển vò ma trận A • scalarmul(A, r) evalm(r*A): Nhân ma trận A với số (hoặc biểu thức) r • trace(A): Xác đònh vết ma trận A • iszero(A): Kiểm tra ma trận A có ma trận không hay không? • randmatrix(m, n): Tạo ma trận ngẫu nhiên loại m ì n randvector(n): Taùo moọt vectụ ngaóu nhieõn n chiều • rank(A) : Xác đònh hạng ma trận A • multiply(A,B, ) evalm(A&*B&* ): Tích ma trận A.B • matadd(A,B) evalm(A+B): Tính tổng ma trận A + B • matadd(A,B,r,s) evalm(r*A+s*B): Tính tổng ma trận rA + sB (với r, s số thực biến) • swaprow(A,i,j): Hoán vò hai dòng i j ma trận A Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple • swapcol(A,i,j): Hoán vò hai cột i j ma trận A • mulrow(A, i, m): Nhân dòng thứ i ma trận A với số m • mulcol(A, j, m): Nhân cột thứ j ma trận A với số m • addrow(A,j,i,m): Thay dòng i ma trận A dòng i cộng với m lần dòng j A • addcol(A,j,i,m): Thay cột i ma trận A cột i cộng với m lần cột j A • pivot(A, i, j): Nếu phần tử vò trí (i, j) ma trận A khác lệnh dùng để đưa tất vò trí lại cột thứ j A (ngoại trừ vò trí (i, j)) cách lấy dòng cộng k lần dòng i • gausselim(A): Đưa ma trận A dạng bậc thang • gaussjord(A) rref(A): Đưa ma trận A ma trận rút gọn • delrows(A, r s): Xóa dòng ma trận A từ dòng thứ r đến dòng thứ s • delcols(A, r s): Xóa cột ma trận A từ cột thứ r đến cột thứ s • inverse(A): Xác đònh ma trận nghòch đảo ma trận A • augment(A, B, ) concat(A, B, ): Nối hai hay nhiều ma trận có số dòng (A, B, ) thành ma trận dạng (A|B| ) Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple • stackmatrix(A, B, ): Nối hai hay nhiều ma trận có số cột (A, B, ) thành ma trận dạng   A  B    • submatrix(A, i j,r s): Ma trận ma trận A gồm dòng từ dòng thứ i đến dòng thứ j cột từ cột thứ r đến cột thứ s • evalm(A^k): Xác đònh lũy thừa ma trận Ak • linsolve(A, b) linsolve(A, B) : Giải hệ phương trình tuyến tính dạng AX = b với A ma trận loại m × n, b vectơ cột m chieu, B laứ moọt ma traọn loaùi mìk geneqns(A, x) geneqns(A, x,b): Tạo hệ phương trình với ẩn x, ma trận hệ số A cột hệ số tự b (nếu b không ghi ngầm hiểu 0) • genmatrix(eqns, vars) genmatrix(eqns,vars,b): Tạo ma trận hệ số hệ phương trình tuyến tính eqns với ẩn vars Thông số tùy chọn b để tạo vectơ cột hệ số tự • solve(eqns, vars): Giải phương trình hệ phương trình, hệ bất phương trình eqns với ẩn vars Nếu có nhiều phương trình (bất phương trình) eqns {eqn1,eqn2, }; có nhiều biến vars {var1,var2, }; • det(A): Tìm đònh thức ma trận A Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple 10 • minor(A, r, c): Xác đònh ma trận có từ ma trận A cách xóa dòng thứ r cột thứ c A • adj(A) adjoint(A): Xác đònh ma trận phó ma trận A • u+v: Cộng hai vectơ u v • r*u+s*v: Tính ru + sv, với u, v vectơ, r, s số thực (hoặc biến) • dotprod(u, v): Tính tích vô hướng hai vectơ u v • crossprod(u, v): Tính tích hữu hướng hai vectơ u v không gian R3 • norm(u, 2): Tính độ dài (chuẩn) vectơ u Đối số `2' dùng để việc tính độ dài theo công thức bậc hai tổng bình phương tọa độ • normalize(u): Chuẩn hóa vectơ u Kết trả vectơ v = u ||u|| • angle(u, v): Tính số đo góc vectơ u v (dựa theo công thức cos(u, v) = u.v ) |u|.|v| • basis(V): Tìm sở cho không gian sinh vectơ thuộc tập hợp V Kết trả tập hợp V Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple 11 • basis(A,’rowspace’): Tìm sở cho không gian sinh dòng ma trận A Kết trả tập hợp gồm vectơ dòng A • basis(A,’colspace’): Tìm sở cho không gian sinh cột ma trận A Kết trả tập hợp gồm vectơ cột A • rowspan(A) rowspan(A, ’dim’) : Tìm sở cho không gian sinh dòng ma trận A Kết trả tập hợp gồm vectơ dòng khác dạng bậc thang A Thông số `dim' thông số tùy chọn dùng để xác đònh số chiều không gian dòng • rowspace(A) rowspace(A, ’dim’): Tìm sở cho không gian sinh dòng ma trận A Kết trả tập hợp gồm vectơ dòng khác dạng rút gọn A Thông số `dim' thông số tùy chọn dùng để xác đònh số chiều không gian dòng • colspan(A) colspan(A, ’dim’): Tìm sở cho không gian sinh cột ma trận A Kết trả tập hợp gồm vectơ dòng khác dạng bậc thang A Thông số `dim' thông số tùy chọn dùng để xác đònh số chiều không gian cột • colspace(A) colspace(A, ’dim’): Tìm sở cho không gian sinh cột ma trận A Kết trả tập hợp gồm vectơ dòng khác dạng rút gọn A Thông số `dim' thông số tùy chọn dùng để xác đònh số chiều không gian cột • nullspace(A) nullspace(A, ’nulldim’): Tìm sở cho không gian nghiệm hệ phương trình tuyến tính dạng AX = (với A ma trận) Kết trả Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple 12 tập hợp tất vectơ nghiệm hệ AX = Thông số `nulldim' thông số tùy chọn dùng để xác đònh số chiều không gian nghiệm • sumbasis(S1, S2, ): Tìm sở cho không gian tổng không gian sinh tập hợp S1, S2, • GramSchmidt([v1, v2, ,vn]) GramSchmidt({v1, v2, ,vn}): Tìm sở trực giao từ sở gồm vectơ v1, v2 , , thuật toán GramSchmidt • GramSchmidt([v1, v2, ,vn],’normalized’) GramSchmidt({v1, v2, ,vn}),’normalized’: Tìm sở trực chuẩn từ sở gồm vectơ v1 , v2, , thuật toán GramSchmidt • kernel(A) kernel(A, ’nulldim’): Tìm sở cho không gian hạt nhân ánh xạ tuyến tính xác đònh ma trận A Kết trả tập hợp tất vectơ sở không gian hạt nhân Thông số `nulldim' thông số tùy chọn dùng để xác đònh số chiều không gian hạt nhân (Lệnh kernel thực hoàn toàn giống lệnh nullspace) • charmat(A, x): Xác đònh ma trận đặc trưng ma trận A, ma trận dạng (xI − A) • charpoly(A, x): Xác đònh đa thức đặc trưng ma trận A, đa thức dạng p(x) = det(xI − A) • eigenvalues(A) eigenvals(A): Xác đònh trò riêng ma trận A Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple 13 • eigenvectors(A) eigenvects(A): Xác đònh vectơ riêng (tương ứng với trò riêng) ma trận A • issimilar(A, B) issimilar(A, B, ’P’): Kiểm tra hai ma trận A B có đồng dạng hay không Thông số tùy chọn ’P’ dùng để xác đònh ma trận P cho A = P −1 BP • minpoly(A, x): Xác đònh đa thức tối tiểu ma trận A Đa thức tối tiểu ma trận A đa thức m(x) có bậc nhỏ cho m(A) = • definite(A, ’positive_def’): Kiểm tra ma trận A có xác đònh dương hay không? • definite(A, ’positive_semidef’): Kiểm tra ma trận A có bán xác đònh dương hay không? • definite(A, ’negative_def’): Kiểm tra ma trận A có xác đònh âm hay không? • definite(A, ’negative_semidef’): Kiểm tra ma trận A có bán xác đònh âm hay không? Các ví dụ Ví dụ [> with(linalg): #Gọi gói lệnh Đại số tuyến tính [> A:=matrix(2,3,[1,2,3,4,5,6]); #Tạo ma trận A Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple 14 [> rank(A); #Tìm hạng A [> gausselim(A); #Tìm dạng bậc thang A −3 −6 [> swaprow(A,1,2); #Hoán vò dòng dòng cuûa A [> B:=matrix(2,3,[1,-1,2,3,1,-2]); #Tạo ma trận B [> matadd(A, B, 3, -4); #Tính 3A-4B −1 10 11 26 [> concat(A, B); #Nối A với B thành ma trận mở rộng (A|B) −1 −2 Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple 15 [> delcols(A,3 3); #Xóa cột A [> evalm(%^3); #Tính lũy thừa bậc ma trận vừa thực thi 57 78 156 213 Ghi Để gọi lại kết liền trước dòng lệnh đó, ta dùng dấu %, chẳng hạn ví dụ trên, dấu % hiểu gọi ma trận Tương tự, gọi kết trước dòng lệnh thực bước ta dùng nhiêu dấu % (trong phiên cũ Maple, dấu % thay dấu ") Ví dụ Giải hệ phương trình   2x + 3y − 4z = 3x + 2y − 3z =  5x − y + 2z = Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple 16 Cách [> solve({2*x+3*y-4*z = 2, 3*x+2*y-3*z = 5, 5*x-y+2*z = 1}, [x, y, z]); {x = 1, y = −8, z = −6} Caùch [> with(linalg): [> A:=matrix(3,3,[2,3,-4,3,2,-3,5,-1,2]); #Tạo ma trận hệ số  −4 −3  A :=  −1  [> b:=vector([2,5,1]); #Tạo vectơ hệ số tự b := [2 1] [> linsolve(A,b); #Giải hệ AX=b [1 −8 − 6] Ví dụ Tạo ma trận hệ số cột hệ số tự cho hệ phương trình:   2x + 3y − 4z = 3x + 2y − 3z =  5x − y + 2z = Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple 17 [> with(linalg): [> eqns:={2*x+3*y-4*z = 2, 3*x+2*y-3*z = 5, 5*x-y+2*z = 1}; #Tạo hệ phương trình eqns := {2x + 3y − 4z = 2, 3x + 2y − 3z = 5, 5x − y + 2z = 1} [> A:=genmatrix(eqns, [x, y, z], b); #Xác đònh ma trận hệ số  −4 −3  A :=  −1  [> print(b); #In vectơ hệ số tự [2 1] Ví dụ Tạo hệ phương trình dạng Ax = b với  −4 −3  , A :=  −1  b := [2, 5, 1], x = [x1, x2 , x3] [> with(linalg): [> A:=matrix(3,3,[2,3,-4,3,2,-3,5,-1,2]);  −4 A :=  −3  −1  Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple 18 [> b:=vector([2,5,1]); b := [2 1] [> geneqns(A, [x[1], x[2], x[3]], b); #Xác đònh hệ phương trình daïng AX=b {2x1 + 3x2 − 4x3 = 2, 3x1 + 2x2 − 3x3 = 5, 5x1 − x2 + 2x3 = 1} Ví dụ [> with(linalg): [> A := matrix(3,3, [1,2,3,4,5,6,7,8,9]); #Tạo ma trận A   A :=   [> det(A); #Tính đònh thức A [> minor(A,1,3); #Xác đònh ma trận có từ A cách xóa dòng cột Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple 19 [> adj(A); #Xác đònh ma trận phó A   −3 −3  −12  −3 −3 [> B := array(1 2,1 2, [[1,4],[0,2]]); #Tạo ma trận B B := [> det(B); #Tính đònh thức B [> adjoint(B); #Xác đònh ma trận phó B −4 Ví dụ [> with(linalg): [> A := matrix(3,3, [1,2,3,4,5,6,7,8,9]); #Tạo ma trận A   A :=   Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple 20 [> basis(A,’rowspace’); #Xác đònh sở cho không gian dòng A [[1 3], [4 6]] [> basis(A,’colspace’); #Xác đònh sở cho không gian cột A [[1 7], [2 8]] [> rowspan(A,’dim’); #Xác đònh sở cho không gian A dòng {[1 3], [0 −3 − 6]} [> print(dim); #In số chiều không gian dòng A [> rowspace(A,’dim’); #Xác đònh sở cho không gian dòng A {[0 2], [1 1]} [> nullspace(A,’r’); #Xác đònh sở cho không gian nghiệm hệ AX=0 {[1 [> print(r); #In −2 1]} số chiều không gian nghiệm hệ AX=0 [> colspan(A); #Xác đònh sở cho không gian cột A {[0 −3 − 6], [1 7]} Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple 21 Ví dụ [> with(linalg): [> A := matrix(3,3, [1,2,3,4,5,6,7,8,9]); #Tạo ma trận A   A :=   [> kernel(A,’r’); #Xác đònh sở cho không gian hạt nhân ánh xạ tuyến tính xác đònh ma trận A {[1 −2 1]} [> print(r); #In số chiều không gian hạt nhân Ví dụ [> with(linalg): [> A := matrix(3, 3, [3, 1, 1, 2, 4, 2, 1, 1, 3]); #Tạo ma trận A  1 A :=   1  [> charmat(A,x); #Xác đònh ma trận đặc trưng A Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple 22 (theo biến x)  x − −1 −1 A :=  −2 x − −2  −1 −1 x −  [> charpoly(A,t); #Xác đònh đa thức đặc trưng A (theo bieán t) p := t3 − 10t2 + 28t − 24 [> factor(%); #Phân tích đa thức vừa có thành nhân tử (t − 6)(−2 + t)2 [> eigenvalues(A); #Xác đònh tất trò riêng A 6, 2, [> eigenvectors(A); #Xác đònh hệ thống gồm trò riêng sở không gian riêng tương ứng [2, 2, {[−1 0], [−1 [> minpoly(A,t); #Xaùc 1]}], [6, 1, {[1 1]}] đònh đa thức tối tiểu A (theo biến t) 12 − 8t + t2 [> factor(%); #Phân tích đa thức vừa có thành nhân tử (−2 + t)(t − 6) Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple 23 Ghi • Lệnh factor(%) dùng để đưa đa thức có từ kết liền trước lệnh thành tích • Kết trả lệnh eigenvectors(A) danh sách có dạng [lambda, k, {v1, v2, }], lambda giá trò riêng, k số bội trò riêng lambda, {v1, v2, } tập hợp vectơ sở không gian riêng E(lambda) Ví duï [> with(linalg): [> A := matrix(3, 3, [1,2,3,4,5,6,7,8,9]); #Tạo ma trận A   A :=   [> B := matrix(3, 3, [6,3,2,18,6,6,9,3,3]); #Tạo ma trận B   B :=  18 6  3 [> issimilar(A, B,’P’); #Kiểm dạng hay không? true tra A B có đồng Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple 24 [> print(P); #In ma traän P cho A=P−1 BP   0  −1  −1 Ví dụ 10 [> with(linalg): [> A := matrix(3,3, [1,0,0,0,2,0,0,0,3]); #Tạo ma trận A  0 A :=   0  [>definite(A, ’positive_def’); #Kiểm tra A có xác đònh dương hay không true [>definite(A, ’positive_semidef’); #Kiểm tra A có nửa xác đònh dương hay không true [>definite(A, ’negative_def’); #Kiểm tra A có xác đònh âm hay không false [>definite(A, ’negative_semidef’); #Kiểm tra A có nửa xác đònh âm hay khoâng false ... dấu `#' Maple bỏ qua qua trình thực thi Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple Gói lệnh đại số tuyến tính Để thực hành tính toán vấn đề liên quan đến đại số tuyến tính, MAPLE cung... lệnh đại số tuyến tính 3 Khai báo ma trận 4 Khai báo vectơ Các lệnh thực hành tính toán 6 Các ví dụ 13 Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple Mở đầu Maple chương trình tính toán. .. [a21, a22, , a2n], , [am1, am2, , amn]] Trònh Thanh Đèo - Thực hành tính toán ĐSTT với Maple Ví dụ [> with(linalg): #Gọi gói lệnh đại số tuyến tính [> A:=array(1 2,1 3,[[1,2,1],[2,3,5]]); #Tạo ma

Ngày đăng: 14/02/2019, 21:01

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan