static double Determinant3x3(double[,] matrix)
return matrix[0, 0] * (matrix[1, 1] * matrix[2, 2] - matrix[1, 2] * matrix[2, 1])
- matrix[0, 1] * (matrix[1, 0] * matrix[2, 2] - matrix[1, 2] * matrix[2, 0])
+ matrix[0, 2] * (matrix[1, 0] * matrix[2, 1] - matrix[1, 1] * matrix[2, 0]);
static double[,] ReplaceColumn(double[,] matrix, double[] column, int columnIndex)
double[,] tempMatrix = (double[,])matrix.Clone();
for (int i = 0; i < 3; i++)
tempMatrix[i, columnIndex] = column[i];
static void SolveCramer()
double[] B = { 300, 360, 390 };
double detA = Determinant3x3(A);
Console.WriteLine("Matrix is singular. Cramer's method cannot be applied.");
double[] solutions = new double[3];
for (int i = 0; i < 3; i++)
double[,] Ai = ReplaceColumn(A, B, i);
double detAi = Determinant3x3(Ai);
solutions[i] = detAi / detA;
Console.WriteLine("Solution using Cramer's Method:");
Console.WriteLine($"x1 = {solutions[0]}, x2 = {solutions[1]}, x3 = {solutions[2]}");
static double[] GaussianElimination(double[,] matrix, double[] vector)
for (int i = 0; i < n; i++)
for (int k = i + 1; k < n; k++)
double factor = matrix[k, i] / matrix[i, i];
for (int j = i; j < n; j++)
matrix[k, j] -= factor * matrix[i, j];
vector[k] -= factor * vector[i];
double[] solution = new double[n];
for (int i = n - 1; i >= 0; i--)
for (int j = i + 1; j < n; j++)
solution[i] -= matrix[i, j] * solution[j];
solution[i] /= matrix[i, i];
static void SolveGaussianEx1()
double[] B = { 300, 360, 390 };
double[] solution = GaussianElimination(A, B);
Console.WriteLine("Solution using Gaussian Elimination:");
Console.WriteLine($"x1 = {solution[0]}, x2 = {solution[1]}, x3 = {solution[2]}");
static void SolveGaussianEx3()
double[] B = { 1, 3, 2 };
double detA = Determinant3x3(A);
Console.WriteLine("Matrix A is singular. No unique solution exists.");
double[] solution = GaussianElimination(A, B);
Console.WriteLine("Solution for Exercise 3 using Gaussian Elimination:");
Console.WriteLine($"x1 = {solution[0]}, x2 = {solution[1]}, x3 = {solution[2]}");
Console.WriteLine("=== Exercise 1 ===");
Console.WriteLine("\n=== Exercise 3 ===");