-2
我必須在Java中實現雙重積分的數值計算。 集中在集成()函數,這是我必須遠:在某些情況下Java中的數字雙重積分
public static double Integrate(Integravel integrando, boolean pontoMedio) {
double sum = 0.0;
double f2;
double deltaX = (integrando.getb() - integrando.geta())
/(double) integrando.getN();
double deltaY = (integrando.getd() - integrando.getc())
/(double) integrando.getN();
double deltaArea = deltaX * deltaY;
double x, xi, y, yi;
if (pontoMedio) {
xi = integrando.geta() + deltaX/2;
yi = integrando.getc() + deltaY/2;
}
else {
xi = integrando.geta() + deltaX;
yi = integrando.getc() + deltaY;
}
for (int j=0; j<integrando.getN(); j++) {
for (int i = 0; i < integrando.getN(); i++) {
if (j==0) {
x = xi;
} else {
x = xi + deltaX;
}
if (i==0) {
y = yi;
} else {
y = yi + deltaY;
}
f2 = integrando.funcao(x, y);
sum += f2*deltaArea;
}
}
return sum;
}
它的工作,但每當我從N過大(這應該使積分計算更精確,因爲它是應該是無限的),它爲積分估計返回一個錯誤的值。 我在這裏做錯了什麼?如果需要更多項目代碼,請告訴我。 任何幫助將不勝感激。謝謝!
「太大」有多大? –
你能舉一個你認爲會給你輸出錯誤的輸入,你期望輸出什麼,輸出是什麼樣的例子嗎? –
如果n = 2,則返回正確的估計值。如果它高於100,1000或4000,則會出錯。不知道它是否與我用來計算總和或變量賦值中的某些錯誤的方法有關。 – yvesbastos