• 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Calcular la derivada sin conocer la ecuación de la función
#1
Hola buenas!

Tengo que resolver el siguiente problema:

Tengo una gráfica (sacada de un programa) con más de 500 puntos entre los cuales hay muy poca variación.
Esta función tiene forma de campana de Gauss, y me gustaría calcular la derivada en un punto de forma precisa.

Hay alguna manera con la que pueda usar los puntos que tengo para calcular la derivada?

IMPORTANTE: el punto se encuentra en el extremo derecho de la función, a ojo se podría decir que la derivada está entre 0 y 1.

Algo así funcionaría? :




Básicamente va calculando la derivada de un intervalo centrado en x0 que va creciendo y hace la media

La respuesta ideal sería que alguien me dijera un programa para crear una función (como si se tratara de regresión lineal pero con una curva) y poder calcular el pendiente de la tangente de esta curva en x0. (o quizá es mucho más fácil jejeje)
  Responder
#2
Para calcularla en un punto con la definición de derivada ya te valdría, pero entiendo que lo que buscas es automatizarlo, con algún lenguaje no?

Saludos Smile
  Responder
#3
(te refieres a la definición de derivada: (f(a)-f(b))/(a-b) ??
Cierto, pero el problema es que los puntos adyacentes al punto que quiero calcular no son precisos, y en muchos casos daría un resultado totalmente distorsionado. Yo preferiría un resultado más global que tenga en cuenta más características de la curva.

https://postimg.org/image/e6xggiw2j/

Como puedes ver en la imagen del link, tiene forma de campana de Gauss, pero no es perfecta.

Es cierto que lo quiero programar, pero primero necesito una solución matemática!

(pd: en la imagen hay un punto alrededor de 457 enorme, está hecho adrede porque este es el punto que quiero calcular)

Saludos!!
  Responder
#4
Hay varias maneras de hacerlo. Tú has sugerido una manera.

1) Diferencia hacia adelante,
2) Diferencia hacia atrás,
3) Diferencia central, <==== Esto parece ser lo que estás planteando.

Estas son sólo funciones lineales, pero pueden ser suficientes para tus necesidades - particularmente en las colas donde todas las pendientes están muy cerca de cero (0).

Ciertamente existen métodos cuadráticos. Esencialmente, ajuste un polinomio cuadrático a los tres puntos  y encuentra la derivada de eso.

Los métodos de Spline Cúbicos son también muy populares y no deberías tener muchos problemas para encontrar soluciones completamente programadas de este tipo.
  Responder
#5
(25-01-2018, 10:27 AM)llop escribió: Hay varias maneras de hacerlo. Tú has sugerido una manera.

1) Diferencia hacia adelante,
2) Diferencia hacia atrás,
3) Diferencia central, <==== Esto parece ser lo que estás planteando.

Estas son sólo funciones lineales, pero pueden ser suficientes para tus necesidades - particularmente en las colas donde todas las pendientes están muy cerca de cero (0).

Ciertamente existen métodos cuadráticos. Esencialmente, ajuste un polinomio cuadrático a los tres puntos  y encuentra la derivada de eso.

Los métodos de Spline Cúbicos son también muy populares y no deberías tener muchos problemas para encontrar soluciones completamente programadas de este tipo.

Fantástico, creo que los métodos de Spline me ayudarán, además por lo que he visto programarlos requiere usar una simple y triste función  Cool

Merci llop!!!
  Responder
#6
De nada Rasyer Smile
  Responder
#7
Tu problema depende en cierta medida de la amplitud h entre tus valores. Si no tuvieras problemas en coger un h pequeño entonces podrías optar por elegir el h más pequeño capaz de ser procesado en tu lenguaje de programación. Y que te daria pues, la pendiente más acurada para el x que buscas. Es decir: 

Código:
h = sqrt(%eps)*x;
xh = x+h;
dx = xh - x;
pendiente = (y(xh) - y(x))/dx

%eps es una función que devuelve la precisión relativa en coma flotante del lenguaje, que en mi caso es Scilab, pero allí deberías elegir la del tuyo. 

Si no dispones de valores para hallar un h tan pequeño, yo usaria un estimacion del pendiente con un error de orden 4, como podria ser:



Un saludo!  Smile
  Responder
#8
(27-01-2018, 01:34 PM)pear escribió: Tu problema depende en cierta medida de la amplitud h entre tus valores. Si no tuvieras problemas en coger un h pequeño entonces podrías optar por elegir el h más pequeño capaz de ser procesado en tu lenguaje de programación. Y que te daria pues, la pendiente más acurada para el x que buscas. Es decir: 

Código:
h = sqrt(%eps)*x;
xh = x+h;
dx = xh - x;
pendiente = (y(xh) - y(x))/dx

%eps es una función que devuelve la precisión relativa en coma flotante del lenguaje, que en mi caso es Scilab, pero allí deberías elegir la del tuyo. 

Si no dispones de valores para hallar un h tan pequeño, yo usaria un estimacion del pendiente con un error de orden 4, como podria ser:



Un saludo!  Smile


Muchas gracias por la respuesta pear!

Sin duda también voy a probar este método, y aunque creo que en algunos puntos no será muy preciso, me funcionará bien. Si tengo tiempo en los próximos días voy a responder comparando algunos métodos y los resultados obtenidos, podría ser interesante!
  Responder
#9
(29-01-2018, 01:16 AM)Rasyer escribió: Muchas gracias por la respuesta pear!

Sin duda también voy a probar este método, y aunque creo que en algunos puntos no será muy preciso, me funcionará bien. Si tengo tiempo en los próximos días voy a responder comparando algunos métodos y los resultados obtenidos, podría ser interesante!

Sí la verdad que sí, un saludo y nos vemos por aquí  Smile
  Responder


Posibles temas similares...
Tema Autor Respuestas Vistas Último mensaje
  Aplicación de la derivada a la economía JesusMendoza 0 79 20-08-2018, 04:25 AM
Último mensaje: JesusMendoza
Exclamation Continuidad de una funcion Facu1313 0 158 15-05-2018, 11:46 PM
Último mensaje: Facu1313
  Calcular la derivada de una integral definida javiernoya 3 342 17-12-2017, 08:10 PM
Último mensaje: invictus
  modelado de ecuacion diferencial sistemas 0 329 07-03-2016, 12:11 AM
Último mensaje: sistemas
  ¿Hay o no hay asíntota horizontal en esta función? bartali 4 1,115 28-11-2015, 02:49 AM
Último mensaje: bartali
  Calcular el área de la región de un plano limitada por rectas (inecuaciones) bartali 2 490 25-11-2015, 01:54 PM
Último mensaje: bartali
  ¿Cómo quitar un coefi de la ecuación polinomial sin alterar los demás coeficientes? Chube 0 327 08-11-2015, 10:51 PM
Último mensaje: Chube
Calculadora Determinar valores de a y b en una funcion Abraham Duron 1 388 06-08-2015, 08:12 PM
Último mensaje: ixupi
  Ayuda con ejercicios de función inversa gimmethemaths 0 544 26-04-2015, 05:11 PM
Último mensaje: gimmethemaths
  Maximizar función no lineal waly228 0 524 22-02-2015, 03:34 PM
Último mensaje: waly228

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)