S dng MAPLE để
đưa dng toàn phương v dng chính tc
PHAN ĐỨC CHÂU
Đại hc Kinh doanh và Công ngh Hà Ni
Dng toàn phương là mt trong nhng khái nim cơ bn ca Toán cao cp.
Dng toàn phương có nhiu ng dng trong k thut và kinh tế như nhn dng
các đường và mt bc hai, đưa ra các điu kin đủ trong các bài toán ti ưu…
S dng phn mm MAPLE giúp cho vic nghiên cu các dng toàn phương
d dàng và hiu qu hơn.
Gi s n
V là mt không gian n chiu và S là mt cơ s ca nó. Trong cơ s S mt dng
toàn phương là biu thc có dng
AxxxxaxxQ
n
ii
jiij '),(
1,
==
=
trong đó ma trn A = ( ij
a) là mt ma trn đối xng. Nếu trong Q(x,x) ch cha các s
hng bình phương thì nói Q(x,x) có dng chính tc trong cơ s S.
Rút gn mt dng toàn phương là tìm mt cơ s S’ trong đó Q có dng chính tc.
Để đưa mt dng toàn v v dng chính tc thường dùng 3 cách: Phương pháp chéo hóa
trc giao, phương pháp Jacobi và phương pháp Lagrange.
Bài này nêu vic s dng phn mm MAPLE để đưa Q v dng chính tc theo phương
pháp chéo hóa trc giao.
Gi P là ma trn chuyn t cơ s trc chun S sang cơ s trc chun S’: x = Py. Trong
S’ dng toàn phương tr thành (Py)’A(Py) = y’(P’AP)y. Do S và S’ là trc chun nên P
là mt ma trn trc giao theo nghĩa P’P = E , E là ma trn đơn v. Vy P'P 1=
. Nếu
APP 1 là mt ma trn đưng chéo, thì Q ch cha các s hng bình phương hay Q có
dng chính tc trong cơ s S’. Khi đó nói P là ma trn làm chéo hóa trc giao ma trn A.
Áp dng quá trình trc giao hóa Gram-Schmidt đểm ma trn P.
Đon chương trình sau trong MAPLE s thc hin vic trên. Có hai th tc:
a) cheohoatrucgiao để chéo hóa trc giao mt ma trn đối xng bt k, ngoài ra đưa
thêm mt s thông tin v đa thc đặc trưng, giá tr riêng, vectơ riêng ca ma trn
đó,
b) chinhtac để đưa dng toàn phương v dng chính tc. Trong th tc này có mt
phn để nhn đúng ma trn A ca dng toàn phương, nếu Q đưa vào sai s báo li.
> restart:with(linalg):with(LinearAlgebra):
> cheohoatrucgiao:=proc(M::Matrix)
local dt,n,lambda,vt,i,G,v,gt,u:
global P,T:
n:=ColumnDimension(M):
dt:=CharacteristicPolynomial(M,lambda):
print(`Da thuc dac trung: `,factor(dt));
(gt,vt):=Eigenvectors(M):
print(`Gia tri rieng: `,gt,`Cot vecto rieng : `,
simplify(vt));
for i from 1 to n do v[i]:=Vector[column](col(vt,i)): od:
G:=GramSchmidt([seq(v[i],i=1..n)],normalized):
P:=augment(seq(G[i],i=1..n)): P:=convert(P,Matrix):
print(`Ma tran lam cheo hoa P =`,simplify(P));
T:=DiagonalMatrix(gt): print(`Ma tran cheo hoa P'AP = `,T);
end proc:
> chinhtac:=proc(tp)
local n,A,i,j,Ct,Ctrg,tp1,k:
n:=nops(indets(tp)):
tp1:=tp: for i from 1 to n do tp1:=subs(x[i]=k*x[i],tp1) od:
if is(tp1=(k^2)*tp)=false then ERROR(`Dang toan phuong cho
sai`) fi:
A:=Matrix(n,n):
for i from 1 to n do A[i,i]:=coeff(tp,x[i]^2):
for j from (i+1) to n do
A[i,j]:=coeff(coeff(tp,x[i]),x[j])/2:
A[j,i]:=A[i,j] :
od :
od:
print(`Ma tran dang toan phuong A =`,A):
cheohoatrucgiao(A);
Ct:=add(T[i,i]*y[i]^2,i=1..n);
print(`Dang chinh tac sau khi cheo hoa truc giao :`,Ct);
Ctrg:=add(sign(evalf(T[i,i]))*z[i]^2,i=1..n);
print(`Dang chinh tac rut gon :`,Ctrg);
end proc:
Sau khi đã viết đon trên, để đưa các dng toàn phương bt k v dng chính tc, trước
hết cn np dng toàn phương đang xét, tiếp theo gi th tc chinhtac. Dưới đây nêu mt
s ví d:
> `DANG TOAN PHUONG 2 AN`;
tp:=5*x[1]^2-4*x[1]*x[2]+8*x[2]^2:
`Vi du 1: Dang toan phuong `:=tp; chinhtac(tp);
tp:=-x[1]^2-x[2]^2+6*x[1]*x[2]+3:
`Vi du 2: Dang toan phuong `:=tp; chinhtac(tp):
tp:=5*x[1]^2+5*x[2]^2+4*x[1]*x[2]-2*x[2]:
`Vidu 3: Dang toan Phuong `:=tp; chinhtac(tp):
DANG TOAN PHUONG 2 AN
Vi du 1: Dang toan phuong := 5 x12 - 4 x1 x2 + 8 x22
Ma tran dang toan phuong A =, 5-2
-2 8
Da thuc dac trung: , λ - 4()
λ - 9()
Gia tri rieng: , 4
9
, Cot vecto rieng :, 2-1
2
11
Ma tran lam cheo hoa P =,
2
5 5-
1
5 5
1
5 52
5 5
Ma tran cheo hoa P'AP = , 40
09
Dang chinh tac sau khi cheo hoa truc giao :, 4 y12 + 9 y22
Dang chinh tac rut gon :, z12 + z22
Vi du 2: Dang toan phuong := -x12 - x22 + 6 x1 x2 + 3
Error, (in chinhtac) Dang toan phuong cho sai
Vidu 3: Dang toan phuong := 5 x12 + 5 x22 + 4 x1 x2 - 2 x2
Error, (in chinhtac) Dang toan phuong cho sai
Kết qu Ví d 1 cho biết đó là dng toàn phương xác định dương, còn các dng toàn
phương Ví d 2 và 3 cho sai, cn np li.
> `DANG TOAN PHUONG 3 AN`;
tp:=x[1]^2+x[2]^2+x[3]^2-2*x[1]*x[2]-2*x[1]*x[3]-
2*x[2]*x[3]:
`Vidu 4: Dang toan phuong`:=tp; chinhtac(tp);
DANG TOAN PHUONG 3 AN
Vidu 4: Dang toan phuong := x12 + x22 + x32 - 2 x1 x2 - 2 x1 x3 - 2 x2 x3
Ma tran dang toan phuong A =,
1-1-1
-1 1 -1
-1 -1 1
Da thuc dac trung: , λ + 1()
λ - 2()
2
Gia tri rieng: ,
-1
2
2
, Cot vecto rieng :,
1-1-1
110
101
Ma tran lam cheo hoa P =,
1
3 3-
1
2 2-
1
6 6
1
3 31
2 2-
1
6 6
1
3 30 1
3 6
Ma tran cheo hoa P'AP = ,
-1 0 0
020
002
Dang chinh tac sau khi cheo hoa truc giao :, -y12 + 2 y22 + 2 y32
Dang chinh tac rut gon :, -z12 + z22 + z32
Hãy th áp dng đối vi dng toàn phương 4 n sau:
> `DANG TOAN PHUONG 4 AN`;
tp:=x[1]^2+x[2]^2+x[3]^2+x[4]^2+2*x[1]*x[2]+2*x[1]*x[3]+2*x[
1]*x[4]-2*x[2]*x[3]-2*x[2]*x[4]-2*x[3]*x[4]:
`Vi du 5: Dang toan phuong`:=tp; chinhtac(tp);
MAPLE là mt phn mm tính toán khá mnh có kh năng tính toán trên s và trên các
ký hiu. Vic s dng MAPLE s đem li mt công c rt hiu qu trong nghiên cu
khoa hc và ging dy trên nhiu lĩnh vc khác nhau.
TÀI LIU
[1] B.W.CHAR, K.O.GEDDES, G.H.GONNET, B.L.LEONG, M.B.MANAGAN,
S.M.WATT, Maple V Library Reference Manual, Springer-Verlag, 1993
[2] PHAN ĐỨC CHÂU, S dng MAPLE trong Toán sơ cp và Toán cao cp, Nxb Khoa
hc và k thut, 2005
[3] NGUYN ĐÌNH TRÍ , T VĂN ĐĨNH, NGUYN H QUNH, Toán hc cao cp,
Nxb Giáo dc, 2004