Exponentialfunktionen bewegen

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


Eduard
Forum-Guru
Forum-Guru
Beiträge: 332
Registriert: Sa 2. Mai 2015, 22:02

Beitrag von Eduard »

Könntest du mir bitte das kurz erklären. Ich blicke immer noch nicht durch wie das funktioniert.

Es geht ja um die Schnittpunkte in der ersten Abbildung.

Ich habe verstanden, dass du den zwei Funktionen einen Namen vergeben hast (wusste gar nicht, dass das möglich ist!).

In meinem letzten Beispiel wird nicht die Schnittstelle anvisiert. Aus dem anderen, vorherigen Beispiel müsste es

Code: Alles auswählen

\path [name intersections={of=f1a and f1b, by=is f1a right}]; 
Also der Schnittpunkt (intersection) von (f1a und f1b). Aber ich verstehe nicht, wie man die Schnittpunkt "angibt". Was heißt "vline"= "verticle line? Dachte man kann mit "left" und "right" die Schnittpunkte angeben, aber es funktioniert nicht. Über ein kure Erklärung wäre ich dir sehr dankbar.

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2180
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Ich habe die Bezeichnungen lediglich gewählt, um den Überblick zu behalten. Im Abschnitt 13.3.2 "Intersections of Arbitrary Paths" steht, wie Du vorgehen darfst.

Eduard
Forum-Guru
Forum-Guru
Beiträge: 332
Registriert: Sa 2. Mai 2015, 22:02

Beitrag von Eduard »

Hab es mir angeschaut aber es hilft nicht weiter. Hab versucht es der Vorlage entsprechend so zu ändern, dass der Schnittpunkt in der oberen Abbildung auf der x-Achse der 2. Abbildung abgetragen wird, aber leider bekomme ich das nicht hin.

Code: Alles auswählen

\path [name path=vline] 
    ([xshift=8mm]current bounding box.north) -- 
    ([xshift=8mm]current bounding box.south); 
    
\path [name intersections={of=f1a and vline, by=is f1a vline}];
\path [name intersections={of=f2a and vline, by=is f2a vline}];
\draw [dotted] (is f1a vline) -- (is f2a vline) node [below] {$y^*$};

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2180
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Ich hoffe, das folgende Beispiel ist nicht zu komplex und bringt Dich weiter.

Die Berechnung des Radius im zweiten Diagramm wollte ich erst beim Augenmaß belassen, habe es dann aber doch gewagt, den nicht trivialen Weg aus der Dokumentation zu beschreiten.

Code: Alles auswählen

\documentclass[12pt]{report}
\usepackage{tikz}
\usepackage{amsmath}
\usepackage{showframe}

\usetikzlibrary{intersections,calc}

\begin{document}
\begin{figure}[htbp]
	\centering
	\begin{tikzpicture}[domain=0:6, range=4:5, thick]
	\pgfmathsetlengthmacro{\lengthXaxis}{6cm}
	\pgfmathsetlengthmacro{\lengthYaxis}{5cm}
	\pgfmathsetlengthmacro{\radiusArcFigureOne}{5.5cm}
	
	% erstes Diagramm
	\draw [->] (0,0) -- (0,\lengthYaxis) node[above] {$\pmb{x,\textcolor{cyan}{x_2}}$};
	\draw [->] (0,0) -- (\lengthXaxis,0) node[right] {$\pmb{\textcolor{green}{y}}$};
	
	\draw [name path=f1a] (\radiusArcFigureOne,0) 
	    arc [
	    	start angle=0, 
	    	end angle=90, 
	    	x radius=\radiusArcFigureOne, 
	    	y radius=(3*\radiusArcFigureOne/4)-2mm
		]
	;
	\draw[name path=f1b, thick, color=purple, domain=2.5:8, shift={(-2,.7)}]
	    plot (\x,{25*exp(-.7*\x-.25)+.7}) node[right] {$\bar{u}_2$}
	;
	
	% zweites Diagramm
	\begin{scope}[yshift=-6cm]
	% x-Achse benannt
	\draw [->, name path global=f2xline] (0,0) -- (\lengthXaxis,0) node[right] {$\pmb{y}$};
	\draw [->] (0,0) -- (0,\lengthYaxis) node[above] {$\pmb{x_1}$};
	\end{scope}
	
	% drittes Diagramm
	\begin{scope}[yshift=-12cm]
	\draw [->] (0,0) -- (0,\lengthYaxis) node[above] {$\pmb{x_2}$};
	\draw [->, name path global=f3xline] (0,0) -- (\lengthXaxis,0) node[right] {$\pmb{y}$};
	\draw[name path global=f3a, thick, color=purple, domain=3:5.5, shift={(-.5,-.4)}]
	    plot (\x,{25*exp(-.7*\x-.25)+.7});
	\draw[name path global=f3b, thick, color=purple, domain=3:5.5, shift={(-1.5,-.4)}]
	    plot (\x,{25*exp(-.7*\x-.25)+.7});  
	\draw[name path global=f3c, thick, color=purple, domain=3:5.5, shift={(.5,-.4)}]
	    plot (\x,{25*exp(-.7*\x-.25)+.7});  
	\end{scope}
	
	\path [name intersections={of=f1a and f1b, by={is f1 left, is f1 right}}];
	
	% senkrechte Linie durch den linken Schnittpunkt des ersten Diagramms zeichnen
	\path [name path=left vline]% vertical line
	    (is f1 left) -- 
	    (is f1 left|-current bounding box.south)
	;
	% Schnittpunkt der x-Achse des zweiten Diagramms mit der linken senkrechten Linie berechnen
	\path [name intersections={of=f2xline and left vline, by=is f2xline left vline}];
	
	% linken Schnittpunkt mit der x-Achse des zweiten Diagramms verbinden
	\draw [dotted] (is f1 left) -- (is f2xline left vline);
	
	%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	
	% senkrechte Linie durch den rechten Schnittpunkt des ersten Diagramms zeichnen
	\path [name path=right vline]% s.o.
	    (is f1 right) -- 
	    (is f1 right|-current bounding box.south)
	;
	% Schnittpunkt der x-Achse des zweiten Diagramms mit der rechten senkrechten Linie berechnen
	\path [name intersections={of=f2xline and right vline, by=is f2xline right vline}];
	
	% rechten Schnittpunkt mit der x-Achse des zweiten Diagramms verbinden
	\draw [dotted] (is f1 right) -- (is f2xline right vline);
	
	% Radius für eine halbe Ellipse berechnen
	% Erklärung im Abschnitt 4.1.3 "The Circle Around A"
	% halbe Ellipse im zweiten Diagramm zeichnen
	\draw let
	        \p1 = ($ (is f2xline left vline) - (is f2xline right vline) $),
	        \n2 = {veclen(\x1,\y1)/2}
	      in
	        (is f2xline right vline) 
	            % y radius = 2/3 * x radius
	            arc [start angle=0, end angle=180, x radius=\n2, y radius=2*\n2/3]
			;
	\end{tikzpicture}
	\caption{Samuelson-Regel}
\end{figure}
\end{document}
Zuletzt geändert von Bartman am Mi 11. Dez 2019, 06:04, insgesamt 1-mal geändert.

Eduard
Forum-Guru
Forum-Guru
Beiträge: 332
Registriert: Sa 2. Mai 2015, 22:02

Beitrag von Eduard »

Super! Vielen Dank für deine ausführlichen Kommentare! Ich werde mir alles genau anschauen und versuchen die Vorlage umzusetzen. Nochmals vielen Dank!

Eduard
Forum-Guru
Forum-Guru
Beiträge: 332
Registriert: Sa 2. Mai 2015, 22:02

Beitrag von Eduard »

Code: Alles auswählen

\documentclass[12pt]{report}
\usepackage{tikz}
\usepackage{amsmath}
\usepackage{showframe}

\usetikzlibrary{intersections,calc}

\begin{document}

\begin{figure}[h!] 
\centering 
\begin{tikzpicture}[domain=0:6, range=4:5, thick] 
\pgfmathsetlengthmacro{\lenghtXaxis}{6cm} 
\pgfmathsetlengthmacro{\lenghtYaxis}{5cm} 
\pgfmathsetlengthmacro{\radiusArcFigureOne}{5.5cm} 
    
% erstes Diagramm 
\draw [->] (0,0) -- (0,\lenghtYaxis) node[above] {$\pmb{x,\textcolor{cyan}{x_2}}$}; 
\draw [->] (0,0) -- (\lenghtXaxis,0) node[right] {$\pmb{\textcolor{green}{y}}$}; 
    
\draw [name path=f1a] (\radiusArcFigureOne,0) 
       arc [ 
          start angle=0, 
          end angle=90, 
          x radius=\radiusArcFigureOne, 
          y radius=(3*\radiusArcFigureOne/4)-2mm 
      ] 
; 
\draw[name path=f1b, thick, color=purple, domain=2.5:8, shift={(-2,.7)}] 
       plot (\x,{25*exp(-.7*\x-.25)+.7}) node[right] {$\bar{u}_2$} 
; 
    
% zweites Diagramm 
\begin{scope}[yshift=-6cm] 
% x-Achse benannt 
\draw [->, name path global=f2xline] (0,0) -- (\lenghtXaxis,0) node[right] {$\pmb{y}$}; 
\draw [->] (0,0) -- (0,\lenghtYaxis) node[above] {$\pmb{x_1}$}; 
\draw[name path=f5, thick, color=cyan, domain=4:8, shift={(-2,-.05)}] 
       plot (\x,{15*exp(-.5*\x-.35)+.75}) node[right] {$u^{\ast}_1$};
\path[name intersections={of=f5 and f6}, name=i}];
\end{scope} 
    
% drittes Diagramm 
\begin{scope}[yshift=-12cm] 
\draw [->] (0,0) -- (0,\lenghtYaxis) node[above] {$\pmb{x_2}$}; 
\draw [->, name path global=f3xline] (0,0) -- (\lenghtXaxis,0) node[right] {$\pmb{y}$}; 
\draw[name path global=f3a, thick, color=purple, domain=3:5.5, shift={(-.5,-.4)}] 
       plot (\x,{25*exp(-.7*\x-.25)+.7}); 
\draw[name path global=f3b, thick, color=purple, domain=3:5.5, shift={(-1.5,-.4)}] 
       plot (\x,{25*exp(-.7*\x-.25)+.7});   
\draw[name path global=f3c, thick, color=purple, domain=3:5.5, shift={(.5,-.4)}] 
       plot (\x,{25*exp(-.7*\x-.25)+.7});   
\end{scope} 
    
\path [name intersections={of=f1a and f1b, by={is f1 left, is f1 right}]; 

    
% senkrechte Linie durch den linken Schnittpunkt des ersten Diagramms zeichnen 
\path [name path=left vline]% vertical line 
       (is f1 left) -- 
       (is f1 left|-current bounding box.south) 
;
% Schnittpunkt der x-Achse des zweiten Diagramms mit der linken senkrechten Linie berechnen 
\path [name intersections={of=f2xline and left vline, by=is f2xline left vline}]; 

   
% linken Schnittpunkt mit der x-Achse des zweiten Diagramms verbinden 
\draw [dotted] (is f1 left) -- (is f2xline left vline); 
     
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
    
% senkrechte Linie durch den rechten Schnittpunkt des ersten Diagramms zeichnen 
\path [name path=right vline]% s.o. 
       (is f1 right) -- 
       (is f1 right|-current bounding box.south) 
; 
% Schnittpunkt der x-Achse des zweiten Diagramms mit der rechten senkrechten Linie berechnen 
\path [name intersections={of=f2xline and right vline, by=is f2xline right vline}]; 
    
% rechten Schnittpunkt mit der x-Achse des zweiten Diagramms verbinden 
\draw [dotted] (is f1 right) -- (is f2xline right vline); 
    
% Radius für eine halbe Ellipse berechnen 
% Erklärung im Abschnitt 4.1.3 "The Circle Around A" 
 % halbe Ellipse im zweiten Diagramm zeichnen 
\draw [name path=f6] let 
\p1 = ($ (is f2xline left vline) - (is f2xline right vline) $), 
\n2 = {veclen(\x1,\y1)/2} 
in 
(is f2xline right vline) 
% y radius = 2/3 * x radius 
arc [start angle=0, end angle=180, x radius=\n2, y radius=2*\n2/3] 
; 
\end{tikzpicture} 
\caption{Samuelson-Regel} 
\end{figure}
\end{document}
Nochmals vielen Dank für deine Hilfe.

Ich habe es nun geschafft eine Funktion zeichnen zu lassen, die den Halbkreis im zweiten Diagramm schneidet.

Die Funktion habe ich "f5" genannt und dann versucht den Schnittpunkt zwischen Halbkreis und "f5" zu berechnen. Nun wusste ich aber nicht genau, wie der Halbkreis heißt bzw. ob du ihm bereits einen Namen gegeben hattest. Konnte keinen finden, deshalb gab ich dem Halbkreis den Namen "f6".

Bei der Berechnung der Schnittpunkte erhalte ich aber die Fehlermeldung, dass "f6" nicht bekannt ist.

Meine Idee war, den Schnittpunkt zwischen "f5 und f6" als "i" zu bezeichnen. Doch leider komme ich da nicht weiter.

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2180
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Der Name von f5 muss wegen der scope-Umgebung global sein.

Du versuchst den Schnittpunkt vor der Benennung von f6 zu berechnen.

Im Befehl zur Berechnung des Schnittspunktes von f1a und f1b hast Du eine schließende geschweifte Klammer entfernt.

Du hast im Befehl zur Berechnung des Schnittspunktes von f5 und f6 die schließende geschweifte Klammer zu früh gesetzt. Außerdem benutzt Du dort name statt by.

Nach diesen Berichtigungen wird zwar ein Schnittpunkt berechnet, aber nicht der den Du haben möchtest.
Zuletzt geändert von Bartman am Mi 11. Dez 2019, 14:48, insgesamt 2-mal geändert.

Eduard
Forum-Guru
Forum-Guru
Beiträge: 332
Registriert: Sa 2. Mai 2015, 22:02

Beitrag von Eduard »

Danke! Habe was dazu gelernt. Die Berechnung muss als nach der Bezeichnung stattfinden. Ich glaube, ich habe das jetzt hinbekommen.

Jetzt habe ich aber versucht die gestrichelte Linie zu zeichnen. Ich weiß aber nicht wie der Referenzpunkt ist? Der ist ja (nach oben) Schnittpunkt in Diagramm 2 abgetragen auf die Kurve in Diagramm 1 und (nach unten) auf die Kurve in der Mitte der drei Kurven.

Code: Alles auswählen

\documentclass[12pt]{report}
\usepackage{tikz}
\usepackage{amsmath}
\usepackage{showframe}

\usetikzlibrary{intersections,calc}

\begin{document}

\begin{figure}[h!] 
\centering 
\begin{tikzpicture}[domain=0:6, range=4:5, thick] 
\pgfmathsetlengthmacro{\lenghtXaxis}{6cm} 
\pgfmathsetlengthmacro{\lenghtYaxis}{5cm} 
\pgfmathsetlengthmacro{\radiusArcFigureOne}{5.5cm} 
    
% erstes Diagramm 
\draw [->] (0,0) -- (0,\lenghtYaxis) node[above] {$\pmb{x,\textcolor{cyan}{x_2}}$}; 
\draw [->] (0,0) -- (\lenghtXaxis,0) node[right] {$\pmb{\textcolor{green}{y}}$}; 
    
\draw [name path=f1a] (\radiusArcFigureOne,0) 
       arc [ 
          start angle=0, 
          end angle=90, 
          x radius=\radiusArcFigureOne, 
          y radius=(3*\radiusArcFigureOne/4)-2mm 
      ] 
; 
\draw[name path=f1b, thick, color=purple, domain=2.5:8, shift={(-2,.7)}] 
       plot (\x,{25*exp(-.7*\x-.25)+.7}) node[right] {$\bar{u}_2$} 
; 
    
% zweites Diagramm 
\begin{scope}[yshift=-6cm] 
% x-Achse benannt 
\draw [->, name path global=f2xline] (0,0) -- (\lenghtXaxis,0) node[right] {$\pmb{y}$}; 
\draw [->] (0,0) -- (0,\lenghtYaxis) node[above] {$\pmb{x_1}$}; 
\draw[name path global=f5, thick, color=cyan, domain=4:8, shift={(-2,-.05)}] 
       plot (\x,{15*exp(-.5*\x-.35)+.75}) node[right] {$u^{\ast}_1$};
\end{scope} 
    
% drittes Diagramm 
\begin{scope}[yshift=-12cm] 
\draw [->] (0,0) -- (0,\lenghtYaxis) node[above] {$\pmb{x_2}$}; 
\draw [->, name path global=f3xline] (0,0) -- (\lenghtXaxis,0) node[right] {$\pmb{y}$}; 
\draw[name path global=f3a, thick, color=purple, domain=3:5.5, shift={(-.5,-.4)}] 
       plot (\x,{25*exp(-.7*\x-.25)+.7}); 
\draw[name path global=f3b, thick, color=purple, domain=3:5.5, shift={(-1.5,-.4)}] 
       plot (\x,{25*exp(-.7*\x-.25)+.7});   
\draw[name path global=f3c, thick, color=purple, domain=3:5.5, shift={(.5,-.4)}] 
       plot (\x,{25*exp(-.7*\x-.25)+.7});   
\end{scope} 
    
\path [name intersections={of=f1a and f1b, by={is f1 left, is f1 right}}];

    
% senkrechte Linie durch den linken Schnittpunkt des ersten Diagramms zeichnen 
\path [name path=left vline]% vertical line 
       (is f1 left) -- 
       (is f1 left|-current bounding box.south) 
;
% Schnittpunkt der x-Achse des zweiten Diagramms mit der linken senkrechten Linie berechnen 
\path [name intersections={of=f2xline and left vline, by=is f2xline left vline}]; 

   
% linken Schnittpunkt mit der x-Achse des zweiten Diagramms verbinden 
\draw [dotted] (is f1 left) -- (is f2xline left vline); 
     
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
    
% senkrechte Linie durch den rechten Schnittpunkt des ersten Diagramms zeichnen 
\path [name path=right vline]% s.o. 
       (is f1 right) -- 
       (is f1 right|-current bounding box.south) 
; 
% Schnittpunkt der x-Achse des zweiten Diagramms mit der rechten senkrechten Linie berechnen 
\path [name intersections={of=f2xline and right vline, by=is f2xline right vline}]; 
    
% rechten Schnittpunkt mit der x-Achse des zweiten Diagramms verbinden 
\draw [dotted] (is f1 right) -- (is f2xline right vline); 
    
% Radius für eine halbe Ellipse berechnen 
% Erklärung im Abschnitt 4.1.3 "The Circle Around A" 
 % halbe Ellipse im zweiten Diagramm zeichnen 
\draw [name path=f6] let 
\p1 = ($ (is f2xline left vline) - (is f2xline right vline) $), 
\n2 = {veclen(\x1,\y1)/2} 
in 
(is f2xline right vline) 
% y radius = 2/3 * x radius 
arc [start angle=0, end angle=180, x radius=\n2, y radius=2*\n2/3] 
; 

\path[name intersections={of=f5 and f6, by=is f6}];
\draw [dotted] (is f6} -- (is f1a);
\end{tikzpicture} 
\caption{Samuelson-Regel} 
\end{figure} 

\end{document}

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2180
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Es könnte übrigens der Übersicht dienen, wenn Du nicht mit solchen Anliegen dieses Themas anwachsen lässt, sondern mit einem auf den wesentlichen Teil begrenzten Beispiel ein neues Thema startest.

Der letzte Befehl erzeugt eine Fehlermeldung, da is f1a nie berechnet wurde.

Da Du meine Änderung im letzten Beitrag vermutlich nicht gesehen hast:

Der gewünschte Schnittpunkt wurde nicht berechnet. Für einen optischen Test genügt schon \fill (is f6) circle [radius=3pt];.

Der Punkt dürfte ab dem y-Wert in shift={(-2,-.067) an der richtigen Stelle erscheinen.

Apropos Fehler: In meinem Beitrag in der ersten Stunde des heutigen Tages ist mir ein Tippfehler bei dem englischen Wort für die Länge unterlaufen, den ich dann stur mit kopieren und einfügen vervielfältig habe. :roll: Du musst diesen nicht übernehmen. :wink:

Antworten