Python - Series de seno y coseno

   
Vista:

Series de seno y coseno

Publicado por Julian Estiben (16 intervenciones) el 29/12/2015 21:08:23
Buenas, estoy haciendo un conversor de lenguajes y converti un script de matlab a python, este fue el script que me arrojo el conversor en python, pero lo que pasa es que no me da el mismo resultado de las series en los dos programas (matlab y python). Creo que el erros debe de estar en el rango del ciclo o algo asi jejejeje. Porfavor me podrian decir cual seria el erros en este script, o si el erros lo tengo en el script de matlab. Gracias.
Pd: tengan en cuanta que la correcion la debo hacer es en el conversor.

Lo que me arroja en python es:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
def series(a,x,k):
    import math as mt
    import numpy as np
    import matplotlib.pyplot as plt
    # Graficando y realizando la serie de taylor de las funciones seno, coseno y exponencial. 
    # ingrese la primera variable en string y con su abreviatura, asi: 
    # 'sin','cos' y 'exp'. 
    # k es el numero de iteraciones y x es el numero a evaluar en la funcion. 
    s=0;
    y=np.arange(0,k,0.01)
    if a=='sin':
        for i in range(1,k+1):
            s=s+((-1)**(i-1))*(x**(2*i-1))/(mt.factorial((2*i-1)));
        z=np.sin(x);
        plt.plot(y,np.sin(y))
        r='Seno';
    elif a=='cos':
        for i in range(0,k+1):
            s=s+((-1)**(i))*(x**(2*i))/(mt.factorial((2*i)));
        z=np.cos(x);
        plt.plot(y,np.cos(y))
        r='Coseno';
    elif a=='exp':
        for i in range(0,k+1):
            s=s+(x**i)/(mt.factorial(i));
        z=np.exp(x);
        plt.plot(y,np.exp(y))
        r='Exponencial';
    print ('El valor real es: '),z
    print ('La suma es: '),s
    plt.xlabel('EjeX')
    plt.ylabel('EjeY')
    plt.title(r)
    plt.grid()
    plt.show()

Lo que hice en matlab para convertirlo es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function series(a,x,k)
% Graficando y realizando la serie de taylor de las funciones seno, coseno y exponencial.
% ingrese la primera variable en string y con su abreviatura, asi:
% 'sin','cos' y 'exp'.
% k es el numero de iteraciones y x es el numero a evaluar en la funcion.
s=0;
y=0:0.01:k;
if a=='sin'
    for i=1:k
        s=s+((-1)^(i-1))*(x^(2*i-1))/(prod(1:(2*i-1)));
    end
    z=sin(x);
    plot(y,sin(y))
    r='Seno';
elseif a=='cos'
    for i=0:k
        s=s+((-1)^(i))*(x^(2*i))/(prod(1:(2*i)));
    end
    z=cos(x);
    plot(y,cos(y))
    r='Coseno';
elseif a=='exp'
    for i=0:k
        s=s+(x^i)/(prod(1:i));
    end
    z=exp(x);
    plot(y,exp(y))
    r='Exponencial';
end
disp ('El valor real es: '),z
disp ('La suma es: '),s
xlabel('Eje X')
ylabel('Eje Y')
title(r)
grid on
end
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder