#include<iostream>
#include<iomanip>
using namespace std;
int main() {
int n;
cout << "Enter the order of square matrix: ";
cin >> n;
double A[10][10], L[10][10], U[10][10], B[10], Y[10], X[10];
// Input Matrix A
cout << "Enter matrix element:\n";
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
cin >> A[i][j];
}
}
// Input Vector B
cout << "Enter the constant terms: ";
for(int i=0; i<n; i++) {
cin >> B[i];
}
// Initialize L and U
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
if(i==j)
L[i][j] = 1.0;
else
L[i][j] = 0.0;
U[i][j] = 0.0;
}
}
// LU Decomposition
for(int j=0; j<n; j++) {
for(int i=0; i<=j; i++) {
double sum = 0.0;
for(int k=0; k<i; k++)
sum += L[i][k]*U[k][j];
U[i][j] = A[i][j] - sum;
}
for(int i=j+1; i<n; i++) {
double sum = 0.0;
for(int k=0; k<j; k++)
sum += L[i][k]*U[k][j];
L[i][j] = (A[i][j] - sum) / U[j][j];
}
}
// Display L
cout << fixed << setprecision(3);
cout << "\n[L]:\n";
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++)
cout << L[i][j] << " ";
cout << endl;
}
// Display U
cout << "\n[U]:\n";
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++)
cout << U[i][j] << " ";
cout << endl;
}
// Forward Substitution to solve L.Y = B
for(int i=0; i<n; i++) {
double sum = 0.0;
for(int j=0; j<i; j++)
sum += L[i][j] * Y[j];
Y[i] = (B[i] - sum) / L[i][i];
}
// Display Y
cout << "\n[Y]: ";
for(int i=0; i<n; i++)
cout << Y[i] << " ";
cout << endl;
// Backward Substitution to solve U.X = Y
for(int i=n-1; i>=0; i--) {
double sum = 0.0;
for(int j=i+1; j<n; j++)
sum += U[i][j] * X[j];
X[i] = (Y[i] - sum) / U[i][i];
}
// Display X
cout << "\n[X]: ";
for(int i=0; i<n; i++)
cout << X[i] << " ";
cout << endl;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGlvbWFuaXA+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGludCBuOwogICAgY291dCA8PCAiRW50ZXIgdGhlIG9yZGVyIG9mIHNxdWFyZSBtYXRyaXg6ICI7CiAgICBjaW4gPj4gbjsKCiAgICBkb3VibGUgQVsxMF1bMTBdLCBMWzEwXVsxMF0sIFVbMTBdWzEwXSwgQlsxMF0sIFlbMTBdLCBYWzEwXTsKCiAgICAvLyBJbnB1dCBNYXRyaXggQQogICAgY291dCA8PCAiRW50ZXIgbWF0cml4IGVsZW1lbnQ6XG4iOwogICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKSB7CiAgICAgICAgZm9yKGludCBqPTA7IGo8bjsgaisrKSB7CiAgICAgICAgICAgIGNpbiA+PiBBW2ldW2pdOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBJbnB1dCBWZWN0b3IgQgogICAgY291dCA8PCAiRW50ZXIgdGhlIGNvbnN0YW50IHRlcm1zOiAiOwogICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKSB7CiAgICAgICAgY2luID4+IEJbaV07CiAgICB9CgogICAgLy8gSW5pdGlhbGl6ZSBMIGFuZCBVCiAgICBmb3IoaW50IGk9MDsgaTxuOyBpKyspIHsKICAgICAgICBmb3IoaW50IGo9MDsgajxuOyBqKyspIHsKICAgICAgICAgICAgaWYoaT09aikKICAgICAgICAgICAgICAgIExbaV1bal0gPSAxLjA7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIExbaV1bal0gPSAwLjA7CiAgICAgICAgICAgIFVbaV1bal0gPSAwLjA7CiAgICAgICAgfQogICAgfQoKICAgIC8vIExVIERlY29tcG9zaXRpb24KICAgIGZvcihpbnQgaj0wOyBqPG47IGorKykgewogICAgICAgIGZvcihpbnQgaT0wOyBpPD1qOyBpKyspIHsKICAgICAgICAgICAgZG91YmxlIHN1bSA9IDAuMDsKICAgICAgICAgICAgZm9yKGludCBrPTA7IGs8aTsgaysrKQogICAgICAgICAgICAgICAgc3VtICs9IExbaV1ba10qVVtrXVtqXTsKICAgICAgICAgICAgVVtpXVtqXSA9IEFbaV1bal0gLSBzdW07CiAgICAgICAgfQogICAgICAgIGZvcihpbnQgaT1qKzE7IGk8bjsgaSsrKSB7CiAgICAgICAgICAgIGRvdWJsZSBzdW0gPSAwLjA7CiAgICAgICAgICAgIGZvcihpbnQgaz0wOyBrPGo7IGsrKykKICAgICAgICAgICAgICAgIHN1bSArPSBMW2ldW2tdKlVba11bal07CiAgICAgICAgICAgIExbaV1bal0gPSAoQVtpXVtqXSAtIHN1bSkgLyBVW2pdW2pdOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBEaXNwbGF5IEwKICAgIGNvdXQgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDMpOwogICAgY291dCA8PCAiXG5bTF06XG4iOwogICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKSB7CiAgICAgICAgZm9yKGludCBqPTA7IGo8bjsgaisrKQogICAgICAgICAgICBjb3V0IDw8IExbaV1bal0gPDwgIiAiOwogICAgICAgIGNvdXQgPDwgZW5kbDsKICAgIH0KCiAgICAvLyBEaXNwbGF5IFUKICAgIGNvdXQgPDwgIlxuW1VdOlxuIjsKICAgIGZvcihpbnQgaT0wOyBpPG47IGkrKykgewogICAgICAgIGZvcihpbnQgaj0wOyBqPG47IGorKykKICAgICAgICAgICAgY291dCA8PCBVW2ldW2pdIDw8ICIgIjsKICAgICAgICBjb3V0IDw8IGVuZGw7CiAgICB9CgogICAgLy8gRm9yd2FyZCBTdWJzdGl0dXRpb24gdG8gc29sdmUgTC5ZID0gQgogICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKSB7CiAgICAgICAgZG91YmxlIHN1bSA9IDAuMDsKICAgICAgICBmb3IoaW50IGo9MDsgajxpOyBqKyspCiAgICAgICAgICAgIHN1bSArPSBMW2ldW2pdICogWVtqXTsKICAgICAgICBZW2ldID0gKEJbaV0gLSBzdW0pIC8gTFtpXVtpXTsKICAgIH0KCiAgICAvLyBEaXNwbGF5IFkKICAgIGNvdXQgPDwgIlxuW1ldOiAiOwogICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKQogICAgICAgIGNvdXQgPDwgWVtpXSA8PCAiICI7CiAgICBjb3V0IDw8IGVuZGw7CgogICAgLy8gQmFja3dhcmQgU3Vic3RpdHV0aW9uIHRvIHNvbHZlIFUuWCA9IFkKICAgIGZvcihpbnQgaT1uLTE7IGk+PTA7IGktLSkgewogICAgICAgIGRvdWJsZSBzdW0gPSAwLjA7CiAgICAgICAgZm9yKGludCBqPWkrMTsgajxuOyBqKyspCiAgICAgICAgICAgIHN1bSArPSBVW2ldW2pdICogWFtqXTsKICAgICAgICBYW2ldID0gKFlbaV0gLSBzdW0pIC8gVVtpXVtpXTsKICAgIH0KCiAgICAvLyBEaXNwbGF5IFgKICAgIGNvdXQgPDwgIlxuW1hdOiAiOwogICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKQogICAgICAgIGNvdXQgPDwgWFtpXSA8PCAiICI7CiAgICBjb3V0IDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0K