Dorle
29-11-2013, 21:27
Ich habe aus den Vorlagen
das schöne Programm (leicht abgeändert) entnommen:
\documentclass[11pt,a4paper]{article}
\usepackage{pstricks, pst-plot}
\begin{document}
\def\drawseg#1#2{%
\pscustom{%
\translate(#1,#2)
\rotate{(1, #1)} % Vector in direction of field at x=#1,y=#2
\psline(-0.5,0)(0.5,0)}}
\begin{pspicture}(-6,-6)(6,6)
\psaxes{->}(0,0)(-6,-6)(6,6)
\psset{arrows=->}
\multido{\n=-5+1}{12}{%
\multido{\N=-5+1}{11}{%
\ifnum\N=0
\ifnum\n=0
\else
\drawseg{\n}{\N}
\fi
\else
\drawseg{\n}{\N}
\fi}}
\end{pspicture}
\end{document}
Damit nun beliebige Richtungsfelder, z.B. y'=y*(4-y), erstellt werden können,
müsste man in \rotate{(1, #1)} beliebige Terme mit x (#1)
und y (#2) übergeben können, bzw. man müsste vorher mit x und y
rechnen können.
Wie wäre das Programm hierfür zu ergänzen? Und bei der Gelegenheit:
Wo finde ich eine Dokumentation, wie mit Variablen
in diesem Zusammenhang gearbeitet wird?
Vielen Dank schonmal
Inzwischen ist mir eine Möglichkeit eingefallen, um beliebige
Richtungsfelder zu erstellen:
\documentclass[11pt,a4paper]{article}
\usepackage{pstricks, pst-plot}
\begin{document}
\def\pshlabel#1{\footnotesize #1} % Schriftgröße
\def\psvlabel#1{\footnotesize #1}
\psset{xunit=1,yunit=1,linewidth=0.35pt, arrowscale=2.}
\def\drawseg#1#2{%
\pscustom{%
\translate(#1,#2)
\def\x{#1}
\def\y{#2}
\def\m{1}
\pstFPsub\m{10}{\y} % y'=0.08*y*(10-y)
\pstFPmul\y{\m}{\y}
\pstFPmul\y{0.08}{\y}
\rotate{(1, \y)}
\psline(-0.5,0)(0.5,0)}
}
\begin{pspicture}(-6,0)(6,12)
\psaxes[Dx=1,Dy=1,ticksize=-3pt,labelsep=2.5pt, arrowscale=2.3, plotstyle=curve,
showorigin=false,comma,linecolor=black]{->}(0,0)(-6,-0.1)(7,10) % Achse
\psset{arrows=->}
\multido{\n=-5+1}{12}{%
\multido{\N=1+1}{9}{%
\ifnum\N=0
\ifnum\n=0
\else
\drawseg{\n}{\N}
\fi
\else
\drawseg{\n}{\N}
\fi}}
\end{pspicture}
\end{document}
Aber es geht sicherlich auch eleganter mit Variablen und dem Stack, nur wie?
das schöne Programm (leicht abgeändert) entnommen:
\documentclass[11pt,a4paper]{article}
\usepackage{pstricks, pst-plot}
\begin{document}
\def\drawseg#1#2{%
\pscustom{%
\translate(#1,#2)
\rotate{(1, #1)} % Vector in direction of field at x=#1,y=#2
\psline(-0.5,0)(0.5,0)}}
\begin{pspicture}(-6,-6)(6,6)
\psaxes{->}(0,0)(-6,-6)(6,6)
\psset{arrows=->}
\multido{\n=-5+1}{12}{%
\multido{\N=-5+1}{11}{%
\ifnum\N=0
\ifnum\n=0
\else
\drawseg{\n}{\N}
\fi
\else
\drawseg{\n}{\N}
\fi}}
\end{pspicture}
\end{document}
Damit nun beliebige Richtungsfelder, z.B. y'=y*(4-y), erstellt werden können,
müsste man in \rotate{(1, #1)} beliebige Terme mit x (#1)
und y (#2) übergeben können, bzw. man müsste vorher mit x und y
rechnen können.
Wie wäre das Programm hierfür zu ergänzen? Und bei der Gelegenheit:
Wo finde ich eine Dokumentation, wie mit Variablen
in diesem Zusammenhang gearbeitet wird?
Vielen Dank schonmal
Inzwischen ist mir eine Möglichkeit eingefallen, um beliebige
Richtungsfelder zu erstellen:
\documentclass[11pt,a4paper]{article}
\usepackage{pstricks, pst-plot}
\begin{document}
\def\pshlabel#1{\footnotesize #1} % Schriftgröße
\def\psvlabel#1{\footnotesize #1}
\psset{xunit=1,yunit=1,linewidth=0.35pt, arrowscale=2.}
\def\drawseg#1#2{%
\pscustom{%
\translate(#1,#2)
\def\x{#1}
\def\y{#2}
\def\m{1}
\pstFPsub\m{10}{\y} % y'=0.08*y*(10-y)
\pstFPmul\y{\m}{\y}
\pstFPmul\y{0.08}{\y}
\rotate{(1, \y)}
\psline(-0.5,0)(0.5,0)}
}
\begin{pspicture}(-6,0)(6,12)
\psaxes[Dx=1,Dy=1,ticksize=-3pt,labelsep=2.5pt, arrowscale=2.3, plotstyle=curve,
showorigin=false,comma,linecolor=black]{->}(0,0)(-6,-0.1)(7,10) % Achse
\psset{arrows=->}
\multido{\n=-5+1}{12}{%
\multido{\N=1+1}{9}{%
\ifnum\N=0
\ifnum\n=0
\else
\drawseg{\n}{\N}
\fi
\else
\drawseg{\n}{\N}
\fi}}
\end{pspicture}
\end{document}
Aber es geht sicherlich auch eleganter mit Variablen und dem Stack, nur wie?