PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ausrichtung von Matrizen



daswaldhorn
30-06-2004, 14:28
Also ich möchte zwei 6x6-Matrizen untereinander schreiben. Dabei soll jede von zwei Klammer eingeschlossen sein und jede Spalte über alle 12 Zeilen hinweg eine Linie ergeben. So wie ich es jetzt habe sind die Spalten nach 6 Zeilen versetzt. Wenn ich die komplett in eine 6x12-Matrix schreibe, klappt es zwar mit der Ausrichtung, aber wie bekomme ich da 2 Klammer auf eine Seite bis jeweils zur Hälfte? So sieht der Code bisher aus:


$c_{ij}= \left( \begin{array}{cccccc}
4c & 0 & 0 & 0 & 3,3ca & 0 \\
& 4c & 0 & 3,3ca & 0 & 0 \\
& & 4c & 0 & 0 & 0 \\
& & & 6,72ca^2 & 0 & 0 \\
& sym & & & 11,72ca^2 & 0 \\
& & & & & 13ca^2 \\
\end{array}\right)$

$c_{ij}= \left( \begin{array}{cccccc}
4 & 0 & 0 & 0 & 1,65m & 0 \\
& 4 & 0 & 1,65m & 0 & 0 \\
& & 4 & 0 & 0 & 0 \\
& & & 1,68m^2 & 0 & 0 \\
& sym & & & 2,93m^2 & 0 \\
& & & & & 3,25m^2

Ich hoffe mal, das war soweit verständlich und vielen Dank für eure Antworten.

Carsten

neptun
30-06-2004, 17:08
Ich würde folgenden Code eingeben:

$c_{ij}=
\begin{pmatrix}
4c & 0 & 0 & 0 & 3,3ca & 0\\
& 4c & 0 & 3,3ca & 0 & 0\\
& & 4c & 0 & 0 & 0\\
& & & 6,72ca^2 & 0 & 0\\
& sym & & & 11,72ca^2 & 0\\
& & & & & 13ca^2 \\
\end{pmatrix}$

\vspace{0.5cm}

$c_{ij}=
\begin{pmatrix}
4 & 0 & 0 & 0 & 1,65m & 0\\
& 4 & 0 & 1,65m & 0 & 0\\
& & 4 & 0 & 0 & 0\\
& & & 1,68m^2 & 0 & 0\\
& sym & & & 2,93m^2 & 0\\
& & & & & 3,25m^2
\end{pmatrix}$

Naja, die rechten Klammern sind nicht exakt untereinander - aber liegt das nicht in der Natur der Sache?

mr. pelle
30-06-2004, 21:34
Moin daswaldhorn,

war zwar ein langes Rumprobieren, aber jetzt habe ich eine Lösung gefunden, die Dich (hoffentlich) glücklich machen wird.

Die unterschiedliche Ausrichtung der Matrizen erfolgt ja dadurch, dass sich die Breite einer Spalte nach dem eingetragenen Text richtet, und dieser nicht in beiden Matrizen identisch ist.

Bei meiner Lösung fügst du in jeder Matrix eine zusätzliche Zeile ein, in der der Eintrag mit der größten Textbreite steht. Damit die zusätzliche Zeile nicht im Ausdruck auftaucht, wird der Text in der Farbe weiß gedruckt und die nachfolgende Zeile wird auf die Höhe der ersten Zeile verschoben.

Um die Farbe vom Text zu ändern musst Du das Paket "color" einbinden. die Farbe wird dann mit {\{white}Dein Text} auf weiß geändert.

Um die nächste nachfolgende Zeile einer Tabelle um einen beliebigen Abstand zu verschieben benutzt Du statt \\ den Befehl \tabularnewline[Abstand]. Da die Zeile nach oben verschoben wird, musst Du einen negativen Abstand eingeben.

Damit ergibt sich für die erste Matrix folgender Code:


$c_{ij}= \left( \begin{array}{cccccc}
{\color{white}längster Eintrag}&{\color{white}längster Eintrag}&
{\color{white}längster Eintrag}&{\color{white}längster Eintrag}&
{\color{white}längster Eintrag}&
{\color{white}längster Eintrag} \tabularnewline[-0.6cm]
4c & 0 & 0 & 0 & 3,3ca & 0 \\
& 4c & 0 & 3,3ca & 0 & 0 \\
& & 4c & 0 & 0 & 0 \\
& & & 6,72ca^2 & 0 & 0 \\
& sym & & & 11,72ca^2 & 0 \\
& & & & & 13ca^2 \\
\end{array}\right)$


Die entsprechenden Einträge trägst Du dann einfach für "längster Eintrag" ein. Den Zeilenabstand musst Du garantiert auch noch anpassen. Habe ihn für 11pt eingerichtet. Die zweite Matrix richtest Du dann entsprechend ein.

Viel Glück, viel Spaß und einen schönen Abend

Mr. Pelle

neptun
01-07-2004, 00:19
Hallo,

mr. pelles Lösung ist natürlich sehr trickreich, und zeigt wieder mal, dass man in LaTeX alles millimetergenau so hinkriegt wie man es möchte. Sie kostet aber auch mehr Arbeit.

Eine andere Möglichkeit wäre noch, bei der Standardschreibweise überall $$ statt $ zu setzen, also displaystyle; dann werden die Matrizen zentriert und die Abweichung in der Breite fällt noch weniger auf.

neptun

mr. pelle
01-07-2004, 16:04
Moin Neptun,

wenn Du $$ statt $ benutzt und die Formel somit zentrieren lässt, steht nicht einmal c_{ij} untereinander. Und die Abstände in der Matrix variieren immer noch.

Außerdem: Lass die Finger von $$. Benutze lieber \[ Dein Formel \]. Z.B. funktioniert damit die Klassenoption fleqn. Näheres findest Du auch in l2tabu.pdf (such mal bei google; stehen auch noch andere interessante Sachen drin).

MfG

Mr. Pelle

daswaldhorn
01-07-2004, 22:15
also die Idee von mr.pelle is ja echt supi, das funzt einwandfrei :).
das mit der "pmatrix" hatt ich schon probiert, bringts aber auch nich, und wie schon erwähnt, $$ ist auch nich so toll. Ok, trotzdem danke für die Ideen.

Aber schon habe ich eine neue Frage: Wenn ich in einer Tabelle oder Matrix Formeln einbaue, dann sind die Zeilenabstände zu gering, es kommt sogar zu Überschneidungen... dad sieht nich grad doll aus. Schreib ich diese Formeln einzeln untereinander, also ohne Tabellenumgebung, dann klappt das auch mit dem Zeilenabstand. Diesen Zeilenabstand möchte ich auch in der Tabelle haben. Was muss ich da einstellen? Ich hoffe das geht. Also ich könnte ja mit dem grade neu gelernten "\tabularnewLine" den Abstand ändern, aber eine globale Lösung wär schon günstiger...
Das ist mein Problem:


$\begin{array}{ll}
J_{x1}=\dfrac{m}{12}\left((1,5a)^2+(2a)^2\right)=0 ,52ma^2 & J_{x2}=\dfrac{m}{12}\left(a^2+(2a)^2\right)=0,42ma ^2 \\
J_{y1}=\dfrac{m}{12}\left((1,5a)^2+(2a)^2\right)=0 ,52ma^2 & J_{y2}=\dfrac{m}{12}\left(a^2+(2a)^2\right)=0,42ma ^2 \\
J_{z1}=\dfrac{m}{12}\left((2a)^2+(2a)^2\right)=0,6 7ma^2 & J_{z2}=\dfrac{m}{12}\left((2a)^2+(2a)^2\right)=0,6 7ma^2
\end{array}$

$J_{x1}=\dfrac{m}{12}\left((1,5a)^2+(2a)^2\right)= 0,52ma^2$

$J_{x2}=\dfrac{m}{12}\left(a^2+(2a)^2\right)=0,42m a^2$


Carsten

neptun
01-07-2004, 23:53
wie wäre es z.B. mit
\renewcommand {\arraystretch}{2}
im Kopf der tex-file?

mr. pelle
02-07-2004, 01:07
Moin daswaldhorn,

kennst Du den Unterschied zwischen Text- und Absatzformeln? Textformeln werden im fließenden Text eingebettet und durch $ Formel $ erzeugt.

Absatzformeln erscheinen in einer eigenen Zeile. Um eine Absatzformel zu erzeugen, stehen verschiedene Befehle zur Verfügung. Das Gegenstück zum o.g. $ ist \[Formel\].

Du möchtest definitiv keine Textformel erzeugen. Aus diesem Grund ist $ eh der falsche Befehl (welches der Richtige ist kommt gleich ;)).

Der Befehl \dfrac erzeugt einen Bruch in der größtmöglichen Variante. Benutze stattdessen \frac und lasse damit LaTeX die größe des Bruches entscheiden. Den Unterschied siehst Du selbst.

Die array-Umgebung ist zur Erzeugung von Feldstrukturen, also Matrizenähnliche Konstrukte. Du möchtest jedoch Formelgruppen ausrichten. Dafür empfehle ich dir \begin{eqnarray*}Formel\end{eqnarray*}. Das * unterdrückt die Nummerierung der Formel. In dieser Umgebung brichst Du Zeilen wie gewohnt mit \\ um. Eine Formelzeile ist in drei Spalten der Form {rcl} unterteilt. Die Spalten wechselst Du auch wie gewohnt mit &. Gewöhnlich steht in der mittleren Spalte nur das Zeichen nachdem ausgerichtet werden soll - in Deinem Fall also das "=". Damit erzeugst Du also die linke Formelgruppe.

Um zwei Formelgruppen nebeneinander auszurichten, wird jede Gruppe in eine parbox (\parbox{breite}{Inhalt}) gesetzt und dazwischen ein horizontaler Abstand eingefügt (\hspace{Abstand}).
Dieses ist im folgenden Code verwirklicht:


\parbox{5.0cm}{
\begin{eqnarray*}
J_{x1}&=&\frac{m}{12}\left((1,5a)^2+(2a)^2\right)=0 ,52ma^2\\
J_{y1}&=&\frac{m}{12}\left((1,5a)^2+(2a)^2\right)=0 ,52ma^2\\
J_{z1}&=&\frac{m}{12}\left((2a)^2+(2a)^2\right)=0,6 7ma^2
\end{eqnarray*}}
\hspace{4.0cm}
\parbox{5.0cm}{
\begin{eqnarray*}
J_{x2}&=&\frac{m}{12}\left(a^2+(2a)^2\right)=0,42ma ^2\\
J_{y2}&=&\frac{m}{12}\left(a^2+(2a)^2\right)=0,42ma ^2\\
J_{z2}&=&\frac{m}{12}\left((2a)^2+(2a)^2\right)=0,6
\end{eqnarray*}}


Gucke Dir den Code mal in Ruhe an und probiere selber mal die Befehle, die ich Dir oben beschrieben habe aus. So schwer ist es eigentlich nicht...
Du weißt ja, wo Du fragen kannst :D .

Ach übrigens \arraystretch verändert ja auch alle anderen Matrizen, die Du erzeugt hast. Dieses ist also in diesem Fall (entschuldige bitte neptun) eher der falsche Weg.

MfG

Mr. Pelle

daswaldhorn
07-07-2004, 23:10
Hallo Mr. Pelle,

vielen Dank für deine ausführliche Antwort, das klappt erst mal soweit ganz gut, hab wieder was gelernt.
Ich möchte aber trotzdem \dfrac nutzen, gefällt mir halt besser. In der eqnarray-Umgebung gefällt mir nicht, dasder Abstand links und rechts von dem ersten = so groß ist, der sollte so wie in einer normalen Formel sein ($a=b$). Wenn ich jetzt die Formeln ohne eqnarray in die parbox setze, dann ist der Zeilenabstand wieder zu klein, aber das mit dem = passt. Wie kriege ich das jetzt das zusammen?

Danke, Carsten

mr. pelle
07-07-2004, 23:40
Moin daswaldhorn,

habe bißchen rumgetüftelt. Lade im Vorspann das Paket amsmath, dann sollte folgender Code das gewünschte Ergebnis liefern.



\begin{align*}
J_{x1}&=\dfrac{m}{12}\left((1,5a)^2+(2a)^2\right)=0 ,52ma^2 & J_{x2}&=\dfrac{m}{12}\left(a^2+(2a)^2\right)=0,42ma ^2 \\
J_{y1}&=\dfrac{m}{12}\left((1,5a)^2+(2a)^2\right)=0 ,52ma^2 & J_{y2}&=\dfrac{m}{12}\left(a^2+(2a)^2\right)=0,42ma ^2 \\
J_{z1}&=\dfrac{m}{12}\left((2a)^2+(2a)^2\right)=0,6 7ma^2 & J_{z2}&=\dfrac{m}{12}\left((2a)^2+(2a)^2\right)=0,6 7ma^2
\end{align*}


Mr. Pelle

daswaldhorn
10-07-2004, 16:25
Hi mr.pelle,

uff, da hätt ich ja auch drauf kommen können, hab ich schon mal gesehen, diese align-Umgebung. Tja, aber manchmal sieht man den Wald vor lauter Bäumen nich!! :) Und ausserdem, warum sollte man's einfach machen, wenn's auch kompliziert geht? :D
ok, nochmals vielen Dank

Carsten