public double Count(MethodContext context) { int n = 6; double[] a = new double[n + 1]; double[] y = new double[n]; double[] z = new double[n]; double[] w = new double[n]; double res = 0; double[] u = new double[n]; int N = 0; if (n % 2 == 0) { N = n / 2; } else { N = (n - 1) / 2; } // calculate coefficients of Legendre polynomial for (int i = 0; i <= N; i++) { a[n - 2 * i] = (Math.Pow(-1, i) * fact(2 * n - 2 * i)) / (Math.Pow(2, n) * fact(i) * fact(n - i) * fact(n - 2 * i)); } // calculate coefficients for (int i = 0; i < n; i++) { double _a = 3.14 * (i + 0.75) / (n + 0.5); double _b = 3.14 * (i / n); z[i] = Math.Cos(3.14 * (i + 0.75) / (n + 0.5)); y[i] = z[i]; w[i] = 2 / ((1 - Math.Pow(z[i], 2)) * (derP_n(a, n, n % 2, z[i]) * derP_n(a, n, n % 2, z[i]))); } // broaden abcisses from [-1,1] to [A,B] for (int i = 0; i < n; i++) { u[i] = ((context.B - context.A) * y[i] / 2) + (context.B + context.A) / 2; } for (int i = 0; i < n; i++) { res += w[i] * context.Function.Evaluate(u[i]); } res *= (context.B - context.A) / 2; return(res); }
public double Count(MethodContext context) { double h = (context.B - context.A) / context.N; double toReturn = 0; for (int i = 0; i < context.N; ++i) { double start = context.A + i * h; double end = context.A + (i + 1) * h; toReturn += h * context.Function.Evaluate((start + end) / 2); } return(toReturn); }
public double Count(MethodContext context) { double h = (context.B - context.A) / context.N; double toReturn = context.Function.Evaluate(context.A); for (int i = 1; i < context.N; ++i) { toReturn += 2 * context.Function.Evaluate(context.A + i * h); } toReturn += context.Function.Evaluate(context.B); toReturn *= (context.B - context.A) / (2 * context.N); return(toReturn); }
public double Count(MethodContext context) { double M = context.N / 2; double h = (context.B - context.A) / (2 * M); double res = context.Function.Evaluate(context.A); for (int i = 1; i <= M; ++i) { res += 2 * context.Function.Evaluate(context.A + h * (2 * i - 1)); res += 4 * context.Function.Evaluate(context.A + h * 2 * i); } res += context.Function.Evaluate(context.B); res *= (context.B - context.A) / (6 * M); return(res); }