1. Trang chủ
  2. » Giáo án - Bài giảng

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

8 380 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 8
Dung lượng 93,5 KB

Nội dung

Kiểm tra tính lũy linh của một ma trận vuông Xét bài toán kiểm tra một ma trận vuông có phải là một ma trận lũy linh hay không?. Trước hết ta dùng các hàm của Maple tạo một ma trận với

Trang 1

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

1 Dẫn nhập

Trong phạm vi bài viết này, chúng tôi không có tham vọng trình bày các khả năng ứng dụng của phần mềm Maple mà chỉ giới thiệu một ví dụ nhỏ

về việc sử dụng Maple trong dạy học đại số tuyến tính

2 Tính lũy thừa của ma trận vuông

Thuật toán: (Ứng dụng định lí Hamiltơn - Cayley):“Giả sử A là ma trận vuông và P ( )A  thỏa mãn: n n n 1

P ( ) ( 1) p  p p

         

đa thức đặc trưng của A Khi đó, P (A)A = 0 “ Vậy mọi đa thức Q() chia hết cho P ( )n  thì ta cũng có Q(A) = 0 Đặc biệt:

n Q( )   S( ).P ( )    R( )   Q(A)  R(A)

Chương trình được thiết kế nhằm thực hiện tuần tự các nội dung:

- Tính đa thức đặc trưng của A

- Tìm dư khi chia x n cho đa thức đặc trưng của A (khi đó đa thức dư sẽ

có bậc nhỏ hơn cấp của ma trận một đơ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 hiện chương trình với các

tham số):

[> with(LinearAlgebra): 

[> A:=<<(sqrt(3)/2) + 1, 1/2>|<-5/2, (sqrt(3)/2-1)>>;# Khai báo ma trận A

Trang 2

3 5 1

A :

1

 

[> Luythua(A, 2002); # Thực hiện thủ tục tính luỹ thừa với số mũ là 2002

3

3 1

3

2 2

 

Ta có thể mở rộng cho bất kì một đa thức bậc n với ẩn là ma trận A,

bằng cách thay r:=rem(x^n, p, x) bằng r:=rem( f(x) , p, x)

3 Kiểm tra tính lũy linh của một ma trận vuông

Xét bài toán kiểm tra một ma trận vuông có phải là một ma trận lũy linh hay không? Nếu ma trận đó là ma trận lũy linh thì chỉ ra bậc của 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 cả các giá trị riêng của ma trận

- Nếu tất cả các giá trị riêng của ma trận đều bằng 0 thì ma trận là lũy linh, ngược lại ma trận là không lũy linh

- Nếu ma trận là lũy linh thì 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ừ 2 đến 100000000)

+ Lập ma trận không cấp bằng với ma trận đã cho

+ Nếu tồn tại chỉ số i sao cho lũy thừa bậc i thì ma trận đã cho bằng ma trận không Lấy chỉ số i đó ta được bậc lũy linh của 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), 1 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 2 to 100000000 do if equal(M, A^i)=true then

print(‘ Ma trận đã cho là ma trận lũy linh có bậc là ‘, i); break; fi; od;

Trang 3

else print(‘ Ma trận đã cho không phải là ma trận lũy linh ‘); fi; fi; end: 

Minh hoạ việc sử dụng chương trình

[> with(LinearAlgebra): A:=<<0,-1,-2>|<-2,0,0>|<1,0,0>>;# Khai báo ma trận

:=





0 -2 1

[> LLkhong(A);# Thực hiện chương trình con#

Ma trận đã cho là ma trận lũy linh có bậc là, 3

4.Kiểm tra tính giao hoán trong phép nhân các 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 <> 0 or m1- m2 <> 0 or n1-m1 <> 0 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 0 0

0 3 0

0 0 3

[>B:=matrix(3,3,[0,0,0,0,0,0,0,1,0]); 

:=





0 0 0

0 0 0

0 1 0 [> GiaohoanK(A,B); 

true

5 Kiểm tra tính chéo hóa được của một ma trận vuông bất kỳ và đưa ma trận đó về 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 ');

Trang 4

print(‘ Dạng chéo của ma trận là ‘); 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]); 

:=

A

1 -2 3 -2

0 1 1 -1 -1 -2 0 1 [> CheohoaK(A); 

true

Dạng chéo của ma trận là





0 0  3 

2

1

2

1

2 13

6 Tính định thức của ma trận min(i, j) ni,j 1

.

Trước hết ta dùng các hàm của Maple tạo một ma trận với cấp xác định thỏa mãn điều kiện bài toán sau đó tính định thức của ma trận đó Dựa trên

kết quả để suy luận sau đó tổng quát hóa cho ma trận có cấp n bất kì

Mã chương trình:

[> with(linalg):

[> n:=5: A:=array(1 n,1 n):

for i to n do

for j to n do

if i < j then A[i, j]:= i;

else A[i, j]:= j; fi; od; od; print(A); 

Kết quả thực hiện thủ tục:





1 1 1 1 1

1 2 2 2 2

1 2 3 3 3

1 2 3 4 4

1 2 3 4 5

Trang 5

Ta thấy kết quả của định thức bằng 1 Ta xét thêm ma trận cấp cao hơn (cấp 10) bằng cách thay n:=10 vào đầu các câu lệnh trên Kết quả ta được một

ma trận cũng có định thức bằng 1 Đến đây nảy sinh vấn đề: Vậy liệu đối với

một ma trận có dạng như vậy với cấp bất kỳ thì kết quả trên còn đúng không ?

Nếu điều đó đúng thì chắc chắn ma trận A sẽ phân tích được thành hai hay nhiều ma trận có định thức đều bằng 1 Để tìm hiểu, ta thực hiện các lệnh sau:

[> A1 := LUdecomp(A, L='A2',U='u'): 

[> evalm(A1); 





1 1 1 1 1

0 1 1 1 1

0 0 1 1 1

0 0 0 1 1

0 0 0 0 1

[> evalm(A2); 





1 0 0 0 0

1 1 0 0 0

1 1 1 0 0

1 1 1 1 0

1 1 1 1 1 Với lệnh trên ta thấy rõ ràng là ma trận A là tích của hai ma trận A1 và A2, trong đó các ma trận A1 (ma trận tam giác trên) và A2 (ma trận tam giác dưới) đều là các ma trận có định thức bằng 1 Bằng việc thay đổi các bậc của

A, ta thấy rằng kết quả trên vẫn đúng Do vậy, ta nhân hai ma trận A1, A2 cấp

n và thu được kết quả là ma trận A Như vậy, bài toán đã giải quyết xong.

7 Xét tính khả ngịch của một ma trận

Ta thấy ma trận đơn vị có các phần tử trên đường chéo chính bằng 1, còn các phần tử khác bằng 0 Rõ ràng đây là một ma trận khả nghịch Vấn đề đặt ra là liệu có mối quan hệ nào giữa các phần tử trên đường chéo chính với các phần tử còn lại trong một ma trận vuông sao cho ma trận đó là khả nghịch không?

Ta xây dựng chương trình bao gồm các nhiệm vụ:

Trang 6

- Tính tổng các trị tuyệt đối của các phần tử nằm ngoài đường chéo.

- Tính giá trị nhỏ nhất về trị tuyệt đối của các phần tử trên đường chéo

- Xét tính khả nghịch của 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) do

if N > abs(A[i, i]) then N:=abs(A[i, i]); fi; K:=K + abs(A[i, i]);

for j to rowdim(A) do M:= M +abs(A[i, j]); od; od;

print(‘ Phần tử trên đường chéo chính có trị tuyệt đối bé nhất là ‘, N);

print(‘ Tổng trị tuyệt đối của các phần tử ngoài đường chéo chính là ‘, M-K);

print(‘ Định thức của ma trận A là ‘, 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

[> Chuan(A); 

Phần tử trên đường chéo chính có trị tuyệt đối bé nhất là , 2.

Tổng trị tuyệt đối của các phần tử ngoài đường chéo chính là , 1.

Định thức của ma trận A là , -8.

Ta thấy ma trận trên khả nghịch, có ij

i j

a

 =1, min( a )ii =2

Có sự vượt trội về trị tuyệt đối của các phần tử nằm trên đường chéo chính Ta tiếp tục thử với các 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]); 

:=

A

6 -1 0 1

0 7 1 -1

0 -1 -9 0

0 0 0 7

[> Chuan(A); 

Phần tử trên đường chéo chính có trị tuyệt đối bé nhất là , 6.

Tổng trị tuyệt đối của các phần tử ngoài đường chéo chính là , 5.

Định thức của ma trận A là , -2604.

Trang 7

Kết quả trên cho thấy nếu các phần tử trên đường chéo chính có sự vượt trội về trị tuyệt đối so với các phần tử nằm ngoài đường chéo chính thì định thức của ma trận đó khác không Ta tiếp tục lập các ma trận thỏa mãn nhận xét trên và xem định thức của nó 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ử trên đường chéo chính có trị tuyệt đối bé nhất là , 12.

Tổng trị tuyệt đối của các phần tử ngoài đường chéo chính là , 11.

Định thức của ma trận A là, 61584.

Tương tự ta thấy rằng các ma trận thỏa mãn nhận xét đều có định thức khác

không Từ đó ta cơ sở để đi đến một dự đoán là: " Một ma trận vuông cấp n

A=(aij) thỏa mãn min( a )ii > ij

i j

a

thì ma trận đó khả nghịch ".Đây là cách

phát biểu khác của định lí Hađamard

8 Đưa biểu thức toạ độ của dạng toàn phương về dạng chính 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 S<>0 do

while has(S,{seq(x[i]^2,i=1 n)}) do

for i to n do

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 S<>0 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

Trang 8

Ví dụ 1: [> Q:=x1^2 + 4*x2^2+ x3^2+ 4*x1*x2 + 2*x1*x3 + 2*x2*x3; 

:=

Q x124 x22 x32 4 x1 x2 2 x1 x3 2 x2 x3 

[> sqsum(Q); 

(x1 2 x2 x3  )2 (x3 x2 )2

2

(x3 x2 )2

2

Ví dụ 2: [> Q:=x*y+y*z+x*z; 

:=

Q x y y z x z 

[> sqsum(Q); 

(x 2 z y )2

4

( x y)2

9 Kết luận

Maple là phần mềm có một môi trường tính toán khá phong phú, hỗ trợ hầu hết các lĩnh vực của toán học như: Giải tích số, đồ thị, đại số hình thức

do đó ta dễ dàng tính được các 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 của hàm số, vẽ đồ thị, tính diện tích, thể tích, biến đổi ma trận, khai triển các 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 và lập trình giải các bà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 này ta dễ dàng biên soạn các sách giáo khoa điện tử với chức năng Hyperlink tạo các siêu văn bản rất đơn giản mà không cần đến sự hỗ trợ của bất kỳ một phần mềm nào khác (chẳng hạn PageText, Word, FrontPage )

Với các chức năng trên, Maple là công cụ đắc lực hỗ trợ cho những người làm toán

Tài liệu tham khảo

1 Hướng dẫn thực hành tính toán trê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

2 Tính toán, lập trình và giảng dạy toán học trên Maple

Phạm Huy Điển chủ biên

NXB KH&KT 2002

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

w