Python中的根查找不准确?

2024-10-01 07:51:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试解决Python中的一个根查找问题,这个问题应该很简单,但到目前为止,它被证明是一个难题。我把下面的方程式写成函数:

def fullsol(x, DIC, QCharge):

return [x[3] - (DIC/((1 +(K1/x[0]) + (K1*K2/(x[0])**2)))), 
        x[1] - (DIC/((1 +(x[0]/K1) + (K2/(x[0]))))), 
        x[2] - (DIC/(1 +(x[0]/K2) + ((x[0]**2)/K1*K2))),
        (x[0]*x[4]) - Kw,
        2*QCharge - x[0] + x[1] + 2*x[2] + x[4] - (DIC/0.78)]

这个函数返回5个含有5个未知数的方程(“DIC”和“QCharge”是常数),接下来我调用最小二乘优化(来自scipy)来获得根,并给出初始猜测和边界(我知道所有参数都大于零):

^{pr2}$

当我运行这段代码时,我得到一个我知道是错误的结果,因为在Mathematica中运行精确的问题(使用NSolve)会给出一个不同的、更准确的答案。当我使用optimize.root而不是最小二乘法时,我在Python中得到了相同的(错误的)答案,所以几乎就好像Python的优化包是……不准确的。在

如果有任何关于我是否做错了什么的指导、故障排除建议和/或在Python中最接近NSolve的近似值,我将不胜感激。在

我尝试在Python中使用NSolve,但在给定的容差内找不到根。代码如下:

^{3}$

Tags: 函数答案代码证明returndef错误k2