Python 如何使用x1和x2026进行点积;,然后以特定的方式打印
我有一个基本问题。我试图为优化软件做一些约束。你能帮我做这件事吗 我有两个数字向量,例如:Python 如何使用x1和x2026进行点积;,然后以特定的方式打印,python,Python,我有一个基本问题。我试图为优化软件做一些约束。你能帮我做这件事吗 我有两个数字向量,例如:(1 4 2 3 4 1),(1 1 2 6 8 9) 我要第一个乘以x1第二个乘以x2,然后。我希望输出是这样的: s.t.a1:1*x1+4*x2+2*x3+3*x4+4*x5+1*x6>=0 s.t.a2:1*x1+1*x2+2*x3+6*x4+8*x5+9*x6>=0 因此,我希望术语s.t.ai:打印在I-th约束前面,并且>=0位于每个约束的末尾 注意,我有数字的向量,但没有x1,x2,…,xn
(1 4 2 3 4 1),(1 1 2 6 8 9)
我要第一个乘以x1
第二个乘以x2
,然后。我希望输出是这样的:
s.t.a1:1*x1+4*x2+2*x3+3*x4+4*x5+1*x6>=0代码>
s.t.a2:1*x1+1*x2+2*x3+6*x4+8*x5+9*x6>=0代码>
因此,我希望术语s.t.ai:
打印在I-th
约束前面,并且>=0代码>位于每个约束的末尾
注意,我有数字的向量,但没有x1,x2,…,xn
。因为我的向量很大,所以我很难列出x1,x2,…,xn
以下是我所做的:
y="1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1"
xx=list(y.split(" "))
x=[]
for i in range(1,42): #I know it is not correct to define (x1,...,x42) like this, but
x=xi #what is the correct way?
def dot(x, y):
return sum(x_i*y_i for x_i, y_i in zip(x, xx))
print("s.t. a:" dot(x, y) ">=0;")
我的问题是我不能正确定义x=(x1,…,x42)。在打印中,我无法打印以下内容:
# create vectors:
vector = [1, 4, 2]
# initialize empty equation:
equation = ''
# loop over every point in the vector:
for index, point in enumerate(vector):
# update the equation for each point in the vector:
equation += str(point) + '*x_' + str(index+1) + ' + '
# remove the trailing ' + ' from equation:
equation = equation[0:-3]
# add head and tail to equation:
equation = 's.t. a1: ' + equation + ' >=0;'
# print result:
print(equation)
将输出以下内容:
s.t. a1: 1*x_1 + 4*x_2 + 2*x_3 >=0;
您可以根据需要更改向量。您能否明确说明您在这里想要实现的目标?x1如何。。。x42显示在您想要的输出中?此代码不正确,我希望输出与问题中的第5行和第6行相同!您的输出只有x1、x2和x3,这是否意味着您不需要x4、x5。。。x42?我在示例中使用了x1、x2、x3来显示输出必须是怎样的!在代码中,它是x1,…,x42。很难显示输出x1,…,x42OK,你能提供一个x4,x5和x6的例子来澄清吗?你在哪里定义了向量?(1,4,2)和(1,1,2)?查看最新更新-如果您需要任何澄清,请告诉我。奇怪的是:我将3更改为42,但它将不平等性打印到x37!你知道为什么吗?你能分享新代码吗?你到底在哪里更改了答案?