我正在尝试解决一个非线性方程系统,该系统随着n_inputs的变化而改变变量和方程的数量。最后,我需要获取w [i](对于range(n_inputs)中的w)和alfa。
首先,我做到了,它运行良好:
<img id="image" src="https://via.placeholder.com/150x300">
<div class="button">
<button id="button_horizontal">Flip Horizontal</button>
<button id="button_vertical">Flip Vertical</button>
</div>
w=[0 for i in range(n_inputs)]
beta=0
alfa=np.dot(w,x_M)+beta
但是,我需要将其概括为n_inputs的任何值。
到那时,我明白了,但是我需要指定变量,但我不能这样做。
if n_inputs == 2:
def f(x):
w[0],w[1],alfa=x
f1=sigmoid(alfa)-(sigmoid(alfa)-sigmoid(alfa)**2)*np.dot(w,x_M)-b
f2=(sigmoid(alfa)-sigmoid(alfa)**2)*w[0]-k[0]
f3=(sigmoid(alfa)-sigmoid(alfa)**2)*w[1]-k[1]
return [f1,f2,f3]
elif n_inputs == 3:
def f(x):
w[0],w[1],w[2],alfa=x
f1=sigmoid(alfa)-(sigmoid(alfa)-sigmoid(alfa)**2)*np.dot(w,x_M)-b
f2=(sigmoid(alfa)-sigmoid(alfa)**2)*w[0]-k[0]
f3=(sigmoid(alfa)-sigmoid(alfa)**2)*w[1]-k[1]
f4=(sigmoid(alfa)-sigmoid(alfa)**2)*w[2]-k[2]
return [f1,f2,f3,f4]
elif n_inputs == 4:
def f(x):
w[0],w[1],w[2],w[3],alfa=x
f1=sigmoid(alfa)-(sigmoid(alfa)-sigmoid(alfa)**2)*np.dot(w,x_M)-b
f2=(sigmoid(alfa)-sigmoid(alfa)**2)*w[0]-k[0]
f3=(sigmoid(alfa)-sigmoid(alfa)**2)*w[1]-k[1]
f4=(sigmoid(alfa)-sigmoid(alfa)**2)*w[2]-k[2]
f5=(sigmoid(alfa)-sigmoid(alfa)**2)*w[3]-k[3]
return [f1,f2,f3,f4,f5]
elif n_inputs == 5:
def f(x):
w[0],w[1],w[2],w[3],w[4],alfa=x
f1=sigmoid(alfa)-(sigmoid(alfa)-sigmoid(alfa)**2)*np.dot(w,x_M)-b
f2=(sigmoid(alfa)-sigmoid(alfa)**2)*w[0]-k[0]
f3=(sigmoid(alfa)-sigmoid(alfa)**2)*w[1]-k[1]
f4=(sigmoid(alfa)-sigmoid(alfa)**2)*w[2]-k[2]
f5=(sigmoid(alfa)-sigmoid(alfa)**2)*w[3]-k[3]
f6=(sigmoid(alfa)-sigmoid(alfa)**2)*w[4]-k[4]
return [f1,f2,f3,f4,f5,f6]
elif n_inputs == 6:
def f(x):
w[0],w[1],w[2],w[3],w[4],w[5],alfa=x
f1=sigmoid(alfa)-(sigmoid(alfa)-sigmoid(alfa)**2)*np.dot(w,x_M)-b
f2=(sigmoid(alfa)-sigmoid(alfa)**2)*w[0]-k[0]
f3=(sigmoid(alfa)-sigmoid(alfa)**2)*w[1]-k[1]
f4=(sigmoid(alfa)-sigmoid(alfa)**2)*w[2]-k[2]
f5=(sigmoid(alfa)-sigmoid(alfa)**2)*w[3]-k[3]
f6=(sigmoid(alfa)-sigmoid(alfa)**2)*w[4]-k[4]
f7=(sigmoid(alfa)-sigmoid(alfa)**2)*w[5]-k[5]
return [f1,f2,f3,f4,f5,f6,f7]
ValueError:太多值无法解包(预期2)
有人可以帮忙吗?
答案 0 :(得分:0)
是的,您希望python能够进入您的大脑以寻找期望的值分布。
w,alfa = x[:-1],x[-1]
应该工作。
原则上,此行之后的循环是不必要的,
f = (sigmoid(alfa)-sigmoid(alfa)**2)*w-k[:n_inputs]
假设x
和k
是numpy数组。