мы знаем, что cos (2mPI) = 1 для каждого целого числа m. Однако, я получаю следующий выход.погрешность поплавковой точки math.cos погрешность
value of m = 1.000000e+01 and value of cos(2*m*pi) = 1.000000000000000
value of m = 1.000000e+02 and value of cos(2*m*pi) = 1.000000000000000
value of m = 1.000000e+03 and value of cos(2*m*pi) = 1.000000000000000
value of m = 1.000000e+04 and value of cos(2*m*pi) = 1.000000000000000
value of m = 1.000000e+05 and value of cos(2*m*pi) = 1.000000000000000
value of m = 1.000000e+06 and value of cos(2*m*pi) = 1.000000000000000
value of m = 1.000000e+07 and value of cos(2*m*pi) = 1.000000000000000
value of m = 1.000000e+08 and value of cos(2*m*pi) = 0.999999999999997
value of m = 1.000000e+09 and value of cos(2*m*pi) = 0.999999999999998
value of m = 1.000000e+10 and value of cos(2*m*pi) = 0.999999999989970
value of m = 1.000000e+11 and value of cos(2*m*pi) = 0.999999999564035
value of m = 1.000000e+12 and value of cos(2*m*pi) = 0.999999854510183
value of m = 1.000000e+13 and value of cos(2*m*pi) = 0.999985451053279
value of m = 1.000000e+14 and value of cos(2*m*pi) = 0.999742535619873
value of m = 1.000000e+15 and value of cos(2*m*pi) = 0.888410566323832
value of m = 1.000000e+16 and value of cos(2*m*pi) = 0.718430574337184
value of m = 1.000000e+17 and value of cos(2*m*pi) = -0.438105159926831
value of m = 1.000000e+18 and value of cos(2*m*pi) = 0.176561618304251
value of m = 1.000000e+19 and value of cos(2*m*pi) = -0.114036978390490
value of m = 1.000000e+20 and value of cos(2*m*pi) = 0.689416156299807
Почему мы не всегда вычисляем правильный выход? поскольку значение m становится больше, изменение приближения значительно. Не уверен, какой тип ошибки с плавающей точкой вызывает это. Любая помощь?
Добро пожаловать в точность с плавающей запятой. Вы также можете посмотреть, как здесь вычисляется косинус. По предположению, это, вероятно, расширение сортов с определенной точностью, а большие значения аргументов ('x') заставят это расширение создавать большие неточности. – Evert
Связанные: http://stackoverflow.com/questions/2284860/how-does-c-compute-sin-and-other-math-functions – Evert
@Olaf: YAW. 'sin' и' cos' математически определены для всех действительных чисел (действительно, для всех комплексных чисел). Но то, что вы сказали об ошибках округления, верно. – TonyK