在我的算法中,我需要为两个不同的变量两次求解相同的等式。目前我正在使用scipy.fsolve,我已经为第一次和第二次迭代分别定义了两个不同的函数。
我第一次解决X并且传递了一定数量的参数,包括Y. 第二次我需要解决Y而X成为参数之一。当然,在第二次迭代中,还需要更改一些原始参数。
这是简化代码
def f1(X, *params1):
(Y, a, b, c) = params1
long procedure...
return S
def f2(Y, *params2):
(X, a, b, c) = params2
same long procedure....
return S
params1 = (Y, a1, b1, c1)
X = fsolve(f1, X0, args=params1)
params2 = (X, a1, b2, c2)
Y = fsolve(f2, Y0, args=params2)
有没有办法以更优雅的方式组织代码,重用相同的功能?