3

I was trying to write an optimization problem in which "subject to" part is a vector statement. however it doesn't look good. enter image description here

     \[ \begin{array}{clcll}
     \textrm{min} & \|k_i\|^2 &\equiv &\textrm{min} & \|k_i\|^2\\
     \text{s.t. } & \begin{array}{c}
     k_i'w_1=0 \\
     \vdots\\
     k_i'w_i=1\\
     \vdots\\
     k_i'w_n=0
     \end{array}
     & &\text{s.t. } &\left[\begin{array}{c}\textendash w_1\textendash \\
     \vdots\\
     \textendash w_i\textendash \\
     \vdots\\
     \textendash w_n\textendash \end{array}\right]
     \left[\begin{array}{c}| \\
     k_i\\
     |\end{array}\right]=
     \left[\begin{array}{c} 0 \\
     \vdots\\
     1\\
     \vdots\\
     0 \end{array}\right]=e_i
     \end{array}\] 

Is there any way to force the vectors to be more compacted? (to occupy less space)

  • Welcome to TeX SX! What do the k_i' s have to do with the k_is? – Bernard Jan 8 '16 at 20:39
  • @Bernard k_i is one column of a matrix and k-i' is its transpose – SMA.D Jan 8 '16 at 21:20
6

try this. i've suppressed some of the vertical space around the \vdots and used the matrix environments from amsmath to close those up a bit.

\documentclass{article}
\usepackage{amsmath}

\newcommand{\xvdots}{\vphantom{{\sum^0}^0}\smash{\vdots}}

\begin{document}
\begin{alignat*}{2}
&\textrm{min} \quad \|k_i\|^2 &\ &\equiv \textrm{min} \quad \|k_i\|^2\\[2pt]
&\text{s.t.}\quad \ \,
 \begin{matrix}
   k_i'w_1=0 \\
   \xvdots\\
   k_i'w_i=1\\
   \xvdots\\
   k_i'w_n=0
 \end{matrix}
 &\ & \phantom{{}\equiv{}} \text{s.t.} \quad
  \begin{bmatrix}
   \text{--} w_1\text{--} \\
   \xvdots\\
   \text{--} w_i\text{--} \\
   \xvdots\\
   \text{--} w_n\text{--}
  \end{bmatrix}
  \begin{bmatrix}
   | \\
   k_i \\
   |
  \end{bmatrix}
  =
  \begin{bmatrix}
   0 \\
   \xvdots\\
   1 \\
   \xvdots\\
   0
  \end{bmatrix}
  = e_i
\end{alignat*}
\end{document}

output of example code

  • Thank you, that's pretty nice. Is it possible to reduce the horizontal space between two matrices that are being multiplied. i.e. \text{--} w_1\text{--} \\ \xvdots\\ \text{--} w_i\text{--} \\ \xvdots\\ \text{--} w_n\text{--} and | \\ k_i \\ |? – SMA.D Jan 8 '16 at 21:35
  • sure it's possible. there's a line between the first two bmatrix components. just remove that. (i'll edit in a modified version, with this change.) – barbara beeton Jan 8 '16 at 21:39
  • if they're still not close enough, inserting a small backspace -- \! -- between them should fix that. – barbara beeton Jan 8 '16 at 21:44
  • I looked below, but you were above, +1 anyway:-) – David Carlisle Jan 8 '16 at 21:51
1

Here is another option showing how you can manipulate the row spacing using portions of \normalbaselineskip:

enter image description here

\documentclass{article}
\usepackage{mathtools,array}
\begin{document}
\[
  \setlength{\arraycolsep}{0pt}
  \begin{array}[t]{l}
    \min \|k_i\|^2 \\[.5\normalbaselineskip]
    \text{s.t. }
    \begin{array}{r>{{}}l}
      k_i'w_1 &= 0 \\[-.4\normalbaselineskip]
      & \vdotswithin{=} \\[-.1\normalbaselineskip]
      k_i'w_i &= 1 \\[-.4\normalbaselineskip]
      & \vdotswithin{=} \\[-.1\normalbaselineskip]
      k_i'w_n &= 0
    \end{array}
  \end{array}
  \quad \equiv \quad
  \begin{array}[t]{l}
    \min \|k_i\|^2 \\[.5\normalbaselineskip]
    \text{s.t. }
    \left[\begin{array}{c}
      \text{-- } w_1 \text{ --} \\[-.4\normalbaselineskip]
      \vdots \\[-.1\normalbaselineskip]
      \text{-- } w_i \text{ --} \\[-.4\normalbaselineskip]
      \vdots \\[-.1\normalbaselineskip]
      \text{-- } w_n \text{ --}
    \end{array}\right]
    \left[\begin{array}{c}
      | \\ k_i \\ |
    \end{array}\right]
    =
    \left[\begin{array}{c}
      0 \\[-.4\normalbaselineskip]
      \vdots \\[-.1\normalbaselineskip]
      1 \\[-.4\normalbaselineskip]
      \vdots \\[-.1\normalbaselineskip]
      0
    \end{array}\right]
    = e_i
  \end{array}
\] 

\end{document}
0

Not totally happy with it but you could start tinkering from here:

enter image description here

\documentclass{article}
\usepackage{mathtools}
\begin{document}
 \[   
\min
_{\mathrlap{\substack{ 
     \text{s.t.}\\
     k_i'w_1=0 \\
     \vdots\\
     k_i'w_i=1\\
     \vdots\\
     k_i'w_n=0}}}
  \|k_i\|^2
\quad\equiv\quad
\min 
_{\mkern-18mu\mathrlap{\substack{
     \text{s.t.}\\
   \left[\begin{smallmatrix}\text{--} w_1\text{--} \\
     \vdots\\
     \text{--} w_i\text{--} \\
     \vdots\\
     \text{--} w_n\text{--} \end{smallmatrix}\right]
     \left[\begin{smallmatrix}| \\
     k_i\\
     |\end{smallmatrix}\right]=
     \left[\begin{smallmatrix} 0 \\
     \vdots\\
     1\\
     \vdots\\
     0 \end{smallmatrix}\right]=e_i}}}
\|k_i\|^2
\] 

\end{document}
  • ...hmmm... this doesn't look good. – Werner Jan 8 '16 at 21:00
  • @Werner it looks pretty horrible actually but the components are probably there, mathtools, \min , \substack are more likely to make something usable than just using array. Probably needs a different layout altogether though really. – David Carlisle Jan 8 '16 at 21:06
  • hmmmph. surely you could have done better without much effort. the only really badly designed "original" component is the \vdots, which have always had too much space at the top. – barbara beeton Jan 8 '16 at 21:24
  • @barbarabeeton I'd be happy to vote for your answer if you made one:-) – David Carlisle Jan 8 '16 at 21:40
  • see below. (appreciate the appreciation.) – barbara beeton Jan 8 '16 at 21:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.