слот вызывается после нажатия на кнопку.
void MainWindow::ymethod(){
Xtop=1;
Ttop=ui->doubleSpinBox_3->value();
Xstep=ui->doubleSpinBox_2->value();
Tstep=ui->doubleSpinBox->value();
Xnumb=1+(Xtop- 0.0)/Xstep;
Tnumb=1+(Ttop- 0.0)/Tstep;
Ynet.setSize(Tnumb,Xnumb);//v nachale tablica zapolnena nulyami
unsigned h=Ynet.getHeight(),w=Ynet.getWidth();
[expand]
/*
все проблемы исчезают, если закоментировать цикл ниже
*/
[/expand]
for(unsigned j=1;j<h;j++)
for(unsigned i=1;i<(w-1);i++)
Ynet[i][j]=Ynet[i-1][j-1]*Tstep/pow(Xstep,2)+Ynet[i][j-1]*(1-2*Tstep/pow(Xstep,2))+Ynet[i+1][j-1]*Tstep/pow(Xstep,2);
}
что за дурацкие названия переменных - j,i,h,w ?
Ну а в остальном: нужно всегда проверять, не выходишь ли за границу массива и деление на 0 (первое ты вроде сделал)
и оптимизировать по скорости можно упростить можно
double Ts1=Tstep/pow(Xstep,2); //а тут на Xstep ноль проверял ???
double Ts2=1-2*Ts1;
for(unsigned j=1; j<h; j++)
{
for(unsigned i=1;i<(w-1);i++)
{
Ynet[i][j]=
(Ynet[i-1][j-1]+Ynet[i+1][j-1])*Ts1
+Ynet[i][j-1]*Ts2;
}
}
...........
Ynet.setSize(Tnumb,Xnumb);//v nachale tablica zapolnena nulyami
unsigned h=Ynet.getHeight(),w=Ynet.getWidth();
...........
for(unsigned j=1;j<h;j++)
for(unsigned i=1;i<(w-1);i++)
Ynet[i][j]=.....
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)