Python - Me estoy volviendo loca

 
Vista:

Me estoy volviendo loca

Publicado por lindawarrior90 (1 intervención) el 17/11/2022 19:30:32
Buenas tardes!!
Acudo a vosotros como último recurso. Debo hacer para la universidad una programación en python. El caso que necsito imprimir el polinomio que obtengo con la interpolación de neville, podríais ayduarme a saber cual es el código?

el código que tengo correcto es este, pero no ocnsigo imprimir el polinomio, pero sí los coeficientes:
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
def interpolacion_polinomica_Neville(xa,ya,x):
    n = len(xa)
    p = n*[0]
    for k in range(n):
        for i in range(n-k):
            if k == 0:
                p[i] = ya[i]
            else:
                p[i] = ((x-xa[i+k])*p[i]+(xa[i]-x)*p[i+1])/(xa[i]-xa[i+k])
    return p[0]
 
 
xa = np.array([5.0,7.0])
ya = np.array([2.0,4.0])
punto_a_calcular = 6
pendiente = (ya[1] - ya[0] )/(xa[1]-xa[0]);
ordenada =ya[0] - pendiente*xa[0];
y = interpolacion_polinomica_Neville(xa,ya,punto_a_calcular)
n = xa.size
p = np.polyfit(xa,ya, n-1)
print ('Vamos a interpolar los puntos (x,y)')
for i in range(n):
    print('(',xa[i],',',ya[i],')')
    print('y obtener el valor y=f(x)=f(',punto_a_calcular,')')
    print(' ')
    print('Resultado de la interpolación usando nuestra implementación del algoritmo de Neville:')
    print('y=f(',punto_a_calcular,')=',y)
    print('Resultado de la interpolación usando la librería numpy:')
    print('y=f(',punto_a_calcular,')=',np.polyval(p,punto_a_calcular))
    print(50*'-')

gracias <3
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
sin imagen de perfil

Me estoy volviendo loca

Publicado por Dio (25 intervenciones) el 06/12/2022 16:15:08
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
import numpy as np
 
def interpolacion_polinomica_Neville(xa, ya, x):
    """
    Esta función implementa el algoritmo de interpolación de Neville para
    obtener el polinomio interpolante de un conjunto de puntos (xa, ya).
    """
    n = len(xa)
    p = n*[0]
    for k in range(n):
        for i in range(n-k):
            if k == 0:
                # Si k = 0, el polinomio es simplemente el valor del punto y
                # para el punto x correspondiente
                p[i] = ya[i]
            else:
                # Si k > 0, el polinomio se calcula recursivamente de acuerdo
                # con la fórmula de Neville
                p[i] = ((x-xa[i+k])*p[i]+(xa[i]-x)*p[i+1])/(xa[i]-xa[i+k])
    # Finalmente, devolvemos el valor del polinomio en el punto x que se ha
    # especificado
    return p[0]
 
xa = np.array([5.0, 7.0])
ya = np.array([2.0, 4.0])
punto_a_calcular = 6
 
# Obtenemos los coeficientes del polinomio con la interpolación de Neville
coeficientes = interpolacion_polinomica_Neville(xa, ya, punto_a_calcular)
 
# Creamos un polinomio a partir de los coeficientes
polinomio = np.poly1d(coeficientes)
 
# Imprimimos el polinomio
print('El polinomio interpolante para los puntos ({}, {}) en x = {} es: {}'.format(xa[0], ya[0], punto_a_calcular, polinomio))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar