public static double[] Moments(double a, double b, int N, ComputationalWorkShop.Function.F w) { var moments = new double[2 * N]; for (int i = 0; i < 2 * N; i++) { moments[i] = Moment(a, b, i, w); } return(moments); }
private static double MomentMiddle( double a, double b, int m, int k, ComputationalWorkShop.Function.F w) { var h = (b - a) / m; var sum = 0.0; var alpha = a + (h / 2); for (int i = 0; i < m; i++) { sum += w(alpha + (i * h)) * Math.Pow(alpha + (i * h), k); } return(h * sum); }
public static double GaussType( double a, double b, int N, ComputationalWorkShop.Function.F w, ComputationalWorkShop.Function.F f) { var moments = Moments(a, b, N, w); var polynome = Lab6.FindPolynome(moments); var x = Tools.Algebra.SolveSquare(polynome); Array.Sort(x); var matrix = new double[2, 2] { { 1, 1 }, { x[0], x[1] } }; var vector = new double[2] { moments[0], moments[1] }; var A = Tools.Algebra.Cramer(matrix, vector); return(A[0] * f(x[0]) + A[1] * f(x[1])); }
public static double Gauss2NodesCompound( double a, double b, int m, ComputationalWorkShop.Function.F f) { var h = (b - a) / m; var hh = h / 2; var sum = 0.0; var t1 = -Math.Sqrt(3) / 3; var t2 = Math.Sqrt(3) / 3; for (int i = 0; i < m; i++) { var temp = a + i * h; var f1 = f(hh * t1 + temp + hh); var f2 = f(hh * t2 + temp + hh); sum += hh * (f1 + f2); } return(sum); }
private static double Moment(double a, double b, int k, ComputationalWorkShop.Function.F w) { var h = (int)((b - a) / step); return(MomentMiddle(a, b, h, k, w)); }