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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2009, 13:55   #1
bondik
Форумчанин
 
Регистрация: 24.04.2008
Сообщений: 300
По умолчанию вычисление cos разложением в ряд

Вообщемто вот сам ряд
Изображения
Тип файла: png 72d2238b72fd873a6178a8bb67f4ea5b.png (2.4 Кб, 246 просмотров)
bondik вне форума Ответить с цитированием
Старый 05.01.2009, 13:57   #2
bondik
Форумчанин
 
Регистрация: 24.04.2008
Сообщений: 300
По умолчанию

вот код:
Код:
double cosin(double x,double pogr){
double k=-1;double chlen;double n=1;
double xn=x*x;double summ=0;
    do {                     //цикл разложения в ряд
    chlen=(k*xn)/(fact(2*n));
    n++;k=-k;xn*=x*x;
    summ+=chlen;

	 } while (chlen>pogr); //пока член больше погрешности
return summ;
}

double fact(double n)
{double fac=1;
for (int i=1;i<=n;i++)
fac*=i;
return fac;

}

трассировкой выяснил что всегда вычслияет только два члена и выходит из цикла,независимо от погрешности =(

Подскажите пожайлуйста в чем ошибка
bondik вне форума Ответить с цитированием
Старый 05.01.2009, 14:13   #3
bondik
Форумчанин
 
Регистрация: 24.04.2008
Сообщений: 300
По умолчанию

Сам нашел ошибку...
Надо в условие цикла член по модулю брать =(
bondik вне форума Ответить с цитированием
Старый 05.01.2009, 14:47   #4
bondik
Форумчанин
 
Регистрация: 24.04.2008
Сообщений: 300
По умолчанию

Может кому пригодится разложения : cos,arcctg,arth,sech
Код:
//вычисление cos
double cosin(double x,double pogr){
double k=-1;double chlen=0;double n=1;
double xn=x*x;double summ=0;
do {                                //цикл разложения в ряд
	summ+=chlen;
    chlen=(k*xn)/fact(2*n);
    n++;k=-k;xn*=x*x;
    } while (fabs(chlen)>pogr); //пока член больше погрешности
return summ;
}


//вычисление arcctg
double arccatg(double x,double pogr){
double k=-1;double chlen=0;double n=1;
double xn=x*x*x;double summ=0;
do {                                //цикл разложения в ряд
	summ+=chlen;
    chlen=(k*xn)/((2*n)+1);
    n++;k=-k;xn*=x*x;
    } while (fabs(chlen)>pogr); //пока член больше погрешности
return 1.57-summ+x;
}


//вычисление arth
double arthh(double x,double pogr){
double chlen=0;double n=1;
double xn=x*x*x;double summ=0;
do {                                //цикл разложения в ряд
	summ+=chlen;
    chlen=xn/((2*n)+1);
    n++;xn*=x*x;
    } while (fabs(chlen)>pogr); //пока член больше погрешности
return summ+x;
}


//вычисление sech
double sechh(double x,double pogr){
double chlen=0;double n=1;
double xn=x*x;double summ=0;
do {                                //цикл разложения в ряд
	summ+=chlen;
    chlen=xn/fact(2*n);
    n++;xn*=x*x;
    } while (fabs(chlen)>pogr); //пока член больше погрешности
return 1/summ;
}



double fact(double n)
{double fac=1;
for (int i=1;i<=n;i++)
fac*=i;
return fac;

}
bondik вне форума Ответить с цитированием
Старый 08.01.2014, 23:40   #5
vitaliz
Пользователь
 
Регистрация: 14.12.2013
Сообщений: 10
По умолчанию

При вычислении косинуса
summ=0-неправильно.
правильно s=1; ведь ряд начинается с 1.
vitaliz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление значений тригонометрических функций на основе разложения в ряд Маклорена Gangzta Помощь студентам 3 10.01.2009 15:47
функция cos поЛотЕнчик_просТо Общие вопросы C/C++ 9 30.11.2008 17:40
Cos(alpha) на СИ++ Рустам Помощь студентам 7 23.11.2008 15:30
Ряд Тейлора, sin, cos... Kostia Общие вопросы Delphi 6 05.10.2008 10:13