PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Horner-Schema mit LaTeX (System von geschweiften Klammern)



zac
18-11-2010, 19:48
Hallo,

ich würde gerne das Horner-Schema mit den dividierten Differenzen mit LaTeX darstellen.

Falls das jetzt niemandem etwas sagt, hier eine kurze Beschreibung. Man hat ganz links z.B. 5 Zeilen.
Dann fasst man mit einer geschweiften Klammer immer zwei Zeilen zusammen.
Also fasst man die 1. mit der 2., die 2. mit der 3., die 3. mit der 4. und die 4. mit der 5. Zeile zusammen.
Man erhält also 4 Zeilen in der nächsten Spalte.
Dann macht man das wieder und erhält in der 3. Spalte 3 Zeilen, in der 4. Spalte 2 Zeilen und in der 5. Spalte eine Zeile.

Ich habe keine Ahnung, wie ich das anstellen. Wäre dankbar, wenn jemand eine Idee hat.

voss
18-11-2010, 20:05
ich würde gerne das Horner-Schema mit den dividierten Differenzen mit LaTeX darstellen.

Falls das jetzt niemandem etwas sagt, hier eine kurze Beschreibung. Man hat ganz links z.B. 5 Zeilen.
Dann fasst man mit einer geschweiften Klammer immer zwei Zeilen zusammen.
Also fasst man die 1. mit der 2., die 2. mit der 3., die 3. mit der 4. und die 4. mit der 5. Zeile zusammen.
Man erhält also 4 Zeilen in der nächsten Spalte.
Dann macht man das wieder und erhält in der 3. Spalte 3 Zeilen, in der 4. Spalte 2 Zeilen und in der 5. Spalte eine Zeile.

Ich habe keine Ahnung, wie ich das anstellen. Wäre dankbar, wenn jemand eine Idee hat.
Für mich klingt das nach dem Gaußschen Algorithmus:
http://www.dante.de/DTK/Ausgaben/komoedie20023.pdf
Paket gauss.sty

Herbert

zac
19-11-2010, 08:52
hm...das ganze funktioniert aber nicht ganz so wie ich will.

Es soll ja immer zwei geschweifte Klammern geben, die zu einem Eintrag gehören.
Also Die zweite Zeile soll ja von der Klammer (die die 1. und 2. Zeile umfasst) und von der Klammer (die die 2. und die 3. Zeile umfasst) umfasst werden. Das würde mit gauss wahrscheinlich gehen, aber die Klammern sollten schön untereinander sein.
Außerdem:
Wenn ich nur zwei Spalten hätte, dann könnte ich mir ja irgendwie behelfen, aber sobald ich dann die 3. Spalte darstellen muss, also die 2. Spalte mit Klammern zusammenfassen muss, habe ich keine Ahnung mehr, wie ich es machen muss.

zac
19-11-2010, 11:58
Ich habe mir gedacht, dass ich zum besseren Verständnis mal mein Anliegen per Hand mache und einscanne.
Eigentlich ist es mir egal, ob man geschweifte Klammern oder spitze Klammern benutzt.

voss
19-11-2010, 13:19
Ich habe mir gedacht, dass ich zum besseren Verständnis mal mein Anliegen per Hand mache und einscanne.
Eigentlich ist es mir egal, ob man geschweifte Klammern oder spitze Klammern benutzt.

hier ein Beispiel. Mit latex=>ps=>pdf oder mit Paket auto-pst-pdf


\documentclass[12pt]{article}
\usepackage{pstricks-add}
\psset{braceWidthInner=5\pslinewidth,braceWidthOut er=5\pslinewidth}
\def\VZ{\phantom{-}}
\begin{document}


\def\arraystretch{2}
$\tabular{@{} r r @{}}
0 & \rnode[rc]{A}{~$1$~}\\
1 & \rnode[rc]{B}{~$-1$~}\\
2 & \rnode[rc]{C}{~$2$~}\\
3 & \rnode[rc]{D}{~$1$~}\\
\endtabular$
\psbrace(B)(A){\rnode[rc]{AB}{~$-2$~}}
\psbrace(C)(B){\rnode[rc]{BC}{~$\VZ3$~}}
\psbrace(D)(C){\rnode[rc]{CD}{~$-1$~}}

\psbrace(BC)(AB){\rnode[rc]{ABC}{~$\VZ\frac{5}{2}$~}}
\psbrace(CD)(BC){\rnode[rc]{BCD}{~$-2$~}}

\psbrace[nodesepB=8pt](BCD)(ABC){~$-\frac{3}{2}$}

\end{document}

Herbert

zac
20-11-2010, 09:54
Ok, das sieht schon ganz gut aus. Ich habe jetzt versucht das ganze etwas auf ein anderes Beispiel umzuschreiben:


\documentclass[12pt]{article}
\usepackage{pstricks-add}
\psset{braceWidthInner=7\pslinewidth,braceWidthOut er=5\pslinewidth}
\def\VZ{\phantom{-}}
\begin{document}


\def\arraystretch{3}
$\tabular{@{} r r @{}}
0 & \rnode[rc]{A}{~$-1$~}\\
1 & \rnode[rc]{B}{~$-1$~}\\
2 & \rnode[rc]{C}{~$-7$~}\\
3 & \rnode[rc]{D}{~$-7$~}\\
4 & \rnode[rc]{E}{~$35$~}

\endtabular$
\psbrace[nodesepB=6pt](B)(A){\rnode[rc]{AB}{~$\VZ0$~}}
\psbrace(C)(B){\rnode[rc]{BC}{~$-6$~}}
\psbrace(D)(C){\rnode[rc]{CD}{~$\VZ0$~}}
\psbrace(E)(D){\rnode[rc]{DE}{~$42$~}}

\psbrace(BC)(AB){\rnode[rc]{ABC}{~$-3$~}}
\psbrace(CD)(BC){\rnode[rc]{BCD}{~$\VZ3$~}}
\psbrace(DE)(CD){\rnode[rc]{CDE}{~$\VZ3$~}}

\psbrace[nodesepB=4pt](BCD)(ABC){~$2$}
\psbrace[nodesepB=4pt](CDE)(BCD){~$6$}

\end{document}



Leider sieht das Ergebnis aber nicht so aus, wie ich will.
Es gibt noch drei Probleme:

1. offensichtlich steht eine Klammer in der zweiten Spalte schräg.
Außerdem würde ich gerne auch manchmal längere Einträge, also nicht nur eine Zahl benutzen.
2. Die Einträge sind von der Höhe aus nicht direkt rechts neben der Spitze der geschweiften Klammer (das müsste doch mit [nodesepB=6pt] regulierbar sein?!)
3. Da die Klammern sich immer berühren, wird es bei mehreren Klammern schwer wahrzunehmen, ob die Klammer nach links oder nach rechts geöffnet ist. (das lässt sich glaube ich durch \arraystretch{3} etwas besser wahrnehmen)


Außerdem verstehe ich nicht alles, z.B. was [rc] bedeuted, wieso die Einträge zwischen ~ ~ stehen?!

Wäre nett, wenn du mir noch einmal helfen könntest.

rstuby
20-11-2010, 10:07
Bitte nicht das php-Code-Symbol benutzen (sonst gehen die ganzen \ weg und das Beispiel ist nicht mehr lauffähig!), sondern das #-Symbol daneben!

voss
20-11-2010, 10:31
1. offensichtlich steht eine Klammer in der zweiten Spalte schräg.
Außerdem würde ich gerne auch manchmal längere Einträge, also nicht nur eine Zahl benutzen.
2. Die Einträge sind von der Höhe aus nicht direkt rechts neben der Spitze der geschweiften Klammer (das müsste doch mit [nodesepB=6pt] regulierbar sein?!)
3. Da die Klammern sich immer berühren, wird es bei mehreren Klammern schwer wahrzunehmen, ob die Klammer nach links oder nach rechts geöffnet ist. (das lässt sich glaube ich durch \arraystretch{3} etwas besser wahrnehmen)

Außerdem verstehe ich nicht alles, z.B. was [rc] bedeuted, wieso die Einträge zwischen ~ ~ stehen?!


Man muss etwas Abstand nach links und rechts haben. Es geht aber besser,
wenn man die Einträge gleich in eine Box bestimmter Breite schreibt. Die
Breite kannst du beliebig ändern. rc steht für "Knoten rechts mittig" anordnen.

\documentclass[12pt]{article}
\usepackage{pstricks-add}
\psset{braceWidthInner=7\pslinewidth,braceWidthOut er=5\pslinewidth}
\def\Wert#1{\makebox[1.75em][r]{$#1$}~}
\begin{document}


\def\arraystretch{3}
$\tabular{@{} r r @{}}
0 & \rnode[rc]{A}{\Wert1}\\
1 & \rnode[rc]{B}{\Wert{-1}}\\
2 & \rnode[rc]{C}{\Wert{-7}}\\
3 & \rnode[rc]{D}{\Wert{-7}}\\
4 & \rnode[rc]{E}{\Wert{35}}

\endtabular$
\psbrace[nodesepB=6pt](B)(A){\rnode[rc]{AB}{\Wert0}}
\psbrace(C)(B){\rnode[rc]{BC}{\Wert{-6}}}
\psbrace(D)(C){\rnode[rc]{CD}{\Wert0}}
\psbrace(E)(D){\rnode[rc]{DE}{\Wert{42}}}

\psbrace(BC)(AB){\rnode[rc]{ABC}{\Wert{-3}}}
\psbrace(CD)(BC){\rnode[rc]{BCD}{\Wert3}}
\psbrace(DE)(CD){\rnode[rc]{CDE}{\Wert3}}

\psbrace[nodesepB=4pt](BCD)(ABC){\Wert2}
\psbrace[nodesepB=4pt](CDE)(BCD){\Wert6}

\end{document}


Alternativ kannst du auch \makebox[..][l] probieren


Herbert

zac
20-11-2010, 11:06
seper, danke!! Eine Frage noch:
Wie kann ich auch große Brüche als Einträge nehmen? normalerweise mache ich das mit \dfrac{}{}, aber das funktioniert nicht. Mit \frac sind die Brüche so klein.



\documentclass[12pt]{article}
\usepackage{pstricks-add}
\psset{braceWidthInner=7\pslinewidth,braceWidthOut er=5\pslinewidth}
\def\Wert#1{\makebox[3.75em][r]{$#1$}~}
\begin{document}


\def\arraystretch{3}
$\tabular{@{} r r @{}}
0 & \rnode[rc]{A}{\Wert{-1}}\\
1 & \rnode[rc]{B}{\Wert{-1}}\\
2 & \rnode[rc]{C}{\Wert{-7}}\\
3 & \rnode[rc]{D}{\Wert{-7}}\\
4 & \rnode[rc]{E}{\Wert{35}}

\endtabular$
\psbrace[nodesepB=5pt](B)(A){\rnode[rc]{AB}{\Wert0}}
\psbrace[nodesepB=5pt](C)(B){\rnode[rc]{BC}{\Wert{-6}}}
\psbrace[nodesepB=5pt](D)(C){\rnode[rc]{CD}{\Wert0}}
\psbrace[nodesepB=5pt](E)(D){\rnode[rc]{DE}{\Wert{42}}}

\psbrace[nodesepB=5pt](BC)(AB){\rnode[rc]{ABC}{\Wert{-3}}}
\psbrace[nodesepB=5pt](CD)(BC){\rnode[rc]{BCD}{\Wert3}}
\psbrace[nodesepB=5pt](DE)(CD){\rnode[rc]{CDE}{\Wert{21}}}

\psbrace[nodesepB=5pt](BCD)(ABC){\rnode[rc]{ABCD}{\Wert{\frac{2}{3}=2}}}
\psbrace[nodesepB=5pt](CDE)(BCD){\rnode[rc]{BCDE}{\Wert{\frac{18}{3}=6}}}

\psbrace[nodesepB=5pt](BCDE)(ABCD){\Wert{\frac{4}{4}=1}}

\end{document}

voss
20-11-2010, 11:15
Wie kann ich auch große Brüche als Einträge nehmen? normalerweise mache ich das mit \dfrac{}{}, aber das funktioniert nicht. Mit \frac sind die Brüche so klein.


\usepackage{amsmath}

brauchst du dann.

Herbert

mechanicus
20-11-2010, 11:15
normalerweise mache ich das mit \dfrac{}{}, aber das funktioniert nicht. Mit \frac sind die Brüche so klein.

Paket amsmath laden.

Gruß
Marco

zac
20-11-2010, 11:39
stimmt, hab total vergessen, dass es in dem Beispiel gar nicht mit eingebunden ist. Dank!

zac
20-11-2010, 14:29
hab jetzt leider doch noch ein Problem mit der ganzen Sache. Durch das \arraystretch{3} habe ich ja die Zeilen etwas auseinander gezogen, da ich finde, dass es so besser aussieht. Jetzt sind aber die ganzen Matrizen im restlichen Dokument auch auseinandergezogen, die sollten aber einfach so bleiben wie sie davor waren.

mechanicus
20-11-2010, 14:39
hab jetzt leider doch noch ein Problem mit der ganzen Sache. Durch das \arraystretch{3} habe ich ja die Zeilen etwas auseinander gezogen, da ich finde, dass es so besser aussieht. Jetzt sind aber die ganzen Matrizen im restlichen Dokument auch auseinandergezogen, die sollten aber einfach so bleiben wie sie davor waren.
dann halte es lokal. Entweder mit{..} oder \begingroup...\endgroup oder siehe es einfach mit in die Umgebung $..$.

Marco