Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
MaxCPP
0 / 0 / 0
Регистрация: 26.07.2013
Сообщений: 9
#1

Точность sin, cos - C++

30.11.2013, 19:01. Просмотров 1071. Ответов 6
Метки нет (Все метки)

Вычисляя sin(M_PI) в C++ я получаю 1.22465e-016. Но надо 0, а не число, близкое к 0. Можно ли какими-нибудь настройками компилятора, линковщика, #define каким-нибудь сделать результат вычисления sin(M_PI) равным 0? Не хочется делать "костыль" с проверкой...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2013, 19:01     Точность sin, cos
Посмотрите здесь:

Из Sin в Cos С++ - C++
Здраствуйте, мне нужно написать програму которая за рядами Тейлора выводит косинус . Проблема заключаеться в том ,что если програма...

Sin() cos() - C++
Всем приветик. У меня последний Qt MinGW. Вопрос: Перед использованием функции sin(x), мне сказали что нужно градусы перевести в...

y=sin(n*x)+cos(k*x)+ln(m*x) - C++
y=sin(n*x)+cos(k*x)+ln(m*x) где x= { e^z+z, при z>1 z^2+1, при z меньше или равно 1 не поможете ли мне пожалуйста...

Фунции sin и cos - C++
Здравствуйте. Начал писать игру, аналог знаменитых Tank Wars. При использовании библиотечных(math.h) функций sin и cos появилась...

Выражение с cos() и sin() - C++
помагите с выражением.а то запуталась окончательно(( z=cos4x+sin y+1/4 sin22x - 1

Определить sin и cos - C++
Считая, что функции sin и cos применимы только к аргументам в диапазоне , вычислить y = sin(x) для любого заданного вещественного числа x.

Не хочет посчитать cos и sin - C++
Пишу вот такой цикл: int A=5; int alpha=1; for(int i=0; i<4; i++){ int re=A*std::cos(i*alpha); int im=A*std::sin(i*alpha);}...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
30.11.2013, 19:10     Точность sin, cos #2
А проверять ты как собираешься? sin( M_PI ) == 0 ?
MaxCPP
0 / 0 / 0
Регистрация: 26.07.2013
Сообщений: 9
30.11.2013, 19:14  [ТС]     Точность sin, cos #3
дело в выводе на экран... Если проверять, то так:
to_string(sin(M_PI))=="0"
главное, чтобы вывод был читабельным и максимальной точности. Ясно дело, что 1.22465e-016 близко к 0, но это не читабельно.
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,183
Завершенные тесты: 1
30.11.2013, 19:18     Точность sin, cos #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <conio.h>
#define _USE_MATH_DEFINES
#include <math.h>
double MySin(double x)
{
    if ( x>=M_PI && x<=2.*M_PI )
        return -sin(x-M_PI);
    else
        return sin(x);
}
int main()
{
  printf("%le",MySin(M_PI));
  getch();
  return 0;
}
Т.е. аргумент x приводим к интервалу [0,пи].
Тогда сходимость разложения в ряд Тейлора наилучшая
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,930
Завершенные тесты: 1
30.11.2013, 19:20     Точность sin, cos #5
Точность числа типа double составляет 15-16 десятичных цифр. То есть, число "пи" представляется у нас с точностью где-то до 15 знака после запятой. Соответствующим(и даже на один знак лучшим) получается и отклонение от ожидаемого результата, если учесть, что в этом регионе sin(x) почти полностью совпадает с прямой pi - x. Так что сначала надо найти способ хранить число "пи" с идеальной точностью, потом - производить расчёты с такой же точностью...
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
30.11.2013, 19:20     Точность sin, cos #6
http://www.cplusplus.com/reference/i.../setprecision/
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2013, 19:34     Точность sin, cos
Еще ссылки по теме:

Символьное дифференцирование cos и sin - C++
Здравствуйте. Хочу написать символьное дифференцирование cos и sin. Производную sin определяю через cos, cos через sin. Ошибка понятна:...

Нахождение cos,sin и tg угла - C++
Требуется создание программы, которая вводе значения угла выводил cos, sin и tg этого угла. Желательно в форме cos(угол)=значение;...

Вычисление sin, cos, tg, ctg - C++
хотел написать прогу для вычисления sin, cos, tg, ctg по градусной мере. но никак не получается выдаёт не та значения. проверял по таблице...

Вычисление тригонометрических функции sin/cos - C++
как реализовать вычисление sin и cos в c++. так как я чайник в с++ и до меня не спервого раза доходит то что написано в книге. помогите...

Тригонометрические функции sin, cos, tg, ctg - C++
С помощью циклов и арифметических операций найти значение тригонометрической функции sin с заданной точностью. НЕ использовать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
30.11.2013, 19:34     Точность sin, cos #7
C++
// g++ file.cpp -o file -std=c++11
#include <iostream>
#include <cmath>
#include <cfenv>
using namespace std;
 
int main ()
{
    fesetround(FE_TONEAREST);
    cout << nearbyint(sin(M_PI)) << endl;
}
Yandex
Объявления
30.11.2013, 19:34     Точность sin, cos
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru