Създаване на прост калкулатор на риманова сума в 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