[완료] 자바에서 중적분 질문입니다. (apache common-math 라이브러리 사용)
글쓴이: allinux / 작성시간: 목, 2011/05/05 - 2:10오전
안녕하세요.
범위가 1개인 간단한 정적분은 쉽게 할 수 있겠는데 범위가 2개 이상이 되는 중적분은 어떻해 해야 할 지 모르겠습니다.
//간단한 정적분의 예
// 함수정의
import org.apache.commons.math.analysis.UnivariateRealFunction
class MyFunc implements UnivariateRealFunction{
double value(double x){
return 2*x
}
}
=================================================================
// 실행예
import org.apache.commons.math.analysis.integration.RombergIntegrator
import org.apache.commons.math.analysis.UnivariateRealFunction
import org.apache.commons.math.analysis.integration.UnivariateRealIntegrator
......
UnivariateRealFunction f = new MyFunc()
UnivariateRealIntegrator integrator = new RombergIntegrator()
double result = integrator.integrate(f, 0.0, 5.0)
System.out.println(result)
.......integrate의 메소드의 인수가 함수, 최소, 최대값 형태인데 2중적분에서는 최소 최대값의 범위가 2개인데 어떻해할지 모르겠습니다.
많은 도움 부탁드립니다.
Forums:


자답입니다.
matlab 처럼 double quad 같은 함수가 있을줄 알았는데 없는 모양입니다.
귀찮아도 직접 구현하여 사용해야 되나 봅니다.
* Groovy
import org.apache.commons.math.analysis.integration.RombergIntegrator import org.apache.commons.math.analysis.UnivariateRealFunction integrate = new RombergIntegrator() // xy^2 함수. 0~2, -1~1 까지 구간의 적분 innerF = [value:{y->return y*y}] as UnivariateRealFunction // UnivariateRealFunction 인터페이스를 구현한 것 입니다. value가 메소드이고 y가 변수 입니다. outerF = [value:{x-> return x * integrate.integrate(innerF, -1.0, 1.0) }] as UnivariateRealFunction result = integrate.integrate(outerF, 0.0, 2.0) println result댓글 달기