我有离散的规则网格a,b点及其对应的c值,我进一步插值以获得平滑的曲线.现在从插值数据,我还想创建一个曲线拟合的多项式方程.如何在多项式中拟合三维图?
我试着在MATLAB中这样做.我在MATLAB(r2010a)中使用了Surface拟合工具箱来曲线拟合三维数据.但是,如何在MATLAB/MAPLE或任何其他软件中找到适合一组数据的公式以获得最佳效果.有什么建议?最有用的还有一些真实的代码示例,可以在Web上查看PDF文件等.
这只是我数据的一小部分.
a = [ 0.001 .. 0.011];
b = [1, .. 10];
c = [ -.304860225, .. .379710865];
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我以前使用Math.NET Numerics库的Fit.Polynomial方法在一组数据上拟合三次多项式,这些数据可以作为一个参数的函数建模y=f(x).
现在我想类似地找到一个2或3阶多项式,它适合可以根据多个参数建模为函数的数据y=f(x1, x2, x3, x4).
Math.NET中是否已有可以计算多项式的内置函数?
如果没有,你看到我如何操纵我的数据,以便将其提交给Fit.Polynomial?
我正在尝试使用直方图来包含一些数据scipy.optimize.curve_fit.如果我想添加一个错误y,我可以通过应用一个weight适合来做到这一点.但是如何应用错误x(即直方图中由于分箱引起的错误)?
我的问题也适用于x用curve_fit或进行线性回归时的错误polyfit; 我知道如何添加错误y,但不是x.
这里有一个例子(部分来自matplotlib文档):
import numpy as np
import pylab as P
from scipy.optimize import curve_fit
# create the data histogram
mu, sigma = 200, 25
x = mu + sigma*P.randn(10000)
# define fit function
def gauss(x, *p):
A, mu, sigma = p
return A*np.exp(-(x-mu)**2/(2*sigma**2))
# the histogram of the data
n, bins, patches = P.hist(x, 50, histtype='step')
sigma_n = …Run Code Online (Sandbox Code Playgroud) 我是一名程序员,想要了解Levenberg-Marquardt曲线拟合算法的工作原理,以便我自己实现它.在任何地方都有一个很好的教程可以解释它是如何工作的,读者是程序员而不是数学家.
我的目标是在opencl中实现这个算法,这样我就可以让它运行硬件加速.
考虑以下很好的解决方案,找到通过4个点的曲线的立方Bézier控制点:
如何在C#中找到开始,结束和2个交叉点的BezierSegment的控制点 - AKA Cubic Bezier 4点插值
我想知道,如果Bézier曲线通过N点有一个直接的延伸,那么N> 2并且可能N≤20?
我正在尝试拟合一些数据和东西,我知道有一个简单的命令用python/numpy/matplotlib做这个,但我找不到它.我觉得它有点像
popt,popc = numpy.curvefit(f,x)
Run Code Online (Sandbox Code Playgroud)
其中popt是的paramters f,popc是配合质量和f为f的预定义的函数.你们有谁知道吗?
我有一些想要拟合的数据,因此我可以对给定温度的物理参数值进行一些估计。
我将 numpy.polyfit 用于二次模型,但拟合并不像我希望的那么好,而且我对回归没有太多经验。
我已经包含了numpy提供的散点图和模型: S vs Temperature; 蓝点是实验数据,黑线是模型
x 轴是温度(以 C 为单位),y 轴是参数,我们将其称为 S。这是实验数据,但理论上 S 应该随着温度的升高趋于 0,随着温度的降低而趋向于 1。
我的问题是:我怎样才能更好地拟合这些数据?我应该使用哪些库,什么样的函数可以比多项式更好地近似这些数据,等等?
如果有帮助,我可以提供代码、多项式系数等。
这是我的数据的 Dropbox 链接。(避免混淆的重要说明,虽然它不会改变实际回归,但此数据集中的温度列是 Tc - T,其中 Tc 是转变温度(40C)。我通过计算 40 使用 Pandas 将其转换为 T - X)。
假设我有一组x,y坐标,用于标记沿轮廓的点.有没有办法可以构建轮廓的样条曲线表示,我可以在其长度上的特定位置进行求值并恢复插值的x,y坐标?
通常情况下,X和Y值之间没有1:1的对应关系,因此单变量样条对我没有好处.双变量样条曲线很好,但据我所知,所有用于评估二元样条函数的函数都scipy.interpolate取x,y值并返回z,而我需要给出z并返回x,y(因为x,y是点上的一行,每个z映射到唯一的x,y).
这是我希望能够做到的草图:
import numpy as np
from matplotlib.pyplot import plot
# x,y coordinates of contour points, not monotonically increasing
x = np.array([ 2., 1., 1., 2., 2., 4., 4., 3.])
y = np.array([ 1., 2., 3., 4., 2., 3., 2., 1.])
# f: X --> Y might not be a 1:1 correspondence
plot(x,y,'-o')
# get the cumulative distance along the contour
dist = [0]
for ii in xrange(x.size-1):
dist.append(np.sqrt((x[ii+1]-x[ii])**2 + (y[ii+1]-y[ii])**2))
d = np.array(dist)
# build a …Run Code Online (Sandbox Code Playgroud) 我有一个实验数据,我试图在scipy中使用UnivariateSpline函数拟合曲线.数据看起来像:
x y
13 2.404070
12 1.588134
11 1.760112
10 1.771360
09 1.860087
08 1.955789
07 1.910408
06 1.655911
05 1.778952
04 2.624719
03 1.698099
02 3.022607
01 3.303135
Run Code Online (Sandbox Code Playgroud)
这是我在做的事情:
import matplotlib.pyplot as plt
from scipy import interpolate
yinterp = interpolate.UnivariateSpline(x, y, s = 5e8)(x)
plt.plot(x, y, 'bo', label = 'Original')
plt.plot(x, yinterp, 'r', label = 'Interpolated')
plt.show()
Run Code Online (Sandbox Code Playgroud)
这就是它的样子:

我想知道是否有人想过scipy可能有的其他曲线拟合选项?我比较狡猾.
谢谢!
我不明白curve_fit是不是能够估计参数的协方差,从而提高了OptimizeWarning下面的内容.以下MCVE解释了我的问题:
MCVE python片段
from scipy.optimize import curve_fit
func = lambda x, a: a * x
popt, pcov = curve_fit(f = func, xdata = [1], ydata = [1])
print(popt, pcov)
Run Code Online (Sandbox Code Playgroud)
产量
\python-3.4.4\lib\site-packages\scipy\optimize\minpack.py:715:
OptimizeWarning: Covariance of the parameters could not be estimated
category=OptimizeWarning)
[ 1.] [[ inf]]
Run Code Online (Sandbox Code Playgroud)
对于a = 1功能适合xdata和ydata准确.为什么不是错误/差异0,或接近0,inf而是?
curve_fitSciPy参考指南中有这样的引用:
如果解的雅可比矩阵没有满秩,那么'lm'方法返回一个填充np.inf的矩阵,另一方面'trf'和'dogbox'方法使用Moore-Penrose伪逆来计算协方差矩阵.
那么,潜在的问题是什么?为什么解决方案中的雅可比矩阵不具有满秩?