Problem: Submatrix in einer Matrix

Formelsatz für Mathematik, Naturwissenschaften und Technik


cremefresh

Problem: Submatrix in einer Matrix

Beitrag von cremefresh »

Hallo, ich möchte eine große Matrizengleichung aufstellen und habe mir gedacht, dass ich einfach Submatrizen in einer Matrix aufstelle.
Doch das Ergebnis sieht leider so aus:
Bild

Dabei handelt es sich um eine 6x6 Matrix in dessen einträge die Submatrizen liegen.

Ich muss theoretisch nur die automatische Zentrierung der Einträge von der 6x6-Matrix ausschalten. Ist das ohne weiteres möglich?

markusv
Forum-Meister
Forum-Meister
Beiträge: 947
Registriert: Do 3. Sep 2015, 17:20
Wohnort: Leipzig

Beitrag von markusv »

Hallo,

ein lauffähiges Beispiel als Quellcode wäre hier sinnvoller als eine überdimensionale Grafik, die sich nicht komplett anschauen lässt.

Wie hast du die Matrizen denn erstellt?
Wenn du hier array nutzt, lässt sich das sicherlich schnell umsetzen, ein Beispiel siehe hier.

Daraus anbei noch ein Beispiel:
\documentclass{scrartcl}  
\begin{document}
\[
\begin{array}{r@{\,}l}
    \mathbf{A}_i(q_i) = & {}^{i-1}\mathbf{T}_i(\mathbf{q}_i) \\[1em]
    = & \left(\begin{array}{cccc}
        c_{\theta_i} & -s_{\theta_i} & 0 & 0 \\
        s_{\theta_i} & c_{\theta_i} & 0 & 0\\
        0 & 0 & 1 & 0 \\
        0 & 0 & 0 & 1\\
     \end{array}\right)\\[3em]
    = & \left(\begin{array}{cccc}
        c_{\theta_i} & -s_{\theta_i}c_{\alpha_i} & s_{\theta_i}s_{\alpha_i} & a_{i}c_{\theta_i} \\
        s_{\theta_i} & c_{\theta_i}c_{\alpha_i} & -c_{\theta_i}s_{\alpha_i} & a_{i}s_{\theta_i}\\
        0 & s_{\alpha_i} & c_{\alpha_i} & d_i \\
        0 & 0 & 0 & 1\\
     \end{array}\right)
\end{array}
\]
\end{document}
Wäre Microsoft Word für das Schreiben von Büchern entwickelt worden,
würde es Microsoft Book heißen.

Unkomplizierte und schnelle LaTeX-Hilfe, bspw. Erstellung von Vorlagen und Bewerbungen:
Help-LaTeX@web.de

cremefresh

Beitrag von cremefresh »

Dein Beispielcode hat mir sehr geholfen! Danke
Wie kriege ich jedoch weitere Matrizen rechts ran?

markusv
Forum-Meister
Forum-Meister
Beiträge: 947
Registriert: Do 3. Sep 2015, 17:20
Wohnort: Leipzig

Beitrag von markusv »

cremefresh hat geschrieben: Wie kriege ich jedoch weitere Matrizen rechts ran?
Indem du die array-Umgebung um weitere Spalten erweiterst.
Aus
\begin{array}{r@{\,}l}
wird dann
\begin{array}{r@{\,}l@{\,}l@{\,}l@{\,}l}
Die @{\,} definieren den Spaltenabstand, hier also ein halbes Leerzeichen. rllll heißt eine Spalte rechtsbündig, die restlichen linksbündig, genau wie bei Tabellen!

Das Studieren einer Einführung in Latex könnte sicherlich auch nicht schaden. :wink:
Wäre Microsoft Word für das Schreiben von Büchern entwickelt worden,
würde es Microsoft Book heißen.

Unkomplizierte und schnelle LaTeX-Hilfe, bspw. Erstellung von Vorlagen und Bewerbungen:
Help-LaTeX@web.de

cremefresh

Beitrag von cremefresh »

Danke, hat teilweise geklappt, denn die 4. Matrix in der 2. Zeile rutscht an eine komische Position:

Bild

mein Code sieht so aus:
% 

\[
\begin{array}{r@{\,}l@{\,}l@{\,}l@{\,}l}
    \mathbf{A}_i(q_i) = & {}^{i-1}\mathbf{T}_i(\mathbf{q}_i) \\[1em]
    = 
     & \left(\begin{array}{cccc}
        c_{\theta_i}& -s_{\theta_i}  & 0 &0 \\ 
        s_{\theta_i} & c_{\theta_i} & 0 &0 \\ 
        0&0  &1  &0 \\ 
        0 & 0 &  0& 1 \\
     \end{array}\right)
      \left(\begin{array}{cccc}
        c_{\theta_i} & -s_{\theta_i} & 0 & 0 \\
        s_{\theta_i} & c_{\theta_i} & 0 & 0\\
        0 & 0 & 1 & 0 \\
        0 & 0 & 0 & 1\\
     \end{array}\right)
     \left(\begin{array}{cccc}
        1& 0 & 0 &0 \\ 
        0 & 1 & 0 &0 \\ 
        0&0  &1  &d_i \\ 
        0 & 0 &  0& 1\\
     \end{array}\right)\\
     \left(\begin{array}{cccc}
        1& 0 & 0 &a_i \\ 
        0 & 1 & 0 &0 \\ 
        0&0  &1  &0 \\ 
        0 & 0 &  0& 1 \\
     \end{array}\right)\\
    = & \left(\begin{array}{cccc}
        c_{\theta_i} & -s_{\theta_i}c_{\alpha_i} & s_{\theta_i}s_{\alpha_i} & a_{i}c_{\theta_i} \\
        s_{\theta_i} & c_{\theta_i}c_{\alpha_i} & -c_{\theta_i}s_{\alpha_i} & a_{i}s_{\theta_i}\\
        0 & s_{\alpha_i} & c_{\alpha_i} & d_i \\
        0 & 0 & 0 & 1\\
     \end{array}\right)
\end{array}
\]

 

markusv
Forum-Meister
Forum-Meister
Beiträge: 947
Registriert: Do 3. Sep 2015, 17:20
Wohnort: Leipzig

Beitrag von markusv »

cremefresh hat geschrieben:hat teilweise geklappt, denn die 4. Matrix in der 2. Zeile rutscht an eine komische Position:
Das liegt an deinem komischen Code :lol:

Nein Spaß beiseite. Du musst Latex natürlich sagen, wann eine Spalte beendet ist. Dies tust du mit &. Eine Zeile beendest du mit \\.

Wie in den Submatrizen musst du dies auch für die umgebende Matrix tun.
Hier hast du einiges durcheinander gewürfelt. Nach der 3. Matrix kommt ein \\, dies sollte ein & sein. Außerdem trennst du die vorherigen Submatrizen nicht durch &. So werden alle einfach nur als eine Spalte betrachtet.

Siehe folgenden Code:
\documentclass[12pt]{article}
\usepackage[english]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{amsmath}
\usepackage{tikz}
\begin{document}
% 

\[
\begin{array}{r@{\,}l@{\,}l@{\,}l@{\,}l}
    \mathbf{A}_i(q_i) = & {}^{i-1}\mathbf{T}_i(\mathbf{q}_i) \\[1em]
    = 
    & 
    \left(\begin{array}{cccc}
        c_{\theta_i}& -s_{\theta_i}  & 0 &0 \\ 
        s_{\theta_i} & c_{\theta_i} & 0 &0 \\ 
        0&0  &1  &0 \\ 
        0 & 0 &  0& 1 \\
     \end{array}\right)
    &
    \left(\begin{array}{cccc}
        c_{\theta_i} & -s_{\theta_i} & 0 & 0 \\
        s_{\theta_i} & c_{\theta_i} & 0 & 0\\
        0 & 0 & 1 & 0 \\
        0 & 0 & 0 & 1\\
     \end{array}\right)
    &
    \left(\begin{array}{cccc}
        1& 0 & 0 &0 \\ 
        0 & 1 & 0 &0 \\ 
        0&0  &1  &d_i \\ 
        0 & 0 &  0& 1\\
     \end{array}\right)
    &
    \left(\begin{array}{cccc}
        1& 0 & 0 &a_i \\ 
        0 & 1 & 0 &0 \\ 
        0&0  &1  &0 \\ 
        0 & 0 &  0& 1 \\
     \end{array}\right)
     \\
     = 
     & 
     \left(\begin{array}{cccc}
        c_{\theta_i} & -s_{\theta_i}c_{\alpha_i} & s_{\theta_i}s_{\alpha_i} & a_{i}c_{\theta_i} \\
        s_{\theta_i} & c_{\theta_i}c_{\alpha_i} & -c_{\theta_i}s_{\alpha_i} & a_{i}s_{\theta_i}\\
        0 & s_{\alpha_i} & c_{\alpha_i} & d_i \\
        0 & 0 & 0 & 1\\
     \end{array}\right)
\end{array}
\]
 
\end{document}
Wäre Microsoft Word für das Schreiben von Büchern entwickelt worden,
würde es Microsoft Book heißen.

Unkomplizierte und schnelle LaTeX-Hilfe, bspw. Erstellung von Vorlagen und Bewerbungen:
Help-LaTeX@web.de

cremefresh

Beitrag von cremefresh »

Danke für die Tipps und deine Geduld! Aber ich hätte da noch ein letztes kleines Problem.
Tut mir wirklich leid, dass ich wegen jeder Kleinigkeit fragen muss.

Jetzt habe ich wieder das Problem, dass der Platz in den Spalten entsprechend der größten Matrize in den jeweiligen Zeile bestimmt wird:

Bild
% 
\[
\begin{array}{r@{\,}l@{\,}l@{\,}l@{\,}l}
    \mathbf{A}_i(q_i) = & {}^{i-1}\mathbf{T}_i(\mathbf{q}_i) \\[1em]
    =
    &
    \left(\begin{array}{cccc}
        c_{\theta_i}& -s_{\theta_i}  & 0 &0 \\
        s_{\theta_i} & c_{\theta_i} & 0 &0 \\
        0&0  &1  &0 \\
        0 & 0 &  0& 1\\
     \end{array}\right)
    &
    \left(\begin{array}{cccc}
        1& 0 & 0 &0 \\
        0 & 1 & 0 &0 \\
        0&0  &1  &d_i \\
        0 & 0 &  0& 1\\
     \end{array}\right)
    &
    \left(\begin{array}{cccc}
        1& 0 & 0 &a_i \\
        0 & 1 & 0 &0 \\
        0&0  &1  &0 \\
        0 & 0 &  0& 1 \\
     \end{array}\right)
     &
       \left(\begin{array}{cccc}
          1& 0 & 0 &0 \\ 
          0 & c_{\alpha_i} & -s_{\alpha_i} &0 \\ 
          0&s_{\alpha_i}  &c_{\alpha_i}  &0 \\ 
          0 & 0 &  0& 1 \\
     \end{array}\right)
     \\
     =
     &
      \left(\begin{array}{cccc}
     c_{\theta_i}& -s_{\theta_i} & 0 &0 \\ 
     s_{\theta_i} & c_{\theta_i} & 0 &0 \\ 
      0&0  &1  &0 \\ 
     0 & 0 &  0& 1\\ 
     \end{array}\right)
     &
      \left(\begin{array}{cccc}
        1&0 & 0 &a_i \\ 
      0 & 1 & 0 &0 \\ 
       0&0  &1  &d_i \\ 
      0 & 0 &  0& 1\\ 
     \end{array}\right)
     &
     \left(\begin{array}{cccc}
       1& 0 & 0 &0 \\ 
       0 & c_{\alpha_i} & -s_{\alpha_i} &0 \\ 
      0&s_{\alpha_i}  &c_{\alpha_i}  &0 \\ 
      0 & 0 &  0& 1 \\
     \end{array}\right)
      \\
      = 
      &
    \left(\begin{array}{cccc}
    c_{\theta_i}&-s_{\theta_i}\,c_{\alpha_i} & s_{\theta_i}\,s_{\alpha_i} & a_i\,c_{\theta_i} \\ 
    s_{\theta_i} & c_{\theta_i}\,c_{\alpha_i} & -c_{\theta_i}\,s_{\alpha_i} &a_i\,s_{\theta_i} \\ 
     0&s_{\alpha_i}  &c_{\alpha_i}  &d_i \\ 
     0 & 0 &  0& 1\\
     \end{array}\right)
\end{array}
\]
% Ende des Dokumentes 

markusv
Forum-Meister
Forum-Meister
Beiträge: 947
Registriert: Do 3. Sep 2015, 17:20
Wohnort: Leipzig

Beitrag von markusv »

cremefresh hat geschrieben: Jetzt habe ich wieder das Problem, dass der Platz in den Spalten entsprechend der größten Matrize in den jeweiligen Zeile bestimmt wird:
Ja natürlich. Darum geht es bei Umgebungen mit Spaltendefinitionen.

Willst du alles nach dem = hintereinander haben, benutze entweder nur eine Spalte, oder versuch es mit der split-Umgebung:
\documentclass[12pt]{article}
\usepackage[english]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{amsmath}
\usepackage{tikz}
\begin{document}
% 
\[
\begin{split}
	\mathbf{A}_i(q_i) = & {}^{i-1}\mathbf{T}_i(\mathbf{q}_i) \\[1em]
    =
    &
    \left(\begin{array}{cccc}
        c_{\theta_i}& -s_{\theta_i}  & 0 &0 \\
        s_{\theta_i} & c_{\theta_i} & 0 &0 \\
        0&0  &1  &0 \\
        0 & 0 &  0& 1\\
     \end{array}\right)
    \,
    \left(\begin{array}{cccc}
        1& 0 & 0 &0 \\
        0 & 1 & 0 &0 \\
        0&0  &1  &d_i \\
        0 & 0 &  0& 1\\
     \end{array}\right)
    \,
    \left(\begin{array}{cccc}
        1& 0 & 0 &a_i \\
        0 & 1 & 0 &0 \\
        0&0  &1  &0 \\
        0 & 0 &  0& 1 \\
     \end{array}\right)
     \,
       \left(\begin{array}{cccc}
          1& 0 & 0 &0 \\ 
          0 & c_{\alpha_i} & -s_{\alpha_i} &0 \\ 
          0&s_{\alpha_i}  &c_{\alpha_i}  &0 \\ 
          0 & 0 &  0& 1 \\
     \end{array}\right)
     \\
     =
     &
      \left(\begin{array}{cccc}
     c_{\theta_i}& -s_{\theta_i} & 0 &0 \\ 
     s_{\theta_i} & c_{\theta_i} & 0 &0 \\ 
      0&0  &1  &0 \\ 
     0 & 0 &  0& 1\\ 
     \end{array}\right)
     \,
      \left(\begin{array}{cccc}
        1&0 & 0 &a_i \\ 
      0 & 1 & 0 &0 \\ 
       0&0  &1  &d_i \\ 
      0 & 0 &  0& 1\\ 
     \end{array}\right)
     \,
     \left(\begin{array}{cccc}
       1& 0 & 0 &0 \\ 
       0 & c_{\alpha_i} & -s_{\alpha_i} &0 \\ 
      0&s_{\alpha_i}  &c_{\alpha_i}  &0 \\ 
      0 & 0 &  0& 1 \\
     \end{array}\right)
      \\
      = 
      &
    \left(\begin{array}{cccc}
    c_{\theta_i}&-s_{\theta_i}\,c_{\alpha_i} & s_{\theta_i}\,s_{\alpha_i} & a_i\,c_{\theta_i} \\ 
    s_{\theta_i} & c_{\theta_i}\,c_{\alpha_i} & -c_{\theta_i}\,s_{\alpha_i} &a_i\,s_{\theta_i} \\ 
     0&s_{\alpha_i}  &c_{\alpha_i}  &d_i \\ 
     0 & 0 &  0& 1\\
     \end{array}\right)
\end{split}
\]
% Ende des Dokumentes 
\end{document}
Diese kennt nur eine Trennstelle (&). Die Abstände der Submatizen habe ich selbst gesetzt (statt der nachfolgenden & in der array-Umgebung)
Wäre Microsoft Word für das Schreiben von Büchern entwickelt worden,
würde es Microsoft Book heißen.

Unkomplizierte und schnelle LaTeX-Hilfe, bspw. Erstellung von Vorlagen und Bewerbungen:
Help-LaTeX@web.de

cremefresh

Beitrag von cremefresh »

Es sieht nun wunderbar aus!

Ich danke dir Markus! :wink:

Antworten