//Variables
int Matriz0[3][3]; // Matriz 3X3 base
int Matriz1[3][3]; //Copia para calculos Matriz 3X3 base
int Matriz2[3][5]; //copia para calculos Matriz 3X5 para determinante A
int Resultado [3];
double Determinante; //Valor o calculo de determinante base
double Diagonal1; //Valor o calculo de determinante para A
double Diagonal2; //Valor o calculo de determinante para B
double Determinante1; //Valor o calculo de determinante para C
double A; //Valor de la variable
int i; //Variable global para filas
int j; //Variable global para columnas
void setup() {
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.end(); //Detener la comuniacion con el puerto serial para borrar la informacion en memoria disponible
Serial.begin(9600); //comenzar la comuniacion con el puerto serial
Serial.println("Presione cualquier tecla para comenzar"); //informacion a usuario para empezar
while(Serial.available()==0){} //espera que el usuario ingrese algo para empezar
for(i = 0; i < 3 ; i++){ //recorrido de filas
for(j = 0; j < 3 ; j++){ //recorrido de columnas
Serial.print("Por favor ingrese el dato de la fila "); //informacion para que el usuario sepa que dato ingresa
Serial.print(i+1);
Serial.print(" y la columna ");
Serial.println(j+1);
Serial.end(); //Detener la comuniacion con el puerto serial para borrar la informacion en memoria disponible
Serial.begin(9600); //comenzar la comuniacion con el puerto serial
while(Serial.available() == 0){} //espera que el usuario ingrese el dato correspondiente
Matriz0 [i][j] = Serial.parseInt(); // guardar el dato que el usuario ingreso en la matriz base
}
}
Serial.println("La matriz es:"); //informacion a usuario
for (i = 0; i < 3; i++) { //recorrido de filas
for (j = 0; j < 3; j++) { //recorrido de columnas
Serial.print(Matriz0 [i][j]); //Mostrar en pantalla el valor correspondiente
Serial.print("\t"); //separar los datos
}
Serial.println(); //separar con enter los datos
}
Serial.println("Por favor ingrese la columna de resultado"); //indicacion a usuario de empezar
for(j = 0 ; j < 3 ; j ++){ //recorrido de columnas
Serial.print("Ingrese el resultado de la columna "); //informacion a usuario para empezar
Serial.println(j+1);
Serial.end();
Serial.begin(9600);
while(Serial.available() == 0 ){} //espera que el usuario ingrese el dato correspondiente
Resultado [j] = Serial.parseInt(); // guardar el dato que el usuario ingreso en la matriz resultado
}
Serial.println("los datos ingresados son");
for(j = 0 ; j < 3 ; j ++){ //recorrido de columnas
Serial.println(Resultado [j]); //Mostrar en pantalla la columna de resultado correspondiente
}
Serial.println("La matriz es:");
for (i = 0; i < 3; i++) { //recorrido de filas
for (j = 0; j < 3; j++) { //recorrido de columnas
Serial.print(Matriz0 [i][j]); //Mostrar en pantalla el valor correspondiente
Serial.print("\t"); //separar los datos
}
Serial.println(Resultado [i]); //Mostrar en pantalla la columna de resultado correspondiente
}
//Calculo de determinante
Determinante = ( Matriz0[0][0] * ((Matriz0[1][1] * Matriz0[2][2])-(Matriz0[1][2] * Matriz0[2][1]))-
Matriz0[0][1] * ((Matriz0[1][0] * Matriz0[2][2])-(Matriz0[1][2] * Matriz0[2][0]))+
Matriz0[0][2] * ((Matriz0[1][0] * Matriz0[2][1])-(Matriz0[1][1] * Matriz0[2][0])));
Serial.print("El determinante de la matriz es : "); //Mostrar en pantalla el Determinante
Serial.println(Determinante); //Mostrar en pantalla el Determinante
if(Determinante = 0){
Serial.println("No se Puede realizar.");
}
else{
for (i = 0; i < 3; i++) { //recorrido de filas
for (j = 0; j < 3; j++) { //recorrido de columnas
Matriz2 [i][j]= Matriz0 [i][j];
}
}
for (i = 0; i < 3; i++) { //recorrido de filas
for (j = 3; j < 5; j++) { //recorrido de columnas
Matriz2 [i][j]= Matriz0 [i][j-3];
}
}
Serial.println("La matriz es:");
for (i = 0; i < 3; i++) { //recorrido de filas
for (j = 0; j < 5; j++) { //recorrido de columnas
Serial.print(Matriz2 [i][j]); //Mostrar en pantalla el valor correspondiente
Serial.print("\t"); //separar los datos
}
Serial.println(); //separar con enter los datos
}
//Determinantes Diferentes
for(int t = 0 ; t < 3 ; t ++){
for (i = 0; i < 3; i++) { //recorrido de filas
for (j = 0; j < 3; j++) { //recorrido de columnas
Matriz2 [i][j]= Matriz0 [i][j];
}
}
for (i = 0; i < 3; i++) { //recorrido de filas
for (j = 3; j < 5; j++) { //recorrido de columnas
Matriz2 [i][j]= Matriz0 [i][j-3];
}
}
for(j = 0 ; j < 3 ; j ++){
Matriz2 [j][t] = Resultado [j];
}
if(t < 2){
for(j = 0 ; j < 3 ; j ++){
Matriz2 [j][t+3] = Resultado [j];
}
}
else{}
Serial.println("La matriz es:");
for (i = 0; i < 3; i++) { //recorrido de filas
for (j = 0; j < 5; j++) { //recorrido de columnas
Serial.print(Matriz2 [i][j]); //Mostrar en pantalla el valor correspondiente
Serial.print("\t"); //separar los datos
}
Serial.println(); //separar con enter los datos
}
for (j = 0; j < 3; j ++) { //recorrido de filas
Diagonal1 = Diagonal1 + (Matriz2 [0][j]*Matriz2 [1][j+1]*Matriz2 [2][j+2]);
}
for (j = 0; j < 3; j ++) { //recorrido de filas
Diagonal2 = Diagonal2 + (Matriz2 [2][j]*Matriz2 [1][j+1]*Matriz2 [0][j+2]);
}
Determinante1 = Diagonal1 - Diagonal2;
Serial.print("la Determinante de la Matriz ");
Serial.print(t+1);
Serial.print(" es :");
Serial.println(Determinante1);
A = Determinante1/Determinante;
Serial.print("El Valor de la variable #");
Serial.print(t+1);
Serial.print(" es :");
Serial.println(A);
Diagonal1 = 0;
Diagonal2 = 0;
}
}
}