【问题标题】:Python optimization indexed sum using sympy lambdify and scipy使用 sympy lambdify 和 scipy 的 Python 优化索引总和
【发布时间】:2017-11-08 19:14:22
【问题描述】:

我正在寻找this 线程的建议答案的混合解决方案。第一个代码 sn-p 使用了一种更符号化的方式,我使用了第二个代码 sn-p 的属性,其中变量的数量发生了变化。所以接近这个变量的数量 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))

有什么想法吗?

【问题讨论】:

    标签: python lambda scipy sympy


    【解决方案1】:

    所以这似乎可以解决问题:

    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)
    

    还有什么建议吗?

    【讨论】:

      猜你喜欢
      • 2016-03-10
      • 1970-01-01
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 2019-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多