intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Sử dụng MAPLE để đưa dạng toàn phương về dạng chính tắc

Chia sẻ: Rose_12 Rose_12 | Ngày: | Loại File: PDF | Số trang:4

586
lượt xem
34
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Dạng toàn phương là một trong những khái niệm cơ bản của Toán cao cấp. Dạng toàn phương có nhiều ứng dụng trong kỹ thuật và kinh tế như nhận dạng các đường và mặt bậc hai, đưa ra các điều kiện đủ trong các bài toán tối ưu… Sử dụng phần mềm MAPLE giúp cho việc nghiên cứu các dạng toàn phương dễ dàng và hiệu quả hơn. Giả sử Vn là một không gian n chiều và S là một cơ sở của nó. Trong cơ sở S một dạng toàn phương là biểu thức có dạng Q( x, x)...

Chủ đề:
Lưu

Nội dung Text: Sử dụng MAPLE để đưa dạng toàn phương về dạng chính tắc

  1. Sử dụng MAPLE để đưa dạng toàn phương về dạng chính tắc PHAN ĐỨC CHÂU Đại học Kinh doanh và Công nghệ Hà Nội Dạng toàn phương là một trong những khái niệm cơ bản của Toán cao cấp. Dạng toàn phương có nhiều ứng dụng trong kỹ thuật và kinh tế như nhận dạng các đường và mặt bậc hai, đưa ra các điều kiện đủ trong các bài toán tối ưu… Sử dụng phần mềm MAPLE giúp cho việc nghiên cứu các dạng toàn phương dễ dàng và hiệu quả hơn. Giả sử Vn là một không gian n chiều và S là một cơ sở của nó. Trong cơ sở S một dạng toàn phương là biểu thức có dạng n Q( x, x) = ∑ aij xi x j = x' Ax i , i =1 trong đó ma trận A = ( aij ) là một ma trận đối xứng. Nếu trong Q(x,x) chỉ chứa các số hạng bình phương thì nói Q(x,x) có dạng chính tắc trong cơ sở S. Rút gọn một dạng toàn phương là tìm một cơ sở S’ trong đó Q có dạng chính tắc. Để đưa một dạng toàn về về dạng chính tắc thường dùng 3 cách: Phương pháp chéo hóa trực giao, phương pháp Jacobi và phương pháp Lagrange. Bài này nêu việc sử dụng phần mềm MAPLE để đưa Q về dạng chính tắc theo phương pháp chéo hóa trực giao. Gọi P là ma trận chuyển từ cơ sở trực chuẩn S sang cơ sở trực chuẩn S’: x = Py. Trong S’ dạng toàn phương trở thành (Py)’A(Py) = y’(P’AP)y. Do S và S’ là trực chuẩn nên P là một ma trận trực giao theo nghĩa P’P = E , E là ma trận đơn vị. Vậy P −1 = P' . Nếu P −1 AP là một ma trận đường chéo, thì Q chỉ chứa các số hạng bình phương hay Q có dạng chính tắc trong cơ sở S’. Khi đó nói P là ma trận làm chéo hóa trực giao ma trận A. Áp dụng quá trình trực giao hóa Gram-Schmidt để tìm ma trận P. Đoạn chương trình sau trong MAPLE sẽ thực hiện việc trên. Có hai thủ tục: a) cheohoatrucgiao để chéo hóa trực giao một ma trận đối xứng bất kỳ, ngoài ra đưa thêm một số thông tin về đa thức đặc trưng, giá trị riêng, vectơ riêng của ma trận đó, b) chinhtac để đưa dạng toàn phương về dạng chính tắc. Trong thủ tục này có một phần để nhận đúng ma trận A của dạng toàn phương, nếu Q đưa vào sai sẽ báo lỗi. > restart:with(linalg):with(LinearAlgebra):
  2. > 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 đoạn trên, để đưa các dạng toàn phương bất kỳ về dạng chính tắc, trước hết cần nạp dạng toàn phương đang xét, tiếp theo gọi thủ tục chinhtac. Dưới đây nêu một 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:
  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 2 2 Vi du 1: Dang toan phuong := 5 x1 - 4 x1 x2 + 8 x2 5 -2 Ma tran dang toan phuong A =,    -2 8   Da thuc dac trung: , (λ - 4) (λ - 9)  -1  2  4  2 Gia tri rieng: ,   , Cot vecto rieng :,   9     1 1   2 1  5 5 -   5 5 Ma tran lam cheo hoa P =,       1 2 5 5  5 5   4 0 Ma tran cheo hoa P'AP = ,   0 9   2 2 Dang chinh tac sau khi cheo hoa truc giao :, 4 y1 + 9 y2 2 2 Dang chinh tac rut gon :, z 1 + z2 2 2 Vi du 2: Dang toan phuong := -x1 - x2 + 6 x1 x2 + 3 Error, (in chinhtac) Dang toan phuong cho sai 2 2 Vidu 3: Dang toan phuong := 5 x1 + 5 x2 + 4 x1 x2 - 2 x2 Error, (in chinhtac) Dang toan phuong cho sai Kết quả ở Ví dụ 1 cho biết đó là dạng toàn phương xác định dương, còn các dạng toàn phương ở Ví dụ 2 và 3 cho sai, cần nạp lại. > `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 2 2 2 Vidu 4: Dang toan phuong := x1 + x2 + x3 - 2 x1 x2 - 2 x1 x3 - 2 x2 x3
  4. 1 -1 -1   Ma tran dang toan phuong A =,  -1 -1 1      -1 1 -1 2 Da thuc dac trung: , (λ + 1) (λ - 2)  -1 1 -1 -1    Gia tri rieng: ,  2 , Cot vecto rieng :,  1 0 1        2 1 1 0   1 1 1 3 - 2 - 6  3 2 6       1 1 1 Ma tran lam cheo hoa P =,  6 3 2 -   3 2 6     1 1  6 3 0   3 3    -1 0 0   Ma tran cheo hoa P'AP = ,  0 0 2     0 2 0 2 2 2 Dang chinh tac sau khi cheo hoa truc giao :, -y1 + 2 y2 + 2 y3 2 2 2 Dang chinh tac rut gon :, -z1 + z2 + z3 Hãy thử áp dụng đối với dạng 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à một phần mềm tính toán khá mạnh có khả năng tính toán trên số và trên các ký hiệu. Việc sử dụng MAPLE sẽ đem lại một công cụ rất hiệu quả trong nghiên cứu khoa học và giảng dạy trên nhiều lĩnh vực khác nhau. TÀI LIỆU [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ử dụng MAPLE trong Toán sơ cấp và Toán cao cấp, Nxb Khoa học và kỹ thuật, 2005 [3] NGUYỄN ĐÌNH TRÍ , TẠ VĂN ĐĨNH, NGUYỄN HỒ QUỲNH, Toán học cao cấp, Nxb Giáo dục, 2004
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
4=>1