KHAI THÁC PHẦN MỀM MAPLE TRONG DẠY HỌC ĐẠI SỐ TUYẾN TÍNH

8 379 0
KHAI THÁC PHẦN MỀM MAPLE  TRONG DẠY HỌC ĐẠI SỐ TUYẾN TÍNH

Đang tải... (xem toàn văn)

Thông tin tài liệu

KHAI THÁC PHẦN MỀM MAPLE TRONG DẠY HỌC ĐẠI SỐ TUYẾN TÍNH ThS Trịnh Thanh Hải ĐHSP Thái Nguyên Dẫn nhập Trong phạm vi viết này, tham vọng trình bày khả ứng dụng phần mềm Maple mà giới thiệu ví dụ nhỏ việc sử dụng Maple dạy học đại số tuyến tính Tính lũy thừa ma trận vuông Thuật toán: (Ứng dụng định lí Hamiltơn - Cayley):“Giả sử A ma trận vuông PA (λ) thỏa mãn: PA (λ) = (−1)n λn + p1λn−1 + + pn−1λ + pn đa thức đặc trưng A Khi đó, PA (A) = “ Vậy đa thức Q( λ ) chia hết cho Pn(λ) ta có Q(A) = Đặc biệt: Q(λ) = S(λ).Pn(λ) + R(λ) ⇒Q(A) = R(A) Chương trình thiết kế nhằm thực nội dung: - Tính đa thức đặc trưng A - Tìm dư chia xn cho đa thức đặc trưng A (khi đa thức dư có bậc nhỏ cấp ma trận đơn vị) - Tính An theo đa thức dư Mã chương trình: [> restart; with(LinearAlgebra): Luythua:=proc(A, n) local p, r, f, x; p:=CharacteristicPolynomial(A, x); r:=rem(x^n, p, x); f := unapply(r, x); f(A); end:  Minh hoạ việc sử dụng chương trình (thực chương trình với tham số): [> with(LinearAlgebra):  [> A:=;# Khai báo ma trận A  +1  A :=         − 1  − [> Luythua(A, 2002); # Thực thủ tục tính luỹ thừa với số mũ 2002 1  − 2   −      + 3  Ta mở rộng cho đa thức bậc n với ẩn ma trận A, cách thay r:=rem(x^n, p, x) r:=rem( f(x) , p, x) Kiểm tra tính lũy linh ma trận vuông Xét toán kiểm tra ma trận vuông có phải ma trận lũy linh hay không? Nếu ma trận ma trận lũy linh bậc ma trận lũy linh (Xét đến ma trận lũy linh bậc 100000000) Thuật toán: - Tìm tất giá trị riêng ma trận - Nếu tất giá trị riêng ma trận ma trận lũy linh, ngược lại ma trận không lũy linh - Nếu ma trận lũy linh ta tìm bậc lũy linh: + Tính lũy thừa ma trận (số lũy thừa lặp từ đến 100000000) + Lập ma trận không cấp với ma trận cho + Nếu tồn số i cho lũy thừa bậc i ma trận cho ma trận không Lấy số i ta bậc lũy linh ma trận cho Mã chương trình: [> restart;with(linalg): with(LinearAlgebra): LLkhong:=proc(A) local i, M, p, k, L, u, J, Q, P; p:=CharacteristicPolynomial(A, x); k:=solve(p=0,{x}); L:={k}; u:=nops(L); M:=Matrix(1 rowdim(A), coldim(A), shape=zero); if equal(M, A)=true then print(‘ Trường hợp tầm thường ‘); else if u=1 and L[1]={x=0} then for i from to 100000000 if equal(M, A^i)=true then print(‘ Ma trận cho ma trận lũy linh có bậc ‘, i); break; fi; od; else print(‘ Ma trận cho ma trận lũy linh ‘); fi; fi; end:  Minh hoạ việc sử dụng chương trình [> with(LinearAlgebra): A:=;# Khai báo ma trận  -2 1   A := -1 0 -2 0   [> LLkhong(A);# Thực chương trình con# Ma trận cho ma trận lũy linh có bậc là, 4.Kiểm tra tính giao hoán phép nhân ma trận Mã chương trình: [> with(linalg): [>GiaohoanK:=proc(A,B) local C, D, n1, n2, m1, m2; n1:=rowdim(A); m1:=coldim(B); m2:=rowdim(B); n2:=coldim(A); if n1- n2 or m1- m2 or n1-m1 then print(‘ Nhap lai cac ma tran ‘) else C:=multiply(A, B); D:=multiply(B, A); if equal(C, D)=true then print('true') else print('false'); fi; fi; end:  Minh hoạ việc sử dụng chương trình [> A:=matrix(3,3,[2,0,0,0,3,0,0,0,3]);  2  A :=  0  0  0 3 0 0  0 0 [>B:=matrix(3,3,[0,0,0,0,0,0,0,1,0]);  0  B :=  0  [> GiaohoanK(A,B);  true Kiểm tra tính chéo hóa ma trận vuông đưa ma trận dạng ma trận chéo (nếu ma trận chéo hóa được) Mã chương trình: [> CheohoaK:=proc(A) local B; B := diag(eigenvalues(A)); if issimilar(A, B)= true then print(' true '); print(‘ Dạng chéo ma trận ‘); print(B); else print(' false '); fi; end:  Minh hoạ việc sử dụng chương trình [> with(linalg,matrix,issimilar,eigenvalues,diag):  [> A := matrix(4,4,[1,0,0,0,1,-2,3,-2,0,1,1,-1,-1,-2,0,1]);  1 0   -2 A :=  0 1  -1 -2 0  -2 -1  1 [> CheohoaK(A);  true Dạng chéo ma trận 1  0    0     0   0 − + 2 0 13 − − 2            13    n Tính định thức ma trận min(i,j) i,j=1 Trước hết ta dùng hàm Maple tạo ma trận với cấp xác định thỏa mãn điều kiện toán sau tính định thức ma trận Dựa kết để suy luận sau tổng quát hóa cho ma trận có cấp n Mã chương trình: [> with(linalg): [> n:=5: A:=array(1 n,1 n): for i to n for j to n if i < j then A[i, j]:= i; else A[i, j]:= j; fi; od; od; print(A);  Kết thực thủ tục: 1  1  1   1   1 [> det(A); 2 2 3 3 4 1  2 3  4  5 Ta thấy kết định thức Ta xét thêm ma trận cấp cao (cấp 10) cách thay n:=10 vào đầu câu lệnh Kết ta ma trận có định thức Đến nảy sinh vấn đề: Vậy liệu ma trận có dạng với cấp kết không ? Nếu điều chắn ma trận A phân tích thành hai hay nhiều ma trận có định thức Để tìm hiểu, ta thực lệnh sau: [> A1 := LUdecomp(A, L='A2',U='u'):  [> evalm(A1);  1  0  0   0   0 1 0 1 0 1 1 1  1 1  1  1 1  1  1   1   1 1 1 0 1 0 1 0  0 0  0  1 [> evalm(A2);  Với lệnh ta thấy rõ ràng ma trận A tích hai ma trận A1 A2, ma trận A1 (ma trận tam giác trên) A2 (ma trận tam giác dưới) ma trận có định thức Bằng việc thay đổi bậc A, ta thấy kết Do vậy, ta nhân hai ma trận A1, A2 cấp n thu kết ma trận A Như vậy, toán giải xong Xét tính khả ngịch ma trận Ta thấy ma trận đơn vị có phần tử đường chéo 1, phần tử khác Rõ ràng ma trận khả nghịch Vấn đề đặt liệu có mối quan hệ phần tử đường chéo với phần tử lại ma trận vuông cho ma trận khả nghịch không? Ta xây dựng chương trình bao gồm nhiệm vụ: - Tính tổng trị tuyệt đối phần tử nằm đường chéo - Tính giá trị nhỏ trị tuyệt đối phần tử đường chéo - Xét tính khả nghịch ma trận Mã chương trình: [> with(linalg): [> Chuan:=proc(A) local i, j, M, N, K; if rowdim(A) coldim(A) then print(‘ Nhap ma tran vuong ‘); else M:=0; K:=0; N:=abs(A[1, 1]); for i to rowdim(A) if N > abs(A[i, i]) then N:=abs(A[i, i]); fi; K:=K + abs(A[i, i]); for j to rowdim(A) M:= M +abs(A[i, j]); od; od; print(‘ Phần tử đường chéo có trị tuyệt đối bé ‘, N); print(‘ Tổng trị tuyệt đối phần tử đường chéo ‘, M-K); print(‘ Định thức ma trận A ‘, det(A)); fi; end:  Minh hoạ việc sử dụng chương trình [> A:=matrix(2,2,[-4,-1,0,2]);  -4 -1 A :=    2 [> Chuan(A);  Phần tử đường chéo có trị tuyệt đối bé , Tổng trị tuyệt đối phần tử đường chéo , Định thức ma trận A , -8 Ta thấy ma trận khả nghịch, có ∑a i≠ j ij =1, min( aii ) =2 Có vượt trội trị tuyệt đối phần tử nằm đường chéo Ta tiếp tục thử với ma trận khác: [> A:=matrix(4,4,[6,-1,0,1,0,7,1,-1,0,-1,-9,0,0,0,0,7]);  6  0 A :=  0  0 -1 1  -1 -1 -9 0  0 7 [> Chuan(A);  Phần tử đường chéo có trị tuyệt đối bé , Tổng trị tuyệt đối phần tử đường chéo , Định thức ma trận A , -2604 Kết cho thấy phần tử đường chéo có vượt trội trị tuyệt đối so với phần tử nằm đường chéo định thức ma trận khác không Ta tiếp tục lập ma trận thỏa mãn nhận xét xem định thức có khác không không ? [> A:=matrix(4,4,[-16,-1,0,1,0,12,1,-1,0,-1,-19,0,-2,1,3,17]): Chuan(A);  Phần tử đường chéo có trị tuyệt đối bé , 12 Tổng trị tuyệt đối phần tử đường chéo , 11 Định thức ma trận A là, 61584 Tương tự ta thấy ma trận thỏa mãn nhận xét có định thức khác không Từ ta sở để đến dự đoán là: " Một ma trận vuông cấp n A=( aij ) thỏa mãn min( aii ) > ∑a i≠ j ij ma trận khả nghịch ".Đây cách phát biểu khác định lí Hađamard Đưa biểu thức toạ độ dạng toàn phương dạng tắc (Theo phương pháp Lagrange) Mã chương trình: [> restart;with(linalg): sqsum:=proc(f::quadratic) local i,l,n,x,J,S,K,F,kk; if ldegree(f)2 then error "f is not quadratic form" end if; S:=f;K:=0; indets(f): x:=convert(%,list): n:=nops(x): while S0 while has(S,{seq(x[i]^2,i=1 n)}) for i to n if has(S,x[i]^2) then K:=K+diff(S,x[i])^2/4/coeff(S,x[i]^2); S:=expand(Q-K); end if; end do; end do; if S0 then if type(S,`+`) then op(1,S) else S; fi; indets(%); l := [coeff(coeff(%%,%[1]),%[2]),%[1],%[2]]; K:=K+(diff(S,l[2])+diff(S,l[3]))^2/(4*l[1])-(diff(S,l[2])-diff(S,l[3]))^2/(4*l[1]); S:=expand(f-K); end if; end do; K:=map(simplify,K); RETURN(K);end:  Minh hoạ sử dụng chương trình Ví dụ 1: [> Q:=x1^2 + 4*x2^2+ x3^2+ 4*x1*x2 + 2*x1*x3 + 2*x2*x3;  Q := x1 +4 x22 +x3 +4 x1 x2 +2 x1 x3 +2 x2 x3 [> sqsum(Q);  ( x3 +x2 ) ( −x3 +x2 ) ( x1 +2 x2 +x3 ) − + 2 Ví dụ 2: [> Q:=x*y+y*z+x*z;  Q := x y +y z +x z [> sqsum(Q);  ( x +2 z +y ) ( −x + y ) − −z2 4 Kết luận Maple phần mềm có môi trường tính toán phong phú, hỗ trợ hầu hết lĩnh vực toán học như: Giải tích số, đồ thị, đại số hình thức ta dễ dàng tính giá trị gần đúng, rút gọn biểu thức, giải phương trình, bất phương trình, hệ phương trình, tính giới hạn, đạo hàm, tích phân hàm số, vẽ đồ thị, tính diện tích, thể tích, biến đổi ma trận, khai triển chuỗi, tính toán thống kê, xử lý số liệu, số phức, phương trình vi phân, phương trình đạo hàm riêng lập trình giải toán với cấu trúc chương trình đơn giản Ngoài ra, với phần mềm ta dễ dàng biên soạn sách giáo khoa điện tử với chức Hyperlink tạo siêu văn đơn giản mà không cần đến hỗ trợ phần mềm khác (chẳng hạn PageText, Word, FrontPage ) Với chức trên, Maple công cụ đắc lực hỗ trợ cho người làm toán Tài liệu tham khảo Hướng dẫn thực hành tính toán chương trình Maple V Phạm Huy Điển, Đinh Thế Lục, Tạ Duy Phượng NXB Giáo dục 1998 Tính toán, lập trình giảng dạy toán học Maple Phạm Huy Điển chủ biên NXB KH&KT 2002 ... −x + y ) − −z2 4 Kết luận Maple phần mềm có môi trường tính toán phong phú, hỗ trợ hầu hết lĩnh vực toán học như: Giải tích số, đồ thị, đại số hình thức ta dễ dàng tính giá trị gần đúng, rút... trình, hệ phương trình, tính giới hạn, đạo hàm, tích phân hàm số, vẽ đồ thị, tính diện tích, thể tích, biến đổi ma trận, khai triển chuỗi, tính toán thống kê, xử lý số liệu, số phức, phương trình... tham khảo Hướng dẫn thực hành tính toán chương trình Maple V Phạm Huy Điển, Đinh Thế Lục, Tạ Duy Phượng NXB Giáo dục 1998 Tính toán, lập trình giảng dạy toán học Maple Phạm Huy Điển chủ biên NXB

Ngày đăng: 06/07/2017, 13:47

Từ khóa liên quan

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

Tài liệu liên quan