2014-06-21 6 views
1

다음 알고리즘은 단층의 경우에는 효과적이지만 이중 적분을 처리하도록 수정하고 싶습니다. 어떻게해야합니까?이중 적분 및 예상 값 Java의 몬테카를로 메서드

class doubleIntMonteCarlo 
{ 
    private static double f(double x) 
    { 
     return 1/Math.pow(x , 2); 
    } 

    public static double doubleIntMonteCarlo(double a, double b, int n) 
    { 
     double xSum = 0D, ySum = 0D, sum = 0D; 

     for (int i = 0; i < n; i++) 
     { 
      xSum = a + Math.random() * Math.abs(b - a); 
      sum += f(xSum); 
     } 
     return Math.abs(b - a) * sum/n; 
    } 
} 

public class MonteCarloIntegration 
{ 
    public static void main(String[] args) 
    { 
     System.out.println(doubleIntMonteCarlo.doubleIntMonteCarlo(10, 250, 100000)); 
    } 
} 

답변

4

이 시도 :

내가 할 수있는
public static double doubleIntMonteCarlo(double a, double b, double c, double d, int n) 
{ 
    double sum = 0D, xSum = 0D, ySum = 0D; 

    for (int i = 0; i < n; i++) 
    { 
      xSum = a + Math.random() * Math.abs(b - a); 
      ySum = c + Math.random() * Math.abs(d - c); 
      sum += f(xSum, ySum); 
    } 
    return Math.abs(b - a) * Math.abs(d - c) * sum/n; 
} 
+0

까지 - 투표, 당신을하지만, 감사하지! 나는 sintax에있는 약간 과실 때문에 당신의 응답을 편집했다! 그리고 LOL은 너무 가까웠다! – Nerva

+0

도와 드리겠습니다. 미안 해요. C#으로 테스트했습니다. –