2010-06-09 21 views
6

¿Hay alguna herramienta que convierta una representación gráfica de una ecuación en esa ecuación? (Representación gráfica a la ecuación matemática aproximada)Math Graph para la ecuación

+0

gráfica como en "estructura gráfico" o como "imagen de trama" en? –

+0

equestion to equestion? ¿Qué es una pregunta? Pregunta electrónica? –

+0

a) Gráfico como gráfico de eje x-y b) Tipo de pregunta: sin (x) * x^3 + 3 etc. – Mathie

Respuesta

2

Este es un problema complicado, generalmente conocido como interpolation. Para gráficos polinomiales simples, es un problema fácil. (Siempre puede encontrar una "coincidencia exacta"). Eche un vistazo a polynomial interpolation. Pero también podría tener un gráfico que represente alguna función trigonométrica. ¿O qué tal las funciones exponenciales o las funciones logarítmicas? ¡O peor, combinaciones! Incluso para gráficos simples puede haber miles de ecuaciones potenciales interesantes.

Incluso si hace compruebe todas las ecuaciones interesantes, debe tener cuidado. Considere la ecuación y = A * sin(B*x), con valores extremadamente grandes para A y B. ¿Cómo se ve ese gráfico? Bueno, sube y baja entre A y -A una y otra vez, realmente muy rápido, y "hits" o "casi hits" casi todos los puntos. Es una fórmula "simple", que matemáticamente se ve como una buena aproximación, pero es probable que no sea algo que quieras al final.

+0

@aioobe: cualquier función continua se puede aproximar muy de cerca por polinomios, ya sea trigonométricos o una combinación peor de ellos.Un polinomio de alto grado debería ser lo suficientemente bueno para la mayoría de las funciones, especialmente las que se pueden graficar. Entonces, aunque la ecuación real sea diferente, los polinomails darán una muy buena aproximación del gráfico. Ver: http://mathworld.wolfram.com/WeierstrassApproximationTheorem.html –

+1

Bueno, ¿has oído hablar del [fenómeno de Runge] (http://en.wikipedia.org/wiki/Runge%27s_phenomenon)? Claro, un polinomio de alto grado lo "resolverá" pero probablemente aún no sea lo que estás buscando. – aioobe

+0

@Moron: no es una función continua. Por ejemplo, 'y = sin (1/x)' es continuo sobre el intervalo abierto '0

2

Un problema común que podría adaptarse a su descripción se llama curve fitting: tiene algunos datos (que, en su caso, ha leído de un gráfico) y tiene en tenga en cuenta una forma de ecuación, y quiera encontrar qué parámetros necesita para ajustar mejor la ecuación al gráfico.

Un enfoque útil para esto se ajusta al error least squares. Un paquete de mínimos cuadrados estará disponible en la mayoría de los kits de herramientas de análisis de datos.

Aquí hay un ejemplo: digamos que la ecuación es A * sin (2 * pi * 100.x) * x^B, y necesito encontrar los valores de A y B que me den el mejor ajuste (A = 10.0 y B = 3.0 en este ejemplo).

alt text http://i47.tinypic.com/k3x9fk.png

Aquí está el código utilizado para generar este ajuste. Utiliza Python y Scipy y se modifica a partir de un el ejemplo here.)

from numpy import * 
from scipy.optimize import leastsq 
import matplotlib.pyplot as plt 

def my_func(x, p): # the function to fit (and also used here to generate the data) 
    return p[0]*sin(2*pi*100.*x)*x**p[1] 


# First make some data to represent what would be read from the graph 
p_true = 10., 3.0 # the parameters used to make the true data 
x = arange(.5,.5+12e-2,2e-2/60) 
y_true = my_func(x, p_true) 
y_meas = y_true + .08*random.randn(len(x)) # add some noise to make the data as read from a graph 


# Here's where you'd start for reading data from a graph 
def residuals(p, y, x): # a function that returns my errors between fit and data 
    err = y - my_func(x, p) 
    return err 

p0 = [8., 3.5] # some starting parameters to my function (my initial guess) 

plsq = leastsq(residuals, p0, args=(y_meas, x)) # do the least squares fit 

# plot the results 
plt.plot(x, my_func(x, plsq[0]), x, y_meas, '.', x, y_true) 
plt.title('Least-squares fit to curve') 
plt.legend(['Fit', 'Graph', 'True']) 
plt.show() 
+0

+1 por el esfuerzo de explicación. Solo quiero señalar que existen otros métodos, como la extimación de máxima verosimilitud, que son más precisos en algunos casos. Vea este artículo para una explicación introductoria agradable http://www.scribd.com/doc/7372377/Tutorial-on-Maximum-Likelihood-Estimation – nico

+1

@nico - Tiene razón en que MLE es más preciso en algunos casos, pero no éste. Mínimos cuadrados es un trazador de líneas preciso, común, rápido y fácil, y es la elección correcta para una pregunta en la que necesito definir "ajuste de curvas". De todos modos, aunque usualmente estoy contigo pensando que las distribuciones normales son sobreutilizadas, aquí es una suposición razonable, y para este caso, los mínimos cuadrados y MLE son la misma cosa. – tom10

+0

El uso de cualquier enfoque de adaptación requiere que tenga una suposición (o un conjunto de conjeturas) sobre qué forma funcional tendrá la solución. En consecuencia, este enfoque es útil en algunos casos y no en otros. – dmckee