matrice particolare

  • Creatore
    Topic
  • #70928
    Up
    0
    Down
    ::


    [attachment=171]Nuovaimmagine.jpg[/attachment]

    Volevo sapere come si possono creare matrici di questo tipo.
    Ho visto il pacchetto tikz ma forse c’è un modo più semplice per crearle.
    Magari tramite tabular.

    Attachments:
    You must be logged in to view attached files.
Visualizzazione 10 filoni di risposte
  • Autore
    Risposte
    • #70929
      Up
      0
      Down
      ::


      Il modo più semplice è con TikZ.

      Ciao
      Enrico

    • #70930
      Up
      0
      Down
      ::


      Se ti può interessare, si era già parlato di matrici con TikZ in questa discussione.

      Ciao
      Claudio

    • #70931
      Up
      0
      Down
      ::


      La prima sono riuscito a replicarla tramite \bordermatrix

      \[
      S = \bordermatrix{
      & & & & & \stackrel{j_1}{\downarrow} & & & & & & & & & \stackrel{j_2}{\downarrow} & & & & & \stackrel{j_r}{\downarrow} & & & \cr
      & 0 & 0 & 0 & 0 & p_1 & \ast & \ast & \ast & \ast & & & & & \vdots & & & & & \vdots \cr
      & & & & & & 0 & 0 & 0 & p_2 & \ast & \ast & \ast & \ast & \ast & & & & & \vdots \cr
      & & & & & & & & & & & & & & p_3 & \ast & \ast & \dots & \dots & \vdots & & & \cr
      & & & & & & & & & & & & & & & & & & & \vdots \cr
      & & & & & & & & & & & & & & & & & & & p_r & \ast & \ast & \ast
      }
      \]
      vorrei però trovare un modo per diminuire la distanza fra le colonne. Credo si faccia con il comando kern ma non sono come usarlo in quest’ambiente.

      Per la seconda credo che sarò costretto ad usare il package tikz.

    • #70932
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Lo spazio fra le colonne si controlla assegnando un nuvo valore alla lunghezza \arraycolsepp, per esempio \arraycolsep=3pt

        Comunque guarda il filone di discussione che ti è stato segnalato; lì è descritto come mettere lo sfondo grigio sotto a gruppi di caselle; per le indicazioni fuori del bordo delle matrici, tendo conto specialmente di quanto sta scritto all destra della matrice, direi che tikz sia assolutamente necessario.

      • #70933
        Up
        0
        Down
        ::


        Questo è ciò che sono riuscito a fare finora

        \documentclass{article}
        \usepackage[upright]{fourier}
        \usepackage{tikz}

        \usepackage{amsmath}
        \usepackage{tabularx}
        \usepackage{booktabs}
        \usepackage{multirow}
        \usepackage{colortbl}
        \usetikzlibrary{matrix,arrows,decorations.pathmorphing}

        \usetikzlibrary{fit}
        \definecolor{grigio}{RGB}{224,224,224}

        \begin{document}
        \[\begin{tikzpicture}
        \node (matrice) {
        $ B = \left(\begin{array}{*{14}{c}}
        \arrayrulecolor{gray}
        \hline
        \multicolumn{1}{>{\columncolor{grigio}}c}{1} & \multicolumn{1}{>{\columncolor{grigio}}c|}{} & & & & & & & & & & & \\
        \multicolumn{1}{>{\columncolor{grigio}}c}{} & \multicolumn{1}{>{\columncolor{grigio}}c|}{1} & & & & & & & & & & & & \\
        \cline{1-14}
        & & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast & & \ast \\
        \cline{3-14}
        \end{array}\right)
        %\end{array}
        \begin{array}{*1{c}}
        \arrayrulecolor{gray}
        \hline \\
        \multirow{2}{20mm}[9mm]{\center $\Big\updownarrow{j_1-1}$} \\
        \hline
        \leftarrow j_1 \text{riga} \\
        \hline
        \end{array}$
        };

        \node [above=1pt, xshift=-9mm] at (matrice.north)
        {
        $\begin{array}{*{18}{c}}
        \epsilon_1 & \epsilon_2 & \epsilon_3 & & & & & & & & & & & & & & & \epsilon_{n-r}
        \end{array}$
        };

        \end{tikzpicture}
        \]

        \end{document}​

        Il problema è che la prima riga fuori dalla matrice non mi viene perfettamente allineata.
        Ho provato a creare la stessa matrice con usando
        \matrix {
        }
        del pacchetto tikz ma non riesco a definire un rettangolo (aperto a sinistra) non chiuso e completamente colorato (come quello delle prime due righe).

      • #70934
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          I filetti li devi mettere tutti con appositi comandi \draw

          I rettangoli (quadrati) grigi lei devi mettere con uno sfondo definito con rettangoli che contengono (libreria tikz fit) i nodi dei veritci, ma non deovno avere un bordo.

          Anche la riga delle variabili ξ1 ξ2 ξ3 va messa in posizione mettendo direttamante i simboli, meglio ancora dei nodi. Lo stesso vale per la colonna a destra con lgi orinali delle righe, ma…

          Che cosa rappresenta quel pallino/circoletto ad apice di j? se vole essere l’ordinale, non va bene; scrivi piuttosto: riga j1, eccetera, senza nessun pallino/circoletto.

        • #70935
          Up
          0
          Down
          ::


          \documentclass[]{article}
          \usepackage{tikz}
          \usetikzlibrary{fit}
          \usepackage{amsmath,amsthm}
          \usetikzlibrary{positioning}
          \usepackage[upright]{fourier}
          \usetikzlibrary{matrix,arrows,decorations.pathmorphing}

          \tikzset{sfondo/.style={rectangle,fill=gray!50,fill opacity=0.5,inner sep=0pt}}

          \begin{document}
          \begin{tikzpicture}
          \matrix (B) [matrix of math nodes, text height = 2mm, minimum width = 3.7mm, left delimiter =(, right delimiter =), nodes in empty cells]
          {
          \node(left) {1}; & \node {}; & & & & & & & & & & & & \node (a) {}; \\
          \node{}; & \node(right) {1}; \\
          \node (b) {}; & \node(h) {}; & \node(c) {\ast}; & \ast & \ast &\ast &\ast &\ast &\ast &\ast &\ast &\ast & & \node(d){\ast}; \\
          };

          \node

          {B =};
          \node[sfondo,fit=(left.north west) (right.south east)] {};

          \draw[] (left.north west) — (a.north east);
          \draw[] (b.north west) — (d.north east);
          \draw[] (c.south west) — (d.south east);
          \draw[] (B-1-2.north east) — (h.south east);

          \matrix (F) [matrix of math nodes, text height = 2mm, minimum width = 5em, right=4pt of B, align = center, font=\small]
          {
          \node {}; \\
          \node {}; \\
          $j_1^\circ$ \\
          };
          \draw [<->,decorate,decoration={segment length=.5mm}] (F-1-1.north) — (F-2-1.south);
          \draw[] (F-1-1.north west) — (F-1-1.north east);
          \draw[] (F-3-1.north west) — (F-3-1.north east);
          \draw[] (F-3-1.south west) — (F-3-1.south east);

          \matrix [matrix of math nodes, text height = 2mm, minimum width = 3.6mm, nodes in empty cells, above=0pt of B, font=\small]
          {
          \underset{\downarrow}{\xi_1} & \underset{\downarrow}{\xi_2} & \underset{\downarrow}{\xi_3} & & & & & & & & & & & \underset{\downarrow}{\xi_{n-r}} \\
          };
          \end{tikzpicture}


          @OldClaudio
          : Ho provato a fare come dicevi e finora questo è il risultato.
          Le lettere \xi_1, \xi_2 ecc. non mi vengono ancora perfettamente allineate.

          Nella matrice di destra vorrei che la freccia fosse più corta della distanza tra le due righe, ho provato nel seguent modo:
          \draw [<->,decorate,decoration={segment length=.5mm}] (F-1-1.north) — (F-2-1.south);
          ma non ci sono riuscito. Inoltre dovrei anche far sì che sia un testo sulla destra in piccolo.

          Infine quando scrivo le lettere j_1^\circ (per il momento mi serve di scriverla così) la distanza della cella aumenta non allineadosi più con la matrice di fianco.
          PS. C’è un altro modo per scrivere la lettera “B = ” della matrice?
          Io ho usato il comando draw

          {B = }

          Grazie ancora per l’aiuto.
          Massimiliano

        • #70936
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::


            Per evitare che le frecce tocchino le righe orizzontali e abbiano l’etichetta accanto scrivi:
            `
            \draw[<->, >=stealth, shorten <=1pt, shorten >=1pt] (F-1-1.north) to node{\enspace $j-1$} (F-2-1.south);
            `
            Per le altre cose non saprei dirti, mi sembrano abbastanza a posto le righe con \xi potrebbero forse essere meglio centrate sulle rispettive colonne se nascondessi i pedici dentro un comando che ne annullasse la larghezza; so che esiste un comando matematico che lo fa, ma ora non riesco a trovarlo.

          • #70937
            Up
            0
            Down
            ::


            Sono riuscito a risolvere il problema dell’allineamento definendo uno stile così:

            [cell/.style = {matrix of math nodes,text depth=0.5ex,text height=2ex,nodes in empty cells,text height = 2mm}].

            Per quanto riguarda il nome della matrice invece ( B = )
            c’è un altro modo meno ortodosso per inserirlo?
            Tipo
            B = \begin{array}
            \matrix{
            };
            \end{array}
            Solo che non funziona.
            Grazie intanto per il tuo suggerimento.

          • #70938
            Up
            0
            Down
            ::

            Matemax” post=70413Sono riuscito a risolvere il problema dell’allineamento definendo uno stile così:

            [cell/.style = {matrix of math nodes,text depth=0.5ex,text height=2ex,nodes in empty cells,text height = 2mm}].

            Per quanto riguarda il nome della matrice invece ( B = )
            c’è un altro modo meno ortodosso per inserirlo?
            Tipo
            B = \begin{array}
            \matrix{
            };
            \end{array}
            Solo che non funziona.
            Grazie intanto per il tuo suggerimento.

            Il B è solo un’etichetta utile per i riferimenti successivi. Viene definita qui:

            ` \matrix (B) [matrix of math nodes, text height = 2mm, minimum width = 3.7mm, left delimiter =(, right delimiter =), nodes in empty cells]`
            ed è del tutto simile ad F quindi non capisco il perché non trovi il metodo ”ortodosso”.

            Il tuo metodo appunto non funziona perché la definizione delle label deve avvenire fra tonde mentre dichiari un oggetto (nodo o path).

            Ciao
            Claudio

          • #70939
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::

              Matemax” post=70413Sono riuscito a risolvere il problema dell’allineamento definendo uno stile così:

              [cell/.style = {matrix of math nodes,text depth=0.5ex,text height=2ex,nodes in empty cells,text height = 2mm}].

              Dove hai scritto questa espressione fra parentesi quadre?

              Matemax” post=70413
              Per quanto riguarda il nome della matrice invece ( B = )
              c’è un altro modo meno ortodosso per inserirlo?
              Tipo
              B = \begin{array}
              \matrix{
              };
              \end{array}
              Solo che non funziona.

              Non può funzionare, perché dentro tikzpicture non sei in modo matematico. Per altro quando collochi il nodo con {B =}, lì sì che potresti scrivere
              `
              \node

              {$B ={}$};
              `
              aggiustando i duemm al valore che ritieni più opportuno (probabilmente ;asciando solo left e senza mettere una sola indicazioen metrica, visto che l’espressione matematica dentro il nodo ha già le spaziature giuste.

          Visualizzazione 10 filoni di risposte
          • Devi essere connesso per rispondere a questo topic.

          Go to top