0 / 0 / 0
Регистрация: 13.10.2020
Сообщений: 111
1

Вычисление sin с точностью как со встроенной функцией

20.03.2022, 14:57. Показов 537. Ответов 9
Метки нет (Все метки)

Нужно написать функцию вычисления sin, чтобы точности совпадали как у встроенной функцией библиотеки. Нашла на просторах форума, но к сожалению не высчитывает с точностью до 16 чисел после запятой. Как это исправить?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
using namespace std;
int main()
{
    double x,q,s=0;
    int n;
    cout<<"Enter x=";
    cin>>x;
    q=x;
    s=q;
    for (n=1; fabs(q) > 1e-16;n++)
    {
    q*=(-1)*x*x/(2*n)/(2*n+1);
    s+=q;
    }
    cout<<"sin("<<x<<") = "<<s<<endl;
    system("PAUSE");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.03.2022, 14:57
Ответы с готовыми решениями:

Вычисление квадратного корня, не пользуясь встроенной функцией
Товарищи, здравствуйте! Попалась мне следующая задачка: &quot;Написать программу извлечения...

Как найти предел функции lim x->0 (tg(x)-sin(x)/sin^2(x) c точностью до е
Напишите код программы (найти предел функции lim x-&gt;0 (tg(x)-sin(x)/sin^2(x)) c точностью до е ...

Даны натуральное п, действительное x. Вычислить: sinx + sin sin x + sin sin sin x +…+ sin sin sin … sin x
Даны натуральное п, действительное x. Вычислить: sinx + sin sin x + sin sin sin x +…+ sin sin...

Рекурсия: вычисление sin(x)+sin(sin(x))+ ... + sin(sin(sin(...(sin(x)))
Здравствуйте, помогите пожалуйста реализовать на прологе. Заранее спасибо. y=sin(x)+sin(sin(x))+...

Найти сумму ряда с точностью 10^-3: S=x*sinp/4+x^2*sin*2*p/4+.+x^n*sin*n*p/4)
Можно, пожалуйста, с объяснением

9
Диссидент
Эксперт C
26825 / 16734 / 3666
Регистрация: 24.12.2010
Сообщений: 37,459
20.03.2022, 15:09 2
Ekaterina 12, Высчитывать-то она высчитывает. Но по умолчание cout выводит только 6 знаков
надо добавить что-то вроде вроде
C++
1
cout << precession(16) << s;
0
0 / 0 / 0
Регистрация: 13.10.2020
Сообщений: 111
20.03.2022, 15:13  [ТС] 3
Байт, всё равно точности не совпадают со встроенной функцией sin
0
Диссидент
Эксперт C
26825 / 16734 / 3666
Регистрация: 24.12.2010
Сообщений: 37,459
20.03.2022, 15:20 4
Цитата Сообщение от Ekaterina 12 Посмотреть сообщение
точности не совпадают
На сколько?
0
Эксперт CЭксперт С++
3442 / 2027 / 1107
Регистрация: 14.12.2018
Сообщений: 3,979
Записей в блоге: 1
20.03.2022, 16:37 5
Ekaterina 12, это может быть вариант ? (переделал ваш код).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <iomanip>
#include <cmath>
int main()
{
    double x;
    std::cout << "Enter x = ";
    std::cin >> x;
    double t = -x * x, q = x, s = q;
    for (int n = 1; std::fabs(q) > 1e-16; n++)
    {
        q *= t / (2 * n) / (2 * n + 1);
        s += q;
    }
    std::cout << "sin(" << x << ") = "
        << std::setprecision(16) << s << std::endl;
    system("pause");
    return 0;
}
И тест:
Код
Enter x = 2
sin(2) = 0.9092974268256817
0
0 / 0 / 0
Регистрация: 13.10.2020
Сообщений: 111
22.03.2022, 15:27  [ТС] 6
Volga_, с 2 всё совпадает, а вот с 3 и т.д. уже погрешность
При x = 3;
Встроенная: 0,1411200080598672
Не встроен.: 0,14112000805986716

При x = 5;
Встроенная: -0,9589242746631385
Не встроен.: -0,9589242746631386
0
Эксперт CЭксперт С++
3442 / 2027 / 1107
Регистрация: 14.12.2018
Сообщений: 3,979
Записей в блоге: 1
22.03.2022, 15:56 7
Ekaterina 12, для типа double у вас получается примерно 14 или 15 цифр со смысленными значениями (не знаю точно писать на русском) ! Поэтому вы работаете с бессмысленными цифрами !
3
Диссидент
Эксперт C
26825 / 16734 / 3666
Регистрация: 24.12.2010
Сообщений: 37,459
22.03.2022, 16:03 8
Цитата Сообщение от Volga_ Посмотреть сообщение
со смысленными значениями
с осмысленными значениями
2
1467 / 926 / 280
Регистрация: 25.01.2019
Сообщений: 2,339
22.03.2022, 16:16 9
Цитата Сообщение от Volga_ Посмотреть сообщение
(не знаю точно писать на русском)
Пиши "C++ не кулькулятор!"

Не знаю, есть ли у вас слово отдельно для этой маленькой машинки; переводчики говорят что это тоже компьютер
Миниатюры
Вычисление sin с точностью как со встроенной функцией  
1
Модератор
Эксперт С++
12074 / 9756 / 5900
Регистрация: 18.12.2011
Сообщений: 26,193
22.03.2022, 17:58 10
Ekaterina 12, Ряд сходится тем хуже, чем дальше мы отклоняемся от точки разложения (здесь от нуля).
Используйте то, что sin(n*pi+x)=sin(x) при n - четном и =-sin(x) при n нечетном.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.03.2022, 17:58
Помогаю со студенческими работами здесь

Для заданного числа x распечатать числовую последовательность: sin(x), sin(sin(x), sin(sin(sin(x), …
var x,z:integer; y:real; begin readln(x); y:=abs(sin(x)); while y&gt;0.01 do begin ...

Работа со встроенной функцией attachments
Здравствуйте Господа! Возникла такая дилема. Есть встроенная функция &quot;attachments&quot;. Пользователь...

Вычислить y – первое из чисел sin x, sin sin x, sin sin sin x, …, меньшее по модулю 10-4
Вычислить y – первое из чисел sin x, sin sin x, sin sin sin x, …, меньшее по модулю 10-4. ...

Вычислить первое из чисел sin(x), sin(sin(x)), sin(sin(sin(x))), ... , меньшее по модулю 10^-4
1)Вычислить y - первое из чисел sinx, sin sinx,sin sin sinx,..., меньшее по модулю 10^-4 ...

Вычислить у - первое из чисел sin х, sin sin x, sin sin sin x, ., меньшее по модулю 10-4
Вычислить у - первое из чисел sin х, sin sin x, sin sin sin x, ..., меньшее по модулю 10-4 Видел...

Для заданных n и x посчитать выражение s=sin x+sin sin x+...+sin sin sin...sin x
Для заданных n и x посчитать выражение s=sin x+sin sin x+...+sin sin sin...sin x (n раз).


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru