Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2017, 22:13   #1
Лакира
Пользователь
 
Регистрация: 17.11.2016
Сообщений: 28
По умолчанию вычисление арктангенса в ряд

Подскажите, в чем ошибка?


Код:
#include "stdafx.h"
#include <iostream>
#include <cmath>
#define PI 3.14159265
using namespace std;
 
double myAtan(double x, int n)//через ряд
{
	double a=PI/2;
	double sum=0;
	for(int k=0; k<n;k++)
	{
		sum = pow((-1.0), (k+1))/((2*k+1)* pow(x,(2*k+1)));
		a+=sum;
		
	}
	return a;
}
 
int _tmain(int argc, _TCHAR* argv[]) {
	setlocale (LC_ALL, "Rus");
	double x;
	int n;//кол-во членов
	cin >> x >> n;

   cout << "arctg: " << atan(x) << endl;
   cout << "my arctg: " << myAtan(x, n) << endl;
    system("PAUSE");
	return 0;
	
}
Лакира вне форума Ответить с цитированием
Старый 27.05.2017, 00:38   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Вроде нет ошибок: программа рассчитывает арктангенс используя табличную функцию и с помощью ряда.

Безымянный.png


Единственное, а ты сам угол вводишь в радианах или в градусах?
ura_111 вне форума Ответить с цитированием
Старый 27.05.2017, 00:58   #3
Лакира
Пользователь
 
Регистрация: 17.11.2016
Сообщений: 28
По умолчанию

Угол указываю в радианах. Забыла: значение арктангенса ограничено отрезком [-1,1]. И тогда у меня выдает не одинаковые результаты
Лакира вне форума Ответить с цитированием
Старый 27.05.2017, 01:11   #4
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

ПИ не надо, да и формула какае то не та..
Вот, что нашёл в интернете:

Безымянный.jpg
ura_111 вне форума Ответить с цитированием
Старый 27.05.2017, 01:13   #5
Лакира
Пользователь
 
Регистрация: 17.11.2016
Сообщений: 28
По умолчанию

Интересно....Спасибо за помощь)
Лакира вне форума Ответить с цитированием
Старый 27.05.2017, 09:26   #6
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 729
По умолчанию

Ura111, зачем самому определять PI? M_PI же есть стандартное.
Cuprum5 на форуме Ответить с цитированием
Старый 27.05.2017, 09:33   #7
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 729
По умолчанию

Цитата:
Сообщение от Лакира Посмотреть сообщение
Код:
double a=PI/2;
- не понимаю зачем a присваивать PI/2, по-моему это ошибка. И зачем накапливать сумму в этой a, если Вы назначили переменную sum и в нее должны были пихать сумму.
Cuprum5 на форуме Ответить с цитированием
Старый 27.05.2017, 20:11   #8
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 729
По умолчанию

Также замечания по программе:
1) вычислять знак функцией pow() - это будет, наверное, накладно, посмотрите как это делают профессионалы:D:
http://www.programmersforum.ru/showthread.php?t=308208
- сообщение №4 в это теме форума;
2) попробуйте в этой программе использовать домножающий множитель или как щас модно говорить рекурсивное соотношение. Здесь, наверное, придется немного голову поморщить, но оно того стоит.
Cuprum5 на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VS2010 + asembler(вычисление гиперб. арктангенса) GridView Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 20.12.2012 16:08
Вычисление ф-ии разложением в ряд (C++) GUWK_Lammer Помощь студентам 0 09.02.2012 21:03
Вычисление синуса разложением в ряд jennya Общие вопросы C/C++ 4 16.10.2010 22:33
Вычисление арктангенса через ряд Тейлора. С++. chibbis Помощь студентам 1 23.12.2009 11:48
Вычисление функции разложением ее в ряд 5nizza77 Паскаль, Turbo Pascal, PascalABC.NET 1 15.10.2009 10:55