Diễn đàn hỏi đáp học thuật - Download Tài Liệu Miễn Phí
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Diễn đàn hỏi đáp học thuật - Download Tài Liệu Miễn PhíĐăng Nhập

VỮNG TIN - TIẾP BƯỚC - THÀNH CÔNG


descriptionThuật toán Crout phân rã LU EmptyThuật toán Crout phân rã LU

more_horiz
Thuật toán Crout phân rã LU


Quá trình chuyển hoá ma trận ban đầu thành tích hai ma trân tam giác dựa vào phép khử Gauss được thực hiện bằng các phép nhân ma trận. Thuật toán này được gọi là thuật toán Crout. Quá trình Crout bao gồm nhiều bước hồi quy. Nếu ma trận có cấp ta cần bước. Thuật toán được thể hiện cụ thể như sau:
Thuật toán Crout phân rã LU Lu10

Thông qua bước hồi quy ta được với là ma trận tam giác dưới và là ma trận tam giác trên.

Code:

void PhanRaLU(float A[max][max], float L[max][max], float U[max][max], int n) {
   for(int k =0; k<n; k++) {
      U[k][k] = A[k][k];
      L[k][k] = 1;
      for(int i=k+1; i<n; i++) {
         L[i][k] = A[i][k]/U[k][k];
         U[k][i] = A[k][i];
      }
      for(i = k+1; i<n; i++)
      for(int j = k+1; j<n; j++)
         A[i][j] = A[i][j]-L[i][k]*U[k][j];
   }
}


BÀI TẬP:

Thuật toán Crout phân rã LU Cau_1_10

Thuật toán Crout phân rã LU Cau_2_10

descriptionThuật toán Crout phân rã LU EmptyThuật toán Crout phân rã ma trận A = LU viết bằng Mathematica 5.1

more_horiz
Thuật toán Crout phân rã ma trận A = LU viết bằng Mathematica 5.1

Code:

Crout[A_] := Module[{i, j, k, n, L, U},
         U = A;
         n = Length[A];
         L = IdentityMatrix[n];
         For[k = 1, k < n, k++,
              For[i = k + 1, i ≤ n, i++,
                   L[[i, k]] = U[[i, k]]/U[[k, k]];
                   U[[i, k]] = 0;
                ];
              For[i = k + 1, i ≤ n, i++,
                   For[j = k + 1, j ≤ n, j++,
                       U[[i, j]] = U[[i, j]] - L[[i, k]]*U[[k, j]];
                    ];   
                ];
              For[i = k + 1, i < n, i++,
                   U[[i, k]] = 0;
                ];
              Print[" = ", MatrixForm[L], MatrixForm[U]];
           ];
         Return[{L, U}];
      ];
Clear[A, R];
A = {{2, 1, 1, 1}, {2, -1, 2, 3}, {4, 6, 5, 2}, {-2, 1, -2, 2}};
Print["A= ", MatrixForm[A]];
Crout[A];

Thuật toán Crout phân rã LU Lu110
privacy_tip Permissions in this forum:
Bạn không có quyền trả lời bài viết
power_settings_newLogin to reply