2010-06-09 27 views
6

Bir denklemin grafiksel temsilini bu denkleme dönüştüren bir araç var mı? (Aprox. Matematik denklemi için grafiksel gösterim)Matematik Grafiği Denklem

+0

Grafiksel "grafik yapısı" olarak ya da "tarama görüntü" olarak? –

+0

equestion atışı mı? Bir atma nedir? Elektronik soru? –

+0

a) x-y ekseni grafiği olarak grafiksel b) Bağıntı tipi: günah (x) * x^3 + 3 vs. – Mathie

cevap

2

Bu genellikle interpolation olarak adlandırılan zor bir sorundur. Basit polinom grafikler için kolay bir problemdir. (Her zaman bir "tam eşleşme" bulabilirsiniz.) polynomial interpolation'a bir göz atın. Ancak, bazı trigonometrik işlevleri temsil eden bir grafiğiniz de olabilir. Veya üstel fonksiyonlar veya logaritmik fonksiyonlar. Ya da daha kötüsü, kombinasyonlar! Basit grafikler için bile binlerce ilginç potansiyel denklem olabilir. yapsanız bile tüm ilginç denklemleri kontrol edin, yine de dikkatli olmalısınız. y = A * sin(B*x) denklemini A ve B için son derece büyük değerlerle düşünün. Bu grafik nasıl görünüyor? Evet, A ve -A arasında tekrar tekrar yukarı ve aşağı, gerçekten çok hızlı, ve "vurur" veya "neredeyse tüm noktaları" hemen hemen vurur. Matematiksel olarak iyi bir yaklaşım gibi görünen "basit" bir formüldür, ancak büyük ihtimalle sonunda isteyeceğiniz bir şey değildir.

+0

@aioobe: Herhangi bir sürekli fonksiyon, trigonometrik veya daha kötü bir kombinasyon olarak, polinomlar tarafından çok yakınlaştırılabilir.Yüksek dereceli bir polinom, çoğu fonksiyon için, özellikle grafikle işaretlenebilenler için yeterince iyi olmalıdır. Bu yüzden, gerçek denklem farklı olabilse de, polinomiller grafiğin çok iyi bir yaklaşımını verecektir. Bakınız: http://mathworld.wolfram.com/WeierstrassApproximationTheorem.html –

+1

Peki, [Runge fenomenini] duydunuz mu (http://en.wikipedia.org/wiki/Runge%27s_phenomenon)? Elbette, yüksek dereceli bir polinom, onu "çözecektir" ama yine de sizin aradığınız şey olmayacaktır. – aioobe

+0

@Moron: Sürekli işlev yok. Örneğin, 'y = sin (1/x)', 0

2

Açıklamanıza uygun olabilecek yaygın bir sorun curve fitting olarak adlandırılıyor: bazı verileriniz var (sizin durumunuzda, bir grafikten okudunuz). denklemin bir formunu düşünün ve denklemi grafiğe en uygun hale getirmek için ihtiyacınız olan parametreleri bulmak istersiniz.

Buna yararlı bir yaklaşım, least squares hatasına uygundur. Çoğu veri analiz aracı kitinde en küçük kareler paketi bulunacaktır.

İşte bir örnek: Denklemin A * sin (2 * pi * 100.x) * x^B olduğunu ve A ve B değerlerini bana en uygun olanı bulmam gerektiğini söyle (A = 10.0) ve bu örnekte B = 3.0.

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

İşte bu uyum üretmek için kullanılan kod. Bu Python ve scipy kullanır ve bir örnek here modifiye edilir.)

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. Sadece, bazı durumlarda daha doğru olan maksimum olasılıklı çıkarma gibi başka yöntemlerin olduğunu belirtmek isterim. Güzel bir tanıtım açıklaması için bu makaleye bakın http://www.scribd.com/doc/7372377/Tutorial-on-Maximum-Likelihood-Estimation – nico

+1

@nico - Bazı durumlarda MLE'nin daha doğru olduğunu doğru söylüyorsunuz. Bu. En küçük kareler doğru, ortak, hızlı ve kolay bir astardır ve "eğri uydurma" tanımlaması gereken bir soru için doğru seçimdir. Her neyse, genellikle normal dağılımların aşırı kullanıldığı düşüncesindeyken, işte bu makul bir varsayımdır ve bu durumda en küçük kareler ve MLE aynı şeydir. – tom10

+0

Herhangi bir uydurma yaklaşımı kullanmak, çözümün hangi işlevsel biçime sahip olacağı konusunda bir tahminde bulunmanızı (veya tahminlerinizin) gerektirir. Buna göre, bu yaklaşım, bazı durumlarda ve başkalarında yararlı değildir. – dmckee