= =好困啊看凸优化,明天接着看
http://web.cvxr.com/cvx/doc/funcref.html这是英文原版= =可以参照阅读效果更佳哦 ==
在本节中,我们将描述您可能在CVX中遇到的每个运算符,函数,集合和命令。 在某些情况下,底层解算器的局限性会对其使用产生某些限制或警告:
标有匕首的函数(†)不受本地CVX使用的解算器支持。 它们使用逐次逼近方法进行处理,该方法对基础求解器进行多次调用,从而达到相同的最终精度。 如果您使用这些功能之一,将会被警告使用逐次逼近。 这种技术在逐次逼近法中进一步讨论。 正如本节所讨论的,这是一个在许多情况下运作良好的实验方法,但不能得到保证。
涉及幂(例如,x ^ p)和pp-范数(例如norm(x,p))的函数用双匕首(‡)标记。 当pp是一个有理数时,CVX恰好表示这些函数。 对于p的非理性值(个人理解为无理数),选择附近的理性(有理数)。 有关两种情况如何处理的详细信息,请参见http://web.cvxr.com/cvx/doc/advanced.html#powerfunc
算术运算符
Matlab的标准算术运算用于加法,减法,乘法,。,除法/ ./ \。和幂指数^。^已经被重载在CVX中适用 - 也就是说,只要它们的使用符合 标准的数学和Matlab惯例以及DCP规则集。 例如:
如果两个CVX表达式具有相同的维度(或者是标量)并且具有相同的曲率(即,它们都是凸,凹或仿射),则可以将它们加在一起。
CVX表达式可以乘以或除以标量常量。 如果常数是正数,则曲率保持不变; 如果是负值,则曲率反转。
仿射列向量CVX表达式可以乘以适当维数的常数矩阵; 或者它可以被一个适当维数的非奇异常数矩阵分开。
当然,许多其他的组合也是可能的。 指数运算符^的使用是有限的; 请参阅下面的Nonlinear中的power的定义。
Matlab的基本矩阵操作和算术运算已经扩展到CVX表达式,包括:
连接:[A,B; C,D]
索引:x(n + 1:结尾),X([3,4],:)等
索引分配,包括删除:y(2:4)= 1,Z(1:4,:) = []等
转置和共轭转置:Z.',y'
内置函数
Linear线性
许多Matlab的基本线性和双线性函数或者自动地用cvx表达式工作,或者扩展到cvx表达式,包括:conj,conv,cumsum,diag,dot,find,fliplr,flipud,flipdim,horzcat,hankel,ipermute,kron ,意思是,permute,repmat,重塑,rot90,稀疏,总和,追踪,tril,triu,toeplitz,vertcat。
大多数应该像使用数字表达式一样来处理CVX表达式。 执行诸如conv,dot或kron之类的cumsum,sum或multiplication之类的某种求和的那些只能按照有纪律的凸规划规则来使用。 例如,kron(X,Y)只有在X或Y是常量时才有效; 而轨迹(Z)只有沿着对角线的元素具有相同的曲率才有效。
Nonlinear非线性
ABS
实和复(复杂指复数,前面出现很多次,都没有修改 = =!)数组的绝对值。凸。
†exp
指数。 凸和不减
†log
对数。 凹而不减。
max
最大值。 凸和不减
min
最小。 凹而不减。
norm
真和复的向量和矩阵的规范(范数)。凸。 因此,函数紧跟Matlab惯例。 因此,单参数版本范数(x)计算矢量的2-范数和矩阵的2-范数(最大奇异值)。 双参数版本规范(x,p)支持如下:
*‡对于矢量,所有值p≥1p≥1都被接受。
对于矩阵,p必须是1,2,Inf或'Fro'。*
polyval
多项式评估。 polyval(p,x),其中p是一个长度为n的向量,计算
p(1) * x.^(n-1) + p(2) * x.^(n-2) + ... + p(n-1) * x + p(n)
这个功能可以通过两种方式在CVX中使用:
如果p是变量,x是常量,则polyval(x,p)计算p的元素的线性组合。 该组合必须满足DCP规则的添加和缩放。
如果p是常数而x是变量,则polyval(x,p)构造变量x的多项式函数。 多项式必须是仿射的,凸的或凹的,并且x必须是真实的和仿射的。
‡power(x,p)
x ^ p和x.^ p,其中x是一个实数变量,而p是一个实常数。 对于x ^ p,x和p都必须是标量。 只有那些合理而明确地解释为凸或凹的p值才被接受:
P =0。 不变。 x.^p被相同地处理1。
0<P<1。 凹。 参数x必须是凹的(或仿射的),并且被隐含地约束为非负的。
P =1。仿射。 x.^ p简单地是x。
p∈{2,4,6,8,...}。凸。 参数xx必须是仿射的。
p> 1 ,p∉{2,3,4,5,...} 。凸。 参数x必须是仿射的,并且被隐含地约束为非负的。
pp的负和奇整数值是不允许的,但是在下一节中可以看到pow_p,pow_pos和pow_abs函数的有用选择。
† power(p,x)
p.^ x和p ^ x,其中p是一个实常数,x是一个实变量。 对于p ^ x,p和x必须是标量。 p的有效值包括:
p∈{0,1}。 不变。
0<P<1。 凸和不增加; x必须凹入。
P>1。 凸和不减 x必须是凸的。
p的负值是不允许的。
std
标准偏差。凸。
sqrt
平方根。 隐含地限制它的论点(个人理解:定义域)是非负的。 凹而不减。
var
方差。凸。
New functions
即使这些函数是专门为CVX开发的,但它们在CVX规范之外也可以使用数字参数。
后面的函数量很大,在文件说明中也有详尽的表达式,需要的可以看看= =这里暂时不写了