Mục lục bài viết
Cập Nhật: 2021-12-12 06:42:04,Bạn Cần tương hỗ về Thuật toán Gauss Jordan để Giải hệ phương trình tuyến tính Ax = b. Bạn trọn vẹn có thể lại phản hồi ở cuối bài để Admin được tương hỗ.
Lý thuyết:Trongđại số tuyến tính,phép khử Gausslà mộtthuật toáncó thể được sử dụng để tìm nghiệm của mộthệ phương trình tuyến tính, tìm hạng(hayrank) của mộtma trận, để tínhma trận nghịch đảocủa một ma trận vuông khả nghịch. Phép khử Gauss được đặt theo tên của nhà toán học Đức làCarl Friedrich Gauss.Các thao tác cơ bản trên hàngđược sử dụng trong suốt thuật toán. Thuật toán có 2 phần, mỗi phần đều xem xét những hàng của ma trận theo thứ tự. Phần đầu biến ma trận vềdạng hàng bậc thangtrong khi phần thứ hai biến ma trận vềdạng hàng bậc thang tối giản. Phần đầu là đủ cho nhiều vận dụng.Một thuật toán khác tương quan làphép khử GaussJordan, đưa ma trận về dạng hàng bậc thang tối giản trong một lần duyệt.Giả sử mục tiêu là tìm và miêu tả nghiệm (nếu có) củahệ phương trình tuyến tínhsau:Thuật toán là như sau: khửtrong toàn bộ những phương trình phía dưới, tiếp sau đó khủtrong toàn bộ những phương trình phía dưới. Việc này sẽ làm hệ trở thànhdạng tam giác. Sau đó, sử dụng phép thay thế ngược, những ẩn số trọn vẹn có thể được giải.Trong ví dụ, ta khửtừbằng cộngvào, và tiếp sau đó khửtừbằng cộngvào. Công thức hóa:Kết quả là:Bây giờ ta khửtừbằng cách cộngvào:Kết quả là:Kết quả này là một hệ phương trình tuyến tính dưới dạng tam giác, do đó phần 1 của thuật toán là xong.Phần thứ hai, thay thế ngược, là giải cho những ẩn số trong thứ tự ngược lại. Do đó, toàn bộ chúng ta trọn vẹn có thể thuận tiện và đơn thuần và giản dị thấy rằngSau đó, thếvào, giải thuận tiện và đơn thuần và giản dị để cóKế tiếp,vàcó thể được thế vào, trọn vẹn có thể được giải để cóDo vậy, hệ phương trình đã được giải.Thuật toán này dùng được trên mọi hệ phương trình tuyến tính. Có thể là hệ không thể được đưa về dạng tam giác, tuy nhiên vẫn đang còn tối thiểu một lời giải có mức giá trị: ví dụ, nếukhông có trongvàsau bước thứ 1 ở trên, thuật toán sẽ không còn thể đưa hệ về dạng tam giác. Tuy nhiên, nó vẫn đưa hệ vềdạng bậc thang. Trong trường hợp này, hệ không tồn tại nghiệm duy nhất, và sẽ đã có được vô số nghiệm, vì nó có tối thiểu mộtbiến tự do.Trong thực tiễn, người ta thường không sử dụng hệ phương trình không mà sử dụngma trận mở rộng(thuận tiện và đơn thuần và giản dị giải trên máy tính). Sau đấy là thuật toán của phép khử Gauss vận dụng trênma trận mở rộngcủa hệ phía trên, khởi đầu với:mà, ở đầu cuối của phần 1 của thuật toán ta sẽ đã có được:Đó làdạng bậc thang.Cuối cùng của thuật toán, ta có đượcĐó làdạng bậc thang tối giản.Phép khử Gauss trên một ma trậnn×ncần khoảng chừng 2n3/ 3 phép tính toán. Do đó nó cóđộ phức tạplà.Thuật toán này trọn vẹn có thể được sử dụng trên máy tính với hàng nghìn hệ phương trình và ẩn số. Tuy nhiên, phương pháp này sẽ không thích thích phù hợp với hệ có hàng triệu phương trình. Những hệ lớn như vậy thường được giải bằng cácphương pháp tái diễn(iterative method). Có những phương pháp đặc biệt quan trọng nếu như thông số theo một khuôn mẫu nào đó.Phép khử Gauss trọn vẹn có thể được tiến hành trên bất cứtrườngnào.Phép khử Gauss làổn định về phương pháp sốcho những ma trậndiagonally dominanthaypositive-definite. Cho ma trận tổng quát, phép khử Gauss là ổn định nếu như sử dụngpartial pivoting.[1]Video:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GiaiHeKhuGauss
class Gauss
int n;
double[,] a;
double[] x;
public void Nhap()
Console.Write(“So luong phuong trinh cua he ? “);
n = int.Parse(Console.ReadLine());
a = new double[n, n + 1];
x = new double[n];
Console.WriteLine(“Nhap cac phan tu theo thu tu dong: “);
for (int i = 0; i < n; i++)
Console.Write(“Dong thu “ + (i + 1) + ” : “);
//nhap cac phan tu cach nhau bang phim Tab
string[] tmp = Console.ReadLine().Split(‘t’);
for (int j = 0; j <= n ; j++)
a[i, j] = double.Parse(tmp[j]);
public void InHe()
for (int i = 0; i < n; i++)
for (int j = 0; j <= n; j++)
Console.Write(“0,-10”,a[i, j]);
Console.WriteLine();
public void SapThuTu()
//sap xep thu tu cac phuong trinh
for (int i = 0; i < n-1; i++)
for (int k = i+1; k < n; k++)
if (a[i, i] < a[k, i])
for (int j = 0; j <= n ; j++)
double t = a[i, j];
a[i, j] = a[k, j];
a[k, j] = t;
public void KhuGauss()
//muc dich sap thu tu de tim ma tran bac thang cho de
//tim ma tran bac thang la phep khu gauss
for (int i = 0; i < n-1; i++)
for (int k = i+1; k < n; k++)
double t = a[k,i] / a[i,i];
for (int j = 0; j <= n ; j++)
a[k, j] = a[k, j] – t * a[i, j];
public void GiaiHe()
for (int i = n-1; i >= 0 ; i–)
x[i] = a[i, n];
for (int j = 0; j <n; j++)
if (i != j)
x[i] = x[i] – a[i, j] * x[j];
x[i] = x[i] / a[i, i];
for (int i = 0; i < n; i++)
Console.WriteLine( x[i]);
class Program
static void Main(string[] args)
Console.OutputEncoding = Encoding.UTF8;
Console.WriteLine(“Giải hệ phương trình tuyến tính bằng phép khử Gauss”);
Gauss gauss = new Gauss();
gauss.Nhap();
Console.WriteLine(“Hệ phương trình vừa nhập: “);
gauss.InHe();
Console.WriteLine(“Sắp thứ tự hệ: “);
gauss.SapThuTu();
gauss.InHe();
Console.WriteLine(“Hệ sau khoản thời hạn khử Gauss: “);
gauss.KhuGauss();
gauss.InHe();
Console.WriteLine(“Kết quả tìm nghiệm của hệ: “);
gauss.GiaiHe();
Console.ReadLine();
– Một số Keywords tìm kiếm nhiều : ” đoạn Clip hướng dẫn Thuật toán Gauss Jordan để Giải hệ phương trình tuyến tính Ax = b tiên tiến và phát triển nhất , Share Link Cập nhật Thuật toán Gauss Jordan để Giải hệ phương trình tuyến tính Ax = b “.
Quý quý khách trọn vẹn có thể để lại phản hồi nếu gặp yếu tố chưa hiểu nhé.
#Thuật #toán #Gauss #Jordan #để #Giải #hệ #phương #trình #tuyến #tính