/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package refinando_java;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.swing.JOptionPane;
/**
*Creado en viernes 28 de diciembre del 2018
*
*
*/
@Rafael_Angel_Montero_Fernandez
public class RegrecionLineal {
public Modelo modelo=new Modelo();
public double regrecion_lineal(double proximo_tiempo){
this.sumatoria_t();
this.sumatoria_x();
this.sumatoria_t_elevado_al_cuadrado();
this.sumatoria_x_por_t();
this.total_t_elevado_al_cuadrado();
this.promedio_de_t();
this.promedio_de_x();
this.pendiente_b();
this.interseccion_A();
modelo.setProximo_t(proximo_tiempo);
modelo.setXt(modelo.getInterseccion_A()+(modelo.getPendiente_B()*modelo.getProximo_t()));
modelo.msjResultados();
return modelo.getRegrecion_lineal();
}
public double regrecion_lineal(double mTiempo[], double mValores[], double proximo_tiempo){
modelo.mTtiempo_t=mTiempo;
modelo.mValores_x=mValores;
this.sumatoria_t();
this.sumatoria_x();
this.sumatoria_t_elevado_al_cuadrado();
this.sumatoria_x_por_t();
this.total_t_elevado_al_cuadrado();
this.promedio_de_t();
this.promedio_de_x();
this.pendiente_b();
this.interseccion_A();
modelo.setProximo_t(proximo_tiempo);
modelo.setXt(modelo.getInterseccion_A()+(modelo.getPendiente_B()*modelo.getProximo_t()));
modelo.msjResultados();
return modelo.getRegrecion_lineal();
}
private void interseccion_A(){
modelo.setInterseccion_A(modelo.getPromedio_de_x()-(modelo.getPendiente_B()*modelo.getPromedio_de_t()));
}
private void pendiente_b(){
double operacion1=modelo.mTtiempo_t.length*modelo.getSumatoria_t_por_x();
System.out.println("operacion1=" + operacion1);
double operacion2=modelo.getSumatoria_de_x()*modelo.getSumatoria_t();
System.out.println("operacion2=" + operacion2);
double operacion3=modelo.mTtiempo_t.length*modelo.getSumatoria_t_elevado_al_cuadrado();
System.out.println("operacion3=" + operacion3);
double operacion4=operacion1-operacion2;
System.out.println("operacion4=" + operacion4);
double operacion5=operacion3-modelo.getT_elevado_al_cuadrado();
modelo.setPendiente_B(operacion4/operacion5);
System.out.println("operacion5=" + operacion5);
}
private void promedio_de_t(){
modelo.setPromedio_de_t(modelo.getSumatoria_t()/6);
}
private void promedio_de_x(){
modelo.setPromedio_de_x(modelo.getSumatoria_de_x()/6);
}
private void total_t_elevado_al_cuadrado(){
modelo.setT_elevado_al_cuadrado ( Math.pow(modelo.getSumatoria_t(), 2) );
System.out.println("modelo.getT_elevado_al_cuadrado()=" + modelo.getT_elevado_al_cuadrado());
}
private void sumatoria_t_elevado_al_cuadrado(){
int i=0;
while(i<=modelo.mValores_x.length-1){
modelo.setSumatoria_t_elevado_al_cuadrado(modelo.getSumatoria_t_elevado_al_cuadrado() + Math.pow(modelo.mTtiempo_t[i],2) );
i++;
}
}
private void sumatoria_t(){
int i=0;
while(i<=modelo.mValores_x.length-1){
modelo.setSumatoria_t(modelo.getSumatoria_t()+modelo.mTtiempo_t[i] );
i++;
}
}
private void sumatoria_x(){
int i=0;
while(i<=modelo.mValores_x.length-1){
modelo.setSumatoria_de_x(modelo.getSumatoria_de_x()+modelo.mValores_x[i] );
i++;
}
}
private void sumatoria_x_por_t(){
int i=0;
while(i<=modelo.mValores_x.length-1){
modelo.setSumatoria_t_por_x(modelo.getSumatoria_t_por_x()+ (modelo.mValores_x[i]* modelo.mTtiempo_t[i] ) );
System.out.println("modelo.getSumatoria_t_por_x()=" + modelo.getSumatoria_t_por_x());
i++;
}
System.out.println("modelo.getSumatoria_t_por_x()=" + modelo.getSumatoria_t_por_x());
}
public static void main(String args []){
RegrecionLineal regresion_l=new RegrecionLineal();
regresion_l.modelo.setValores_de_x("7000 9000 5000 11000 10000 13000");
regresion_l.modelo.setTiempos("1 2 3 4 5 6");
final double siguiente_t=7;//Original 7
JOptionPane.showMessageDialog(null, Math.round(regresion_l.regrecion_lineal( siguiente_t) ), "Regresion lineal desde el main", JOptionPane.INFORMATION_MESSAGE);
}
public class Modelo{
public double mValores_x[]={};
/**
*
* @param nuevos_valores_de_x Debe pasarle los valores numericos en formato de String y ceparados por espacios.
* Ejemplo setValores_de_x("100 20 35 41 55 67 7000").
*/
public void setValores_de_x(String nuevos_valores_de_x){
int i=0;
String mValores[]=nuevos_valores_de_x.split(" ");
this.mValores_x=new double[mValores.length];
while(i<=mValores.length-1){
mValores_x[i]=Double.parseDouble(mValores[i]);
i++;
}
}
private double mTtiempo_t[]={};
/**
*
* @param nuevos_tiempos Debe pasarle los valores numericos en formato de String y ceparados por espacios.
* Ejemplo setTiempos("1 2 3 4 5 6 7").
*/
public void setTiempos(String nuevos_tiempos){
int i=0;
String mTiempos[]=nuevos_tiempos.split(" ");
this.mTtiempo_t=new double[mTiempos.length];
while(i<=mTiempos.length-1){
mTtiempo_t[i]=Double.parseDouble(mTiempos[i]);
i++;
}
}
public double proximo_t=0.0;
public Modelo(double nuevo_mTiempo[], double nuevo_mValores_x[], double proximo_tiempo){
mValores_x=nuevo_mValores_x;
mTtiempo_t=nuevo_mTiempo;
this.setProximo_t(proximo_t);
}
public Modelo(double nuevo_x_por_t, double nuevo_sumatoria_de_x, double nuevo_sumatoria_t_por_x, double nuevo_t_elevado_al_cuadrado, double nuevo_sumatoria_t_elevado_al_cuadrado, double nuevo_sumatoria_t, double nuevo_pendiente_B, double nuevo_promedio_de_t, double nuevo_promedio_de_x, double nuevo_xt){
setX_por_t(nuevo_x_por_t);
setSumatoria_de_x(nuevo_sumatoria_de_x);
setSumatoria_t_por_x(nuevo_sumatoria_t_por_x);
setT_elevado_al_cuadrado(nuevo_t_elevado_al_cuadrado);
setSumatoria_t_elevado_al_cuadrado(nuevo_sumatoria_t_elevado_al_cuadrado);
setSumatoria_t(nuevo_sumatoria_t);
setPendiente_B(nuevo_pendiente_B);
setPromedio_de_t(nuevo_promedio_de_t);
setPromedio_de_x(nuevo_promedio_de_x);
setXt(nuevo_xt);
}
public Modelo(){}
/**
**/
private double interseccion_A=0.0;
/**
**/
public void setInterseccion_A(double nuevo_interseccion_A)
{
interseccion_A=nuevo_interseccion_A;
}
/**
**/
public double getInterseccion_A(){
return interseccion_A;
}
/**
**/
private double x_por_t =0.0;
/**
**/
public void setX_por_t(double nuevo_x_por_t)
{
x_por_t=nuevo_x_por_t;
System.out.println("Obteniendo x_por_t=" + x_por_t);
}
/**
**/
public double getX_por_t(){
return x_por_t;
}
/**
**/
private double sumatoria_de_x =0.0;
/**
**/
public void setSumatoria_de_x(double nuevo_sumatoria_de_x)
{
sumatoria_de_x=nuevo_sumatoria_de_x;
}
/**
**/
public double getSumatoria_de_x(){
return sumatoria_de_x;
}
/**
**/
private double sumatoria_t_por_x =0.0;
/**
**/
public void setSumatoria_t_por_x(double nuevo_sumatoria_t_por_x)
{
sumatoria_t_por_x=nuevo_sumatoria_t_por_x;
}
/**
**/
public double getSumatoria_t_por_x(){
return sumatoria_t_por_x;
}
/**
**/
private double t_elevado_al_cuadrado =0.0;
/**
**/
public void setT_elevado_al_cuadrado(double nuevo_t_elevado_al_cuadrado)
{
t_elevado_al_cuadrado=nuevo_t_elevado_al_cuadrado;
}
/**
**/
public double getT_elevado_al_cuadrado(){
return t_elevado_al_cuadrado;
}
/**
A2^2+A3^2+A4^2+A5^2+A6^2+A7^2
**/
private double sumatoria_t_elevado_al_cuadrado =0.0;
/**
A2^2+A3^2+A4^2+A5^2+A6^2+A7^2
**/
public void setSumatoria_t_elevado_al_cuadrado(double nuevo_sumatoria_t_elevado_al_cuadrado)
{
sumatoria_t_elevado_al_cuadrado=nuevo_sumatoria_t_elevado_al_cuadrado;
}
/**
A2^2+A3^2+A4^2+A5^2+A6^2+A7^2
**/
public double getSumatoria_t_elevado_al_cuadrado(){
return sumatoria_t_elevado_al_cuadrado;
}
/**
**/
private double sumatoria_t =0.0;
/**
**/
public void setSumatoria_t(double nuevo_sumatoria_t)
{
sumatoria_t=nuevo_sumatoria_t;
}
/**
**/
public double getSumatoria_t(){
return sumatoria_t;
}
/**
**/
private double pendiente_B =0.0;
/**
**/
public void setPendiente_B(double nuevo_pendiente_B)
{
pendiente_B=nuevo_pendiente_B;
}
/**
**/
public double getPendiente_B(){
return pendiente_B;
}
/**
**/
private double promedio_de_t =0.0;
/**
**/
public void setPromedio_de_t(double nuevo_promedio_de_t)
{
promedio_de_t=nuevo_promedio_de_t;
}
/**
**/
public double getPromedio_de_t(){
return promedio_de_t;
}
/**
**/
private double promedio_de_x =0.0;
/**
**/
public void setPromedio_de_x(double nuevo_promedio_de_x)
{
promedio_de_x=nuevo_promedio_de_x;
}
/**
**/
public double getPromedio_de_x(){
return promedio_de_x;
}
/**
Es lo mismo que regresion lineal.
**/
private double xt =0.0;
/**
Es lo mismo que regresion lineal.
**/
public void setXt(double nuevo_xt)
{
xt=nuevo_xt;
}
/**
Es lo mismo que regresion lineal.
**/
public double getXt(){
return xt;
}
/**
Es lo mismo que getXt().
**/
public double getRegrecion_lineal(){
return xt;
}
/**
* @return the proximo_t
*/
public double getProximo_t() {
return proximo_t;
}
/**
* @param proximo_t the proximo_t to set
*/
public void setProximo_t(double proximo_t) {
this.proximo_t = proximo_t;
}
public void msjResultados(){
JOptionPane.showMessageDialog(null,"Sumatoria de x="+ this.getSumatoria_de_x() +
"\nSumatoria de t=" + this.getSumatoria_t() + "\nSumatoria de t al cuadrado=" + this.getSumatoria_t_elevado_al_cuadrado() +
"\nSumatoria t*x=" + this.getSumatoria_t_por_x() +
"\nT elevado al cuadrado=" + this.getT_elevado_al_cuadrado() +
"\nPromedio de t=" + this.getPromedio_de_t() +
"\nPromedio de x=" + this.getPromedio_de_x() +
"\nPendiente B=" + this.getPendiente_B() + "\nInterseccion A=" +
this.getInterseccion_A() + "\nXt=" + this.getXt() + "\nRegresion lineal=" + this.getRegrecion_lineal(), "Resultados globales", JOptionPane.INFORMATION_MESSAGE);
}
}//Fin del class
}
@Retention (RetentionPolicy.RUNTIME)//Permite retener las anotaciones en tiempo de ejecusion y estaran disponibles en tiempo de ejecusion.
@Target(ElementType.TYPE_USE)//Las anotaciones solo estan a nivel de variables globales y objetos globales.
@Documented()
@interface Rafael_Angel_Montero_Fernandez{
/**
*
* @return Devuelve el correo del programador por defecto.
*/
public String Correo() default "Sharkyc12@Gmail.com";
public String Numero_telefonico() default "+50683942235";
}