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(); }
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; }
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; }