我正在寻找一个混合解决方案的建议的答案的this线程。第一个代码段使用的是一种更具符号性的方法,我将使用第二个代码段的属性,在该属性中变量的数量会发生变化。所以接近这个,变量数n可以改变。
from sympy import *
from scipy.optimize import minimize
from sympy.utilities.lambdify import lambdify
x, i, n = symbols("x i n")
n = 10
func = Sum((Indexed('x',i)-3)/(1+0.2)**i,(i,1,n))
my_func = lambdify((x, i, n), func)
def my_func_v(x):
return my_func(*tuple(x))
results = minimize(my_func_v, np.zeros(n))有什么想法吗?
发布于 2017-11-09 17:28:22
所以这似乎起了作用:
from sympy import Sum, symbols, Indexed, lambdify
from scipy.optimize import minimize
import numpy as np
def _eqn(y, variables, periods, sign=-1.0):
x, i = symbols("x i")
n = periods-1
s = Sum(Indexed('x', i)/(1+0.06)**i, (i, 0, n))
f = lambdify(x, s, modules=['sympy'])
return float(sign*(y + f(variables)))
z = 3
results = minimize(lambda x: _eqn(3, x, z),np.zeros(z))
print(results.x)还有进一步的建议吗?
https://stackoverflow.com/questions/47187841
复制相似问题