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!你知道为什么吗?你能分享新代码吗?你到底在哪里更改了答案?