象征性的符合;应该是符合的。
symfit的Python项目详细描述
如果symfit使您的出版物受益,请引用此doi。建立这项研究已经做了很多工作,作为年轻的研究人员,你的引用对我们意义重大。 Martin Roelfs和Peter C Kroon,Symfit公司。doi:10.5281/zenodo.1133336
项目目标
这个项目的目标很简单:在python pythonic中进行拟合。 Python的合体是什么样子的?嗯,有一个简单的测试。如果可以的话 给你一些示例代码,不需要使用任何额外的单词 解释一下,这是Python。
fromsymfitimportparameters,variables,Fit,Modelimportnumpyasnpxdata=np.array([1.0,2.0,3.0,4.0,5.0])ydata=np.array([2.3,3.3,4.1,5.5,6.7])yerr=np.array([0.1,0.1,0.1,0.1,0.1])a,b=parameters('a, b')x,y=variables('x, y')model=Model({y:a*x+b})fit=Fit(model,x=xdata,y=ydata,sigma_y=yerr)fit_result=fit.execute()
很酷吧?那么现在我们已经做了一个拟合,我们如何使用结果呢?
importmatplotlib.pyplotaspltyfit=model(x=xdata,**fit_result.params)[y]plt.plot(xdata,yfit)plt.show()
我需要说更多吗?我让另一个代码示例来说明如何?
fromsymfitimportparameters,Fit,Equality,GreaterThanx,y=parameters('x, y')model=2*x*y+2*x-x**2-2*y**2constraints=[Equality(x**3,y),GreaterThan(y,1),]fit=Fit(-model,constraints=constraints)fit_result=fit.execute()
我知道你在想什么。“如果我需要拟合一个常微分方程组怎么办?“。”
fromsymfitimportvariables,Parameter,ODEModel,Fit,Dimportnumpyasnptdata=np.array([10,26,44,70,120])adata=10e-4*np.array([44,34,27,20,14])a,b,t=variables('a, b, t')k=Parameter('k',0.1)model_dict={D(a,t):-k*a**2,D(b,t):k*a**2,}ode_model=ODEModel(model_dict,initial={t:0.0,a:54*10e-4,b:0.0})fit=Fit(ode_model,t=tdata,a=adata,b=None)fit_result=fit.execute()
想要获得更多的乐趣,请查看http://symfit.readthedocs.org上的文档。