python精度为什么那么差_Python/C++精度差

在优化后,对比Python和C++计算的最佳参数残差发现存在显著差距。作者生成数据并用C++进行优化,尽管参数接近,但残差计算结果差异可达10^3。文章探讨了可能的原因,包括不同编程语言处理精度的方法,寻求问题解决方案。
摘要由CSDN通过智能技术生成

优化后,在Python和C++中,计算出具有最优参数的残差。结果差距很大。以下是我如何更精确地进行操作:

我根据Python中的参数化模型生成数据。我把X和Y存储在Excel文件中。我将这个文件加载到C++程序中并运行优化。我提出了最佳参数,与生成序列的参数非常接近。然后,用Python和C++计算残差(y和模型输出之间的平方差和最佳参数的总和)。结果是巨大的,对于对参数变化非常敏感的模型,其差异高达10^3。这些差异是否可以被用来处理Python和C++的不同方法,或者其他的错误是什么?一旦优化完成,残差计算就是一个简单的计算,如果不是在精度问题上,我想知道问题会在哪里。在

非常感谢您的任何建议或参考。在<>编辑->我可以很容易地显示Python代码生成数据和计算平方残差的总和,但不是C++代码,因为计算是通过解释器执行的。谢谢你的评论。在P1 = 5.21

P2 = 0.22

X_= list(range(0,100,1))

X=[float(x)/float(10) for x in X_]

Y = [P1*numpy.exp(-1*P2*x) for x in X]

##plt.plot(X,Y)

##plt.show()

##for j in range(len(Y)):

## Y[j]+=rg.normal(0,0.01)

#build some input files

X1f = open('F:\WORK\SOLVEUR\ALGOCODE\PYTHON_\datasets\exponential1X.txt', 'w')

for i in range(len(X)):

X1f.write(str(X[i])+'\n')

X1f.close()

Yf = open('F:\WORK\SOLVEUR\ALGOCODE\PYTHON_\DataSets\exponential1Y.txt', 'w')

for i in range(len(Y)):

Yf.write(str(Y[i])+'\n')

Yf.close()

def func_exp_1(param, x1, y):

p1, p2 = param

res = sum((y_i - p1*numpy.exp(-1*p2*x))**2 for x1_i, y_i in zip(x1, y))

return res

print func_exp_1([5.2132,0.2202],x1,y)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值