En algebra lineal uno de los métodos más usados para resolver sistemas de tres (3) ecuaciones con tres (3) incógnitas es la famosa "Regla de Cramer".
Veamos el siguiente ejemplo de un sistema de tres (3) ecuaciones con tres (3) incógnitas.
La regla de Cramer consiste en:
1ro.- Hallar el “Determinante de la matriz” que se construye a partir de los coeficientes que multiplican a las incógnitas de las tres ecuaciones (Para nuestro ejemplo x - y - z). Este determinante se denomina ∆.
Por ejemplo:
Para hallar el valor del determinante (∆) se copian las primeras dos (2) filas al final del determinante generando un matriz de cinco (5) filas por tres (3) columnas, para nuestro ejemplo la matriz quedaría de la siguiente forma:
Posteriormente se halla el determinante (∆), el cual es igual a la sumatoria de los productos de las diagonales de tres (3) elementos de izquierda a derecha menos la sumatoria de los productos de las diagonales de tres (3) elementos de derecha a izquierda. Veamos el cálculo según nuestro ejemplo:
2do.- Después de hallar el “Determinante de la matriz” se procede a hallar el determinante de cada variable, para nuestro ejemplo hallaremos ∆x. Para hallar ∆x se sustituye el resultado de las ecuaciones en la columna de la variable que queremos determinar, veamos el ejemplo para hallar ∆x:
Ahora repetimos el mismo procedimiento que usamos para hallar ∆ en ∆x. Copiamos las dos primeras filas al final y la convertimos en una matriz de 5 filas y 3 columnas:
Ahora hallamos ∆x:
En consecuencia al conocer ∆ y ∆x podemos obtener el valor de x,
3ro.- Se repite el proceso para halla ∆y y ∆z. Una vez hallados ambos valores y conociendo el determinante ∆ podemos encontrar los valores de y y z que satisfacen las tres (3) ecuaciones.
En C++ existe la posibilidad de elaborar arreglos de múltiples dimensiones, en consecuencia se podría elaborar un programa que emule la Regla de Cramer, a continuación les presento una versión rápida del mismo:
PROGRAMA
/* Programa para resolver sistemas de 3 ecuaciones
con 3 incógnitas aplicando el método de Cramer
elaborado por Carlos Ferrer
rev 24 de Nov de 2025
*/
#include <iostream>
#include <locale.h>
using namespace std;
main()
{
int fila,col,i,j,k,m,fin;
int ma [4][5]={0};
int aux [6][4]={0};
int delta,deltax,deltay,deltaz;
string frase;
char delt=30;
setlocale (LC_ALL,"spanish");
cout <<"Método de Cramer resolver sistemas de tres ecuaciones"<<endl;
cout <<"con tres incógnitas"<<endl<<endl;
// Leemos los coeficientes de las tres ecuaciones
for (i=1;i<=3;i=i+1)
{
for (j=1;j<=4;j=j+1)
{
if (j==1)
{
frase="el coeficiente de la variable X";
}
if (j==2)
{
frase="el coeficiente de la variable Y";
}
if (j==3)
{
frase="el coeficiente de la variable Z";
}
if (j==4)
{
frase="el valor del resultado";
}
cout <<endl<<endl<<"Ingrese "<<frase<<" de la"<<endl;
cout <<"ecuación Nro. "<<i <<"= ";
cin >>ma[i][j];
system("cls");
// Presentamos las ecuaciones en la medida que se escriben
for (m=1;m<=i;m=m+1)
{
cout <<endl;
if (m==i)
{
fin=j;
}
else
{
fin=4;
}
for (k=1;k<=fin;k=k+1)
{
if(k==1)
{
cout <<ma[m][k]<<"x";
}
if(k==2 and ma[m][k]>0)
{
cout <<"+"<<ma[m][k]<<"y";
}
if(k==2 and ma[m][k]<0)
{
cout <<ma[m][k]<<"y";
}
if(k==3 and ma[m][k]>0)
{
cout <<"+"<<ma[m][k]<<"z";
}
if(k==3 and ma[m][k]<0)
{
cout <<ma[m][k]<<"z";
}
if(k==4)
{
cout <<"="<<ma[m][k];
}
}
}
}
}
cout <<endl<<endl;
//Imprimimos la matriz ingresada
for (fila=1;fila<=3;fila=fila+1)
{
cout <<"|";
for (col=1;col<=3;col=col+1)
{
cout <<ma[fila][col];
if (ma[fila][col]<0)
{
cout <<" ";
}
else
{
cout <<" ";
}
}
cout <<"|";
cout<<endl;
}
// Copiamos la matriz ingresada en la matriz aux
for (fila=1;fila<=3;fila=fila+1)
{
for (col=1;col<=3;col=col+1)
{
aux[fila][col]=ma[fila][col];
}
}
// Copiamos las dos primeras filas en las filas cuatro y cinco
for (fila=1;fila<=2;fila=fila+1)
{
for (col=1;col<=3;col=col+1)
{
aux[fila+3][col]=aux[fila][col];
}
}
// Calculamos delta
delta=0;
col=1;
for (fila=1;fila<=3;fila=fila+1)
{
delta=delta+ ((aux[fila][1]*aux[fila+1][2]*aux[fila+2][3])-(aux[fila][3]*aux[fila+1][2]*aux[fila+2][1]));
}
// Copiamos la matriz original en la matriz aux
for (fila=1;fila<=3;fila=fila+1)
{
for (col=1;col<=3;col=col+1)
{
aux[fila][col]=ma[fila][col];
}
}
//Copiamos los resultados en la primera columna
aux[1][1]=ma[1][4];
aux[2][1]=ma[2][4];
aux[3][1]=ma[3][4];
// Repetimos las dos primeras filas en las filas cuatro y cinco
for (fila=1;fila<=2;fila=fila+1)
{
for (col=1;col<=3;col=col+1)
{
aux[fila+3][col]=aux[fila][col];
}
}
// Calculamos delta x
deltax=0;
col=1;
for (fila=1;fila<=3;fila=fila+1)
{
deltax=deltax+ ((aux[fila][1]*aux[fila+1][2]*aux[fila+2][3])-(aux[fila][3]*aux[fila+1][2]*aux[fila+2][1]));
}
// Copiamos la matriz original en la matriz aux
for (fila=1;fila<=3;fila=fila+1)
{
for (col=1;col<=3;col=col+1)
{
aux[fila][col]=ma[fila][col];
}
}
//Copiamos los resultados en la segunda columna
aux[1][2]=ma[1][4];
aux[2][2]=ma[2][4];
aux[3][2]=ma[3][4];
// Repetimos las dos primeras filas en las filas cuatro y cinco
for (fila=1;fila<=2;fila=fila+1)
{
for (col=1;col<=3;col=col+1)
{
aux[fila+3][col]=aux[fila][col];
}
}
// Calculamos delta y
deltay=0;
col=1;
for (fila=1;fila<=3;fila=fila+1)
{
deltay=deltay+ ((aux[fila][1]*aux[fila+1][2]*aux[fila+2][3])-(aux[fila][3]*aux[fila+1][2]*aux[fila+2][1]));
}
// Copiamos la matriz original en la matriz aux
for (fila=1;fila<=3;fila=fila+1)
{
for (col=1;col<=3;col=col+1)
{
aux[fila][col]=ma[fila][col];
}
}
//Copiamos los resultados en la tercera columna
aux[1][3]=ma[1][4];
aux[2][3]=ma[2][4];
aux[3][3]=ma[3][4];
// Repetimos las dos primeras filas en las filas cuatro y cinco
for (fila=1;fila<=2;fila=fila+1)
{
for (col=1;col<=3;col=col+1)
{
aux[fila+3][col]=aux[fila][col];
}
}
// Calculamos delta z
deltaz=0;
col=1;
for (fila=1;fila<=3;fila=fila+1)
{
deltaz=deltaz+ ((aux[fila][1]*aux[fila+1][2]*aux[fila+2][3])-(aux[fila][3]*aux[fila+1][2]*aux[fila+2][1]));
}
// Presentamos resultados
cout <<endl<<delt<<"="<<delta<<endl;
cout <<delt<<"x="<<deltax<<endl;
cout <<delt<<"y="<<deltay<<endl;
cout <<delt<<"z="<<deltaz<<endl;
cout <<endl<<"El valor de la variable x="<<deltax/delta<<endl;
cout <<"El valor de la variable y="<<deltay/delta<<endl;
cout <<"El valor de la variable z="<<deltaz/delta<<endl;
}