2013-03-26 2 views
0

사다리꼴 규칙을 사용하는 함수의 적분을 제공하는 Integrate 클래스를 코딩하려고합니다. 그래서 당신은 두 배를 추가 할 때, (1/3) 당신은 int로 난을 선언무한 루프 코드

public static double Trap(int exponent, int a, int b, int n) { 
    double h = (double) (b-a)/n; 

    double sum = 0; 
    for(int i = a; i <= b; i+=h) 
     sum += (Math.pow(i, exponent) + Math.pow(i+1, exponent))/2; //trouble! 

    return h * sum; 
} 

public static void main(String[] args) { 
    System.out.println(Trap(3,1,3,10)); //integral of x^3 from 1 to 3, 
    divided into 10 parts 
} 
+2

코드를 "굵게"하려고하지 마십시오. 대신 주석을 사용하십시오. –

+1

"h"는 항상 0이라고 상상할 수 있습니다. – Sebastian

+0

알립니다. – Haque1

답변

4

: 어떤 이유로, 나는 결코이없는 코드 값으로 해결하고 "합계 + ="단계에 갇혀 상태를 유지 그것에, 그것은 내림하고 동일한 가치를 유지합니다.

i를 double로 변경하십시오.

실제로 모든 것을 이중으로 설정해야합니다.

+0

"모든 것을 두 배로 만들어야한다"... 모든 것을 소금으로 바꿔라. double 대신 int를 사용해야하는 경우가 많이 있습니다. – ecbrodie

1

코드에 형식 변환에 문제가 있습니다. 특히 루프 증가 식 i + = h에 문제가 있습니다. 시간 값 0.2와 더블, 그리고 내가 정수의 경우 귀하의 경우에는

, 0.2는이를 설명하기 위해 0

로 주조되고, 코드 예제 다음 실행을 시도하십시오 :

public static void main(String[] args) { 

    int i = 1; 
    i += 0.2; 

    System.out.println(i); // will always output 1 
}