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

вычислить синус без математических библиотек с точностью 0,001 - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
Alekcandr9
0 / 0 / 0
Регистрация: 12.04.2011
Сообщений: 12
20.04.2011, 12:48     вычислить синус без математических библиотек с точностью 0,001 #1
Здравствуйте уважаемые форумчане, как то я задавал вопрос как вычислить синус без библиотеки "cmath", но сходив в университет, обнаружил, что неправильно записал условие, которое звучит так:

Вычислить синус вводимого угла, без использования математических библиотек, с точностью 0,001.

Посидевши за ПК 1 час допёр вот до такого кода:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "stdafx.h"
#include "iostream"
#define PI 3,141592653589793238
using namespace std;
 
double fact(double n){//Функция вычисления факториала
    double f=1,b=2*n+1;
    int i;
    for(i=0;i<=b;i++){
        f=f*i;
    if(i==0){f=1;}
                     }
    return f;}
 
double pow(double x, double n){//Функция вычисления x^2n+1
    double X=1, b=2*n+1;
    int i;
    for(i=1;i<=b;i++){X=X*x;}
 
    return X;}
 
int main(){
    double x,n,power,factorial,sin=0;
    cout<<"Enter x: "; cin>>x;
    x=x*PI/180;
    do{
        for(n=0;;n++){sin=sin+((-1/(factorial=fact(x)))*(power=pow(x,n)));}//Цикл без ограничения n, я думал что ограничение задасться в цикле while 
      }while(((-1*power)/factorial)>=0.001);//Цикл с постусловием, выполняемый до тех пор пока: (-1*power)/factorial)>=0.001
        
    cout<<sin<<"\n";
    
    system("pause");
 
    return 0;}
Попрошу проанализировать код и указать все неточности, при запуске и вводе значения x ничего не происходит, как я понял получился бесконечный цикл и скорее всего это вот эта строка:
C++
1
for(n=0;;n++){sin=sin+((-1/(factorial=fact(x)))*(power=pow(x,n)));}
, вопрос как сделать так чтобы цикл
C++
1
for(n=0;;n++)
распространял своё действие и на функции??++
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2011, 12:48     вычислить синус без математических библиотек с точностью 0,001
Посмотрите здесь:

Найти сумму ряда с точностью е=0,001, общий член которого: C++
Найти сумму ряда с точностью =0,001 C++
Используя интерполяционную формулу Ньютона, вычислить значение функции при заданных значениях аргумента с точностью до 0.001 C++
C++ Метод половинного деления с точностью до 0.001
C++ Определить количество циклов при вычислении с точностью 0,001 суммы
Сумма ряда с точностью 0,001 C++
C++ Написать программу, которая вычисляет значение e^2 с точностью до 0,001
C++ Вычислить значение cos шести градусов с точностью до 0,001

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IrineK
Заблокирован
20.04.2011, 15:38     вычислить синус без математических библиотек с точностью 0,001 #2
Выводит таблицу синусов для Х в окрестности 0

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
        int i,fact;
        double x=0.0,dx=0.1,eps=0.00001,add,sum;
        cout<<"X\t||\t sin(X)\t||\t\t N iter\n";
        cout<<"_____________________________________________________\n";
        while(x<0.9)
        {       
                add=x;
                sum=x;
                fact=1;
                for(i=2;add>eps;i++)
                {       fact*=i;
                        if(i%2) 
                        {       add*=-x*x/fact;
                                sum += add;
                        }
                }
        cout<<x<<"\t||\t"<<fixed<<setprecision(5)<<sum<<"\t\t||\t"<<i<<endl;
        x+=dx;
        }
        return 0;
}
Excelvrn
 Аватар для Excelvrn
0 / 0 / 0
Регистрация: 19.05.2012
Сообщений: 25
02.03.2016, 09:43     вычислить синус без математических библиотек с точностью 0,001 #3
ты использовал ряд Тейлора, хотя для вычисления синуса (косинуса) мог использовать препроцессор, заточенный под числа с плавающей запятой.
Yandex
Объявления
02.03.2016, 09:43     вычислить синус без математических библиотек с точностью 0,001
Ответ Создать тему
Опции темы

Текущее время: 12:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru