PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Text und tikz-Bild ineinander gedruckt - WARUM?



Barny.G
27-01-2012, 19:56
Hallo liebe Leute,

also so langsam verzweifle ich ein bisschen. Ich kann einfach den Fehler nicht finden.

Es wird der Text und die Grafik ineinander gedruckt. Was sol'n das?! :mad:

Hier mal der Code:

%% http://latex.sehnot.de/

%\documentclass [a4paper]{article}
\documentclass{scrreprt}
%\documentclass{scrbook}

\usepackage{geometry}
\geometry{a4paper,left=35mm,right=28mm, top=25mm, bottom=27mm}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage[colorlinks=false, pdfborder={0 0 0}]{hyperref}
\let\mult=\cdot
%\usepackage[squaren,Gray]{SIunits} %SI-Einheiten verwenden!
\usepackage{siunitx}
\let\cdot=\mult
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,positioning,calc,fit }
\usepackage{empheq}
\usepackage{amssymb}
\jot=8pt %regelt den Abstand der Formeln in einer "\align" Umgebung
\usepackage{color}

\usepackage{pgfplots} % für schöne MatLab-Grafiken
\newcommand{\pgfwidth}{.8\linewidth}
\newcommand{\pgfheight}{.6\linewidth}

\usepackage{multirow}
\usepackage{booktabs}

\addto\captionsngerman{
\renewcommand{\figurename}{Abb.}
\renewcommand{\tablename}{Tab.}
}

\usepackage{float} % verursacht Fehler "`\float@addtolists detected"'
\usepackage{scrhack} %beseitigt den Fehler von float
\usepackage{exscale}
\usepackage{floatflt}
\usepackage{caption}
\usepackage{array,blkarray} %für Pfeile an Matrix

\usepackage{pdflscape} %für Querformatseite
%\usepackage{lscape}

%---------------------------------------------------------------------------------------------------------
\def\mathllap{\mathpalette\mathllapinternal} %für schöne passende underbraces
\def\mathllapinternal#1#2{%
\llap{$\mathsurround=0pt#1{#2}$}% $
}
\def\clap#1{\hbox to 0pt{\hss#1\hss}}
\def\mathclap{\mathpalette\mathclapinternal}
\def\mathclapinternal#1#2{%
\clap{$\mathsurround=0pt#1{#2}$}%
}
\def\mathrlap{\mathpalette\mathrlapinternal}
\def\mathrlapinternal#1#2{%
\rlap{$\mathsurround=0pt#1{#2}$}% $
}
%---------------------------------------------------------------------------------------------------------
\usepackage{mathtools}
\makeatletter

\newcommand{\explain}[2]{\underset{\mathclap{\overset{\uparrow}{#2}}}{#1}}
\newcommand{\explainup}[2]{\overset{\mathclap{\underset{\downarrow}{#2}}}{#1 }}

\makeatother
%---------------------------------------------------------------------------------------------------------
\usepackage{natbib}
\bibliographystyle{abbrvnat}
%---------------------------------------------------------------------------------------------------------
\usepackage{arydshln} %für strichellinen in Tabular
%---------------------------------------------------------------------------------------------------------

\setcounter{tocdepth}{4}
\setcounter{secnumdepth}{5}

\usepackage{scrtime}
%Kopf- und Fußzeile
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
%Linie oben
\renewcommand{\headrulewidth}{0pt}
%Fußzeile rechts bzw. außen
\fancyfoot[R]{\today \hspace{1ex} \thistime}
%Linie unten
\renewcommand{\footrulewidth}{0.5pt}

\begin{document}

\subsection{Schematische Rekursion}
\label{sec:SchematischeRekursion}

%%------------- Beginn tikz-Bild -----------------------
\begin{figure}%
\begin{tikzpicture}[node distance = 8ex, auto, transform canvas={scale=0.65,xshift=0.15\textwidth}]
%beachte: mit dem tool transform canvas= kann die Zeichnung skaliert werden, xshift= ist notwendig, da bei der Skalierung zunächst die Nullpunktkoordinaten verloren gehen...
% Define block styles
\tikzstyle{decision} = [diamond, draw, fill=red!15, text width=4.5em, text badly centered, node distance=15ex, inner sep=0pt]
\tikzstyle{block} = [rectangle, draw, fill=blue!25, node distance=15ex, text centered, rounded corners, text width=25ex, minimum height=5ex]
\tikzstyle{block2} = [rectangle, draw, fill=blue!15, node distance=15ex, text centered, rounded corners, text width=25ex, minimum height=5ex]
\tikzstyle{line} = [draw, -latex]
\tikzstyle{cloud} = [draw, rectangle,fill=green!20, node distance=25ex, minimum height=5ex, rounded corners]
% Place nodes
\node [block] (init) {Modellinitialisierung mit $\widehat{\boldsymbol{x}}, \rho$};
\node [block, below of=init, node distance=10ex] (Gx) {$\begin{matrix} \boldsymbol{Gx}_i=\boldsymbol{d} - f\left(\widehat{\boldsymbol{x}}_i\right) \\
\boldsymbol{J}_i = \frac{\partial f_{i}}{\partial x_j}
\end{matrix}$};
\node [block, below of=Gx] (Lambda) {Berechnung des Langrange-Faktors $\lambda_i$ mit dem Hebden-Verfahren};
\node[left=15ex of Lambda] (dummy) {};
\node [cloud, above of=dummy, node distance=5ex] (Rho) {$\rho_i, \boldsymbol{J}_i$};
\node [cloud, below of=dummy, node distance=5ex] (LambdaRho)
{$\begin{matrix}
\lambda_i \\
\text{ggf. } \rho_i
\end{matrix}$};

\node [block, below of=Lambda] (dx) {Berechnung des Modellupdates $d\widehat{\boldsymbol{x}}_i = f\left(\boldsymbol{J}_i,\lambda_i,\boldsymbol{I},\ boldsymbol{Gx}_i\right)$};
\node [block, below of=dx] (AGK) {$\mu$-Test mit dem Armijo-Goldstein-Kriterium $f\left(d\widehat{\boldsymbol{x}}_i, \boldsymbol{J}_i, \boldsymbol{Gx}_i\right)$};

\node [decision, below of=AGK] (decide) {$\mu_i < 0.25$};
\node [block, below of=decide] (update) {$\widehat{\boldsymbol{x}}_{i+1} = \widehat{\boldsymbol{x}}_i + d\widehat{\boldsymbol{x}}_i$};
\node [block, right of=decide, node distance=18ex, text width=8ex] (RhoUpdate) {$\rho_i = \frac{\rho_i}{2}$};
\node [decision, below of=update, node distance=15ex, text width=11ex] (Abbruchbed) {Abbruch\-bedingung erreicht?};
\node [cloud, below of=Abbruchbed, node distance=20ex] (Ende) {Ende};

\node [decision, right of=Abbruchbed, node distance=31ex] (MuGross) {$\mu_i > 0.75$};
\node [block, right of=RhoUpdate, node distance=13ex, text width=9ex] (RhoUpdate2) {$\rho_i = 2 \rho_i$};

% Draw edges
\path [line] (init) -- (Gx); %
\path [line] (Gx) -- (Lambda) coordinate[midway] (between_Gx_Lambda);
\path [line] (Lambda) -- (Rho);
\path [line] (LambdaRho) -- (Lambda);
\path [line] (Lambda) -- (dx);
\path [line] (dx) -- (AGK);
\path [line] (AGK) -- (decide);
\path [line] (decide) -- node {nein} (update);
\path [line] (decide) -- node {ja} (RhoUpdate);

\path [line] (RhoUpdate) |- (between_Gx_Lambda);

\path [line] (update) -- (Abbruchbed);
\path [line] (Abbruchbed) -- node {ja} (Ende);
\path [line] (Abbruchbed) -- node {nein} (MuGross);
\path [line] (MuGross) -- node {ja} (RhoUpdate2);
\path [line] (RhoUpdate2) |- (Gx);
\path [line] (MuGross) --node{nein} ($(MuGross)+(13ex,0)$) |- (Gx);

% Hebden-Verfahren
\node [block2, left of=Gx, node distance = 64ex] (init2) {Initialisierung mit $\boldsymbol{J}_i, \rho_i$};
\node [block2, below of=init2] (JTJ) {Eigenwerte und Ei\-gen\-vek\-to\-ren von $\boldsymbol{J}_i^\top \boldsymbol{J}_i$ berechnen};
\node [decision, below of=JTJ, node distance = 18ex] (TestRho) {$r\left(0\right) > \rho_i$};
\node [block2, below of=TestRho] (CalcLambda) {Iteration von $\lambda_i$};
\node [block2, right of=TestRho, text width=12ex, node distance = 20ex] (Rho2) {$\rho_i=\frac{\rho_i}{2}$};

\path [line] (init2) -- (JTJ);
\path [line] (JTJ) -- (TestRho);
\path [line] (TestRho) -- node {ja} (CalcLambda);
\path [line] (TestRho) -- node {nein} (Rho2);
\path [line] (JTJ) -- (TestRho) coordinate[midway] (mid);
\path [line] (Rho2) |- (mid);

\path [line] (Rho) |- (init2);
\path [line] (CalcLambda) -| (LambdaRho) ;

%Rahmen um Hebden
\node[draw=red!30!green!40!blue, dashed, fit=(init2) (JTJ) (TestRho) (CalcLambda) (Rho2)] (box) {};
\node[red!30!green!40!blue, above] at (box.north) {Hebden-Verfahren};

\end{tikzpicture}\end{figure}
%% ----------- Ende tikz-Bild -----------------------

\begin{enumerate}
\setcounter{enumi}{-1}
\item Im ersten Iterationsschritt ist der Startwert der Iteration $\boldsymbol{x}_0$ festzulegen. Zusätzlich wird auch ein erster trust region Radius $\rho$ benötigt.
\item Mit diesem Startwert kann nun der eigentlich erste, "`echte"' Iterationsschritt berechnet werden.
\begin{itemize}
\item k=1
\item $\boldsymbol{J}_0 = f'\left(\boldsymbol{x}_0\right)$
\item Berechnung des $\lambda_1$ mittels des Hebden-Verfahrens
\item $F\left(\boldsymbol{x}_1\right) = \boldsymbol{d} - f\left(\boldsymbol{x}_0\right) - \boldsymbol{J}_0 \Delta \boldsymbol{x}_{0} = \boldsymbol{d} - f\left(\boldsymbol{x}_0\right) - \boldsymbol{J}_0 \left(\boldsymbol{J}_0^\top \boldsymbol{J}_0 + \lambda_0 \boldsymbol{I} \right)^{-1} \boldsymbol{J}_0^\top \left(\boldsymbol{d} - \boldsymbol{d}_0 \right) $
\item $F'\left(\boldsymbol{x}_1\right) = - \boldsymbol{J}_0$
\item $\Delta \boldsymbol{x}_0 = \left(\boldsymbol{J}_0^\top \boldsymbol{J}_0 + \lambda_0 \boldsymbol{I} \right)^{-1} \boldsymbol{J}_0^\top \left(\boldsymbol{d} - \boldsymbol{d}_0 \right)$
\item $\mu$-Test durchführen und ggf. $\rho$ und dann $\lambda$ anpassen \\[1ex]
$\mu_1 = \frac{1}{2} \frac{\left\|\left(\boldsymbol{d} - \boldsymbol{d}_{0}\right)\right\|_2^2 - \left\| \left(\boldsymbol{d} - \boldsymbol{d}_{0} - \boldsymbol{J}_{0} \Delta \boldsymbol{x}_{0} \right) \right\|_2^2}{\Delta \boldsymbol{x}_{0}^\top \boldsymbol{J}_{0}^\top \left(\boldsymbol{d} - \boldsymbol{d}_{0}\right)}$
\end{itemize}
\item Nun können die Werte der vorangegangenen Iteration verwendet werden. Insbesondere das $\rho$ und damit das $\lambda$ müssen nicht neu geschätzt werden. Sie werden zunächst einfach aus "`k=1"' übernommen. Ob sie tatsächlich den Anforderungen der zweiten Iteration genügen, kann mit der Testgröße $\mu$ (Armijo-Goldstein-Kriterium) geprüft werden.
\begin{itemize}
\item k=2
\item zunächst $\rho_2=\rho_1$, $\lambda_2=\lambda_1$
\item $F\left(\boldsymbol{x}_2\right) = \boldsymbol{d} - f\left(\boldsymbol{x}_1\right) - \boldsymbol{J}_1 \left(\boldsymbol{J}_1^\top \boldsymbol{J}_1 + \lambda_1 \boldsymbol{I} \right)^{-1} \boldsymbol{J}_1^\top \left(\boldsymbol{d} - \boldsymbol{d}_1 \right) $, wobei $\boldsymbol{d}_1=f\left(\boldsymbol{x}_1\right)$ wie oben schon berechnet.
\item $F'\left(\boldsymbol{x}_2\right) = - \boldsymbol{J}_1$
\item $\Delta \boldsymbol{x}_1 = \left(\boldsymbol{J}_1^\top \boldsymbol{J}_1 + \lambda_1 \boldsymbol{I} \right)^{-1} \boldsymbol{J}_1^\top \left(\boldsymbol{d} - \boldsymbol{d}_1 \right)$
\item $\mu$-Test durchführen und ggf. $\rho$ und dann $\lambda$ anpassen
\end{itemize}
\end{enumerate}


\end{document}


Die PDF kann ich leider nicht anhängen (>100kB) bitte einfach mal kompilieren... ;)

Kann jemand helfen?

Viele Grüße

Thoams

Stefan_K
27-01-2012, 21:11
Hallo Thomas,

Du könntest das Bild statt des canvas skalieren, dann passiert es nicht:


\begin{tikzpicture}[node distance = 8ex, auto,
scale=0.7, transform shape, xshift=0.15\textwidth]
...

Stefan

Barny.G
28-01-2012, 10:59
Hallo Stefan,

Problem gelöst! Danke.

Ich habe "ewig" nach dem Fehler gesucht, und als ich jetzt das mit "canvas" gelesen hatte, dachte ich: "na klar, das war ds letzte, was ich an der Grafik geändert hatte."

Das canvas ist also für meine Zwecke ein wenig ungeeignet...

Da müsste ich diesen Link von hier mal in dem anderen Thema einfügen, damit andere auch Hilfe finden.

Vielen Dank für Deine Zeit!

Thomas