这长句谁帮帮忙,能缩短一点吗?或改成函数

vv=lambda x:[1.645*math.sqrt(x[0]*cov[0][0]*x[0]+x[0]*cov[0][1]*x[1]+x[0]*cov[0][2]*x[2]+
x[0]*cov[0][3]*x[3]+x[0]*cov[0][4]*x[4]+x[0]*cov[0][5]*x[5]+x[0]*cov[0][6]*x[6]+x[0]*cov[0][7]*x[7]+
x[0]*cov[0][8]*x[8]+x[0]*cov[0][9]*x[9]+x[1]*cov[1][0]*x[0]+x[1]*cov[1][1]*x[1]+x[1]*cov[1][2]*x[2]+
x[1]*cov[1][3]*x[3]+x[1]*cov[1][4]*x[4]+x[1]*cov[1][5]*x[5]+x[1]*cov[1][6]*x[6]+x[1]*cov[1][7]*x[7]+
x[1]*cov[1][8]*x[8]+x[1]*cov[1][9]*x[9]+x[2]*cov[2][0]*x[0]+x[2]*cov[2][1]*x[1]+x[2]*cov[2][2]*x[2]+
x[2]*cov[2][3]*x[3]+x[2]*cov[2][4]*x[4]+x[2]*cov[2][5]*x[5]+x[2]*cov[2][6]*x[6]+x[2]*cov[2][7]*x[7]+
x[2]*cov[2][8]*x[8]+x[2]*cov[2][9]*x[9]+x[3]*cov[3][0]*x[0]+x[3]*cov[3][1]*x[1]+x[3]*cov[3][2]*x[2]+
x[3]*cov[3][3]*x[3]+x[3]*cov[3][4]*x[4]+x[3]*cov[3][5]*x[5]+x[3]*cov[3][6]*x[6]+x[3]*cov[3][7]*x[7]+
x[3]*cov[3][8]*x[8]+x[3]*cov[3][9]*x[9]+x[4]*cov[4][0]*x[0]+x[4]*cov[4][1]*x[1]+x[4]*cov[4][2]*x[2]+
x[4]*cov[4][3]*x[3]+x[4]*cov[4][4]*x[4]+x[4]*cov[4][5]*x[5]+x[4]*cov[4][6]*x[6]+x[4]*cov[4][7]*x[7]+
x[4]*cov[4][8]*x[8]+x[4]*cov[4][9]*x[9]+x[5]*cov[5][0]*x[0]+x[5]*cov[5][1]*x[1]+x[5]*cov[5][2]*x[2]+
x[5]*cov[5][3]*x[3]+x[5]*cov[5][4]*x[4]+x[5]*cov[5][5]*x[5]+x[5]*cov[5][6]*x[6]+x[5]*cov[5][7]*x[7]+
x[5]*cov[5][8]*x[8]+x[5]*cov[5][9]*x[9]+x[6]*cov[6][0]*x[0]+x[6]*cov[6][1]*x[1]+x[6]*cov[6][2]*x[2]+
x[6]*cov[6][3]*x[3]+x[6]*cov[6][4]*x[4]+x[6]*cov[6][5]*x[5]+x[6]*cov[6][6]*x[6]+x[6]*cov[6][7]*x[7]+
x[6]*cov[6][8]*x[8]+x[6]*cov[6][9]*x[9]+x[7]*cov[7][0]*x[0]+x[7]*cov[7][1]*x[1]+x[7]*cov[7][2]*x[2]+
x[7]*cov[7][3]*x[3]+x[7]*cov[7][4]*x[4]+x[7]*cov[7][5]*x[5]+x[7]*cov[7][6]*x[6]+x[7]*cov[7][7]*x[7]+
x[7]*cov[7][8]*x[8]+x[7]*cov[7][9]*x[9]+x[8]*cov[8][0]*x[0]+x[8]*cov[8][1]*x[1]+x[8]*cov[8][2]*x[2]+
x[8]*cov[8][3]*x[3]+x[8]*cov[8][4]*x[4]+x[8]*cov[8][5]*x[5]+x[8]*cov[8][6]*x[6]+x[8]*cov[8][7]*x[7]+
x[8]*cov[8][8]*x[8]+x[8]*cov[8][9]*x[9]+x[9]*cov[9][0]*x[0]+x[9]*cov[9][1]*x[1]+x[9]*cov[9][2]*x[2]+
x[9]*cov[9][3]*x[3]+x[9]*cov[9][4]*x[4]+x[9]*cov[9][5]*x[5]+x[9]*cov[9][6]*x[6]+x[9]*cov[9][7]*x[7]+
x[9]*cov[9][8]*x[8]+x[9]*cov[9][9]*x[9])-(HHH[0]*x[0]+HHH[1]*x[1]+HHH[2]*x[2]+HHH[3]*x[3]+HHH[4]*x[4]+HHH[5]*x[5]+
HHH[6]*x[6]+HHH[7]*x[7]+HHH[8]*x[8]+HHH[9]*x[9])]

cov现在只有9行的数据,有可能更多,9行的笨方法只能这样写,没出错,但这也太长了,又不方便

def vv(x):
    a = 0
    for i in range(10):
        for j in range(10):
            a += x[i]*cov[i][j]*x[j]
    b = 0
    for i in range(10):
        b += HHH[i]*x[i]
    return [1.645*math.sqrt(a)-b]
res = minimize(vv, x0, method='SLSQP',constraints=cons)

 

你用个for循环也不至于这样。。

你把math.sqrt中的数组抽出来,用for循环去执行。

for(i in range(0,9):
    for(j in range(0,9):
        for(k in range(0,9):
            // do something;

 

等一下,可能我没说清楚,我要使用下面的函数,然后那边要调用函数vv,需要用到lambda x,所以不用

能用for循环,那X传不进去

res = minimize(vv, x0, method='SLSQP',constraints=cons)

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632