-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathminimos_linea_recta.java
107 lines (91 loc) · 2.88 KB
/
minimos_linea_recta.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import java.util.Random;
import java.text.DecimalFormat;
public class minimos_linea_recta{
public static double numeroRandom(){
Random r = new Random();
double max = 10.0,
min = 1.0,
random = 0;
random = min + r.nextDouble() * (max - min);
random = Math.rint(random * 100)/100;
return random;
}
public static double redondear(double valor){
double redondear = 0;
redondear = Math.rint(valor * 100000000)/100000000;
return redondear;
}
public static void main(String[] args){
System.out.println("\n\t\t\tLinea Recta\n");
/*AQUI SE GENERAN DE MANERA ALEATORIA LOS VALORES DE X & Y PARA EL PROBLEMA A RESOLVER*/
//n.- ES EL NUMERO DE VALORES DADOS A "X"
int n,x,y;
n = 4;
/////////////////////////////////////////////////
double sumY = 0,
sumX = 0,
sumXCuadrado = 0,
sumXY = 0,
resultados[] = new double[4];
/*SE CREA LA TABLA CON LOS VALORES X & Y*/
double valores[][] = new double[n][2];
System.out.println("\t\t\tX\tY");
System.out.println("\t\t\t--------------");
for(x=0;x<n;x++){
for(y=0;y<1;y++){
valores[x][y] = numeroRandom();
if(x>0){
while(valores[x][y]<valores[x-1][0]){
valores[x][y] = numeroRandom();
}
}
}
valores[x][y] = numeroRandom();
if(x>0){
while(valores[x][y]<valores[x-1][1]){
valores[x][y] = numeroRandom();
}
}
System.out.println("\t\t\t| "+valores[x][y-1]+" | "+valores[x][y]+" |");
System.out.println("\t\t\t---------------");
//SE OBTIENE LA SUMATORIA DE LA MULTIPLICACION DE XY
sumXY += valores[x][y-1]*valores[x][y];
sumXY = redondear(sumXY);
}
/*SE OBTIENEN LOS DATOS DE LAS SUMATORIAS DEACUERDO AL PROBLEMA GENERADO*/
for(x=0;x<n;x++){
//SUMATORIA DE X
sumX+=valores[x][0];
sumX = redondear(sumX);
//SUMATORIA DE Y
sumY+=valores[x][1];
sumY = redondear(sumY);
//SUMATORIA DE X^2
valores[x][0] = redondear(valores[x][0]);
double sumXCuadradoAuxiliar = redondear(Math.pow(valores[x][0],2));
sumXCuadrado += sumXCuadradoAuxiliar;
sumXCuadrado = redondear(sumXCuadrado);
}
System.out.println("\nEx = "+sumX
+"\nEx"+(char)178+" = "+sumXCuadrado
+"\nEy = "+sumY
+"\nE(xy) = "+sumXY);
/*SE RESUELVE EL SISTEMA DE ECUACIONES CON DETERMINANTES
ALMENOS ESTE TIPO DE PROBLEMA SIEMPRE SERA 2X2*/
double det=(n*sumXCuadrado)-(sumX*sumX);
det = redondear(det);
double a0 = ((sumY*sumXCuadrado)-(sumX*sumXY))/det;
a0 = redondear(a0);
double a1 = ((n*sumXY)-(sumY*sumX))/det;
a1 = redondear(a1);
System.out.println("\n"
+"a0 = "+a0
+"\na1 = "+a1+"\n\n");
for(int i=0;i<n;i++){
double gx = a0 + a1*valores[i][0];
gx = redondear(gx);
resultados[i] = gx;
System.out.println(a0+" + "+a1+"("+valores[i][0]+") = "+gx);
}
}
}