d#include <iostream>
#include <math.h>
using namespace std;
int main()
{
double seno, m, f;
int n;
int N;
double x;
double valor1 = 0;
double valor2 = 0;
double valor3 = 0;
N = 100;
n = 1;
m = 1;
f = 1;
cout<< "dame el valor de x \n";
cin>> x;
while (N>=n)
{
valor1 = (-1) ^n;
valor2 = (2*n+1);
while (m <= valor2) {
f = f*m;
m = m+1;
}
n++;
seno = (valor1/f) * x * exp(valor2 + seno);
}
cout<< seno << " comparado con " << sin(x) << endl;
return 0;
}
Quiero que la funcion que hice para hallar el seno de deacuerdo con la comparacion, la hice para saber el verdadero valos con mostrar senox, peor no se en que estoy fallando no me da el mismo valor a comparar, me podrian pegar una ayuda? no se que hago mal
En un primer vistazo y sin entrar a analizar el algoritmo, yo diría que el problema te puede venir de que no inicializas la variable "seno" antes de utilizarla por primera vez.
La primera pasada por la línea
seno = (valor1/f) * x * exp(valor2 + seno);
tendrá un valor indefinido en la variable "seno".
en la parte valor1 = (-1) ^n;
debería ser pow (-1, n);
le cambie el
pow (-1, n);
pero nada me sigue diciendo
0 comparado con el valor real de cualquier numero, no se que hacer :S
pow (-1, n);
como la progresion del poder de -1 va
-1, 1, -1, 1, -1, 1.... al infinito,
es más facil hacer
1-(2*n%2)
si n es impar
n%2 = 1
1*2 = 2
1-2= -1
si n es par
n%2 = 0
0*2=0
1-0=1
y evitas usar potencias (incluso puedes llevar un acumulador y listo para evitar el modulo), no se si me di a explicar :P
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
double seno, m, f;
int n;
int N;
double x;
double valor1 = 1;
double valor2 = 1;
double valor3 = 1;
N = 100;
n = 1;
m = 1;
f = 1;
//si n es impar
n%2 = 1
1*2 = 2
1-2= -1
//si n es par
n%2 = 0
0*2=0
1-0=1
cout<< "dame el valor de x \n";
cin>> x;
while (N>=n)
{
valor1 = 1-(2*n%2);
valor2 = ((2*n%)+1);
while (m <= valor2) {
f = f*m;
m = m+1;
}
n++;
seno = (valor1/f) * x * exp(valor2 + seno + 1);
}
cout<< seno << " comparado con " << sin(x) << endl;
system("pause");
return 0;
}
Edito:
lo que basicamente debe hacer el programa es preguntarme un numero cualquiera real
y darme el valor del SEN(X) sin usar la funcion factorial definida en librerias si no haciendola arriba que las defini como M y F, la formula es esta la que trato de poner para que me de el valor (http://upload.wikimedia.org/math/7/7/8/7783179ac90bb216947ad6585e277b21.png) y lo comparo con el valor real del sen(X) para saber si esta bien o no.
y asi lo arme pero la verdad me sigue dando asi
0 comparado con el valor real del sen(X)
y he mirado y nada, enserio he tratado de varias formas y nada :(
Ayuda PORFAVOR!
bue pase por esa si te sirve
http://foro.elhacker.net/programacion_cc/serie_de_taylor_para_senosolucionado-t359040.0.html (http://foro.elhacker.net/programacion_cc/serie_de_taylor_para_senosolucionado-t359040.0.html)
tu probema pasa basicamente porque la parte de
//si n es impar
n%2 = 1
1*2 = 2
1-2= -1
//si n es par
n%2 = 0
0*2=0
1-0=1
deberían ser funciones que el while envíen información se ejecuten y vuelvan al while, es una opcion, la otra seria que lo haga dentro del while, recorda que "n" es la potencia y eso deberia ir iteracactuando a cada movimiento que hace el while desde 1 a 100
ojala haya sido claro :rolleyes: y lo leas antes que te salgan diciendo, COMPRATE UN LIBRO APRENDE Y VOLVE"