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

Вычислить cos x по разложению с заданной точностью - C++

Восстановить пароль Регистрация
 
Slowpok
4 / 4 / 0
Регистрация: 03.01.2012
Сообщений: 112
09.06.2012, 19:35     Вычислить cos x по разложению с заданной точностью #1
Помогите перевести и подправить программу с паскаля на с++ Суть в том, что не точно читает, проблема с циклом.

Задание:

Вычислить cos x по формуле разложением

http://www.cyberforum.ru/cgi-bin/latex.cgi?cos x = \left(1 - \frac{{4x}^{2}}{{\pi}^{2}} \right) * \left(1 - \frac{{4x}^{2}}{{9\pi}^{2}} \right)*...*\left(1 - \frac{{4x}^{2}}{{{\left(2n - 1 \right)}^{2}  \pi}^{2}} \right)*...

с заданной точностью http://www.cyberforum.ru/cgi-bin/latex.cgi?\varepsilon.


Код на паскале:

Pascal
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
uses crt;
var x,e,t,p,p1,k:real;
    n,i:integer;
begin
clrscr;
write('x=');
readln(x);
repeat
write('e>0  e=');
readln(e);
until e>0 ;
k:=4*x*x/sqr(pi);
p:=1-k;
p1:=0;
n:=1;
while abs(p-p1)>e do
 begin
  p1:=p;
  n:=n+1;
  t:=1-k/sqr(2*n-1);
  p:=p*t;
 end;
writeln('P=',p1:0:5);
write('cos(x)=',cos(x):0:5);
readln
end.
Добавлено через 20 часов 30 минут
вот что получилось, помогите доработать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream.h>
#include <math.h>
using namespace std;
int main()
{
    setlocale(0,"Rus");
    double x,p,eps,cosin=1,n=0;
    cout<<"(eps>0): ";
    cin>>eps;
    cout<<"x: ";
    cin>>x;
    p=4*x*x/pow(M_PI,2);
        while(p>eps)
    {
        cosin=cosin*(1-p);
        n++;
        p=4*x*x/pow((2*n-1),2)*pow(M_PI,2);
    }
    cout<<cosin<<endl;
    cout<<cos(x)<<endl;
    system("PAUSE");
    return 1;
}
Добавлено через 18 минут
помогите пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2012, 19:35     Вычислить cos x по разложению с заданной точностью
Посмотрите здесь:

C++ Вычислить с заданной точностью
C++ Вычислить с заданной точностью
C++ Вычислить с заданной точностью
C++ Вычислить по формуле. ВЫчислить с заданной точностью
C++ Вычислить с заданной точностью
C++ Вычислить сумму с заданной точностью
C++ Вычислить выражение с заданной точностью
C++ Вычислить значение cos шести градусов с точностью до 0,001

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
09.06.2012, 20:00     Вычислить cos x по разложению с заданной точностью #2
Всё сделал, просто надо точность как можно меньше вводить, и оно считает всё нормально. Держи:
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
#include <iostream>
#include <math.h>
using namespace std;
const double PI=3.1415926;
int main()
{
    setlocale(0,"Rus");
    double x,e,t,p,p1,k;
    int n,i;
    cout<<"Введите х: ";cin>>x;
    do
    {
        cout<<"Введите e>0(лучше всего 0.00001): ";cin>>e;
        if(e<0) cout<<"Повторите ввод."<<endl;
    }
    while(e<0);
    k=4*x*x/pow(PI,2);
    p=1-k;
    p1=0;
    n=1;
    while (abs(p-p1)>e )
    {
        p1=p;
        n=n+1;
        t=1-k/pow((2*n-1.0),2);
        p=p*t;
    }
    cout<<"Наш результат: "<<p1<<endl;
    cout<<"Оригинал(cos(x)): "<<cos(x)<<endl;
    system("PAUSE");
    return 0;
}
Catstail
Модератор
 Аватар для Catstail
21436 / 10221 / 1666
Регистрация: 12.02.2012
Сообщений: 17,096
09.06.2012, 20:27     Вычислить cos x по разложению с заданной точностью #3
Вот:

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
#include "iostream.h"
#include "math.h"
 
int main(int argc, char* argv[])
{
    double x,e,t,p,p1,k,pi=3.1415926535;
    int n,i;
 
    cout << "x=";
    cin >> x;
 
    cout << "e=";
    cin >> e;
 
    k=4.0*x*x/(pi*pi);
 
    p=1.0-k;
    p1=0.0;
    n=1.0;
 
    while(1)
    {
 
      if (fabs(p-p1) < e) break;  
      p1=p;
      n++;
      t=1.0-k/pow((2.0*n-1.0),2);
      p=p*t;
    }
       
    cout << "My cosine      =" << p << endl;
    cout << "Standard cosine=" << cos(x) << endl;
    
    return 0;
}
Yandex
Объявления
09.06.2012, 20:27     Вычислить cos x по разложению с заданной точностью
Ответ Создать тему
Опции темы

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