Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
Mirajjj
0 / 0 / 0
Регистрация: 22.10.2009
Сообщений: 5

Из Sin в Cos С++ - C++

23.09.2010, 11:52. Просмотров 4294. Ответов 48
Метки (Все метки)

Здраствуйте, мне нужно написать програму которая за рядами Тейлора выводит косинус . Проблема заключаеться в том ,что если програма добавляет елементы сумы Тейлора то (как у меня было в разных интерпретациях цыкла) то после 30 елемента или 70 выдает -1,#IND , а значения аргумента будут вводится от 100. Порывшись на американский сайтах нашел програму которая почти идеально решает задачу для Синуса (она с циклом Тейлора только до 10, а значение начинают незначительно (0.0000001) расходиться когда вводимый аргумент больше 1 000 000. Я хотел переделать эту програму на Косинус, но увы, некоторые части кода вообще не понимаю зачем нужны, прошу помощи и обьяснений, Спасибо.

Вот сам код функций. Которую нашел, работает на ура, но это Синус.

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
35
36
37
38
39
40
41
42
double SinHelp(double x)
{
    int i;
    double y=x, r=x;
        
        for (int i=0; i<10; i++)
            {
                y*=-x*x;
                r+=1.0/Factorial(1+2*(i+1))*y;
            }
    return r;
}
 
double SinCout(double number)//Функция которую буду выводить в главном файле
{
    double sign=1, x=number/3.141592653589793;
        if(x<0.0)
            {
                sign=-1;
                x=-x;
            }
        int i= static_cast<int>(x+0.5);
        double a=x-i;
            if((i-i/2*2)!=0)
                sign=-sign;
    return sign*SinHelp(a*3.141592653589793);
}
 
double Factorial(int num)
{
    double x=num, result=1,plus=1;
    for(int i=0; i!=x; ++i)
        {
            if(x!=0)
            {   result*=plus;
                ++plus;
            }
            if(x==0)
                result=1;
        }
    return result;
}
Очень интересует , что делает фрагмент кода :
C++
1
2
int i= static_cast<int>(x+0.5);
double a=x-i;
Прошу если кому не трудо ,не только сказать, а еще и проверить на своих компиляторах если значение аргумента косинуса будет больше 1000, будет ли оно соответствовать стандартной функцыи косинуса в С++.

Если кто не помнит...

Ряд Тейлора для Синуса

Из Sin в Cos С++

Ряд Тейлора для Косинуса

Из Sin в Cos С++
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2010, 11:52
Готовые ответы и решения для C++ Из Sin в Cos С++:

Функция sin(x+y)=sin(x)cos(y)+cos(x)sin(y)
как её записать на языке с++?

Sin() cos()
Всем приветик. У меня последний Qt MinGW. Вопрос: Перед использованием...

y=sin(n*x)+cos(k*x)+ln(m*x)
y=sin(n*x)+cos(k*x)+ln(m*x) где x= { e^z+z, при z&gt;1 z^2+1,...

Определить sin и cos
Считая, что функции sin и cos применимы только к аргументам в диапазоне ,...

Точность sin, cos
Вычисляя sin(M_PI) в C++ я получаю 1.22465e-016. Но надо 0, а не число, близкое...

Sin и cos в с++ Борланд
Здравствуйте, я пытаюсь создать 3д фигуру и сделать ей поворот, перемещение,...

48
Из Sin в Cos С++ C++   Следующее сообщение темы 
Другие темы раздела
C++ Warning C4700: использована неинициализированная локальная переменная "matrix" http://www.cyberforum.ru/cpp-beginners/thread168449.html
тогда еще 1 вопрос: при попытке реализовать чтение из файла в виде функции: #include <fstream> #include <iostream> #include <tchar.h> #include <math.h> #include <stdio.h> #include <iomanip>
C++ Метасимвол. Задание Входной текст хранится в файле и состоит из слов, разделенных пробилами. Ввести из клавиатуры шаблон с метасимволами (метасимвол задается в конкретном варианте). Во входном тексте найти... http://www.cyberforum.ru/cpp-beginners/thread168445.html
C++ Возращение результата функции в виде указателя на объект
есть функция My_Class* preprocessing(const My_Class* obj) { My_Class* Result = new My_Class(); ... return Result; } внутри неё создается указатель на локальный объект, проводятся действия и...
C++ double a=1/2; cout<<a;(a=0) что не так?
#include <iostream> using namespace std; void main() { double a=1/2; cout<<a; } выводит a=0; использую 2008 студию. почему округляет до целого? Как исправить?
C++ Ошибка при выводе строки http://www.cyberforum.ru/cpp-beginners/thread168435.html
Подскажите в чем дело?? #include <iostream> #include <conio.h> #include <string.h> using namespace std; class BinarySearchTree { private:
C++ Потоки Здравствуйте, помогите пожалуйста преподаватель сказал нужно добавить код в третьем потоке(thread3), чтобы событие не происходила пока не заполнится массив. Задача: Один поток готовит матрицу в... подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru