Python 如何用SciPy解这个方程

Python 如何用SciPy解这个方程,python,numpy,scipy,sympy,Python,Numpy,Scipy,Sympy,在MathCad中,它如下所示: 如何使用python(scipy或Symphy)解决此问题 也许是这样的 def fun(n): x, y, z = n return -0.7353 + 3.306 * np.absolute(0.706 - x) + 1.247 * np.absolute(0.7210 - y) - (0.89072 - 1.4829*x + 0.23239*y - z) scipy.optimize.fsolve(fun, [1,1,1]) 代码 重要

在MathCad中,它如下所示:

如何使用python(scipy或Symphy)解决此问题

也许是这样的

def fun(n):
    x, y, z = n
    return -0.7353 + 3.306 * np.absolute(0.706 - x) + 1.247 * np.absolute(0.7210 - y) - (0.89072 - 1.4829*x + 0.23239*y - z)
scipy.optimize.fsolve(fun, [1,1,1])
代码 重要的是(对于这种基于scipy.minimize的方法)误差的二次惩罚(这是双方的差异)。当然还有其他的方法,但是要小心约束目标

from scipy.optimize import minimize

fun = lambda x: ((-0.7353 + 3.306 * (abs(0.706 - x[0])) + 1.247 * (abs(0.721 - x[1]))) - \
                (0.89072 - 1.4829 * x[0] + 0.23239 * x[1] - x[2]))**2
x0 = [1, 1, 1]
res = minimize(fun, x0, tol=1e-6)
print(res)
结果 如评论中所述,没有唯一的解决方案。你的起点和选择的算法决定了你得到什么样的解决方案


唯一相关的部分是目标,它应该接近零

你的代码运行正常了吗?你是如何用看起来只有两个方程的解3个未知数的?你到底需要用scipy做什么?所有变量都已定义,因此函数返回一个标量值,而无需
solve
for anything>代码是否正常工作?代码不工作。>你是如何用看起来只有两个方程的东西来解3个未知数的?好的,但是MatCad是解决它的Mathcad给出了一个解决方案,但它不是唯一的。
fun: 1.180300596982825e-18
hess_inv: array([[ 0.01850105, -0.02426119, -0.04300235],
 [-0.02426119,  0.23287182,  0.24090596],
 [-0.04300235,  0.24090596,  0.61570727]])
jac: array([  5.34881862e-08,   3.58270711e-08,   1.27283284e-08])
message: 'Optimization terminated successfully.'
nfev: 50
nit: 6
njev: 10
status: 0
success: True
x: array([ 0.69247018, -0.38146035, -0.90898925])