Создание простого калькулятора суммы Римана в Java

Я пытаюсь сделать калькулятор, который вычисляет левостороннюю сумму Римана для уравнения y = x - x ^ 2 с границами от 0 до 2. Проблема в том, что я продолжаю получать 0,0 для всех своих решений. Если бы кто-нибудь мог сказать мне, что я делаю неправильно, это было бы очень признательно.

import java.lang.Math;
public class LeftHandSum {


public static void main(String[] args) {

    int [] n = {2,10,100,1000,10000}; //number of steps in each summation
    int a = 0;
    int b = 2;
    int H = 0;
    double x = 0;       

    for (int j = 0; j < 4; j++)
    {
        double dX = (b-a)/n[j];
        for (int i = 1; i < n[j]; i++)
        {
            x = a + (i-1)*dX;
            H += (x - Math.pow(x,2));               
        }
        double solution = H*dX;
        System.out.println(solution);
    }
  }
}

person user3512387    schedule 29.09.2015    source источник
comment
Похоже, что dX на каждом шаге, кроме первого, равен 0,0, потому что вы делите int (b-a) на int n[i], что всегда дает 0. Попробуйте изменить тип «a» и «b» на double   -  person Nyavro    schedule 29.09.2015
comment
да, это было то. Благодарность   -  person user3512387    schedule 29.09.2015


Ответы (1)


вы используете целочисленное деление в

(b-a)/n[j];

пока n[j] больше, чем (b-a), он всегда будет возвращать ноль. вам нужно разыграть его, чтобы удвоить перед делением.

person ilj    schedule 29.09.2015