数学图形转方程

6
有没有一种工具可以将方程的图形表示转换为大约的数学方程?(将图形表示转换为近似的数学方程)

“Graphical” 是指“图形结构”还是“光栅图像”? - Pavel Radzivilovsky
@Alex:你知道吗?这里并不是所有人都是以英语为母语的。 - nico
实际上,这里有几个可能的问题领域(即使在澄清之后)。您是否处于一种情况,知道答案由一小组基本函数组成?您需要一个精确的解决方案,还是一个合理的近似解决方案就可以了?输入数据精确吗,或者可能包含一些噪声或测量误差?已经提出的解决方案在某些情况下是正确的,在其他情况下则不是。 - dmckee --- ex-moderator kitten
@nico,无论如何,equestion可能意味着完全不同的事情 - 因此需要澄清。 - Alex Budovski
@Alex:需要澄清一下,给你点赞。然而你只是指出了拼写错误...我认为这样做不太好...我可以向你保证,用一种与自己不同的语言书写并不总是容易的。但是我们不要偏离问题的重点。 - nico
显示剩余2条评论
3个回答

2
您好!这段文本的翻译如下:
一个可能符合您描述的常见问题被称为曲线拟合:您有一些数据(在您的情况下,是从图表中读取的),并且您心中有一个方程的形式,您想找到最适合该方程与图表匹配的参数。
一个有用的方法是使用最小二乘法进行拟合。大多数数据分析工具包中都会提供最小二乘法包。
以下是一个例子:假设方程是A*sin(2*pi*100.x)*x^B,我需要找到使我最佳拟合的A和B的值(在此示例中,A=10.0,B=3.0)。

alt text

这是生成此拟合的代码。它使用Python和Scipy,并且经过修改,源自这里的示例。
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()

仅作翻译内容返回:+1 表示解释的努力。只想指出,还有其他方法,如最大似然估计,在某些情况下更准确。请参阅此论文以获得一个很好的介绍性说明http://www.scribd.com/doc/7372377/Tutorial-on-Maximum-Likelihood-Estimation - nico
1
@nico - 你说MLE在某些情况下更准确,但不适用于这种情况。最小二乘法是一种准确、常见、快速且简单的线性方法,是我需要定义“曲线拟合”的问题的正确选择。无论如何,虽然我通常认为正态分布被过度使用,但在这里它是一个合理的假设,对于这种情况,最小二乘法和MLE是相同的。 - tom10
使用任何适当的方法都需要您猜测(或一组猜测)解决方案的功能形式。因此,这种方法在某些情况下很有用,而在其他情况下则不是。 - dmckee --- ex-moderator kitten

2
这是一个棘手的问题,通常被称为插值。对于简单的多项式图形来说,这是一个容易的问题。(你总可以找到一个“完全匹配”)。请看多项式插值。但是您也可能有一个表示某些三角函数的图形。或指数函数或对数函数怎么样?或者更糟糕的是,组合!即使对于简单的图形,也可能有数千个有趣的潜在方程式。
即使您检查了所有有趣的方程式,仍应该小心。考虑方程y = A * sin(B*x),其中AB的值非常大。这个图形是什么样子的?嗯,它在A-A之间不停地上下移动,非常非常快地,并且“触及”或“几乎触及”几乎所有点。这是一个“简单”的公式,从数学上看像是一个很好的近似,但最终很可能不是您想要的东西。

@aioobe:任何连续函数都可以用多项式非常接近地逼近,无论是三角函数还是它们的更糟糕组合。对于大多数函数来说,高次多项式应该已经足够好了,特别是那些可以绘制成图形的函数。因此,即使实际方程可能不同,多项式也会给出图形的非常好的近似值。参见:http://mathworld.wolfram.com/WeierstrassApproximationTheorem.html - Aryabhatta
1
你听说过朗格现象吗?当然,高次多项式可以“解决”它,但它可能仍然不是你要找的东西。 - aioobe
@Mike:在有界区间上连续的任何函数都可以用多项式进行逼近。由于我们正在讨论具有起始和结束x坐标的图形,我相信这仍然适用。我本可以表达得更清楚,但我链接的页面应该能够消除任何疑虑。 - Aryabhatta
@aioobe:你听说过伯恩斯坦多项式吗? - Aryabhatta
@aioobe:顺便说一下,我只是试图在理论上支持你的答案。我猜想,任何你所做的插值都会有像朗格现象这样的问题。 - Aryabhatta
显示剩余2条评论

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接