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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 46, средняя оценка - 4.61
isaak
102 / 39 / 9
Регистрация: 17.10.2010
Сообщений: 658
#1

Вычисление косинуса - C++

17.10.2010, 21:29. Просмотров 6061. Ответов 11
Метки нет (Все метки)

:
Всем добрового время суток, я пока только начинаю изучать C++ и у меня поэтому много вопросов. Дана программа которая используя разложения косинуса, вычисляет его различные значения x:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
const int N = 100;
int main() {
    double x, q, s = 0;
        int n;
    cout << "Enter x = ";
    cin >> x;
    q = x;
    for (n = 1; n <= N; n++) {
        s += q;
        q *= (-1) * x * x /(2 * n - 1) / (2 * n);}
    cout << "cos("<<x<<") = "<< s << endl;
    return 0;
}
программа выдает не правильные значения углов 30, 45, 60, 90 и 180. Скажите пожалуйста правильна ли она вообще? Заранее огромное спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2010, 21:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычисление косинуса (C++):

Вычисление косинуса через ряд - C++
Здравствуйте =) Пытаюсь посчитать косинус через ряд Тейлора, написал программку, но не могу понять, как она считает (результаты не сходятся...

Вычисление косинуса разложением в ряд (C++ и Asm) - C++
В общем такая ситуация: Нужно посчитать cos используя разложение в Ряд Вот мои наброски #include &lt;stdio.h&gt; #include &lt;math.h&gt; ...

Найти ошибку в программе. Приближенное вычисление косинуса - C++
Писал вот такую программу для приближенного вычисления косинуса через ряды, в принципе только для того что бы разобраться с функциями. Но...

Вычисление косинуса угла между векторами, в чем ошибка - C++
Написать программу для вычисления косинуса угла между векторами, заданными своими координатами (скалярное произведение векторов делится...

Таблица косинуса - C++
Не могу разобраться. Кто понимает о чем здесь речь - отзовитесь.

Значение косинуса - C++
Как сделать чтобы значение косинуса выдавало не в радианах,а в градусах? Тоесть выдает cos(4.43)=-0.278 , а нужно cos(4.43)=0.997

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
KuKu
1558 / 1036 / 78
Регистрация: 17.04.2009
Сообщений: 2,985
17.10.2010, 21:36 #2
угол в радианах ?
0
isaak
102 / 39 / 9
Регистрация: 17.10.2010
Сообщений: 658
17.10.2010, 21:38  [ТС] #3
Алгоритм и формула вычисления косинуса правильны или нет?
0
KuKu
1558 / 1036 / 78
Регистрация: 17.04.2009
Сообщений: 2,985
17.10.2010, 21:38 #4
C++
1
q = x;
у косинуса первый член 1 вродь. Заменить надо на
C++
1
q = 1;
1
TheMachinist
242 / 174 / 15
Регистрация: 14.06.2010
Сообщений: 422
17.10.2010, 21:39 #5
C++
1
2
3
4
5
#define _USE_MATH_DEFINES
#include <cmath>
 
radians = x *  M_PI / 180;
cout << "cos " << x << " = " << cos(radians);
и не надо мучаться
1
isaak
102 / 39 / 9
Регистрация: 17.10.2010
Сообщений: 658
17.10.2010, 21:47  [ТС] #6
Программа используя разложения косинуса в ряд Тейлора должна вычислять, значения x косинуса в любой точке. Скажите пожалуйста правильно ли написана программа?
0
KuKu
1558 / 1036 / 78
Регистрация: 17.04.2009
Сообщений: 2,985
17.10.2010, 21:48 #7
isaak, ну вычислите для x=300*pi
0
isaak
102 / 39 / 9
Регистрация: 17.10.2010
Сообщений: 658
17.10.2010, 21:52  [ТС] #8
Получается отрицательное значение с плавающей точкой, а какой правильный алгоритм?
0
KuKu
1558 / 1036 / 78
Регистрация: 17.04.2009
Сообщений: 2,985
17.10.2010, 21:56 #9
Да тут подвох в больших числах, которые не умещаются в стандартных типах. x=x%(2*pi) - можно сразу после ввода написать, правда будет падать точность из-за того, что число пи все не знаем.
0
isaak
102 / 39 / 9
Регистрация: 17.10.2010
Сообщений: 658
17.10.2010, 22:12  [ТС] #10
А алгоритм и формула вычисления правильны???????
0
KuKu
1558 / 1036 / 78
Регистрация: 17.04.2009
Сообщений: 2,985
17.10.2010, 22:55 #11
Цитата Сообщение от isaak Посмотреть сообщение
А алгоритм и формула вычисления правильны???????
да, все верно.
0
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
17.10.2010, 23:39 #12
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
#include <cstdio>
#include <cmath>
#include <iostream> 
 
using namespace std;
 
#define PRECISION 1e-6
 
//exp(x) = 1 - x^2/2! + x^4/4! 
 
double _cos( const double x ){
  double dVal, dTemp;
  unsigned nStep = 1;
  for( dVal = 1.0, dTemp = 1.0; fabs(dTemp) >= PRECISION ; ++nStep ){
    dTemp *= -x*x/((2.0*nStep)*(2*nStep-1));
    dVal += dTemp;
  }
  return dVal;
}
 
int main(){
  printf( "%f %f\n", _cos( 5.0 ), cos(5.0) );
  return 0;
}
знали бы вы сколько я репу чесал, пока не додумался fabs поставить
пора бы уже хрестоматию всех разложений составлять
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2010, 23:39
Привет! Вот еще темы с ответами:

Нормальное значение косинуса - C++
float x = 1.57079637; cos(x) ~ -4.32051034e-8; Как нормально взять косинус? что бы было ~0

Разложение косинуса в ряд Тейлора - C++
подскажите как написать програму для разложения косинуса в ряд Тейлора

Задания интервала phi у косинуса - C++
Нужно выводить значение cos(phi) phi принадлежит \left и \left как запрограммировать этот промежуток? phi у меня изменяется цикличность...

Разложение косинуса в ряд тейлора - C++
Результат вычисления cos(x) сравнить со значением, вычисленным для заданных x с помощью стандартных соответствующих функций. Для устранения...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.10.2010, 23:39
Ответ Создать тему
Опции темы

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