Здравствуйте!
Совсем не могу понять как так.
вот функция fX®:
double MainWidget::fX( double r)
{
double f = sqrt( r*r + l13*l13 - 2 * r * l13 * cos( beta23 - falpha(r)) ) - r*sqI13;
return f;
}
double MainWidget::falpha( double r)
{
double a = acos ( (r*r + l12*l12 - r*r*I1/I2) / (2 * r * l12) );
if( isnan(a)) a = 0;
return a;
}
void MainWidget::toFile()
{
double hi;
...
std::cerr << " hi = " << hi << std::endl;
std::cerr << "fX ( "<< hi << " ) = " << fX( hi ) << std::endl;
hi = 233.623;
std::cerr << "fX ( "<< hi << " ) = " << fX( hi ) << std::endl;
}
hi = 233.623
fX ( 233.623 ) = 34.367
fX ( 233.623 ) = -71.3663
Где в функции toFile инициализируется переменная hi? После второго вывода в cerr?
Разобрался.
if( isnan(a)) a = 0;
учитывает только случай ( аргумент > +1 ). ( у значений типа 1,00000023, отрезает "хвост" - погрешнось делния double'ов) .Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)