2012年04月10日 星期二 23:42
依赖于你要拟合的函数。简单的函数拟合可以使用最小二乘,下面是一个简单的python实现:
from math import *
n=input("Enter number of points:")
sum_x=0
sum_y=0
sum_xx=0
sum_xy=0
for i in range(1,n+1):
print "For point %s"%i
x=input("Enter x:")
y=input("Enter y:")
sum_x=sum_x+x
sum_y=sum_y+y
xx=pow(x,2)
sum_xx=sum_xx+xx
xy=x*y
sum_xy=sum_xy+xy
#Calculating the coefficients
a=(-sum_x*sum_xy+sum_xx*sum_y)/(n*sum_xx-sum_x*sum_x)
b=(-sum_x*sum_y+n*sum_xy)/(n*sum_xx-sum_x*sum_x)
print "The required straight line is Y=%sX+(%s)"%(b,a)
2012年04月11日 星期三 01:40
正好我之前做过这个。楼主可以把具体的东西贴出来 ,一起看看。。
如果是部分参数的话可以写个工厂函数然后用最小二乘法或者非线性优化都行。
2012年04月12日 星期四 21:02
scipy.optimize 里面有各种优化函数。
详见
2012年04月12日 星期四 21:07
是不是先把数据处理一下,让函数关系简单一点。。那个积分不能求出来么?应该可以的吧。另外你也可以wiki下最小二乘法。了解原理了就好算了。
2012年04月12日 星期四 21:46
谢谢!
积分是积不出来的。数学上有简化忽略的办法得到线性近似。但我想用拟合的方法求出参数。
Zeuux © 2025
京ICP备05028076号