Мои интегральные методы возвращают слишком большие значения - PullRequest
0 голосов
/ 29 ноября 2018

Так, согласно моим урокам математики и различным видео по математике на Youtube, интеграл (1 / sqrt(2 * pi)) * exp((-x ^ 2) / 2) от отрицательной бесконечности до положительной бесконечности равен ровно 1.

Итак, я написал пару методов, чтобы получить 100 равных по ширинеИнтегралы от -3 до 3 с использованием метода трапеции.

public double integrate() {
    double[] integrateNormal = new double[100];
    double sum = 0;

    for (int i = 0; i < 100; i++) {
        double pos_a = i*6/100.00-3;
        double pos_b = ((i+1)*6/100.00)-3;

        double a = (1/(Math.sqrt(2*Math.PI)))*(Math.exp(.5*(-Math.pow(pos_a,2))));
        double b = (1/(Math.sqrt(2*Math.PI)))*(Math.exp(.5*(-Math.pow(pos_b,2))));
        double h = 0.1;

        integrateNormal[i] = (a+b)*h/2;
    }
    for (int i = 0; i < 100; i++) {
        sum = sum + integrateNormal[i];
    }
    return sum;
}

Однако сумма возвращается как 1,66, а не 1 или даже чуть больше 1. Где моя ошибка?

...