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

Найти ошибку в ф-ии, вычисляющей arctg(x) через разложение в ряд - C++

Восстановить пароль Регистрация
 
PG94
2 / 2 / 0
Регистрация: 15.01.2012
Сообщений: 181
14.10.2012, 14:30     Найти ошибку в ф-ии, вычисляющей arctg(x) через разложение в ряд #1
Доброго времени суток.
Нужно вычислить arctg(x) при x>1.
Вот код
C++ (Qt)
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>
#include<cmath>
#include<conio.h>
using namespace std;
void atan_x(double x, double eps);
int main()
{
    atan_x(22,1);
    getch();
    return 0;
}
 
void atan_x(double x, double eps)
{
    double sum=3.14/2;
    double ch_i=-1/x;
    for(int i=0; abs(ch_i)>eps && i<500; i++)
    {
        sum+=ch_i;
        ch_i*=-(2*i+1)/x*x*(2*i+3);
    }
    printf("atan(%g)=%g\n",x,sum);
}
Ф-ия выдаёт неправильный рез-т или вообще зацикливается, если убрать условие i<500. Подскажите, что не так? Спасибо.
Миниатюры
Найти ошибку в ф-ии, вычисляющей arctg(x) через разложение в ряд  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2012, 14:30     Найти ошибку в ф-ии, вычисляющей arctg(x) через разложение в ряд
Посмотрите здесь:

C++ Используя разложение в ряд, найти синус 0,4
C++ Вычислить значение arcsin x через разложение в ряд Тейлора
C++ Вычисление функции через разложение в ряд (Ряд Тейлора)
Найти разложение в ряд arcsin(x) C++
C++ Вычислить и вывести значение функции через разложение в ряд Тейлора
Рекурсия. Найти значение функции через разложение в ряд Тейлора C++
Разложение в ряд arctg(x) C++
Итеративный и рекурсивный методом вычисления ln 1 + x, через разложение в ряд C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
doctor_lecter
 Аватар для doctor_lecter
279 / 152 / 8
Регистрация: 22.09.2012
Сообщений: 283
14.10.2012, 15:44     Найти ошибку в ф-ии, вычисляющей arctg(x) через разложение в ряд #2
C++
1
2
3
4
5
6
7
8
9
10
11
void atan_x(double x, double eps)
{
    double sum=3.14/2;
    double ch_i=-1/x;
    for(int i=0; abs(ch_i)>eps && i<500; i++)
    {
        sum+=ch_i;
        ch_i*=-1/(x*x*(2*i+3)/(2*i+1));
    }
    cout << "arctg(" << x << ") = " << sum << endl;
}
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
14.10.2012, 15:50     Найти ошибку в ф-ии, вычисляющей arctg(x) через разложение в ряд #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <cmath>
int main(void)
{
 const double pi=3.14;
 double x,e,s1;
 std::cout<<"eps, x (x>1): ";
 std::cin>>e>>x;
 int n=1;
 double s=-1/x,arc=-1/x;
 do 
 {
  s1=s;
  s=pow(-1.,n+1)/((2*n+1)*pow(x,2*n+1));
  arc+=s;
  n++;
 }
 while (fabs(s1-s)<e);
 std::cout<<"y = "<<arc+pi/2<<std::endl; 
 system("PAUSE");
 return 0;
}
Добавлено через 2 минуты
PG94, у меня Ваш код всегда одно и то же выдает, вне зависимости от введенного значения.
Yandex
Объявления
14.10.2012, 15:50     Найти ошибку в ф-ии, вычисляющей arctg(x) через разложение в ряд
Ответ Создать тему
Опции темы

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