在python中用n个相应的变量创建n个函数?

时间:2018-03-16 01:50:09

标签: python function

我想创建n个函数,由用户给出的整数指定。我听说动态创建变量并不好,当我试图用for循环创建变量和后续函数时,代码不会产生我的结果。无论如何,我想要做的是创建一个函数,它是n个指数的总和,例如如果n = 3,我得到三个函数:

user_input_n = 3

f1(A1,k1,time) = A1*np.exp(-k1*time)
f2(A2,k2,time) = A2*np.exp(-k2*time) 
f3(A3,k3,time) = A3*np.exp(-k3*time)

和相应的变量:

A1,A2,A3,k1,k2,k3 

在一些可用的矩阵中:

Atotal=[A1,A2,A3]; 
ktotal=[k1,k2,k3]

可以组合起来以适合数据:

ftotal(A1,A2,A3,k1,k2,k3,time)= f1(A1,k1,time) + f2(A2,k2,time) + f3(A3,k3,time)

有人有合理的解决方案吗?

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,那么你将需要使用数组输入来创建函数。我发现使用sympy / numpy的组合是最直接的解决方案:

#lambdify method (probably the easiest)
from numpy import *
from sympy import *
from numpy import array
from matplotlib.pyplot import plot
A=array([1,2,3])
k=array([4,5,6])
tt=linspace(0,5)#time tt
t=symbols('t')
ff=lambdify(t,dot(A,exp(1)**(-k*t)))
#note that exp(-k*t) creates an exp array which doesn't work.
#thats why it is important to use exp(1)**-k*t instead
plot(tt,ff(tt))
#note that ff input must be an array. a list won't work