【发布时间】:2019-06-18 21:16:07
【问题描述】:
我想使用 Python 求解一个由 6 个非线性方程组成的系统。我发现我可以很容易地使用scipy 的fsolve 来求解3 个非线性方程组。但是,当我将其扩展到更大的系统时,我发现该解决方案无法解决方程组。有什么我可以纠正的东西可以解决 6 个非线性方程吗?
import numpy as np
from scipy.optimize import fsolve
def system(z):
#arbitrary system of 3 nonlinear equations
x1 = z[0]
x2 = z[1]
x3 = z[2]
F = np.empty((3))
F[0] = 20* x1 + x2**2
F[1] = x2 - x1
F[2] = x3 + 5 - x1*x2
return F
def system2(z):
#arbitrary system of 6 nonlinear equations
x1 = z[0]
x2 = z[1]
x3 = z[2]
x4 = z[3]
x5 = z[4]
x6 = z[5]
F = np.empty((6))
F[0] = 20* x1 + x2**2
F[1] = x2 - x1
F[2] = x3 + 5 - x1*x2
F[3] = x3 + x2
F[4] = x5 + x4**2
F[5] = x6**2 + x1 - 20
return F
uInitial = np.array([1,1,1])
u = fsolve(system,uInitial)
print('Solution: ',u)
print('Solution check: ',system(u),'\n') #yields zeros as expected
vInitial = np.array([1,1,1,1,1,1])
v = fsolve(system2,vInitial)
print('Solution: ',v)
print('Solution check: ',system2(v)) #unexpectedly does not yield zeros. Equations not solved correctly.
当将给定的解应用回方程组时,我应该期望收到零(或接近零)。这将确认计算的解决方案解决了给定的方程组。我尝试用这种方法检查 3 个方程组和 6 个方程组,但只有 3 个方程组才能通过这个检查正确求解。求解 6 个非线性方程组的方法是什么?
【问题讨论】:
标签: python nonlinear-functions