Example #1
0
        public ResultadoRegresion CalcularRegresionLineal(double[,] coordenadas, int cantidadPuntos)
        {
            ResultadoRegresion nuevoResultado = new ResultadoRegresion();

            double sumatoriaXY = 0;
            double x2          = 0;
            double x           = 0;
            double y           = 0;

            for (int i = 0; i < cantidadPuntos; i++)
            {
                sumatoriaXY = sumatoriaXY + (coordenadas[i, 0] * coordenadas[i, 1]);
                x2          = x2 + Math.Pow(coordenadas[i, 0], 2);
                x           = x + coordenadas[i, 0];
                y           = y + coordenadas[i, 1];
            }
            var a1 = ((cantidadPuntos * sumatoriaXY) - (x * y)) / ((cantidadPuntos * x2) - Math.Pow(x, 2));
            var a0 = ((y / cantidadPuntos) - a1 * (x / cantidadPuntos));

            nuevoResultado.Resultadoa0 = a0;
            nuevoResultado.Resultadoa1 = a1;

            nuevoResultado.Resultados.Add(a0);
            nuevoResultado.Resultados.Add(a1);

            return(nuevoResultado);
        }
Example #2
0
        public ResultadoRegresion CalcularRegresionPolimonialInterno(double[,] coordenadas, int cantidadPuntos, int gradoCurva)
        {
            ResultadoRegresion nuevoResltado = new ResultadoRegresion();
            double             elevado       = 0;

            double[,] Matriz = new double[gradoCurva + 3, gradoCurva + 3];

            Matriz[0, 0] = cantidadPuntos;

            for (int i = 0; i < gradoCurva + 3; i++)
            {
                elevado = i;
                for (int j = 0; j < gradoCurva + 3; j++)
                {
                    for (int sumatoria = 0; sumatoria < cantidadPuntos; sumatoria++)
                    {
                        //-----------------------CALCULA COEFICIENTES
                        if (elevado != 0 && j != gradoCurva + 2)
                        {
                            Matriz[i, j] = Matriz[i, j] + Math.Pow(coordenadas[sumatoria, 0], elevado);
                        }
                        //------------------------CALCULA TERMINO INDEPENDIENTE------------------------------------------
                        if (j == gradoCurva + 2)
                        {
                            if (i == 0)
                            {
                                Matriz[i, j] = Matriz[i, j] + coordenadas[sumatoria, 1];
                            }
                            else
                            {
                                Matriz[i, j] = Matriz[i, j] + (coordenadas[sumatoria, 1] * Math.Pow(coordenadas[sumatoria, 0], i));
                            }
                        }
                    }
                    elevado = elevado + 1;
                }
            }

            SistemaDeEcuacion nuevoSistema = new SistemaDeEcuacion();
            var nuevoRsultadoSistemas      = nuevoSistema.CalcularSistemaGaussJordam(Matriz, gradoCurva + 2);

            nuevoResltado.Resultados = nuevoRsultadoSistemas.resultado;

            var coeficiente = CoefienteCorrelacion(coordenadas, cantidadPuntos, nuevoResltado.Resultados);

            return(nuevoResltado);
        }