问题:我想在数字上集成一个函数f(t,N)
,该函数可以写成N个其他已知函数g_1(t), ..., g_N(t)
的线性组合。
我的解决方案I:我知道函数g_i
以及系数,所以我最初的想法是创建一个系数的行向量和一个包含lambda函数的列向量{{ 1}}然后使用g_i
作为内部产品来获取我想要的函数对象。不幸的是,你不能只添加两个函数对象,也不能用函数对象乘以标量。
我的解决方案II:当然我可以做一些事情(基本上定义点我想要的东西):
np.dot
但def f(t,N,a,g):
"""
a = numpy array of coefficients
g = numpy array of lambda functions corresponding to functions g_i
"""
res = 0
for i in xrange(N):
res += a[i] * g[i](t)
return res
循环当然不是很好,特别是在:
答案 0 :(得分:0)
简要地:
在Cython中您可以使用内存视图加快索引编制。
如果这些方程式是线性的,您可以使用sympy:
来叠加它们示例:
import sympy as sy
x,y = sy.symbols('x y')
g0 = x*0.33 + 6
g1 = x*0.72 + 1.3
g2 = x*11.2 - 6.5
gn = x*3.3 - 7.3
G = [g0,g1,g2,gn]
#this is superimposition
print sum(G).subs(x,15.1)
print sum(gi.subs(x,15.1) for gi in G)
'''
output:
228.305000000000
228.305000000000
'''
如果它不是你想要的,给出一些输入和输出的例子,这样我就可以试着不要失明......
低ram avaiable你可以得到finxpr等于mathxpr并用一些输入来评估它。否则最好在numpy数组上工作。