Witam, mam taki problem... Napisałem kod obliczania całki metodą trapezów według schematu, który jest w załączniku...
Do policzenia mam całkę arctan(x) w przedziale <0,10> i wynik powinien wyjść około 12,4037164846167... a mi wychodzi 10 i jakiś grosz... Nie wiem dlaczego. Zmieniam przybliżenie, ale to nic nie daje mądrego...

Poniżej zamieszczam kod, który napisałem... Mógłby ktoś kto rozumie i może pomóc rzucić okiem i udzielić wskazówek? Z góry dziękuję..

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace calka2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("poczatek");
            double a = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("koniec");
            double b = Convert.ToDouble(Console.ReadLine());
            double E = Math.Pow(10,-4);
            double k = 0;
            double suma = 0;
            double wynik = 0;
            double Tk = 0;
            double Tkp = 0;
            while (Math.Abs(Tk-Tkp) < E)
            {
//k zmienia sie wraz z kolejna iteracja od 1 do ...
                k++;
                for (int i = 1; i <= m(k)-1; i++)
                {
                    for (int j = 0; j < m(k); j++)
                    {
                        suma += f(a + j * h(a, b, k));
                    }
                }

                Tk = licz(a, b, k, suma);
                //Console.WriteLine(Tk);
                Tkp = licz(a, b, k - 1, suma);
                //Console.WriteLine(Tkp);
                //Console.WriteLine();
            }
            Console.WriteLine(Tk);
            Console.ReadLine();
        }

        static double f(double x)
        {
            return Math.Atan(x);
        }

        static double m(double k)
        {
            return Math.Pow(2, k);
        }

        static double licz(double a, double b, double k, double suma)
        {
            double T = 0;
            return T = (h(a, b, k) / 2) * (f(a) + f(b) + 2 * suma);
        }

        static double h(double a, double b, double k)
        {
            double m = Math.Pow(2, k);
            if (k == 0)
            { return b - a; }
            else
            { return (b - a) / m; }
        }
    }
}