如何使用python解决非线性方程(7个方程和7个变量)
我使用了fsolve并定义了7个方程式和变量。但是我没有得到很好的结果。我的猜测值是(1,1,1,1,1,1,1)。我的猜测值做错了吗?我的变量初始值应为(0,0,0,0,0,0)
从常量导入* 从scipy.optimize导入fsolve
def external_equation(天):
KT = day['KT']
CaT = day['CaT']
MgT = day['MgT']
NaT = day['NaT']
SO4T = day['SO4T']
ClT = day['ClT']
def multi_equation(z):
a, b, c, d, e, f, g = z
equation1 = a + (a*e/K1) - KT
equation2 = b + b*KW/(H*K2) + b*g/K3 + b*f/K4 + b*e/K5 - CaT
equation3 = c + c*KW/(K6*H) + c*g/K7 + c*f/K8 + c*e/K9 - MgT
equation4 = d + d*KW/(H*K10) + d*g/K11 + d*f/K12 + c*e/K13 - NaT
equation5 = e + e*H/K16 + e*b/K5 + e*c/K9 + e*d/K13 + e*a/K1 - SO4T
equation6 = 2*f + 2*b*f/K4 + 2*c*f/K8 + 2*d*f/K12 \
+ g + b*g/K3 + c*g / K7 + d*g/K11 + KW/H - H - ALK
equation7 = 2*b + 2*c + d + a + b*g/K3 + c*g/K7 + H - 2*g - f - 2*e - \
KW/H - d*f/K12 - d*e/K13 - a*e/K1 - H * e/K16 - ClT
return (equation1, equation2, equation3, equation4, equation5, equation6, equation7)
guess = (1, 1, 1, 1, 1, 1, 1)
sol = fsolve(multi_equation, guess)
return sol