Formel mit kbordermatrix ähnlichem Gebilde

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Formel mit kbordermatrix ähnlichem Gebilde

von rais » Mo 17. Okt 2016, 22:16

Bartman hat geschrieben:Die waagerechten Striche in der linken und rechten Matrix habe ich mit festen Koordinaten angegeben, weil das Setzen der Striche im Verhältnis zum jeweiligen Knoten immer Lücken ergibt. Bislang konnte ich nicht ergründen, wie diese Leerräumen geschlossen werden können.
Die Klammern lassen sich verschieben, Stichwort `every ... delimiter' (hier zwar ausgehend vom Beispiel des OP, aber das tut dieser Problematik ja keinen Abbruch):
\documentclass[]{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}[>=latex,
    every left delimiter/.style={xshift=1em},% linke Klammern weiter rechts
    every right delimiter/.style={xshift=-1em},% rechte Klammern weiter links
    node distance=2em,% etwas einfacher, als jeden Node einzeln zu verschieben
    every node/.style={draw=red}% nur zur Demo: Node-Grenzen visualisiert
    ]
  \matrix[
    matrix of math nodes,
    left delimiter={(},
    right delimiter={)},
  ] (m) {
    u_1    \\
    \vdots\\% zum Vergleich so stehen gelassen, s.u.
    u_k    \\
    u_{k+1}\\% 
    \raisebox{1ex}{% damit die vertikalen Auslassungspunkte etwas zentrierer erscheinen...
      \ensuremath{% der Inhalt einer \raisebox wird (sonst) als Text angesehen
        \vdots}}\\
    u_n    \\
  };
%  \node[left=1.5em] at (m-4-1) {$1$};% entsprechend dem xshift (vgl. `every left delimiter' weiter oben) verkürzte Verschiebung nach links; alternativ:
  \node[left of=m-4-1] {$1$};% s.o. `node distance'
  \node[left of=m-6-1] {$3$};
  \draw[blue, <->] (m-6-1.south) -- +(-2em,0);% nur zur Demo: `node distance'
  \draw [thin] (m-4-1.north west) -- (m-4-1.north east);
\end{tikzpicture}
\end{document}
VG
Rainer

von BennyS » Mo 17. Okt 2016, 09:55

Bartman, danke danke danke!
Du hast mir unglaublich geholfen. Habe das ganze Prinzip jetzt auch besser verstanden und werde deine Vorlage nun noch etwas für meine Arbeit anpassen.
Danke!

von Bartman » So 16. Okt 2016, 19:59

BennyS hat geschrieben:-Wie kann ich den rechten Vektor/Matrix "nach oben verschieben" wie in der Zielform? Dies wird wahrscheinlich nur mit TikZ möglich sein oder?
Mit der Option yshift des Befehls \node. Du darfst die pmatrix-Umgebung im mathematischen Modus innerhalb der geschweiften Klammern des genannten TikZ-Befehls einsetzen. Der Knoten kann dann am Gleichheitszeichen ausgerichtet werden, welches an der mittleren Matrix ausgerichtet werden kann.
BennyS hat geschrieben:-Wie könnte ich am Ende dann alle 3 Matrizen zu einer Gleichung verbinden?
Mein Vorschlag:
\documentclass[tikz, border=5pt]{standalone}

\usepackage{upgreek}

\usetikzlibrary{matrix,positioning}

\tikzset{nodes={font=\sffamily}}

\begin{document}
\begin{tikzpicture}[
	mybordermatrix/.style = {
		matrix of math nodes,
		left delimiter={(},
	   right delimiter={)},
		inner xsep=0pt
	}
]

\node (assignment1) {=};


% Linke Matrix
\matrix
[
    mybordermatrix,
    left = of assignment1,
    xshift=5mm
] (left_matrix) {
    \widetilde u_2 \\
    \widetilde u_3 \\
    \cdot \\
    \cdot \\
    \cdot \\
    \cdot \\
    \cdot \\
    \cdot \\
    \cdot \\
    \cdot \\
    \cdot \\
    \cdot \\
    \cdot \\
    \cdot \\
    \widetilde u_1 \\
    \widetilde u_9 \\
    \widetilde u_{19} \\
};

% Waagerechter Strich über u_1
%\draw [very thick] (left_matrix-15-1.north west) -- (left_matrix-15-1.north east);
\draw [very thick] (-1.5,-2.1) -- (-.55,-2.1);

\foreach \i/\j in {15/1, 17/3}
{
    \node[left=1.2em] at (left_matrix-\i-1) {\j};
}


% Mittlere Matrix
\matrix[
    matrix of nodes,
    draw,
%    nodes=draw,
    row 1/.style={minimum height = 6cm},
    column 1/.style={minimum width = 3cm},
    rowheight/.style={minimum height = .5cm},
    columnwidth/.style={minimum width = .5cm},
    row 2/.style={rowheight},
    row 3/.style={rowheight},
    row 4/.style={rowheight},
    column 2/.style={columnwidth},
    column 3/.style={columnwidth},
    column 4/.style={columnwidth},
    right = of assignment1,
    xshift=-8mm,
    very thick,% Linienbreite
    inner sep=0pt,
] (middle_matrix) {
    $\upphi$    & \phantom{?} & ?           & \phantom{?}\\
    \phantom{O} & 1           & \phantom{1} & \phantom{1}\\
    O           & \phantom{1} & 1           & \phantom{1}\\
    \phantom{O} & \phantom{1} & \phantom{1} & 1			 \\	
};

% Waagerechte Trennlinie
\draw [very thick] (middle_matrix-2-1.north west) -- (middle_matrix-2-4.north east);
% Senkrechte Trennlinie
\draw [very thick] (middle_matrix-1-1.north east) -- (middle_matrix-4-1.south east);

% Außenbeschriftung an der rechten unteren Ecke
\node [right=3.7em] at (middle_matrix-2-2) {1};
\node [right=.8em] at (middle_matrix-4-4) {3};
\node [below=.8em] at (middle_matrix-4-4) {3};
\node [below=3.7em] at (middle_matrix-2-2) {1};


% Rechte Matrix
\matrix
[
    mybordermatrix,
    right = of middle_matrix,
    yshift=2.4cm
] (right_matrix) {
    \cdot \\
    \widetilde q \\
    \cdot \\
    \cdot \\
    ~\\
    \widetilde u_H \\
};

% Waagerechter Strich über u_H
%\draw [very thick] (right_matrix-5-1.north west) -- (right_matrix-5-1.north east);
\draw [very thick] (5.85,2) -- (6.6,2);


% Zeichen unter den Matrizen
\node [below = of assignment1, yshift=-3.2cm] (assignment2) {=};
\node [left = of assignment2, xshift=5mm, yshift=.7mm] {$\widetilde u$};
\node [right = of assignment2, xshift=5mm, yshift=.7mm] {$T$};
\node [right = of assignment2, xshift=47mm, yshift=.7mm] {$\widetilde v$};
\end{tikzpicture}
\end{document}
Die waagerechten Striche in der linken und rechten Matrix habe ich mit festen Koordinaten angegeben, weil das Setzen der Striche im Verhältnis zum jeweiligen Knoten immer Lücken ergibt. Bislang konnte ich nicht ergründen, wie diese Leerräumen geschlossen werden können.

Bild
Dateianhänge
3_Matrizen.png
3_Matrizen.png (21.67 KiB) 1757 mal betrachtet

von BennyS » So 16. Okt 2016, 18:17

Achso, entschuldigung:)
\documentclass[]{article}
\usepackage{amsmath}

\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}

Bordermatrix:

$
\bordermatrix{
  &           \cr
  & u_1       \cr
  & \vdots    \cr
  & u_k       \cr  
1 & u_{k+1}   \cr
  & u_{k+2}   \cr
3 & u_{k+3}   \cr
}
$

Matrix with tikz:

\begin{tikzpicture}
  \matrix
  [
    matrix of math nodes,
    left delimiter={(},
    right delimiter={)},
  ] (m) {
    u_1    \\
    \vdots \\
    u_k    \\
    u_{k+1}\\
    \vdots \\
    u_n    \\
  };
    \node[left=2.5em] at (m-4-1) {$1$};
    \node[left=2.5em] at (m-6-1) {$3$};
    
\draw [thin] (m-4-1.north west) -- (m-4-1.north east); 
\end{tikzpicture}

BMatrix:

$
\begin{pmatrix} u_1 \\ \vdots \\ u_k \\ \hline  u_{k+1} \\ \vdots \\ u_n \end{pmatrix} = \begin{pmatrix} v_1 \\ \vdots \\ v_k \\ \hline v_{k+1} \end{pmatrix} 
$


\end{document}
[/code]

von Bartman » So 16. Okt 2016, 18:14

Ein Beispiel mit dem Quelltext, welcher die drei Matrizen erzeugt, wäre besser, als eine Abbildung des Ergebnisses.

von BennyS » So 16. Okt 2016, 16:51

Es wird langsam:)
Habe mal mehrere Ansätze probiert.
Bei Bordermatrix habe ich noch keine Lösung gefunden, wie ich den horizontalen Trennstrich einbinden kann.
Bei der Matrix mit TikZ sind die zwei Klammern noch in einem komischen Abstand zueinander.
pMatrix scheint mir soweit die einfachste Möglichkeit zu sein.

Zwei grundlegende Fragen bleiben aber leider noch:
-Wie kann ich den rechten Vektor/Matrix "nach oben verschieben" wie in der Zielform? Dies wird wahrscheinlich nur mit TikZ möglich sein oder?
-Wie könnte ich am Ende dann alle 3 Matrizen zu einer Gleichung verbinden?
Dateianhänge
bordermatrix.png
bordermatrix.png (36.92 KiB) 3222 mal betrachtet

von Bartman » So 16. Okt 2016, 15:35

BennyS hat geschrieben:Oder muss ich die ganze Formel nun als tikz "programmieren"?
Es bietet sich eben an. Matrix-Beispiele mit TikZ, mit deren Hilfe Du den linken und rechten Teil der Abbildung erstellen kannst, findest Du in dem zuvor angegebenen Thread auf TeXwelt.

von BennyS » So 16. Okt 2016, 14:27

Wow! Das ist ja Wahnsinn!
Danke danke danke danke für die Mühe!
Das ist ja jetzt eine Tikz Grafik. Kann ich diese denn in meine equation einbinden? Oder muss ich die ganze Formel nun als tikz "programmieren"?

von Bartman » So 16. Okt 2016, 09:19

Mein erster Gedanke war, eine 2x2-Matrix des TikZ-Pakets anzulegen und eine weitere Matrix in die zweite Spalte der zweiten Zeile einzufügen. Leider wurde diese Absicht in meinem Beispiel von TikZ nicht unterstützt. Statt einer Matrix ließ sich sowohl eine array- als auch eine tabular-Umgebung einsetzen, aber dann verschob die Außenbeschriftung die Randlinie.

Dann hatte ich die Idee, eine 4x4-Matrix zu nehmen und sie wie eine 2x2-Matrix aussehen zu lassen:
\documentclass[tikz, border=5pt]{standalone}

\usepackage{upgreek}

\usetikzlibrary{matrix,positioning}

\tikzset{nodes={font=\sffamily}}

\begin{document}
\begin{tikzpicture}
\matrix[
	matrix of nodes,
	draw,
%	nodes=draw,
	row 1/.style={minimum height = 6cm},
	column 1/.style={minimum width = 3cm},
	rowheight/.style={minimum height = .5cm},
	columnwidth/.style={minimum width = .5cm},
	row 2/.style={rowheight},
	row 3/.style={rowheight},
	row 4/.style={rowheight},
	column 2/.style={columnwidth},
	column 3/.style={columnwidth},
	column 4/.style={columnwidth},
	thick,% Linienbreite
	inner sep=0pt,
] (middle_matrix) {
	$\upphi$    & \phantom{?} & ?           & \phantom{?}\\
	\phantom{O} & 1           & \phantom{1} & \phantom{1}\\
	O           & \phantom{1} & 1           & \phantom{1}\\
	\phantom{O} & \phantom{1} & \phantom{1} & 1			 \\	
};

% Waagerechte Trennlinie
\draw [thick] (middle_matrix-2-1.north west) -- (middle_matrix-2-4.north east);
% Senkrechte Trennlinie
\draw [thick] (middle_matrix-1-1.north east) -- (middle_matrix-4-1.south east);

% Außenbeschriftung an der rechten unteren Ecke
\node [right=3.7em] at (middle_matrix-2-2) {1};
\node [right=.8em] at (middle_matrix-4-4) {3};
\node [below=.8em] at (middle_matrix-4-4) {3};
\node [below=3.7em] at (middle_matrix-2-2) {1};
\end{tikzpicture}
\end{document}
Wenn Du das Kommentarzeichen vor nodes=draw entfernst, siehst Du den Aufbau der Matrix.

Das große O im linken unteren Bereich ist nur von mir geraten und dient der Veranschaulichung.

Bild
Dateianhänge
Verborgene_4x4_Matrix.png
Verborgene_4x4_Matrix.png (7.28 KiB) 3254 mal betrachtet

von BennyS » Fr 14. Okt 2016, 14:47

Oh gott, okay. Danke schon mal.
Ich habe leider noch nie zuvor mit latex gearbeitet, geschweige denn mit Tikz. Das manual überfordert mich gerade. Könnte mir lieberweise jemand einen kleinen Starttipp oder sonstiges geben?

Wäre sehr dankbar!

Nach oben