Beispiel #1
0
            public Funcao(NumericalRecipes numericalRecipes, int numeroDePontos, MetodoCoeficientesDosMomentos metodoCoeficientesDosMomentos, TermoFonteDQMoM termoFonteDQMoM, DecoradorDeAbscissas decorarAbscissas, DecoradorDePesos decorarPesos, Integral.Funcao funcaodeltaAbscissas)
            {
                this.numeroDePontos = numeroDePontos;
                this.termoFonteDQMoM = termoFonteDQMoM;
                this.decorarAbscissas = decorarAbscissas;
                this.decorarPesos = decorarPesos;
                this.funcaodeltaAbscissas = funcaodeltaAbscissas;
                this.metodoCoeficientesDosMomentos = metodoCoeficientesDosMomentos;
                this.numericalRecipes = numericalRecipes;

                SetVetores();
            }
Beispiel #2
0
            private void ObterSistemaLinear(int numeroDePontos, MetodoCoeficientesDosMomentos metodoCoeficientesDosMomentos, double[] pesos, double[] abscissas, Integral.Funcao funcaoDeltaAbscissas, TermoFonteDQMoM termoFonteSistemaLinearDqmoM, DecoradorDePesos decorarPesos, DecoradorDeAbscissas decorarAbscissas, double tempo)
            {
                if (decorarPesos != null) pesosDecorados = decorarPesos(pesos, tempo);
                else pesosDecorados = pesos;
                if (pesosDecorados == null) pesosDecorados = pesos;
                if (decorarAbscissas != null) abscissasDecoradas = decorarAbscissas(abscissas, tempo);
                else abscissasDecoradas = abscissas;
                if (abscissasDecoradas == null) abscissasDecoradas = abscissas;

                resposta = termoFonteSistemaLinearDqmoM(pesosDecorados, abscissasDecoradas, metodoCoeficientesDosMomentos,tempo);

                if (resposta.Length != numeroDePontos) throw new Exception("Número de pontos deve ser igual na matriz de coeficientes e no termo fonte do DQMoM!");

                for (int k = 0; k < numeroDePontos; k++)
                {
                    for (int i = 0; i < numeroDePontos/2; i++)
                    {
                        if (funcaoDeltaAbscissas == null)
                        {
                            matrizDeCoeficientes[k, i] = Polinomio(metodoCoeficientesDosMomentos, abscissas[i], k);
                            matrizDeCoeficientes[k, i + numeroDePontos / 2] = pesos[i] * DerivadaPolinomio(metodoCoeficientesDosMomentos, abscissas[i], k);
                        }
                        else
                        {
                            matrizDeCoeficientes[k, i] = Polinomio(metodoCoeficientesDosMomentos, (abscissas[i] + funcaoDeltaAbscissas(abscissas[i])), k);

                            matrizDeCoeficientes[k, i + numeroDePontos / 2] = pesos[i] * DerivadaPolinomio(metodoCoeficientesDosMomentos, (abscissas[i] + funcaoDeltaAbscissas(abscissas[i])), k);
                        }
                    }
                }

                sistema.MatrizDeCoeficientes = matrizDeCoeficientes;
                sistema.Resposta = resposta;
            }
Beispiel #3
0
 public Funcao(MetodoCoeficientesDosMomentos metodoDeCoeficientes, TermoFonteQMoM termoFonteQMoM, DecoradorDeAbscissas decorarAbscissas, DecoradorDePesos decorarPesos, Integral.Funcao funcaodeltaAbscissas)
 {
     this.termoFonteQMoM = termoFonteQMoM;
     this.decorarAbscissas = decorarAbscissas;
     this.decorarPesos = decorarPesos;
     this.metodoDeCoeficientes = metodoDeCoeficientes;
     this.funcaodeltaAbscissas = funcaodeltaAbscissas;
     calculoMomento = CalculoMomento;
 }