首页 > 解决方案 > 计算总和的问题

问题描述

我正在尝试计算总和作为类分配的一部分,以开发梯度方法的代码。求和是我需要找到最小值的目标函数。计算总和时出现此错误“RuntimeWarning:double_scalars 中遇到的无效值 y = y + (-0.01*i + exp(-(1/x1)*((u - x2)**x3))**2)”。

为什么会这样?我该如何解决?

from sympy import *
from numpy import *
x1 = 1
x2 = 50
x3 = 1
def f(x1,x2,x3): 
    y = 0
    for i in range(1,100):
        u = (25+(-50*log(0.01*i))**(2/3))
        print(u)
        y = y + (-0.01*i + exp(-(1/x1)*((u - x2)**x3))**2)


        print(f'y{i} : {y}')
    return y

y1 = f(25,50,1.25)
y2 = f(26,51,2.25)


print(f'y1: {y1}')
print(f'y2: {y2}')

标签: python

解决方案


您需要在 中进行投射u,请参阅:

u = float((25+(-50*log(0.01*i))**(2/3)))

推荐阅读