Skip to content Skip to sidebar Skip to footer

Solving Dynamic Number Of Non-linear Equations In Python

Fsolve in Scipy seems to be the right candidate for this, I just need help passing equations dynamically. I appreciate any thoughts in advance. By dynamic I mean number of equatio

Solution 1:

I haven't used Fsolve myself, but according to its documentation it takes a callable function. Something like this handles multiple functions with unknown number of variables. Bear in mind that the args must be ordered correctly here, but each function simply takes a list.

deff1(argList):
    x = argList[0]
    return x**2deff2(argList):
    x = argList[0]
    y = argList[1]
    return (x+y)**2deff3(argList):
    x = argList[0]
    return x/3

fs = [f1,f2,f3]
args = [3,5]
for f in fs:
    print f(args)

For Fsolve, you could try something like this (untested):

deffunc1(argList, constList):
    x = argList[0]
    y = argList[1]
    alpha = constList[0]
    return alpha*x + (1-alpha)*x*y - y
deffunc2(argList, constList):
    x = argList[0]
    y = argList[1]
    z = argList[2]
    beta = constList[1]
    return beta*x  + (1- beta)*x*z - z
deffunc3(argList, constList):
    x = argList[0]
    w = argList[1] ## or, if you want to pass the exact same list to each function, make w argList[4]
    gamma = constList[2]
    return gama*x  + (1 -gama)*x*w - w
deffunc4(argList, constList):

    return A*x + B*y + C*z + D*w -E ## note that I moved E to the left hand side


functions = []
functions.append((func1, argList1, constList1, args01))
# args here can be tailored to fit your  function structure# Just make sure to align it with the way you call your function:# args = [argList, constLit]# args0 can be null.
functions.append((func1, argList2, constList2, args02))
functions.append((func1, argList3, constList3, args03))
functions.append((func1, argList4, constList4, args04))

for func,argList, constList, args0 in functions: ## argList is the (Vector) variable you're solving for.
    Fsolve(func = func, x0 = ..., args = constList, ...)

Post a Comment for "Solving Dynamic Number Of Non-linear Equations In Python"