# System of Linear Equations in three variables using Cramer’s Rule

Cramer’s rule : In linear algebra, Cramer’s rule is an explicit formula for the solution of a system of linear equations with as many equations as unknown variables. It expresses the solution in terms of the determinants of the coefficient matrix and of matrices obtained from it by replacing one column by the column vector of right-hand-sides of the equations. Cramer’s rule is computationally inefficient for systems of more than two or three equations.

Suppose we have to solve these equations:
a1x + b1y + c1z = d1
a2x + b2y + c2z = d2
a3x + b3y + c3z = d3
Following the Cramer’s Rule, first find the determinant values of all four matrices.    There are 2 cases:
Case I : When D ≠ 0 In this case we have,
x = D1/D
y = D2/D
z = D3/D
Hence unique value of x, y, z will be obtained.
Case II : When D = 0
(a)  When at least one of D1, D2 and D3 is non zero: Then no solution is possible and hence system of equations will be inconsistent.
(b)  When D = 0 and D1 = D2 = D3 = 0: Then the system of equations will be consistent and it will have infinitely many solutions.

Example

Consider the following system of linear equations.
[2x – y + 3z = 9], [x + y + z = 6], [x – y + z = 2]    [x = D1/D = 1], [y = D2/D = 2], [z = D3/D = 3]

Below is the implementation.

## C++

 // CPP program to calculate solutions of linear  // equations using cramer's rule  #include  using namespace std;     // This functions finds the determinant of Matrix  double determinantOfMatrix(double mat)  {      double ans;      ans = mat * (mat * mat - mat * mat)            - mat * (mat * mat - mat * mat)            + mat * (mat * mat - mat * mat);      return ans;  }     // This function finds the solution of system of  // linear equations using cramer's rule  void findSolution(double coeff)  {      // Matrix d using coeff as given in cramer's rule      double d = {          { coeff, coeff, coeff },          { coeff, coeff, coeff },          { coeff, coeff, coeff },      };      // Matrix d1 using coeff as given in cramer's rule      double d1 = {          { coeff, coeff, coeff },          { coeff, coeff, coeff },          { coeff, coeff, coeff },      };      // Matrix d2 using coeff as given in cramer's rule      double d2 = {          { coeff, coeff, coeff },          { coeff, coeff, coeff },          { coeff, coeff, coeff },      };      // Matrix d3 using coeff as given in cramer's rule      double d3 = {          { coeff, coeff, coeff },          { coeff, coeff, coeff },          { coeff, coeff, coeff },      };         // Calculating Determinant of Matrices d, d1, d2, d3      double D = determinantOfMatrix(d);      double D1 = determinantOfMatrix(d1);      double D2 = determinantOfMatrix(d2);      double D3 = determinantOfMatrix(d3);      printf("D is : %lf \n", D);      printf("D1 is : %lf \n", D1);      printf("D2 is : %lf \n", D2);      printf("D3 is : %lf \n", D3);         // Case 1      if (D != 0) {          // Coeff have a unique solution. Apply Cramer's Rule          double x = D1 / D;          double y = D2 / D;          double z = D3 / D; // calculating z using cramer's rule          printf("Value of x is : %lf\n", x);          printf("Value of y is : %lf\n", y);          printf("Value of z is : %lf\n", z);      }      // Case 2      else {          if (D1 == 0 && D2 == 0 && D3 == 0)              printf("Infinite solutions\n");          else if (D1 != 0 || D2 != 0 || D3 != 0)              printf("No solutions\n");      }  }     // Driver Code  int main()  {         // storing coefficients of linear equations in coeff matrix      double coeff = {          { 2, -1, 3, 9 },          { 1, 1, 1, 6 },          { 1, -1, 1, 2 },      };         findSolution(coeff);      return 0;  }

## Java

 // Java program to calculate solutions of linear  // equations using cramer's rule  class GFG  {     // This functions finds the determinant of Matrix  static double determinantOfMatrix(double mat[][])  {      double ans;      ans = mat * (mat * mat - mat * mat)          - mat * (mat * mat - mat * mat)          + mat * (mat * mat - mat * mat);      return ans;  }     // This function finds the solution of system of  // linear equations using cramer's rule  static void findSolution(double coeff[][])  {      // Matrix d using coeff as given in cramer's rule      double d[][] = {          { coeff, coeff, coeff },          { coeff, coeff, coeff },          { coeff, coeff, coeff },      };             // Matrix d1 using coeff as given in cramer's rule      double d1[][] = {          { coeff, coeff, coeff },          { coeff, coeff, coeff },          { coeff, coeff, coeff },      };             // Matrix d2 using coeff as given in cramer's rule      double d2[][] = {          { coeff, coeff, coeff },          { coeff, coeff, coeff },          { coeff, coeff, coeff },      };             // Matrix d3 using coeff as given in cramer's rule      double d3[][] = {          { coeff, coeff, coeff },          { coeff, coeff, coeff },          { coeff, coeff, coeff },      };         // Calculating Determinant of Matrices d, d1, d2, d3      double D = determinantOfMatrix(d);      double D1 = determinantOfMatrix(d1);      double D2 = determinantOfMatrix(d2);      double D3 = determinantOfMatrix(d3);      System.out.printf("D is : %.6f \n", D);      System.out.printf("D1 is : %.6f \n", D1);      System.out.printf("D2 is : %.6f \n", D2);      System.out.printf("D3 is : %.6f \n", D3);         // Case 1      if (D != 0)       {          // Coeff have a unique solution. Apply Cramer's Rule          double x = D1 / D;          double y = D2 / D;          double z = D3 / D; // calculating z using cramer's rule          System.out.printf("Value of x is : %.6f\n", x);          System.out.printf("Value of y is : %.6f\n", y);          System.out.printf("Value of z is : %.6f\n", z);      }             // Case 2      else      {          if (D1 == 0 && D2 == 0 && D3 == 0)              System.out.printf("Infinite solutions\n");          else if (D1 != 0 || D2 != 0 || D3 != 0)              System.out.printf("No solutions\n");      }  }     // Driver Code  public static void main(String[] args)  {      // storing coefficients of linear      // equations in coeff matrix      double coeff[][] = {{ 2, -1, 3, 9 },                          { 1, 1, 1, 6 },                          { 1, -1, 1, 2 }};      findSolution(coeff);      }  }      // This code is contributed by PrinciRaj1992

## C#

 // C# program to calculate solutions of linear  // equations using cramer's rule  using System;     class GFG  {     // This functions finds the determinant of Matrix  static double determinantOfMatrix(double [,]mat)  {      double ans;      ans = mat[0,0] * (mat[1,1] * mat[2,2] - mat[2,1] * mat[1,2])          - mat[0,1] * (mat[1,0] * mat[2,2] - mat[1,2] * mat[2,0])          + mat[0,2] * (mat[1,0] * mat[2,1] - mat[1,1] * mat[2,0]);      return ans;  }     // This function finds the solution of system of  // linear equations using cramer's rule  static void findSolution(double [,]coeff)  {      // Matrix d using coeff as given in cramer's rule      double [,]d = {          { coeff[0,0], coeff[0,1], coeff[0,2] },          { coeff[1,0], coeff[1,1], coeff[1,2] },          { coeff[2,0], coeff[2,1], coeff[2,2] },      };             // Matrix d1 using coeff as given in cramer's rule      double [,]d1 = {          { coeff[0,3], coeff[0,1], coeff[0,2] },          { coeff[1,3], coeff[1,1], coeff[1,2] },          { coeff[2,3], coeff[2,1], coeff[2,2] },      };             // Matrix d2 using coeff as given in cramer's rule      double [,]d2 = {          { coeff[0,0], coeff[0,3], coeff[0,2] },          { coeff[1,0], coeff[1,3], coeff[1,2] },          { coeff[2,0], coeff[2,3], coeff[2,2] },      };             // Matrix d3 using coeff as given in cramer's rule      double [,]d3 = {          { coeff[0,0], coeff[0,1], coeff[0,3] },          { coeff[1,0], coeff[1,1], coeff[1,3] },          { coeff[2,0], coeff[2,1], coeff[2,3] },      };         // Calculating Determinant of Matrices d, d1, d2, d3      double D = determinantOfMatrix(d);      double D1 = determinantOfMatrix(d1);      double D2 = determinantOfMatrix(d2);      double D3 = determinantOfMatrix(d3);      Console.Write("D is : {0:F6} \n", D);      Console.Write("D1 is : {0:F6} \n", D1);      Console.Write("D2 is : {0:F6} \n", D2);      Console.Write("D3 is : {0:F6} \n", D3);         // Case 1      if (D != 0)       {          // Coeff have a unique solution. Apply Cramer's Rule          double x = D1 / D;          double y = D2 / D;          double z = D3 / D; // calculating z using cramer's rule          Console.Write("Value of x is : {0:F6}\n", x);          Console.Write("Value of y is : {0:F6}\n", y);          Console.Write("Value of z is : {0:F6}\n", z);      }             // Case 2      else     {          if (D1 == 0 && D2 == 0 && D3 == 0)              Console.Write("Infinite solutions\n");          else if (D1 != 0 || D2 != 0 || D3 != 0)              Console.Write("No solutions\n");      }  }     // Driver Code  public static void Main()  {      // storing coefficients of linear      // equations in coeff matrix      double [,]coeff = {{ 2, -1, 3, 9 },                          { 1, 1, 1, 6 },                          { 1, -1, 1, 2 }};      findSolution(coeff);      }  }      // This code is contributed by 29AjayKumar

Output:
D is : -2.000000
D1 is : -2.000000
D2 is : -4.000000
D3 is : -6.000000
Value of x is : 1.000000
Value of y is : 2.000000
Value of z is : 3.000000


GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : princiraj1992, 29AjayKumar

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.