kết quả, bằng suy luận lôgíc và thông qua mối quan hệ giữa các yếu tố của bài toán, ta có thểđịnh hướng cách giải một cách nhanh chóng và chính xác.
4.9.1. Ví dụ Tính định thức của ma trận umin
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:
[> det(A); ↵
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 lệnh sau:
[> A1 := LUdecomp(A, L='A2',U=’u’): ↵
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 Al 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 Al, A2 cấp nvà thu được kết quả là ma trận A. Như vậy, bài toán đã giải quyết xong.
4.9.2. Tìm ma trận nghịch đảo
Xét ma trận A có dạng như sau:
Trước hết, ta tìm ma trận nghịch đảo của ma trận B có dạng như trên nhưng có bậc hoàn toàn xác định (chẳng hạn với bậc 5), sau đó tìm ma trận nghịch đảo của ma trận B, từ dạng của ma trận B-1 ta có thể dựđoán được dạng nghịch đảo của ma trận A Mã chương trình:
[> restart; :with(linalg): ↵
Từđây dựđoán ma trận nghịch đảo của A sẽ có dạng như sau:
4.9.3. Kiểm tra tính khác không của đinh thức bằng cách dùng phép chia có dư cho các phần tử trong ma trận đểđưa ma trận đó về dạng đơn giản.
Mã chương trình: [> with(linalg): [> Matrixmod:=proc(A, p) local u, v, i, j, B; u:=rowdim(A),v:=coldim(A); B:=array(1..u, 1..v); for i to u do
for j to v do B[i,j]:=A[i, j] mod p;od;od; print(B); end: ↵
Minh hoạ việc sử dụng chương trình
[>A:=matrix(6,6,[7,82,62,54,24,90,86,13,24,26,6,8,0,2,5,8,0,12,2,4,6,9,64,24,12,4,6,8, 1,8, 2,4,24,26,8,67]); ↵
Rõ ràng ma trận kết quả là ma trận đơn vị nên có định thức khác không do đó ma trận đã cho sẽ có định thức khác không.
4.9.4. " Tìm hạng của ma trận vuông cấp n mà các phần tử trên đường chéo chính bằng 0, còn các phần tử còn lại bằng 1 hoặc -1 ".
Trước hết ta tạo ra một ma trận để thỏa mãn giả thiết của đề bài (vì trong thư viện của Maple chưa có sẵn) có các phần tử trên đường chéo chính bằng 0, các phần tử còn lại lấy các giá trị 1 hoặc - 1 một cách tùy ý. Mã chương trình: * Tạo ma trận: [> Matrixransign:=proc(m,n) local i, j, a, c, A; A:=matrix(m, n, []); for i to m do
for j to n do a:=rand(-99..99): c:= a();
if i<>j then A[i, j]:=sign(c); else A[i, j]:=0; fi; od; od; print(A); print(' Hạng của A là ',rank(A)); end: ↵
* Sau khi đã xây dựng xong chương trình tạo ma trận, tiến hành tính hạng của các ma trận ngẫu nhiên với cấp của ma trận được thay đổi. Ta bắt đầu từ cấp 5:
Kết quả hạng của A : 5
Ta tiếp tục thử cho các ma trận ngẫu nhiên khác, sau một số ma trận có hạng không đổi, ta gặp ma trận sau đây có hạng là 4.
[> Matrixransign(5,5); ↵
Kết quả hạng của A: 4 Tiếp tục với ma trận cấp 7 :
Kết quả hạng của A: 7 Tiếp tục thử ta được kết quả dưới đây:
Giáo trình: Sử dụng Công nghệ thông tin trong dạy học toán
Kết quả hạng A: 6
Như vậy, hạng của ma trận chỉ có thể là 7 (bằng cấp của ma trận) hoặc 6. Từđó ta đi đến dựđoán sau: “Hạng của ma trận trên hoặc là n hoặc là n- 1”.
vẫn được kết quả tương tự: “Trên đường chéo ma trận cấp n là các số 0, còn các phần tử khác hoặc là 1 hoặc là c (c∈Z), ta có hạng của ma trận này hoặc là n-1, hoặc là n ".
4.9.5. 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 không. 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ụ:
- 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 i to rowdim(A) do M:= M +abs(A[i, jn; od; od;
prnt(' Phần tửđườ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
[> 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 .
Ta thấy ma trận trên khả nghịch, có
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]); ↵
[> 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.
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 thì ma trận đó khả nghịch”, Đây là cách phát biểu khác của
định lí Hađalnard .
4.9.6. Đưa biểu thức toạđộ của dạng toàn phương về dạng chính tắc
* Cơ sở lý thuyết (phương pháp Lagrange)
phương có biểu thức toạđộ
a. Trường hợp 1
Giả sử aii≠ 0, để cho tiện ta giả thiết a11≠ 0 thì biểu thức toạđộđã cho được viết
dưới dạng: + những số hạng không chứa
+ những số hạng không chứa
trong đó đặt
Đây là công thức phép đổi toạ độ trong V . Vậy ta đã đưa về xét biểu thức với n - 1 toạđộ b. Trường hợp 2: Nếu mọi aii = 0 nhưng có aij≠ 0 với i ≠ j, chẳng hạn a12≠ 0 trong ta đặt : ( đây là công thức của một phép đổi toạđộ) thì do số hạng 2a12xlx2 trở thành 2a12 ( '2 2 2 ' 1 x x − ) nên trở thành trong biểu thức này hệ số của '2 1 x là 2a12≠ 0. Vậy ta lại đưa về trường hợp 1 đã xét ở trên.
Thiết lập chu trình với Maple
[> 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 noi 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,|[2])+diff(s,|[3]))^2/(4*|[1])-(diff(s,|[2])-diff(S,|[3]))^2/(4*|[1]); S:=expand(f-k); end if; end do; K:=map(simplify,K); RETURN(K); end: ↵ Các ví dụ minh hoạ sử dụng chương trình