【发布时间】:2013-06-03 22:50:11
【问题描述】:
public class testrun {
public static double ellipticalequn(float x, float y){
double exp;
exp=(-2)*Math.exp(Math.pow((y-(.35*6.5)),2)-Math.pow((x-(.75*8)),2)/(2*.05*6.5));
return exp;
}
public static void jacobi(){
int ny=80;
int nx=80;
double[][][] p=new double[100][100][100];
for(int i=0;i<100;i++){p[i][i][0]=0;} //initialise
for(int i=0;i<nx;i++){
p[0][i][0]=10; //Boundary conditions
p[79][i][0]=10;
p[i][79][0]=50;
p[i][0][0]=50;
}
boolean loop=true;
int k=0;
while(loop){
double error=0;
for(int i=1;i<nx-1;i++){
for(int j=1;j<ny-1;j++){
p[i][j][k]=0.25*((p[i-1][j][k]+p[i+1][j][k]+p[i][j+1][k]+p[i][j-1][k])-ellipticalequn((float)i,(float)j));
error+=Math.pow(p[i][j][k],2);
}
}
error=Math.sqrt(error);
k++;
if(k>50){
loop=false;}
if(error<(10^(-8))){loop=false;}
else { loop=true;}
}
}
public static void main(String[] args){
jacobi();
}
}
我已经花了 3 个小时,无法找出错误!请在这里帮助我! 错误出现了,但我不知道为什么会这样。我是 java 新手。 谢谢 阿迪
【问题讨论】:
-
错误是什么,请您也发布错误吗?
-
如果您花了 3 个小时试图找出问题所在,请再花几分钟发布堆栈跟踪...
-
我强烈建议您清理一些代码 - 缩进不一致,有些地方(例如您设置
p[i][j][k]的位置)如果不分开,实际上应该分成至少单独的行方法,还有很多magic numbers。也没有cmets。如果我们无法理解您的代码,我们将很难提供帮助。 -
如果您正在使用像 eclis 这样的工具,请尝试调试。此外,stacktrace 会告诉您在哪一行引发错误,因此通过将调试指针放在 tat 周围进行调试可能会有所帮助。