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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2013, 22:00   #1
parkito
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 24
По умолчанию Сравнение функций

Здравствуйте. Прошу помощи т.к. зашел в тупик.
Задача: Требуется написать программу которая вычисляла тригонометрическую функцию двумя путями: с использованием математических функций math.h и разложением тригонометрической функции в ряд, а затем сравнить результаты вычислений с некоторой точностью эпсилон.. К сожалению не получается реализовать функцию по разложению в ряд.

Формула разложения котангенса
Код:
#include<iostream>
#include<conio.h>
#include<math.h>
void stopping();
double seq_ctg(double,double);
double mpow(double , double);
double fact(double);
using namespace std;
const double PI=3.14;
const long N=12;
int main()
{
setlocale(LC_ALL,"Rus");
double eps, xs,xe,dx,xi, myctg, cctg,delta; 
cout<<"Введите E --> ";
cin>>eps;
cout<<"Введите X start --> ";
cin>>xs;
cout<<"Введите X end --> ";
cin>>xe;
cout<<"Введите DX --> ";
cin>>dx;
if(dx<=0||xs>=xe)
stopping();
printf("|-----------------|-------------------|-----------------|-------------------|\n");
printf("|        X        |      My_ctg(x)    |       ctg(x)    |        Sigma      |\n");
printf("|-----------------|-------------------|-----------------|-------------------|\n");
for( ;xs<=xe;xs=xs+dx)
{  
   if(abs(xs)<PI&&xs!=0)
   {
   cctg=cos(xs)/sin(xs);
   myctg=seq_ctg(xs,eps);
   delta=sqrt(abs(myctg*myctg-cctg*cctg));
   printf("|    %10.6f   |     %10.6f    |    %10.6f   |     %10.6f    |\n",xs,myctg,cctg,delta);
   }
   else 
   {
       printf("|    %10.7f   |       Ошибка      |      Ошибка     |       Ошибка      |\n",xs,myctg,cctg,delta);
 
   }
}
printf("|-----------------|-------------------|-------------------------------------|\n");
cout<<"Введите X ideal --> ";
 cin>>xi;
 eps=0.1;
 printf("|-----------------|-------------------|-----------------|-------------------|\n");
 printf("|    Epsilon      |      My_ctg(x)    |       ctg(x)    |        Sigma      |\n");
 printf("|-----------------|-------------------|-----------------|-------------------|\n");
 for( ;eps>0.0000001;eps=eps/10)
{
    
      
      if(abs(xs)<PI&&xs!=0)
      {
            myctg=seq_ctg(xi,eps);
            cctg=cos(xi)/sin(xi);
            delta=sqrt(abs(myctg*myctg-cctg*cctg));
            printf("|    %10.7f   |     %10.6f    |    %10.6f   |     %10.6f    |\n",eps,myctg,cctg,delta);
       }
else
    printf("|    %10.7f   |       Ошибка      |      Ошибка     |       Ошибка      |\n",xs,myctg,cctg,delta);
 }
    printf("|-----------------|-------------------|-------------------------------------|\n");
 
 
cin.get();
cin.get();
return 0;
}
 
 double seq_ctg(double xs, double eps)
 {int n=0;
 double prov,rezult=0;
 do
 {prov=rezult;
 rezult=rezult+((mpow(-1,n)*mpow(2,2*n)*mpow(xs,2*n))/fact(2*n));
 n++;
 }
 while(abs(rezult-prov)>=eps);
 return prov/xs;
 }
 
 
 
 double fact(double x)
{
    if (x<=1) return 1;
    else return x*fact(x-1);
}
 
 double mpow(double x, double y)
{
    double r = 1;
    while((y--)>0) r*=x;
    return r;
}
 
void stopping()
   {
cout<<"Ошибка";
cin.get();
cin.get();
exit(0);
   }

Последний раз редактировалось parkito; 02.12.2013 в 22:05.
parkito вне форума Ответить с цитированием
Старый 03.12.2013, 09:23   #2
nikmoon
Форумчанин
 
Регистрация: 13.11.2013
Сообщений: 149
По умолчанию

Во-первых, пиши комментарии.
Во-вторых, зачем xs, xe,dx? Для вычисления значения функции разложением в ряд тебе нужны только значение аргумента X и количество членов ряда N.
nikmoon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi: аппроксимация функций методом базиса из финитных функций Denna Помощь студентам 1 12.03.2012 19:23
Ускорение функций nXs Общие вопросы Delphi 8 28.02.2012 18:52
Функций (Си) Stilet Помощь студентам 8 30.03.2011 17:55
Построение графиков функций С++ (методы аппроксимации функций) amdbodia Общие вопросы C/C++ 0 24.05.2009 15:28
использование функций в качестве параметров других функций mono Помощь студентам 0 20.04.2009 18:25