8.6.18. MQuadExpr

class MQuadExpr

代表由多个QuadExpr组成的多维数组。 一般通过常数,Var,MVar,LinExpr, QuadExpr等类型对象通过算数运算产生。 例如:

# 多维数组线性表达式乘以一个变量
mLinExpr * x
# 两个多维数组变量的矩阵乘法
* mvar1 @ mvar2

属性

ndim

获取MQuadExpr的维度个数

shape

获取MQuadExpr的shape

size

获取QuadExpr包含的表达式个数

方法

clear()

对所有包含的二次表达式,执行clear操作,即所有包含的二次表达式都将变成空表达式

copy()

返回MQuadExpr的一个拷贝

getValue()

在问题求解以后,返回所有二次表达式的值

item()

获取当前MQuadExpr唯一包含的表达式

sum()

将包含的所有表达式求和,返回求和后的表达式

zeros()

返回一个指定shape的MQuadExpr,它包含的所有表达式都是空表达式

clear()

对所有包含的二次表达式,执行clear操作,即所有包含的二次表达式都将变成空表达式

example:

mQuadExpr.clear()
print(mQuadExpr[0, 0].item().size() == 0)
copy()

返回MQuadExpr的一个拷贝

example:

another = mQuadExpr.copy()
getValue()

在问题求解以后,返回所有二次表达式的值

example:

m.optimize()
print(mQuadExpr.getValue()[0, 0])
item()

获取当前MQuadExpr唯一包含的表达式

example:

mat = m.addMVar((2, 2))
mQuadExpr = mat * mat[0, 0].item()
first = mQuadExpr[0, 0]
print(type(first))
print(type(first.item()))

Note

如果当前MQuadExpr包含不止一个表达式将抛出异常

sum(axis=None)

将包含的所有表达式求和,返回求和后的表达式

Parameters

axis=None – 求和的沿轴

example:

mat = m.addMVar((2, 2))
mQuadExpr = mat * mat[0, 0].item()
print(mQuadExpr.sum().size == 1)
zeros(shape)

返回一个指定shape的MQuadExpr,它包含的所有表达式都是空表达式

Parameters

shape – 需要指定的shape

example:

mQuadExpr = MQuadExpr.zeros((2, 2))
mQuadExpr += x * x
print(mQuadExpr[0, 0].item().size() == 1)