parse a pdf in c# : How to bookmark a pdf page application Library utility html asp.net .net visual studio CVX2-part1412

The CVX Users’ Guide, Release 2.1
Inequality constraints of the form f(x)  g(x) or g(x)  f(x) are accepted only if f can be verified as
convex and g verified as concave. So a constraintsuch as
norm(x,Inf) >= 1;
results in the following error:
??? Error using ==> cvx.ge
Disciplined convex programming error:
The left-hand side of a ">=" inequality must be concave.
The specifics of the construction rules are discussed in more detail inTheDCPruleset. These rules are
relatively intuitive if you know the basics of convex analysis and convex optimization.
3.5 An optimal trade-off curve
For our final example in this section, let us show how traditional Matlab code and CVX specifications can
be mixed to form and solve multiple optimization problems. The following code solves the problem of
minimizing kAx bk
2
+ kxk
1
,for a logarithmicallyspaced vector of (positive) values of  . This gives us
points on the optimal trade-off curve between kAx bk
2
and kxk
1
.Anexample of this curve is given inthe
figure below.
gamma = logspace( -2, 2, 20 );
l2norm = zeros(size(gamma));
l1norm = zeros(size(gamma));
fprintf( 1, '
gamma
norm(x,1)
norm(A
*
x-b)\n' );
fprintf( 1, '---------------------------------------\n' );
for k = 1:length(gamma),
fprintf( 1, '%8.4e', gamma(k) );
cvx_begin
variable x(n);
minimize( norm(A
*
x-b)+gamma(k)
*
norm(x,1) );
cvx_end
l1norm(k) = norm(x,1);
l2norm(k) = norm(A
*
x-b);
fprintf( 1, '
%8.4e
%8.4e\n', l1norm(k), l2norm(k) );
end
plot( l1norm, l2norm );
xlabel( 'norm(x,1)' );
ylabel( 'norm(A
*
x-b)' );
grid on
The minimizestatementaboveillustrates one of the constructionrules tobe discussedinTheDCPruleset.
Abasic principle of convex analysis is that a convex function can be multiplied by a nonnegative scalar, or
added to another convex function, and the result is then convex. CVX recognizes such combinations and
allows them to be used anywhere a simple convex function can be—such as an objective function to be
minimized, or onthe appropriate side of an inequality constraint. So in our example, the expression
norm(A
*
x-b)+gamma(k)
*
norm(x,1)
is recognized as convex by CVX, as long as gamma(k) is positive or zero. If gamma(k) were negative,
3.5. An optimal trade-off curve
15
How to bookmark a pdf page - add, remove, update PDF bookmarks in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Your C# Project with Rapid PDF Internal Navigation Via Bookmark and Outline
excel print to pdf with bookmarks; export bookmarks from pdf to excel
How to bookmark a pdf page - VB.NET PDF bookmark library: add, remove, update PDF bookmarks in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Your VB.NET Project with Rapid PDF Internal Navigation Via Bookmark and Outline
convert excel to pdf with bookmarks; convert word pdf bookmarks
The CVX Users’ Guide, Release 2.1
0
0.5
1
1.5
2
2.5
3
3.5
2
2.2
2.4
2.6
2.8
3
3.2
3.4
3.6
norm(x,1)
norm(A*x−b)
Figure 3.1: An example trade-off curve from the quickstart.m demo.
16
Chapter 3. A quick start
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
XDoc.PDF ›› VB.NET PDF: Delete PDF Page. using RasterEdge.Imaging.Basic; using RasterEdge.XDoc.PDF; How to VB.NET: Delete a Single PDF Page from PDF File.
adding bookmarks to pdf; create pdf bookmarks online
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
PDF Pages. |. Home ›› XDoc.PDF ›› VB.NET PDF: Insert PDF Page. Professional .NET PDF control for inserting PDF page in Visual Basic .NET class application.
create bookmarks pdf file; add bookmarks to pdf reader
The CVX Users’ Guide, Release 2.1
then this expression becomes the sum of a convex term and a concave term, which causes CVX to generate
the following error:
??? Error using ==> cvx.plus
Disciplined convex programming error:
Addition of convex and concave terms is forbidden.
3.5. An optimal trade-off curve
17
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
Pages. |. Home ›› XDoc.PDF ›› C# PDF: Delete PDF Page. Demo Code: How to Delete a Single PDF Page from PDF File in C#.NET. How
export pdf bookmarks to excel; pdf reader with bookmarks
C# PDF Page Rotate Library: rotate PDF page permanently in C#.net
C#.NET PDF Library - Rotate PDF Page in C#.NET. How to Use C#.NET Demo Code to Rotate a PDF Page Using C#.NET. Output a New PDF File in C#.NET.
how to add bookmarks to pdf files; pdf bookmark editor
The CVX Users’ Guide, Release 2.1
18
Chapter 3. A quick start
VB.NET PDF Page Rotate Library: rotate PDF page permanently in vb.
Page: Rotate a PDF Page. |. Home ›› XDoc.PDF ›› VB.NET PDF: Rotate PDF Page. Rotate a PDF Page Using VB.NET. Output a New PDF File.
how to add bookmark in pdf; add bookmark to pdf reader
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
If using x86, the platform target should be x86. C#.NET Sample Code: Clone a PDF Page Using C#.NET. Load the PDF file that provides the page object.
pdf bookmark; edit pdf bookmarks
CHAPTER
FOUR
THE BASICS
4.1 cvx_begin and cvx_end
All CVX models must be preceded by the command cvx_begin and terminated with the command
cvx_end. All variable declarations, objective functions, and constraints should fall in between. The
cvx_begin command may include one more more modifiers:
cvx_begin quiet Prevents the model from producing any screen output while itis being solved.
cvx_begin sdp Invokessemidefiniteprogrammingmode.
cvx_begin gp Invokesgeometricprogrammingmode.
These modifiers may be combined when appropriate; for instance, cvx_begin sdp quiet invokes
SDPmode and silences the solver output.
4.2 Variables
All variables must be declared using the variable command (or variables command; see below)
before they can be used in constraints or an objective function. A variable command includes the name
of the variable, an optional dimension list, and one or more keywords that provide additional information
about the content or structure of the variable.
Variables can be realor complex scalars, vectors, matrices, or n-dimensionalarrays. For instance,
variable X
variable Y(20,10)
variable Z(5,5,5)
declares a total of 326 (scalar) variables: a scalar X, a 20x10matrix Y (containing 200scalar variables), and
a5x5x5 array Z (containing 125 scalar variables).
Variable declarations can also include one or more keywords to denote various structures or conditions on
the variable. For instance, to declare a complex variable, use the complex keyword:
variable w(50) complex
Nonnegative variables and symmetric/Hermitian positive semidefinite (PSD) matrices can be specified with
the nonnegative and semidefinite keywords, respectively:
19
VB.NET PDF Page Replace Library: replace PDF pages in C#.net, ASP.
Image: Insert Image to PDF. Image: Remove Image from PDF Page. Image: Copy, Paste, Cut Image in Page. Link: Edit URL. Bookmark: Edit Bookmark. Metadata: Edit
adding bookmarks to pdf reader; bookmark pdf documents
VB.NET PDF remove image library: remove, delete images from PDF in
Image: Insert Image to PDF. Image: Remove Image from PDF Page. Image: Copy, Paste, Cut Image in Page. Link: Edit URL. Bookmark: Edit Bookmark. Metadata: Edit
export pdf bookmarks to text; create pdf bookmarks from word
The CVX Users’ Guide, Release 2.1
variable x(10) nonnegative
variable Z(5,5) semidefinite
variable Q(5,5) complex semidefinite
In this example, x is a nonnegative vector, and Z is a realsymmetric PSD matrix and Q‘‘is a complex
Hermitian PSD matrix.
As we will see below, ‘‘hermitian semidefinite
would be an equivalent choice for this third case.
For MIDCPs, the integer and binary keywords are used to declare integer and binary variables, re-
spectively:
variable p(10) integer
variable q binary
Avariety of keywords are available to help construct variables with matrix structure such as symmetry or
bandedness. For example, the code segment
variable Y(50,50) symmetric
variable Z(100,100) hermitian toeplitz
declares Y to be a real 50  50 symmetric matrix variable, and Z a 100  100 Hermitian Toeplitz matrix
variable. (Note that the hermitian keyword also specifies that the matrix is complex.) The currently
supported structure keywords are:
banded(lb,ub)
diagonal
hankel
hermitian
skew_symmetric
symmetric
toeplitz
tridiagonal
lower_bidiagonal
lower_hessenberg
lower_triangular
upper_bidiagonal
upper_hankel
upper_hessenberg
upper_triangular
The underscores can actually be omitted; so, for example, lower triangular is acceptable as well.
These keywords are self-explanatory with a couple of exceptions:
banded(lb,ub) the matrix is banded with a lower bandwidth lb and an upper bandwidth ub. If both lb
and ub are zero, then a diagonal matrix results. ub can be omitted, in which case it is set equal to lb.
For example, banded(1,1) (or banded(1)) is a tridiagonal matrix.
upper_hankel The matrix is Hankel (i.e., constant along antidiagonals), and zero below the central
antidiagonal, i.e., for i+ j > n + 1.
When multiple keywords are supplied, the resulting matrix structure is determined by intersection. For
example, symmetric tridiagonal is a valid combination. That said, CVX does reject combinations
such as symmetric lower_triangular when a more reasonable alternative exists—diagonal, in
this case. Furthermore, if the keywords fully conflict, such that emph{no} non-zero matrix that satisfies all
keywords, an error will result.
Matrix-specific keywords can be applied to n-dimensionalarrays as well: each 2-dimensional“slice” of the
array is given the stated structure. So for instance, the declaration
variable R(10,10,8) hermitian semidefinite
constructs 8 10 10 complex Hermitian PSD matrices, stored in the 2-D slices of R.
As flexible as the variable statement may be, it can only be used to declare a single variable, which
can be inconvenient if you have a lot of variables to declare. For this reason, the variables statement is
20
Chapter 4. The Basics
The CVX Users’ Guide, Release 2.1
provided which allows you to declare multiple variables; i.e.,
variables x1 x2 x3 y1(10) y2(10,10,10);
The one limitation of the variables command is that it cannot declare complex, integer, or structured
variables. These must be declared one at a time, using the singular variable command.
4.3 Objective functions
Declaring an objective function requires the use of the minimize or maximize function, as appropriate.
(For thebenefitof our userswhoseEnglishfavorsit, thesynonyms minimise andmaximise are provided
as well.) The objective function in a call to minimize must be convex; the objective function in a call to
maximize must be concave; for instance:
minimize( norm( x, 1 ) )
maximize( geo_mean( x ) )
Atmost one objective function may be declared in a CVX specification, and it must have a scalar value.
If no objective functionis specified, theproblemis interpreted as afeasibility problem, which is the same as
performing a minimization with the objective function set to zero. In this case, cvx_optval is either 0, if a
feasible pointis found, or +Inf, if the constraints are notfeasible.
4.4 Constraints
The following constraint types are supported in CVX:
• Equality == constraints, where both the left- and right-hand sides are affine expressions.
• Less-than <= inequality constraints, where the left-hand expression is convex, and the right-hand
expression is concave.
• Greater-than >= constraints, where the left-hand expressionis concave, and the right-hand expression
is convex.
The non-equality operator ~= may never be used in a constraint; in any case, such constraints are rarely
convex. The latest version of CVX now allows you to chain inequalities together; e.g., l <= x <= u.
(Previous versions did notallow chained inequalities.)
Note the important distinction between the single equals =, which is an assignment, and the double equals
==, which denotes equality; for more on this distinction, seeAssignmentandexpressionholdersbelow.
Strict inequalities < and > are accepted as well, but they are interpreted identically to their nonstrict coun-
terparts. We strongly discourage their use, and a future version of CVX may remove them altogether. For
the reasoning behind this, please see the fuller discussion inStrictinequalities.
Inequality and equality constraints are applied in an elementwise fashion, matching the behavior of MAT-
LAB itself. For instance, if A and B are m  n arrays, then A<=B is interpreted as mn (scalar) inequalities
A(i,j)<=B(i,j). When one side or the other is a scalar, that value is replicated; for instance, A>0 is
interpreted as A(i,j)>=0.
4.3. Objective functions
21
The CVX Users’ Guide, Release 2.1
The elementwise treatmentof inequalities is altered insemidefiniteprogrammingmode;see that section for
more details.
CVX alsosupports a setmembership constraint; seeSetmembership below.
4.5 Functions
The base CVX function library includes a variety of convex, concave, and affine functions which accept
CVX variables or expressions as arguments. Many are common Matlab functions such as sum, trace, diag,
sqrt,max, andmin,re-implementedas neededtosupportCVX;othersarenew functions notfoundinMatlab.
Acomplete list of the functions in the base library can be found inReferenceguide. It is also possible to
add your own new functions; seeAddingnewfunctionstotheatomlibrary.
Anexample of a function in the base library is the quadratic-over-linear function quad_over_lin:
f: R
n
R ! R; f(x;y) =
(
x
T
x=y y > 0
+1
y 0
(The function also accepts complex x, but we’llconsider real x to keep things simple.) The quadratic-over-
linear function is convex in x and y, and so can be used as an objective, in an appropriate constraint, or
in a more complicated expression. We can, for example, minimize the quadratic-over-linear function of
(Ax  b;c
T
x+ d) using
minimize( quad_over_lin( A
*
x - b, c'
*
x + d ) );
inside a CVX specification, assuming x is a vector optimization variable, A is a matrix, b and c are vectors,
and dis a scalar. CVX recognizes this objective expressionas a convex function, since itis the composition
of a convexfunction (the quadratic-over-linear function) with an affine function.
You canalsouse the function quad_over_lin outside a CVX specification. In this case, it justcomputes
its (numerical) value, given (numerical) arguments. If c’
*
x+d is positive, then the result is numerically
equivalent tp
( ( A
*
x - b )'
*
( A
*
x - b ) ) / ( c'
*
x + d )
However, the quad_over_lin function also performs a domain check, so it returns Inf if c’
*
x+d is
zero or negative.
4.6 Set membership
CVX supports the definition and use of convex sets. The base library includes the cone of positive semidef-
inite n  n matrices, the second-order or Lorentz cone, and various norm balls. A complete list of sets
supplied in the base library is given inSets.
Unfortunately, the Matlab language does not have a set membership operator, such as x in S, to denote
x2 S. So in CVX, we use a slightly different syntaxtorequire that an expressionis in a set. To represent a
setweuse afunctionthatreturnsanunnamedvariable thatis requiredtobein theset. Consider, for example,
S
n
+
,the cone of symmetric positive semidefinite n  n matrices. In CVX, we represent this by the function
22
Chapter 4. The Basics
The CVX Users’ Guide, Release 2.1
semidefinite(n), which returns an unnamed new variable, that is constrained to be positive semidefinite. To
require thatthe matrix expression X be symmetric positive semidefinite, we use the syntax
X == semidefinite(n)
The literal meaning of this is that X is constrained to be equal to some unnamed variable, which is required
to be an n n symmetric positive semidefinite matrix. This is, of course, equivalent to saying that X must
itself be symmetric positive semidefinite.
Asanexample, consider the constraint that a(matrix) variable X is a correlation matrix, i.e., itis symmetric,
has unitdiagonal elements, and is positive semidefinite. In CVX we can declare sucha variable and impose
these constraints using
variable X(n,n) symmetric;
X == semidefinite(n);
diag(X) == 1;
The second line here imposes the constraint that X be positive semidefinite. (You canread “==”here as “is”
or “is in”, so the second line can be readas X is positive semidefinite’.) The lefthandside of the third line is
avector containing the diagonal elements of X, whose elements we require tobe equal to one.
If this use of equality constraints to represent set membership remains confusing or simply aesthetically
displeasing, we have created a “pseudo-operator” <In> that you can use in its place. So, for example, the
semidefinite constraint above can be replaced by
X <In> semidefinite(n);
This is exactly equivalent tousingthe equality constraintoperator, butif you find it more pleasing, feelfree
to use it. Implementing this operator required some Matlab trickery, so don’t expect to be able to use it
outside of CVX models.
Sets can be combined in affine expressions, and we can constrain an affine expression to be ina convex set.
For example, we can impose a constraint of the form
A
*
X
*
A'-X <In> B
*
semidefinite(n)
*
B';
where X is an n n symmetric variable matrix, and A and B are n  n constant matrices. This constraint
requires that AXA
T
X = BY B
T
,for some Y 2 S
n
+
.
CVX also supports sets whose elements are orderedlists of quantities. As anexample, consider the second-
order or Lorentz cone,
Q
m
=f(x;y) 2 R
m
R j kxk
2
y g = epik k
2
;
where epi denotes the epigraph of a function. An element of Q
m
is an ordered list, with two elements: the
first is an m-vector, and the second is a scalar. We can use this cone to express the simple least-squares
problem from the sectionLeastsquares(ina fairly complicated way) as follows:
minimize y
subjectto (Ax   b;y) 2 Q
m
:
CVX uses Matlab’s cellarray facilityto mimic this notation:
4.6. Set membership
23
The CVX Users’ Guide, Release 2.1
cvx_begin
variables x(n) y;
minimize( y );
subject to
{ A
*
x-b, y } <In> lorentz(m);
cvx_end
The function call lorentz(m) returns an unnamed variable (i.e., a pair consisting of a vector and a scalar
variable), constrained to lie in the Lorentz cone of length m. So the constraint in this specification requires
thatthe pair { A
*
x-b, y } lies in the appropriately-sized Lorentz cone.
4.7 Dual variables
When a disciplined convex program is solved, the associated dual problem is also solved. (In this context,
the original problem is called the primal problem.) The optimal dual variables, each of which is associated
with a constraint in the original problem, give valuable information about the original problem, such as the
sensitivities with respect to perturbing the constraints (c.f. ConvexOptimization, chapter 5). To get access
to the optimal dual variables in CVX, you simply declare them, and associate them with the constraints.
Consider, for example, the LP
minimize c
T
x
subject to Ax  b;
with variable x 2 R
n
,and m inequality constraints. To associate the dual variable y with the inequality
constraint Ax  binthis LP, we use the following syntax:
n = size(A,2);
cvx_begin
variable x(n);
dual variable y;
minimize( c'
*
x );
subject to
y : A
*
x <= b;
cvx_end
The line
dual variable y
tells CVX that y will represent the dual variable, and the line
y : A
*
x <= b;
associates it with the inequality constraint. Notice how the colon : operator is being used in a different
manner than in standard Matlab, where it is used to construct numeric sequences like 1:10. This new
behavior is in effect only when a dual variable is present, so there should be no confusion or conflict. No
dimensionsare givenfor y;theyareautomaticallydeterminedfromtheconstraintwithwhichitis associated.
For example, if m = 20, typing y at the Matlab command prompt immediately before cvx_end yields
24
Chapter 4. The Basics
Documents you may be interested
Documents you may be interested