Sábado 9 de Noviembre de 2024, 03:42
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
funcion de taylor
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: funcion de taylor (Leído 1536 veces)
sanlegas2000
Nuevo Miembro
Mensajes: 17
funcion de taylor
«
en:
Domingo 19 de Junio de 2011, 16:54 »
0
Bueno me dejaron hacer la serie de taylor, me base en este libro(les adjuto la imagen)
el caso es que si funciona para ese problema(solo se pasa por unas centesimas) pero cuando pongo otros valores como 90, por ejemplo sen de 90 es uno, me deberia de dar no se un numero cercano a , pero me da 1.4 y tanto , siento que el problema es que me como muchos centecimos o no se donde este si pueden ayudarme gracias.
imageshack.us/photo/my-images/38/taylot.png(aun no cuento con privilegios de subir imagen xD)
Código: C
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#include <math.h>
#define pi 3.141592654
int
factorial
(
int
n
)
{
int
i
;
int
fac
=
1
;
for
(
i
=
1
;
i
<=
n
;
i
++
)
{
fac
=
fac
*
i
;
}
return
fac
;
}
int
main
(
)
{
float
x
=
90
,
a
=
45
,
suma
=
1
;
float
z
=
(
x
-
a
)
/
180
*
pi
;
int
i
;
int
iteraciones
=
15
;
float
e
,
r
,
t
;
e
=
(
float
)
1
/
90
;
float
param
=
90
,
resul
;
resul
=
sin
(
param
*
pi
/
180
)
;
for
(
i
=
1
;
i
<
iteraciones
;
i
++
)
{
if
(
i
%
4
==
1
||
i
%
4
==
2
)
suma
=
suma
+
pow
(
z
,
i
)
/
factorial
(
i
)
;
if
(
i
%
4
==
3
||
i
%
4
==
0
)
suma
=
suma
+
(
-
1
)
*
(
pow
(
z
,
i
)
/
factorial
(
i
)
)
;
}
e
=
sin
(
a
*
pi
/
180
)
;
printf
(
" %.15fn"
,
suma
*
e
)
;
return
0
;
}
Tweet
Checho360
Miembro activo
Mensajes: 84
Re: funcion de taylor
«
Respuesta #1 en:
Miércoles 22 de Junio de 2011, 22:07 »
0
Es fácil. El código solucionado, si no me equivoco, es este:
Código: C++
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#include <math.h>
#define pi 3.141592654
int
factorial
(
int
n
)
{
int
i
;
int
fac
=
1
;
for
(
i
=
1
;
i
<=
n
;
i
++
)
{
fac
=
fac
*
i
;
}
return
fac
;
}
int
main
(
)
{
float
x
=
90
,a
=
45
,suma
=
1
;
float
z
=
(
x
-
a
)
/
180
*
pi
;
int
i
;
int
iteraciones
=
15
;
float
e,r,t
;
e
=
(
float
)
1
/
90
;
float
param
=
90
,resul
;
resul
=
sin
(
param
*
pi
/
180
)
;
for
(
i
=
1
;
i
<
iteraciones
;
i
++
)
{
if
(
i
%
4
==
1
||
i
%
4
==
0
)
suma
=
suma
+
pow
(
z,i
)
/
factorial
(
i
)
;
if
(
i
%
4
==
3
||
i
%
4
==
2
)
suma
=
suma
+
(
-
1
)
*
(
pow
(
z,i
)
/
factorial
(
i
)
)
;
}
e
=
sin
(
a
*
pi
/
180
)
;
printf
(
" %.15fn"
,suma
*
e
)
;
return
0
;
}
El problema estaba en que si divides el número de la "iteración" entre 4 (utilizando ambos como enteros), y analizas el resto, se dan las cuatro opciones que tenías expresadas: 0, 1, 2, 3, pero sólo obtienes como resto 0 y 1 cuando la derivada enésima de la función es positiva (para el punto que escogiste), y, con lo cual, los restos 2 y 3 coinciden cuando el signo es negativo. Si intercambias eso la solución es: 0.999999940395355 que es una tolerancia bastante pequeña al menos para utilizar la serie de Maclaurin.
Un saludo!
sanlegas2000
Nuevo Miembro
Mensajes: 17
Re: funcion de taylor
«
Respuesta #2 en:
Jueves 7 de Julio de 2011, 04:40 »
0
gracias amigo por tomarte la molestia en responder, gracias por la aclaracion
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
funcion de taylor