Hệ phương trình tuyến tính
Hệ phương trình tuyến tính là một tập hợp gồm m phương trình tuyến tính với n ẩn. Giải hệ là tìm các giá trị có thể thay vào n ẩn sao cho mọi phương trình đều đúng.
Định nghĩa hệ phương trình tuyến tính
Chắc hẳn bạn đã gặp những hệ phương trình đơn giản dạng
trong đó a11,…,a22, b1, b2 là các số thực cho trước, còn x và y là các ẩn. Hệ phương trình này có thể có số nghiệm khác nhau — vô nghiệm, có một nghiệm hoặc có vô số nghiệm, giống như một phương trình bậc nhất thông thường. Với hệ phương trình tuyến tính, câu hỏi về số nghiệm và cách tìm nghiệm phức tạp hơn so với một phương trình bậc nhất đơn giản.
Định nghĩa hệ phương trình tuyến tính:
trong đó a11, …, amn, b1, …, bm là các số thực. Hệ này gọi là hệ m phương trình tuyến tính với n ẩn x1, …, xn và các hệ số a11, …, amn. Một ví dụ cụ thể về hệ phương trình tuyến tính có thể như sau:
Nhưng nếu có hệ số aij nào âm thì người ta thường viết dưới dạng:
Tuy vậy vẫn có a12 = −2 và a24 = −10.
Cách viết dạng ma trận
Có thể chuyển hệ này sang dạng ma trận. Ta định nghĩa 3 ma trận: một cho các hệ số, một cho vế phải của các phương trình và một cho chính các ẩn. Các ma trận có dạng:
Ma trận A chứa các hệ số của các phương trình ban đầu và gọi là “ma trận hệ số”, ma trận b chứa các vế phải, còn ma trận x chứa các ẩn. Khi đó có thể viết cả hệ phương trình thành một phương trình
Phương trình này có nghĩa, vì vế trái là tích của hai ma trận, vế phải là một ma trận, và kích thước của chúng khớp nhau. Ta thử nhân vế trái. Nhân ma trận cỡ m × n với ma trận cỡ n × 1 thì được ma trận cỡ m × 1, tức là có m dòng và 1 cột. Đến đây vẫn ổn.
Bây giờ thực hiện thuật toán nhân ma trận thông thường, bắt đầu với dòng thứ nhất của ma trận A và cột thứ nhất của ma trận x (ma trận này chỉ có một cột). Ta được:
Tổng này là phần tử đầu tiên của ma trận mới, tức là giá trị b1. Thay tất cả vào phương trình, ta có:
Ta được đúng phương trình thứ nhất của hệ. Làm tương tự với các dòng còn lại. Ta định nghĩa thêm ma trận bổ sung của hệ: đó là ma trận hệ số được ghép thêm ma trận b như sau:
Tiếp theo ta quan tâm đến hạng của ma trận bổ sung này. Kí hiệu hạng của ma trận hệ số (chưa bổ sung) là rank(A), hạng của ma trận bổ sung là rank(A|b). Hai hạng này liên hệ với nhau thế nào? Khi ghép thêm cột b vào ma trận A, có hai khả năng: nếu cột mới là tổ hợp tuyến tính của các cột của ma trận A thì hạng không đổi; nếu không phải tổ hợp tuyến tính thì hạng tăng thêm 1.
Định lí Kronecker – Capelli
Hạng của ma trận bổ sung quan trọng vì có định lí sau, gọi là định lí Kronecker – Capelli: Hệ phương trình Ax = b có nghiệm khi và chỉ khi hạng của ma trận hệ số bằng hạng của ma trận bổ sung: rank(A) = rank(A|b).
Ta thử chứng minh định lí này ít nhất theo một chiều — nếu x = β là nghiệm của phương trình Ax = b thì rank(A) = rank(A|b). Muốn hai hạng này bằng nhau thì cột b phải là tổ hợp tuyến tính của các cột của ma trận A. Ta viết cụ thể ra. Ma trận β có dạng:
Ta khẳng định rằng nếu thay x1 bằng β1, v.v., thì mọi phương trình của hệ đều đúng:
Bây giờ viết lại các phương trình một chút. Nhìn vào cột thứ nhất, ta thấy ở đó luôn có các giá trị a11, a21, …, am1, được nhân với cùng một giá trị β1. Nếu tách cột này thành một ma trận riêng, ta có thể đặt nhân tử chung β1 ra trước ma trận, và được:
Viết lại cả hệ theo cách này:
Muốn đẳng thức này đúng thì ma trận ở vế phải phải là tổ hợp tuyến tính của các ma trận cột ở vế trái, với các hệ số là β1, …, βn.
Như vậy ta đã chứng minh được: nếu ma trận β là nghiệm của hệ phương trình thì vế phải của hệ, tức là ma trận b, phải là tổ hợp tuyến tính của các cột của ma trận hệ số. Mà nếu cột của ma trận b là tổ hợp tuyến tính của các cột của ma trận A thì ma trận A phải có cùng hạng với ma trận (A|b).
Đồng thời, nếu rank(A) = rank(A|b) = k và k bằng số ẩn, tức là k = n, thì hệ có nghiệm duy nhất. Nếu k < n thì hệ có vô số nghiệm, và để viết các nghiệm cần n − k tham số.
Các phép biến đổi sơ cấp trên dòng
Từ phương trình trên cũng thấy rằng nếu thực hiện các phép biến đổi sơ cấp trên dòng của ma trận (A|b) thì nghiệm của hệ không thay đổi. Nếu cộng dòng thứ nhất vào dòng thứ hai, ta được phương trình:
Viết chi tiết dòng thứ hai, ta được:
Phá ngoặc:
Sắp xếp lại một chút:
Trong ngoặc thứ nhất thực chất là dòng thứ nhất, còn trong ngoặc thứ hai là dòng thứ hai ban đầu. Ta biết dòng thứ nhất bằng b1 và dòng thứ hai bằng b2 – điều này có từ các phương trình ban đầu. Vì vậy có thể thay ngoặc thứ nhất bằng b1 và ngoặc thứ hai bằng b2:
Tương tự, có thể nhân cả một dòng với hằng số c ≠ 0 mà không làm thay đổi hệ phương trình. Nhưng chú ý rằng không được thực hiện các phép biến đổi trên cột.
Hệ có nghiệm duy nhất
Qua ví dụ, ta xem cách giải một hệ có nghiệm duy nhất. Cho hệ phương trình:
Ma trận A có dạng:
Bây giờ tính hạng của ma trận này:
Ta thấy rank(A) = 3. Từ đó suy ra rank(A|b) = 3, vì ma trận cỡ 3 × 4 có hạng không vượt quá 3. Hệ có 3 ẩn, nên có nghiệm duy nhất. Tìm nghiệm đó bằng cách nào?
Phương pháp khử Gauss
Phương pháp khử Gauss là biến đổi ma trận bổ sung của hệ về dạng bậc thang. Khi đưa ma trận về dạng bậc thang, ta sẽ tìm được giá trị của một ẩn. Có giá trị của một ẩn rồi, ta lần lượt thay giá trị đó vào các phương trình khác.
Ma trận (A|b) có dạng:
Ta đưa nó về dạng bậc thang. Thực hiện các phép biến đổi giống như ở bước trước, chỉ khác là lần này áp dụng cả cho cột thứ tư:
Vì ta chỉ dùng các phép biến đổi sơ cấp trên dòng, ma trận này mô tả một hệ phương trình tương đương — hệ có cùng tập nghiệm. Viết lại hệ từ dạng ma trận sang dạng thông thường, dùng các hệ số của ma trận cuối cùng:
Bắt đầu từ phương trình cuối: 78x3 = 312. Giá trị của x3 phải bằng bao nhiêu? Đây là một phương trình bậc nhất đơn giản, nên
Ta đã có giá trị của ẩn đầu tiên, x3. Thay giá trị này vào phương trình thứ hai, ta được phương trình:
Cuối cùng thay cả hai giá trị vừa tìm được vào phương trình thứ nhất:
Giá trị của ẩn x1 bằng 2. Như vậy ta đã có nghiệm đầy đủ: x = (x1; x2; x3) = (2; 5; 4). Như ta thấy, phương pháp khử Gauss là một cách giải hệ phương trình tuyến tính đơn giản nhưng hiệu quả.
Hệ có vô số nghiệm
Nếu rank(A) = rank(A|b) = k và k nhỏ hơn số ẩn, k < n, thì hệ có vô số nghiệm. Xét một ví dụ đơn giản:
Ta thấy phương trình thứ hai bằng 3 lần phương trình thứ nhất. Nhân phương trình thứ nhất với −3 rồi cộng vào dòng thứ hai, ta được:
Lúc này số ẩn bằng 2, n = 2, hạng của ma trận hệ số bằng 1, rank(A) = 1, và hạng của ma trận bổ sung cũng bằng 1, rank(A|b) = 1. Vì k < n nên hệ có vô số nghiệm. Tìm các nghiệm đó bằng cách nào?
Xét các phương trình. Phương trình thứ hai đúng với mọi x1, x2, nên ta chỉ cần quan tâm đến phương trình thứ nhất. Thực ra mọi cặp x1, x2 thoả mãn phương trình thứ nhất tạo thành tập nghiệm của hệ. Vì vậy ta giải phương trình 4x1 + x2 = 5, biến đổi về dạng x2 = 5 − 4x1.
Tiếp theo ta dùng một tham số. Chọn tham số t. Ta cố biểu diễn cặp x1, x2 theo tham số t để có thể nói, chẳng hạn, mọi cặp dạng (t; t + 2) đều là nghiệm của hệ, tức là các cặp như (1; 3) hay (14; 16). Ý tưởng là biểu diễn giá trị của một ẩn theo một ẩn khác, để biết rằng khi x1 bằng bao nhiêu đó thì x2, chẳng hạn, lớn gấp 3 lần. Ta chọn x1 làm điểm xuất phát.
Đặt t = x1. Nếu ẩn x1 có giá trị t thì ẩn x2 có giá trị bao nhiêu? Điều đó thấy được từ phương trình trên: x2 = 5 − 4x1. Tức là nếu x1 = t thì x2 = 5 − 4t. Vậy mọi cặp dạng (t; 5 − 4t) đều là nghiệm của hệ phương trình.
Ta có thể kiểm tra lại. Thay t bằng 1, ta có: x1 = 1 và x2 = 5 − 4 · 1 = 1. Thay các giá trị này vào phương trình: 4 · 1 + 1 = 5, đúng.
Thay t bằng 5, ta có: x1 = 5, x2 = 5 − 4 · 5 = −15. Thay vào phương trình: 4 · 5 − 15 = 5. Đúng.
Nghiệm tổng quát và nghiệm riêng
Nghiệm của hệ phương trình viết theo các tham số gọi là nghiệm tổng quát. Một nghiệm cụ thể, tức là khi thay các tham số bằng những số cụ thể, gọi là nghiệm riêng.
Như vậy trong ví dụ trên: (x1; x2) = (t; 5 − 4t) là nghiệm tổng quát của hệ phương trình, còn (1; 1) và (5; −15) là các nghiệm riêng.
Cho ma trận hệ số A và ma trận bổ sung (A|b) có hạng bằng nhau, rank(A) = rank(A|b) = k. Khi đó để viết nghiệm tổng quát ta cần n − k tham số. Để ý rằng nếu n = k thì ta cần 0 tham số. Đó là trường hợp hệ có nghiệm duy nhất — khi đó không cần tham số nào.
Ví dụ
Giải hệ phương trình tuyến tính sau:
Trước hết ta tính hạng của các ma trận A và (A|b). Đưa ma trận bổ sung về dạng bậc thang, từ đó biết hạng của cả hai ma trận. Bắt đầu biến đổi. (Nhân dòng thứ nhất với 2, sau đó cộng dòng thứ nhất với dòng thứ hai rồi lấy dòng thứ ba trừ đi kết quả này. Tiếp theo lấy dòng thứ hai trừ đi dòng thứ nhất, và cuối cùng chia dòng thứ nhất cho 2 để trở lại như cũ.)
Từ ma trận cuối cùng ta thấy rank(A) = rank(A|b) = k = 2. Số ẩn là n = 4, nên ta cần n − k = 2 tham số. Viết các phương trình theo ma trận cuối cùng:
Từ phương trình thứ hai ta được
Chọn tham số thứ nhất t = x3. Khi đó có thể viết x1 = −6t. Thay vào phương trình thứ nhất:
Đưa vào tham số thứ hai, s = x4. Khi đó có thể viết
Như vậy ta được nghiệm tổng quát của hệ:
Ta thử một vài nghiệm riêng. Chẳng hạn s = t = 0. Khi đó ta được:
ta được các đẳng thức:
Bỏ các số hạng bằng 0 và nhân các phân số, ta được:
Thử một nghiệm riêng khác: s = 2, t = 1. Khi đó ta được:
Thay vào các phương trình:
Biến đổi:
Và cuối cùng ta được:
Có vẻ nghiệm tổng quát tìm được là đúng.
Mục lục: Hệ phương trình tuyến tính, Quy tắc Cramer, Hệ phương trình tuyến tính thuần nhất