Python论坛  - 讨论区

标题:积分函数参数的拟合

2012年04月10日 星期二 22:18

我有个积分函数,里面三个参数需要确定。可以通过实验测得自变量与函数的关系。

请教各位,用python和scipy有合适方案可以解决吗?

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月11日 星期三 13:28

to 夏武

谢谢你的代码。但我这个不是简单函数。。。

 

to 赵明程

具体的公式稍有点复杂。。

函数是这样的

f=1-exp(-(int(k_0*exp(E/(R*(a*t'+T0))),t',0,t)**n

其中待拟合参数是k0, E和n,a, T0是已知参数,f是函数,t是自变量时间,t'是积分变量,积分从0到t。

实验数据是t和f的关系。

 

如果用“最小二乘法或者非线性优化”是看scipy或者其他资料的哪部分?谢谢!

2012年04月12日 星期四 21:02

2012年04月12日 星期四 21:07

是不是先把数据处理一下,让函数关系简单一点。。那个积分不能求出来么?应该可以的吧。另外你也可以wiki下最小二乘法。了解原理了就好算了。

2012年04月12日 星期四 21:46

谢谢!

积分是积不出来的。数学上有简化忽略的办法得到线性近似。但我想用拟合的方法求出参数。

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号