PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Lineares Programm in LaTeX



Ben Sisko
27-02-2006, 20:00
Hallo zusammen,

ich möchte ein Lineares Programm in LaTeX schreiben (eigentlich ein mixed integer, aber das spielt vom Aussehen her keine Rolle ;) ), also eine Tabelle mit Formeln als Eintrag und Mengenklammern (also { }) in angepasster Grösse drumherum.

Nun muss ich die Tabelleneinträge jeweils einzeln mit $...$ einschliessen, sonst beschwert er sich, dass $ fehlen.
Die Mengenklammern wollen aber innerhalb einer $-Umgebung stehen, wenn ich $\left\{$ vor die Tabelle setze, beschwert er sich über fehlendes \right\{.

Beispiel:

$\left\{
\begin{tabular}{l|l}
x^2 & x^2\\
x^2 & x^3
\end{tabular}
$\right\{$

bzw.

$\left\{$
\begin{tabular}{l|l}
$x^2$ & $x^2$\\
$x^2$ & $x^3$
\end{tabular}
$\right\{$

In der linken Spalte der Tabelle möchte ich noch multirow benutzen, aber das tut ja erstmal noch nichts zur Sache.

Vielen Dak schon einmal,
Gruß vom Ben

pospiech
27-02-2006, 20:07
Lösung:

\left(\right.

Matthias

Ben Sisko
27-02-2006, 20:19
Hallo Matthias,

meinst du \left\{ \right. ?

Sonst bekomm ich ja gar nicht die Klammer, die ich will. Das hab ich jetzt mal ausprobiert.

Zwar läuft die Kompilierung so ohne Fehler, aber die Klammer wird dann leider nicht der Grösse der Tabelle angepasst.
Hast du dafür auch noch eine Abhilfe?

bienchen
27-02-2006, 23:00
Probiers doch mit nem Array in ner Mathe-Umgebung. Oder willst Du zwiiingend eine Tabelle verwenden?

mfg,

bienchen

rais
27-02-2006, 23:17
oder nimm gleich die Bmatrix-Umgebung - da sind die {}-Klammern gleich mit bei;)
gehört natürlich zum amsmath Paket
MfG,

Ben Sisko
27-02-2006, 23:51
Hallo bienchen,

mit einem array scheint es zu funktionieren :)
Das war ja fast zu leicht, warum bin ich da nicht drauf gekommen? :mad:

@rais: Bei der Bmatrix fehlt mir die vertikale Linie (hatte die im Minimalbeispiel extra dringelassen, wenn auch nicht erwähnt ;) ) oder kann man die dort auch einfach einbauen?

Vielen Dank euch beiden,
Gruß vom Ben

rais
28-02-2006, 00:42
Moin Ben,
mit \vert an passender Stelle
MfG,

Ben Sisko
28-02-2006, 16:16
Hallo rais,

was wäre denn die passende Stelle, da die vertikale Linie ja durchgehend sein soll und nicht in jeder Zeile eine kleine? Der Bmatrix kann man ja keine Optionen für die Spalten mitgeben wie beim array oder tabular, oder?

Mit dem array funktioniert es doch nicht perfekt, so wie ich es mir dachte, da dann ja \multirow nicht funktioniert. Das werd ich dann wohl "von Hand" lösen müssen.

Gruß vom Ben

rais
28-02-2006, 17:53
Hallo Ben,
uuups, hast Recht :o
man könnte zwar die Zeilen dichter zusammenschieben ( mit \\[-0.7ex] o.ä. am Ende der ersten Zeile der Bmatrix), aber dadurch wirken die Ausdrücke doch arg gequetscht. Dann vielleicht lieber einen etwas längeren Weg:

\documentclass{scrartcl}
\usepackage{amsmath}
\newcommand{\ueber}[2]{\genfrac{}{}{0pt}{0}{#1}{#2}}
\begin{document}
\begin{equation*}
\left\{\ueber{x^1}{x^3}\right.\negthinspace\left\v ert\ueber{x^2}{x^4}\right\}
\end{equation*}
\end{document}
Ich hab hier der Einfachheit halber unterschiedliche Exponenten genommen, damit man gleich sieht, welcher Term wo landet;)
Der definierte \ueber-Befehl wirkt wie ein Bruch ohne Bruchstrich (bzw. wie ein Binom ohne Klammern) hmm, die Klammerung läßt sich da gleich mit einbauen:


\documentclass{scrartcl}
\usepackage{amsmath}
\newcommand{\lueber}[2]{\genfrac{\{}{|}{0pt}{0}{#1}{#2}}
\newcommand{\rueber}[2]{\genfrac{.}{\}}{0pt}{0}{#1}{#2}}
\begin{document}
\begin{equation*}
\lueber{x^1}{x^3}\rueber{x^2}{x^4}
\end{equation*}
\end{document}

- da drin funzt natürlich immer noch kein \multirow... aber wofür genau brauchst Du den überhaupt?

MfG,

Ben Sisko
28-02-2006, 20:00
Hallo rais,

erst einmal vielen Dank für dein Engagement.

\multirow wollte ich nutzen, da mein lineares Programm viel mehr Zeilen hat, nicht nur 2.
In der ersten Spalte steht aber nur die Zielfunktion, also nur eine Zeile. Daher wollte ich das zusammenfassen.

Mit dem array funktioniert es aber einigermaßen, ich suche per Hand die mittlere Zeile und schreibe die Zielfunktion rein und alle anderen Einträge der ersten Spalte bleiben leer. Das ist dann zwar nicht genau die Mitte (wegen verschiedenen Zeilenhöhen; mal ein Summenzeichen in den Zeilen und mal nicht), erst recht nicht, wenn es eine gerade Anzahl an Zeilen ist, aber ist erst einmal in Ordnung.

Gruß vom Ben

rais
28-02-2006, 20:47
Hallo Ben,
ah ja - dann vielleicht etwa so:

\begin{equation}
\left\{ \begin{array}{r|l}
f(x) & \begin{array}{cc}
x^1 & x^2\\
x^3 & x^4\\
x^5 & x^6\\
x^7 & x^8
\end{array}
\end{array}
\right\}
\end{equation}
d.h. wenn die Zielfunktion (hier einfach f(x)) auch noch außerhalb der geschweiften Klammer auftauchen soll, dann vereinfacht sich das z.B. zu


\begin{equation}
f(x) = \left\{ \begin{array}{c|c}
x^1 & x^2\\
x^3 & x^4\\
x^5 & x^6\\
x^7 & x^8
\end{array}
\right\}
\end{equation}
jedenfalls stellt sich in beiden Fällen das f(x) "automagisch" in die vertikale Mitte;)

MfG,

Ben Sisko
28-02-2006, 22:47
jedenfalls stellt sich in beiden Fällen das f(x) "automagisch" in die vertikale Mitte;)


:D

Das ist super.
Hätte nicht gedacht, dass man bei LaTeX so "kreativ" sein kann/muss.

Ich dank dir.

Gruß vom Ben