Sie sind auf Seite 1von 1

#include <iostream>#include <math.h>#define PI 3.

14159265#define nn -1using
namespace std;class taylor{public:int expo, sig; //exponente y signo a evaluar;
ge=grado a evaluar// double int facto; //calculo del factorialfloat serie, xi, xi1,
st, xis; //sc=suma cosenos; ss=suma senos; serie=sumatotaldouble ss1, sc1;
//xi=termino xi; xi1=xi+1, termino dado. // double int factorial(double int
fact);float sc(int exp1, int sig1, double fact1);//sc2, serie cosenos funcion;
parametros que recibirafloat ss(int exp2, int sig2, double fact2);//ss2, serie
cosenos;float conversion(float conver1, float conver2); //funcion grado que
convierte a radianes. taylor(){ }};float taylor::conversion(float conver1, float
conver2) //revisar, esta mal.{xi=((conver1*PI))/180;xi1=((conver2*PI))/180;xis=xi1-
xi;}float taylor::sc(int exp1, int sig1, double fact1){int exp1c;int sig1c;double
fact1c;float t1,t2,t3,t4,t5; exp1c=exp1;sig1c=sig1;fact1c=fact1; if(exp1c==1)
{ expo=1;sc1=((cos(xi)));return sc1;//expo+
+;}elset1=(cos(xi));t2=pow(xis,exp1c);t3=t1*t2;

t4=t3/fact1c;t5=t4*sig1c;sc1=t5;return sc1;//sc1=(sig1)((cos(xi))
(pow((xis),exp1)))/(fact1);}float taylor::ss(int exp2, int sig2, double fact2){int
exp1c;int sig1c;double fact1c;float t1,t2,t3,t4,t5;
exp1c=exp2;sig1c=sig2;fact1c=fact2;t1=(sin(xi));t2=pow(xis,exp1c);t3=t1*t2;t4=t3/fa
ct1c;t5=t4*sig1c;ss1=t5;return ss1; }int Fact(double x){if (x==0 || x==1)return
1;return (x * Fact(x-1));} int main (void){int exp=0, n=0, termc=0, terms=0,
sign=0,t;float xi, xi1, senos, cosenos, radianes,error1, error2, valor;taylor
obj;taylor *apu;double f; //f=factorial cout << "**Serie de taylor**" <<endl<<
"Teclea el punto xi alrededor del cual quieres calcular(en grados): ";cin >>
xi;cout <<"Dame el valor xi+1: " ;cin >> xi1;radianes=xi1;cout << "Teclea cuantos
terminos quieres que contenga la serie: ";cin >>
t;obj.conversion(xi,xi1);apu=&obj;float *ptaylor=new float[t+1];

ptaylor[t+1]=0;for(int ini=0; ini<t; ini++){//cout <<"termino serie: " <<ini+1


<<endl;if(ini==termc){exp=exp+2;if(ini==0){exp=1;}if(ini==2){exp=2;}
sign=(pow(nn,n));f=Fact(ini);cosenos=obj.sc(exp,sign,f);//cout << "VALOR COSENO= "
<<cosenos <<endl;ptaylor[ini]=cosenos;termc=termc+2;n++;}if(ini==terms+1)
{sign=(pow(nn,n));f=Fact(ini);//senos=obj.ss(ini,sign,f);ptaylor[ini]=senos;terms=t
erms+2;//cout << "VALOR SENOS= " <<senos <<endl;//cout <<"puntero: " <<ptaylor[ini]
<<endl;} }for (int y=0; y<(t-1); y++){//cout <<"ptaylor cuando cero=" <<ptaylor[y]
<<endl;ptaylor[t+1]=ptaylor[t+1]+ptaylor[y];//cout <<"ptaylor= " <<ptaylor[t+1]
<<endl;}senos=radianes*PI/180;cout << "Funcion Cos(" <<xi1 <<")radianes= "
<<cos(senos) <<endl;cout << "Total de la serie de taylor, donde xi=" <<xi <<" y
xi+1= " <<xi1 <<endl;cout << "Valor aproximado de la serie, con " <<t <<"
terminos=" <<ptaylor[t+1]<<endl;error1=cos(senos)-ptaylor[t+1]; //erorr 1 error
verdaderoerror2=(error1/cos(senos))*100;valor=fabs(error2);cout << "El error
relativo es de: " <<valor <<"%" <<endl;cin.get(); }

Das könnte Ihnen auch gefallen