У меня есть функция getSlope, которая принимает в качестве параметров 4 двойника и возвращает еще один двойник, рассчитанный с использованием этих заданных параметров следующим образом:
double QSweep::getSlope(double a, double b, double c, double d){
double slope;
slope=(d-b)/(c-a);
return slope;
}
Проблема в том, что при вызове этой функции с аргументами например:
getSlope(2.71156, -1.64161, 2.70413, -1.72219);
возвращаемый результат:
10.8557
и это не очень хороший результат для моих вычислений. Я рассчитал наклон с помощью Mathematica, и результат наклона для тех же параметров:
10.8452
или с большим количеством цифр для точности:
10.845222072678331.
Результат, возвращаемый моей программой, не годится для моих дальнейших вычислений. Более того, я не понимаю, как программа возвращает 10,8557, начиная с 10,845222072678331 (предположим, что это примерный результат деления)? Как я могу получить хороший результат для своего дивизиона?
заранее спасибо, мадалина
Я печатаю результат с помощью командной строки:
std::cout<<slope<<endl;
Возможно, мои параметры не очень хорошие, так как я прочитал их из другой программы (которая вычисляет график; после того, как я прочитал эти параметры с его графика, я только что отобразил их, чтобы увидеть их значение, но, возможно, отображаемые векторы не совпадают) внутренняя точность вычисляемого значения..не знаю, это действительно странно.Появляются некоторые числовые ошибки..)
Когда вычисляется график, из которого я читаю свои параметры, используются некоторые числовые библиотеки, написанные на C++ (с шаблонами). Для этого вычисления не используется OpenGL.
спасибо, мадалина