Giáo trình Phương pháp tính (P2): Các phương pháp số của Đại số tuyến tính

Tài liệu giảng dạy Phương pháp tính phần 2: đại số tuyến tính hệ thống hóa kiến thức từ cơ bản đến nâng cao ngành trong thời kỳ mới

Chuyên ngành

Toán Học

Người đăng

Ẩn danh

Thể loại

Giáo Trình

2023

204
0
0

Phí lưu trữ

55 Point

Tóm tắt

I. Tổng quan phương pháp tính phần 2 Đại số tuyến tính số

Giáo trình phương pháp tính phần 2 tập trung vào các phương pháp số của đại số tuyến tính, một lĩnh vực nền tảng cho khoa học máy tính và kỹ thuật. Nội dung chính xoay quanh việc ứng dụng máy tính để giải quyết các bài toán phức tạp liên quan đến ma trận và vectơ. Các thuật toán được thiết kế để xử lý hiệu quả các hệ phương trình lớn, đặc biệt là với các ma trận thưa hoặc có cấu trúc đặc biệt như dạng 3, 5 đường chéo. Việc hiểu rõ các khái niệm như định thức, ma trận nghịch đảo, và các phép biến đổi tuyến tính là điều kiện tiên quyết để nắm vững các kỹ thuật tính toán số. Các phương pháp này không chỉ giúp tiết kiệm bộ nhớ và thời gian tính toán mà còn là công cụ không thể thiếu trong việc mô phỏng và phân tích các hệ thống thực tế. Sự phát triển của các phương pháp tính số đã mở ra nhiều hướng tiếp cận mới trong việc giải quyết các vấn đề từ cơ học kết cấu đến xử lý tín hiệu số.

1.1. Tầm quan trọng của các phương pháp số trong kỹ thuật

Các phương pháp số trong đại số tuyến tính đóng vai trò xương sống trong nhiều ứng dụng kỹ thuật hiện đại. Chúng cho phép giải các hệ phương trình vi phân, biểu diễn và biến đổi vectơ dưới dạng ma trận, và xử lý các tập dữ liệu khổng lồ. Đặc biệt, khi làm việc với các ma trận thưa (sparse matrices) hoặc ma trận dải (band matrices), các thuật toán chuyên dụng như lưu trữ dạng BAND hoặc kỹ thuật Skyline trở nên cực kỳ hiệu quả. Những kỹ thuật này giúp tối ưu hóa việc sử dụng bộ nhớ và giảm đáng kể thời gian tính toán, là yếu tố then chốt trong các bài toán mô phỏng phức tạp. Ví dụ, trong phân tích phần tử hữu hạn, việc giải một hệ đại số tuyến tính với hàng triệu ẩn số là điều phổ biến, và nếu không có các phương pháp số hiệu quả, bài toán sẽ không thể giải quyết được.

1.2. Các khái niệm cơ bản về ma trận và định thức

Một ma trận được định nghĩa là một tập hợp gồm m x n phần tử, được sắp xếp thành m hàng và n cột. Mỗi ma trận vuông A đều gắn với một giá trị số gọi là định thức, ký hiệu là det(A). Định thức có vai trò quan trọng trong việc xác định tính chất của ma trận: nếu det(A) = 0, ma trận được gọi là suy biến, ngược lại là không suy biến. Một số tính chất quan trọng của định thức bao gồm: việc nhân một hàng (hoặc cột) với hằng số k sẽ làm định thức được nhân với k; và định thức không thay đổi khi cộng vào một hàng một tổ hợp tuyến tính của các hàng còn lại. Các tính chất này là cơ sở cho phương pháp trụ (pivoting) để tính định thức của ma trận cấp cao, một kỹ thuật nền tảng trong phương pháp tính.

1.3. Phép biến đổi tuyến tính và chuẩn của vectơ ma trận

Mối liên hệ giữa ma trận và các phép biến đổi tuyến tính là rất mật thiết. Một phép biến đổi AX = Y, với A là ma trận m x n, được gọi là phép biến đổi tuyến tính từ không gian n chiều sang không gian m chiều. Trong các bài toán ứng dụng, việc đo lường độ lớn của vectơ và ma trận là cần thiết, dẫn đến khái niệm chuẩn của vectơchuẩn của ma trận. Các chuẩn thông dụng bao gồm chuẩn tuyệt đối, chuẩn Euclide, và chuẩn cực đại. Khái niệm chuẩn là "hết sức quan trọng đối với các phương pháp số", đặc biệt khi xét tính hội tụ của các phương pháp lặp hoặc sự ổn định của hệ phương trình vi phân. Mối liên hệ giữa hai loại chuẩn được thể hiện qua bất đẳng thức ||A.X|| ≤ ||A||.||X||, một công cụ cơ bản trong phân tích sai số và đánh giá hiệu quả thuật toán.

II. Hướng dẫn tính ma trận nghịch đảo và định thức hiệu quả

Việc tính toán định thức và tìm ma trận nghịch đảo là hai trong số những bài toán cốt lõi của đại số tuyến tính số. Mặc dù có các công thức lý thuyết, việc triển khai chúng trên máy tính đòi hỏi các thuật toán ổn định và hiệu quả về mặt tính toán. Phương pháp khử là một kỹ thuật phổ biến được sử dụng cho cả hai mục đích. Bằng cách áp dụng các phép biến đổi hàng sơ cấp, một ma trận vuông có thể được đưa về dạng tam giác hoặc dạng đường chéo, từ đó việc tính định thứcma trận nghịch đảo trở nên đơn giản hơn. Tuy nhiên, một thách thức lớn là sai số làm tròn có thể tích lũy trong quá trình khử, đặc biệt với các ma trận "xấu" (ill-conditioned). Tài liệu gốc nhấn mạnh rằng "các phương pháp giải thông dụng đều tránh sử dụng nghịch đảo ma trận" khi giải hệ đại số tuyến tính do nguy cơ gây sai số lớn.

2.1. Phân tích phương pháp tính định thức bằng phép khử

Phương pháp trụ, một dạng của phương pháp khử, được sử dụng để tính định thức một cách hệ thống. Thuật toán hoạt động bằng cách biến đổi ma trận ban đầu thành ma trận đơn vị. Quá trình này dựa trên hai tính chất cơ bản của định thức. Đầu tiên, khi chia một hàng cho một giá trị trụ (pivot), định thức của ma trận mới sẽ bằng định thức cũ chia cho giá trị trụ đó. Thứ hai, khi trừ một hàng cho một bội số của hàng khác, định thức không thay đổi. Bằng cách lặp lại quy trình chọn trụ, chuẩn hóa hàng chứa trụ, và khử các phần tử khác trong cùng cột, ma trận ban đầu dần được biến đổi thành ma trận đơn vị. Định thức của ma trận ban đầu chính là tích của tất cả các giá trị trụ đã sử dụng trong quá trình biến đổi. Đây là một phương pháp mạnh mẽ và có thể lập trình được, như trong "Chương trình 5-1" của tài liệu gốc.

2.2. Hướng dẫn tính ma trận nghịch đảo bằng phương pháp khử

Phương pháp tìm ma trận nghịch đảo A⁻¹ cũng dựa trên kỹ thuật khử, tương tự như phương pháp Gauss-Jordan. Thuật toán bắt đầu bằng cách ghép ma trận A với ma trận đơn vị E cùng cấp, tạo thành một ma trận mở rộng [A|E]. Mục tiêu là thực hiện các phép biến đổi hàng sơ cấp để biến đổi phần ma trận A thành ma trận đơn vị. Khi quá trình này hoàn tất, phần ma trận E ban đầu sẽ biến thành ma trận nghịch đảo A⁻¹. Quá trình này được thực hiện qua n giai đoạn, mỗi giai đoạn gồm hai bước: chuẩn hóa phần tử trên đường chéo chính (phần tử trụ) bằng 1, sau đó khử tất cả các phần tử khác trong cùng cột đó về 0. Ví dụ minh họa trong tài liệu về việc tìm nghịch đảo ma trận cấp 3 cho thấy rõ từng bước biến đổi từ [A|E] thành [E|A⁻¹], chứng minh tính hiệu quả và có hệ thống của thuật toán này.

2.3. Các phép tính ma trận cơ bản và tính chất cần lưu ý

Ngoài định thứcnghịch đảo, các phép tính cơ bản khác như tích hai ma trận và chuyển vị cũng rất quan trọng. Tích hai ma trận A(m x l) và B(l x n) là một ma trận C(m x n) với mỗi phần tử được tính bằng tổng tích các phần tử tương ứng của hàng trong A và cột trong B. Một số tính chất quan trọng cần lưu ý: (A.B)ᵀ = Bᵀ.Aᵀ và (A⁻¹)ᵀ = (Aᵀ)⁻¹. Đặc biệt, hạng của một ma trận vuông là số lượng lớn nhất các hàng (hoặc cột) độc lập tuyến tính. Một ma trậnđịnh thức bằng 0 (suy biến) sẽ có các hàng hoặc cột phụ thuộc tuyến tính. Hiểu rõ các tính chất này là cần thiết để tránh các lỗi logic và sai số trong quá trình lập trình và áp dụng các phương pháp tính số.

III. Bí quyết tìm trị riêng và vectơ riêng trong phương pháp tính

Bài toán tìm trị riêngvectơ riêng là một trong những vấn đề trung tâm của đại số tuyến tính, có ứng dụng sâu rộng trong nhiều lĩnh vực như cơ học, động lực học kết cấu và xử lý tín hiệu. Một số λ được gọi là trị riêng và vectơ X khác không tương ứng được gọi là vectơ riêng của ma trận vuông A nếu chúng thỏa mãn phương trình A.X = λ.X. Việc giải bài toán này tương đương với việc tìm nghiệm của phương trình đặc trưng det(A - λE) = 0. Phương trình này là một đa thức bậc n theo λ, gọi là đa thức đặc trưng, có n nghiệm là các trị riêng của ma trận. Các phương pháp như Fadeev-Leverrier giúp xác định các hệ số của đa thức này, trong khi các phương pháp lặp như phương pháp Mises lại tập trung vào việc tìm trực tiếp các trị riêng.

3.1. Tìm hiểu đa thức đặc trưng qua phương pháp Fadeev Leverrier

Để tìm các trị riêng bằng cách giải phương trình đặc trưng, trước hết cần xác định các hệ số của đa thức đặc trưng Pₙ(λ). Phương pháp Fadeev-Leverrier cung cấp một thuật toán có hệ thống để thực hiện điều này. Phương pháp này dựa trên mối liên hệ giữa các hệ số của đa thức và "vết" (trace) của các ma trận được xây dựng một cách đệ quy. Vết của một ma trận, ký hiệu vet(A), là tổng các phần tử trên đường chéo chính. Thuật toán bắt đầu với B₁ = A và p₁ = vet(B₁). Các ma trận tiếp theo được tính theo công thức Bₖ = A(Bₖ₋₁ - pₖ₋₁E) và hệ số tương ứng là pₖ = (1/k)vet(Bₖ). Quá trình này lặp lại n lần để tìm đủ n hệ số của đa thức, từ đó có thể giải phương trình để tìm tất cả các trị riêng.

3.2. Ứng dụng phương pháp Mises để tìm trị riêng lớn nhất

Không phải lúc nào cũng cần tìm tất cả các trị riêng. Trong nhiều bài toán thực tế, chỉ cần tìm trị riêng có giá trị tuyệt đối lớn nhất. Phương pháp Mises, hay phương pháp lặp lũy thừa, là một thuật toán hiệu quả cho mục đích này. Thuật toán bắt đầu với một vectơ V bất kỳ. Vectơ này được nhân liên tiếp với ma trận A. Sau mỗi lần lặp, vectơ kết quả được chuẩn hóa bằng cách chia tất cả các phần tử cho phần tử có giá trị tuyệt đối lớn nhất. Khi quá trình lặp hội tụ, giá trị chuẩn hóa này sẽ tiến tới trị riêng lớn nhất (λ₁), và vectơ được chuẩn hóa sẽ tiến tới vectơ riêng tương ứng. Cơ sở của phương pháp này là khi p đủ lớn, AᵖV ≈ λ₁ᵖv₁X₁, nghĩa là thành phần ứng với trị riêng lớn nhất sẽ chiếm ưu thế tuyệt đối.

3.3. Kỹ thuật xuống thang để xác định các trị riêng còn lại

Phương pháp Mises chỉ tìm được trị riêng lớn nhất. Để tìm các trị riêng khác, người ta sử dụng phương pháp xuống thang (deflation method). Sau khi tìm được cặp trị riêng-vectơ riêng (λ₁, X₁), một ma trận mới A₁ được xây dựng từ ma trận A ban đầu sao cho A₁ có các trị riêng giống hệt A, ngoại trừ λ₁ được thay thế bằng 0. Công thức biến đổi là A₁ = A - λ₁(X₁W₁ᵀ)/(W₁ᵀX₁), trong đó W₁ là vectơ riêng của ma trận chuyển vị Aᵀ ứng với trị riêng λ₁. Sau khi có A₁, ta lại áp dụng phương pháp Mises trên A₁ để tìm trị riêng lớn nhất tiếp theo của nó, chính là λ₂ của ma trận A ban đầu. Quá trình này có thể lặp lại n-1 lần để tìm đủ n trị riêng của ma trận A.

IV. Cách giải hệ đại tuyến hiệu quả bằng phương pháp trực tiếp

Bài toán giải hệ phương trình đại số tuyến tính dạng A.X = B là một trong những bài toán cơ bản và phổ biến nhất trong khoa học tính toán. Với điều kiện det(A) ≠ 0, hệ phương trình luôn có nghiệm duy nhất. Có hai nhóm phương pháp chính để giải quyết bài toán này: phương pháp trực tiếp và phương pháp lặp. Các phương pháp trực tiếp, như phương pháp khử Gauss, Gauss-Jordan, hay phân tích LU, tìm ra nghiệm chính xác (trong lý thuyết) sau một số hữu hạn các bước tính toán. Những phương pháp này đặc biệt hiệu quả với các hệ phương trình có kích thước vừa và nhỏ hoặc có cấu trúc đặc biệt. Nội dung của giáo trình phương pháp tính phần 2 tập trung vào phương pháp khử Gauss như một kỹ thuật nền tảng và dễ tiếp cận.

4.1. Nguyên tắc cốt lõi của bài toán giải hệ phương trình

Nền tảng của các phương pháp trực tiếp là nguyên tắc rằng nghiệm của một hệ phương trình tuyến tính không thay đổi khi thực hiện các phép biến đổi hàng sơ cấp. Các phép biến đổi này bao gồm: đổi chỗ hai hàng, nhân một hàng với một số khác không, và cộng một bội số của một hàng vào một hàng khác. Mục tiêu của các phương pháp này là sử dụng một chuỗi các phép biến đổi để đưa ma trận hệ số A về một dạng đơn giản hơn, điển hình là dạng tam giác trên. Khi ma trận đã ở dạng tam giác, việc tìm nghiệm trở nên đơn giản thông qua quá trình thế ngược (back substitution), bắt đầu từ ẩn cuối cùng và tính ngược lên các ẩn ở trên. Đây chính là tư tưởng chủ đạo của phương pháp khử Gauss.

4.2. Hướng dẫn chi tiết phương pháp khử Gauss từng bước

Phương pháp khử Gauss bao gồm hai giai đoạn chính: quá trình khử (forward elimination) và quá trình thế ngược (back substitution). Trong giai đoạn khử, mục tiêu là biến đổi hệ phương trình ban đầu thành một hệ tương đương có ma trận hệ số là ma trận tam giác trên. Điều này được thực hiện bằng cách lần lượt khử các ẩn số. Ví dụ, để khử ẩn x₁ khỏi các phương trình từ thứ hai trở đi, ta lấy phương trình thứ nhất làm phương trình trụ, sau đó trừ đi một bội số thích hợp của nó từ các phương trình còn lại. Quá trình này được lặp lại cho các ẩn x₂, x₃,... cho đến khi thu được ma trận tam giác. Sau khi quá trình khử hoàn tất, phương trình cuối cùng chỉ còn một ẩn, dễ dàng giải được. Sau đó, ta thực hiện thế ngược giá trị này vào phương trình kế trên để tìm ẩn tiếp theo, và cứ thế tiếp tục cho đến khi tìm được tất cả các ẩn số.

17/07/2025

Trích đoạn nội dung tài liệu

Chương 5 CÁC PHƯƠNG PHÁP SÓ CỦA ĐẠI SÓ TUYẾN TÍNH (NUMERICAL METHODS FOR LINEAR ALGEBRA) Các phương pháp số gắn liên với việc ứng dụng trên máy tính số. Ma trận được ứng dụng rất thích hợp ở đây, như giải hệ phương trình vi phân, biểu diễn các vectơ ở dạng ma trận. Khi giải hệ đại tuyến A.X =B, ma tran A có thể là ma trận dây hoặc thưa, hoặc có dạng 3, 5 đường chéo hoặc nhiều đường chéo (dạng BAND). Khi A là ma trận thưa, đã có thuật toán để lưu trữ, tiết kiệm bộ nhớ và thời gian tính như lưu trữ dạng BAND bình thường hoặc dạng BAND ép lại, hay kỹ thuật lưu trữ Skyline (frontal method), với nhiều thuật giải trực tiếp hay lặp rất hiệu quả; đặc biệt khi ma trận có dạng 3, 5 đường chéo có những thuật toán giải riêng đê tiết kiệm bộ nhớ và thời gian tính.6 Cac dinh nghia Ma trận là tập hợp gồm mxn phần từ, chia thành m hàng và n cột.-8n ng 8ại 822 ‹--32n Kí hiệu: Amn=[ ij | = Ant Amin Có thể coi ma trận hàng (cột) là biểu diễn đại số của một vectơ (hình học).

Định thức của ma trận Mỗi một ma trận vuông A đều được gắn với một số, kí hiệu det(A) hoặc |A|, được gọi là định thức. Ma trận A được gọi là suy biến nếu det(A) = 0 và ngược lại là không suy biên. 141 Để tìm định thức cúa ma trận vuông n x n, trước hết chúng ta nhắc lại một số tinh chất quan trọng của định thức: ~ Nếu nhân tắt cả các phần tử của một hàng (hay cột) với k thì định thức được nhân với k. ~ Định thức không đổi nếu ta cộng thêm vào một hàng tổ hợp tuyến tính của các hàng còn lại.

Ta sẽ áp dụng các tính chất này đẻ tính định thức của một ma trận cấp 4 như Sau (phương pháp này có thể mở rộng cho một ma trận cấp n) băng phương pháp trụ: Am 3l #y Aịa a, 2 ay 32; ay 8ạy @ Ang A= đại âạa âyy gy đại Ayn ạy ạa Lấy giá trị trụ là pị = ai, ta chia các phần tử của hàng thứ nhất cho Pi = ay, thi định thức sẽ là D/p; (theo tính chất 1) và ma trận còn lại là: la, ais aụ đại Ay ạy Any đại 8y âyy Bay Sại 842 ay Bạa Lấy hàng 2 trừ đi hàng 1 đã nhân với aại, lay hàng 3 trừ đi hàng 1 đã nhân với a3, va lay hang 4 trit di hang | da nhân với a„¡ (thay hàng bằng tổ hợp tuyến tính của các hàng còn lại) thì định thức vẫn là Dp; và ma trận là: An. Taj ân aly Le Bh. ant Ay Bạy Ady coos " ti 433 ab Ayr ân ayy Lay giá trị trụ là P¿ =42;. Ta chia các phần tử của hàng thứ hai cho p; thì định thức sẽ là D/(p¡p;) và ma trận còn lại là: Aịy 3l, 4y đa a3; ay ayy ayy 142 Lay hang | trir di hang 2 đã nhân với a¡;, lấy hàng 3 trừ đi hàng 2 đã nhân với ay va lay hàng 4 trừ đi hàng 2 đã nhân với a¿; thì định thức van la D/(p;p2) và ma trận là: 1 0 af ayy 0 1 ah; aby 0 0 ay ayy 0 0 aj; ayy Tiếp tục lấy hàng 3 rồi hàng4 làm trụ thì ma trận sẽ là: 1000 0100 0010 0001 Định thức của ma trận này là D/(pp;pspa) = D/(a;a;;a;;aax) = I nên định thức cua ma tran A 1a D = pipapspa- Sau đây là chương trình tìm định thức của một ma trận: Chương trinh 5-1 “hình dinh thuc #include <conio.h> void main() f int i,j,k,n,okl,ok2,t; float d.h; float a[50} [50]; char tl; clrscr(): primf"** TINH DINH THUC CAP n **"); primff H2; primff "i2; prinff'Cho cap cua dink thuc n ="); 143 seanf"%d", &n); print{(’Nhap ma tran a\n"); for (i= 1ri<=nsi++) ( printf(’Dong %d:\n".5ƒW",afi/JJ]); prinff"Wi"); } printfC\n"); 1; flushally; while ()) í Printf("Co sua ma tran a khong(c/k)?"); scanf("%c", &tl); if (toupper(tl) =='C') ( print{(’'Cho chi so hang can sua : ”; scanf("%d",&i); Đrimf("Cho chỉ so cot can sua : "); scanf["2⁄4d",&J); printf("al%d][%d] = "\i.

Nghịch đảo ma trận Gọi Aˆ là ma trận nghịch đảo của một ma tran A bac n ta cé AA! = E; trong biểu thức này E là ma trận đơn vị (ma trận vuông có các phần tử trên đường chéo chính bằng 1). Dạng của ma trận E, ví dụ cấp 4 là: 1000 0100 E= 0010 0001 Phương pháp khử để nhận được ma trận nghịch đảo Aˆ' được thực hiện qua nhiều giai đoạn (n), mỗi một giai đoạn gồm hai bước. Đối với giai đoạn thứ k: - Chuẩn hoá phần tử au, bằng cách nhân hàng với nghịch đảo của nó. - Làm cho bằng không các phần tử phía trên và phía dưới đường chéo cho đến cột thứ k.

Khi k = n thì A? sẽ trở thành ma trận đơn vị và E trở thanh A’! Qua thuật toán tính ma trận nghịch đảoở trên, ta thay rằng nếu ma trận không có tính chất trội thì khi nghịch đảo có khả năng gây sai số lớn, do đó trong cách giải hệ đại tuyến, các phương pháp giải thông dụng đều tránh sử dụng nghịch đáo ma trận. Ví dự: Tính ma trận nghịch đảo của ma trận. 2 11 A=ll 2 1 I 12 Ta viét lai ma tran A và ma trận đơn vị tương ứng với nó: 2 11 100 A=ll 2 1 E=l0 1 0 112 001 147 * Giai doan 1: + Bude a: Nhan hang 1 voi 1/a,), nghia 1a a‘ = ai/an đối với dòng thứ nhất, aly = ay đối với các dòng khác. 1 1⁄2 12 2 0 0 A=ll 2 1 E= 0 10 1 1 2 0 01 + Bước b: Trừ hàng 3 va hang 2 cho hang I, nghĩa là a= ‘i ay ~ aif8i đối với ¡ # I 1 Y2 12 1/2 0 0 A=l0 3/2 1/2 E= -2 10 0 1/2 3⁄2 -J2 0 1 * Giai đoạn 2: + Bước a: Lấy hàng 2 làm chuẩn, nhân hàng 2 với 2/3, để nguyên các hàng khác.

1 1/2 1⁄2 12 0 0 A=|0 1 1/3 E= -1⁄3 2⁄4 0 0 1/2 3⁄2 -12 0 1 + Bước b: Lẫy hàng 1 trừ đi hàng 2 nhân 1/2 và lấy hàng 3 trừ đi hàng 2 nhân 1/2 10 13 2/3 -1/3 0 A=|0 1 1⁄3 E= -3 2⁄4 0 0 0 4/3 -3 -1/3 1 * Giai đoạn 3: + Bước a: Lấy hàng 3 làm chuẩn, nhân hàng 3 với 3⁄4, để nguyên các hàng khác. 10 13 2/3 -1/3 0 A=l0 1 1⁄3 E=|-U3 2/3 0 00 1 -1/4 -1/4 3/4 + Bude b: Lay hang | trirdi hàng 3 nhân 1⁄3 và lấy hang 2 trir di hàng 3 nhân 1/3 100 3/4 -1/4 -1/4 A=|0 1 0 E=|-1/4 3/4 -1/4 001 -1/4 -J4 3/4 Như vậy A là: 148 3/4 -1/4 -1/4 At=|-1/4 3/4 -1/4 -1/4 -1/4 3/4 Áp dụng phương pháp này chúng ta có chương trình sau: Chương trình 5-2 #include <conio. Sftal GD); prinf(\n”); i i=l; flushallQ; while (0 ( printf("\nCo sua ma tran khong(c/k)?"); scanf("%e", &tl); if(toupper(tl)=='C) ( print{("Cho chi so hang can sua :"); scanf("%d", &i); print{("Cho chi so cot can sua : "); scanf("%d", &j); printf a[%d] [Yd] = ". Sf" afi] Gi); printf('\n"); } 150 primff "2: for (i=1si<=nzi++) đờr Ú=n+1;j<=2*n;j++) ( f==i+n) afi}ij]=1; else afi] {j]=0; } i=]; tl=1; while (t1&&(i<=n)) ( ƒ(afif==0) ( t=1; k=it]; while (t&&(k<=n)) if (a[k][i]!=0) f for G=1j<=2*njtt) ( c=a[i]fj}; afi])=a[k}f]: alk] [j]=e: } (=0; } else k=k+l; if k==n+1) ( 151 if (a[i][k-1]--9) ( primffMA TRAN SUY BIENN "); t1=0; ˆ } } ƒ(afiHi!=0) t c=afilfil; for =i;jj<=2*n;j++) al]=aliJ⁄: i Sor (k=1;k<=n;k++) ( if ki=i) f e=alk] [i]; for G=ij<=2*nj++) afk} j]=a[k] Gj] -afi [i] *c: i=itl; } f(t) f printf('\n"); printf(’\nMA TRAN KET QUA\n"); printf('\n"),; for (i=1;i<=n;i++) ( Sor G=n+1j<=2*nj++) 152 primUt"%.ali]}); prinf(\n"); } primff"); Ỷ getch(); } Dùng chương trình tinh nghịch đảo của ma trận: 9 9 8 -t 2 +l 9 8 7|chotakếtquả|2 -10 9 8 7 6 -1 9 -9 5.

Tích hai ma trận Giả sử ta có ma trận A„„ và ma trận B,. Tích của Am, và B,; là ma tran Cap n trong đó mỗi phần tử của Cạ, là: cụ = Ð “aubụ, kel Chương trình dưới đây thực hiện nhân hai ma trận với nhau. Chương trình 5-3 include <conio.h> #define max 50 yoid main) ( in m0, float a[max][max],b[max][max],c[max] [max]; char tl; elrserQ); printf('Cho so hang cua ma tran a: "); scanf("%d", &n); 153 print{('Cho so cot cua ma trana:"); scanf("%d",&D; print{('Cho so cot cua ma tran b : "); seanf("%d", &m); printf("\NNHAP MA TRAN A\n"); Sor (i=1;i<=n,i++) for G=Ljsabj++) f printf('a[%d] [Yd] = "i.5f afi} ti}; prin(\n"); ỷ SlushallQ; - t=1; while (t) ( Print{('Co sua ma tran khong(c/k)?"); seanf("%c", &tl); if (toupper(tl)=='C!) ( Printf("Cho chi so hang can sua : Oe scanf("Yod", &i); primff“Cho chỉ so cot can sua : "9; Scanf{"%d",&/); 154 primf('a[%4d]{%4] = ".5f ali] ip; printf(\n"); } printfC'\n"); print{('NHAP MA TRAN B\n"); đồr(i=l;i<=li+t+) for =1;j<=m;j++) f prinif("b[Yd] [Yd] = "\i.j); scanf{"%/",&bfill)): } prinff"w"); printf("Ma tran b ban da nhap\n"); for (@=1;i<=1i+4+) fi for (=1,j<=mj++) printf("%10.5f", bf] GD); printf(\n"); } SflushallQ; 155 el; while (t) ( printf("Co sua ma tran khong(c/k)?"); scanf("%c", &tl); if (toupper(tl}=='C!) ( print{("Cho chi so hang can sua : "); scanf("%d", &i); print{('Cho chi so cot can sua: "); seanf("%d",&j); print{('b[Yd] [Yd] = "i j); scanf("%f", &bfi] fi); } if (toupper(th}=='K)) =0; } prinf[“Ma tran b ban dau"); printfff"\w"); đồr (=l;i<=lit+) ( for G=Ljs=mjt+) print{("%10.5f",bfi] fj); pring("\n"); } prinfWf"w"); /#ồr (i=l;i<=n;i++) đor 0=1;j<=m;j++) t efi] fi]=0; Sor (k=1;k<=l;k++) cli G]= elif Li] + ali] [k] *b(k] Li]:. Phép biến đổi tuyến tính trong không gian n chiều Giữa ma trận và các phép biến đối tuyến tính trong không gian (đại số) có một mối liên hệ mật thiết.

Một phần tử của không gian n chiều có thể được mô tả bằng một vectơ, hay viết dưới dạng ma trận cột. Xét hai vectơ: Xa =[XIsXsXa,.vXa hs Yu= [Yisys.vmÏŸ Với phép biến đổi: AX=Y Voi A là ma trận cỡ mxn được gọi là phép biến đổi tuyến tính từ vectơ n chiều sang vectơ m chiều. Khi m = n đơn giản là ta có một phép chuyển tọa độ. Nếu trong không gian 2 hoặc 3 chiều với các tọa độ Descartes thì A chính là các ma trận chuyển đồi.

Ở trường hợp đơn giản, A có thể là ma trận cosine chỉ phương khi thực hiện phép quay giữa hai hệ tọa độ, có thể là ma trận với một phan tử duy nhất khác không (các ma trận cơ bản) khi thực hiện các phép tịnh tiến các hệ tọa độ theo các trục. Một hệ cơ sở của không gian n chiều là một tập hợp đúng n vectơ độc lập tuyến tính. 157 Ví dụ: Ta có thể chọn các vectơ đơn vị e; làm hệ cơ sở với vectơ X bất kỳ: X =ciei + cạe;†. Tích vô hướng của hai vectơ: X = [x, iãzaiŠi ] T Y= [yizys.Yn r 0 Được dinh nghia: X.Y =Y™X = Š”x;y; (trong không gian Euclide) 1 Độ dài hay module của vectơ X ký hiệu |X| duge tinh: |X| =vxT.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ