commit 90d3311e7d9107b0e132825bc49beda6a2922d50 Author: Sven Riwoldt Date: Wed Mar 11 07:08:36 2026 +0100 first commit diff --git a/10_1.png b/10_1.png new file mode 100644 index 0000000..81b4a6a Binary files /dev/null and b/10_1.png differ diff --git a/10_2.png b/10_2.png new file mode 100644 index 0000000..eff29d3 Binary files /dev/null and b/10_2.png differ diff --git a/10_3.png b/10_3.png new file mode 100644 index 0000000..32008b9 Binary files /dev/null and b/10_3.png differ diff --git a/10_4.png b/10_4.png new file mode 100644 index 0000000..e527a66 Binary files /dev/null and b/10_4.png differ diff --git a/10_5.png b/10_5.png new file mode 100644 index 0000000..f43074c Binary files /dev/null and b/10_5.png differ diff --git a/10_6.png b/10_6.png new file mode 100644 index 0000000..f8ee023 Binary files /dev/null and b/10_6.png differ diff --git a/10_7..png b/10_7..png new file mode 100644 index 0000000..f6133db Binary files /dev/null and b/10_7..png differ diff --git a/11.png b/11.png new file mode 100644 index 0000000..f886a5a Binary files /dev/null and b/11.png differ diff --git a/LA01.png b/LA01.png new file mode 100644 index 0000000..7e7fb4a Binary files /dev/null and b/LA01.png differ diff --git a/LA02.png b/LA02.png new file mode 100644 index 0000000..4731e64 Binary files /dev/null and b/LA02.png differ diff --git a/LA03.png b/LA03.png new file mode 100644 index 0000000..8451159 Binary files /dev/null and b/LA03.png differ diff --git a/LA04.png b/LA04.png new file mode 100644 index 0000000..9f0ec36 Binary files /dev/null and b/LA04.png differ diff --git a/Pearson0001.pgf b/Pearson0001.pgf new file mode 100644 index 0000000..29d0618 --- /dev/null +++ b/Pearson0001.pgf @@ -0,0 +1,14 @@ +\begin{tikzpicture} +\usetikzlibrary{plotmarks} +\draw[color=gray, thin] (-3,0) -- (3,0); +%http://tex.stackexchange.com/questions/64567/how-to-draw-circle-square-and-triangle-marks-in-tikz-picture + +\draw[color=blue!50, ultra thick] (-1.4625,0) -- (1.4625,0); +%\node[mark size=2.5pt,color=blue!50, fill=none] at (-1.5,0) {\pgfuseplotmark{*}}; +%\node[mark size=2.5pt,color=blue!50] at (1.5,0) {\pgfuseplotmark{*}}; + +\draw[fill=blue!50,color=blue!50, ultra thick] (-1.5, 0) circle (.075); +\draw[fill=blue!50,color=blue!50, ultra thick] (1.5, 0) circle (.075); +\node[color=blue!50,] at (-1.5,0.35) {\textbf{a}}; +\node[color=blue!50] at (1.5,0.35) {\textbf{b}}; +\end{tikzpicture} \ No newline at end of file diff --git a/Pearson0001.tikz b/Pearson0001.tikz new file mode 100644 index 0000000..8d31e34 --- /dev/null +++ b/Pearson0001.tikz @@ -0,0 +1,14 @@ +++++\begin{tikzpicture} +\usetikzlibrary{plotmarks} +\draw[color=gray, thick] (-3,0) -- (3,0); +%http://tex.stackexchange.com/questions/64567/how-to-draw-circle-square-and-triangle-marks-in-tikz-picture + +\draw[color=blue!50, ultra thick] (-1.4625,0) -- (1.4625,0); +%\node[mark size=2.5pt,color=blue!50, fill=none] at (-1.5,0) {\pgfuseplotmark{*}}; +%\node[mark size=2.5pt,color=blue!50] at (1.5,0) {\pgfuseplotmark{*}}; + +\draw[color=blue!50, ultra thick] (-1.5, 0) circle (.075); +\draw[color=blue!50, ultra thick] (1.5, 0) circle (.075); +\node[color=blue!50] at (-1.5,0.35) {A}; +\node[color=blue!50] at (1.5,0.35) {B}; +\end{tikzpicture} \ No newline at end of file diff --git a/Pearson0002.pgf b/Pearson0002.pgf new file mode 100644 index 0000000..b9d4082 --- /dev/null +++ b/Pearson0002.pgf @@ -0,0 +1,14 @@ +\begin{tikzpicture} +\usetikzlibrary{plotmarks} +\draw[color=gray, thin] (-3,0) -- (3,0); +%http://tex.stackexchange.com/questions/64567/how-to-draw-circle-square-and-triangle-marks-in-tikz-picture + +\draw[color=blue!50, ultra thick] (-1.4625,0) -- (1.4625,0); +%\node[mark size=2.5pt,color=blue!50, fill=none] at (-1.5,0) {\pgfuseplotmark{*}}; +%\node[mark size=2.5pt,color=blue!50] at (1.5,0) {\pgfuseplotmark{*}}; + +\draw[color=blue!50, ultra thick] (-1.5, 0) circle (.075); +\draw[color=blue!50, ultra thick] (1.5, 0) circle (.075); +\node[color=blue!50,] at (-1.5,0.35) {\textbf{a}}; +\node[color=blue!50] at (1.5,0.35) {\textbf{b}}; +\end{tikzpicture} \ No newline at end of file diff --git a/Pearson0003.pgf b/Pearson0003.pgf new file mode 100644 index 0000000..fd0e536 --- /dev/null +++ b/Pearson0003.pgf @@ -0,0 +1,14 @@ +\begin{tikzpicture} +\usetikzlibrary{plotmarks} +\draw[color=gray, thin] (-3,0) -- (3,0); +%http://tex.stackexchange.com/questions/64567/how-to-draw-circle-square-and-triangle-marks-in-tikz-picture + +\draw[color=blue!50, ultra thick] (-1.4625,0) -- (1.4625,0); +%\node[mark size=2.5pt,color=blue!50, fill=none] at (-1.5,0) {\pgfuseplotmark{*}}; +%\node[mark size=2.5pt,color=blue!50] at (1.5,0) {\pgfuseplotmark{*}}; + +\draw[fill=blue!50,color=blue!50, ultra thick] (-1.5, 0) circle (.075); +\draw[color=blue!50, ultra thick] (1.5, 0) circle (.075); +\node[color=blue!50] at (-1.5,0.35) {\textbf{a}}; +\node[color=blue!50] at (1.5,0.35) {\textbf{b}}; +\end{tikzpicture} \ No newline at end of file diff --git a/Pearson0004.pgf b/Pearson0004.pgf new file mode 100644 index 0000000..888219e --- /dev/null +++ b/Pearson0004.pgf @@ -0,0 +1,14 @@ +\begin{tikzpicture} +\usetikzlibrary{plotmarks} +\draw[color=gray, thin] (-3,0) -- (3,0); +%http://tex.stackexchange.com/questions/64567/how-to-draw-circle-square-and-triangle-marks-in-tikz-picture + +\draw[color=blue!50, ultra thick] (-1.4625,0) -- (1.4625,0); +%\node[mark size=2.5pt,color=blue!50, fill=none] at (-1.5,0) {\pgfuseplotmark{*}}; +%\node[mark size=2.5pt,color=blue!50] at (1.5,0) {\pgfuseplotmark{*}}; + +\draw[color=blue!50, ultra thick] (-1.5, 0) circle (.075); +\draw[fill=blue!50,color=blue!50, ultra thick] (1.5, 0) circle (.075); +\node[color=blue!50] at (-1.5,0.35) {\textbf{a}}; +\node[color=blue!50] at (1.5,0.35) {\textbf{b}}; +\end{tikzpicture} \ No newline at end of file diff --git a/Teilmengen.png b/Teilmengen.png new file mode 100644 index 0000000..832b4e3 Binary files /dev/null and b/Teilmengen.png differ diff --git a/VektorenInEbeneVeranschaulichung01.eps b/VektorenInEbeneVeranschaulichung01.eps new file mode 100644 index 0000000..9510665 --- /dev/null +++ b/VektorenInEbeneVeranschaulichung01.eps @@ -0,0 +1,2658 @@ +%!PS-Adobe-2.0 +%%Creator: dvips(k) 5.94b Copyright 2004 Radical Eye Software +%%Title: F:/MathematikFHTW/2dgrafiken/2dgrafiken.dvi +%%CreationDate: Wed May 31 12:35:52 2006 +%%Pages: 1 +%%PageOrder: Ascend +%%BoundingBox: 0 0 595 842 +%%DocumentFonts: CMR10 CMMI10 CMR7 +%%DocumentPaperSizes: a4 +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: C:\texmf\MiKTeX\bin\dvips.exe -P pdf +%+ F:/MathematikFHTW/2dgrafiken/2dgrafiken.dvi +%DVIPSParameters: dpi=8000 +%DVIPSSource: TeX output 2006.05.31:1235 +%%BeginProcSet: tex.pro 0 0 +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 +mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 +0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ +landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize +mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ +matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round +exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ +statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] +N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin +/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array +/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N +df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S +/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy +setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask +restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put +}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ +bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A +mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ +SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ +userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X +1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N +/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ +/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) +(LaserWriter 16/600)]{A length product length le{A length product exch 0 +exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse +end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask +grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} +imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round +exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto +fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p +delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} +B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ +p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S +rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end + +%%EndProcSet +%%BeginProcSet: alt-rule.pro 0 0 +%! +% Patch by TVZ +% Makes dvips files draw rules with stroke rather than fill. +% Makes narrow rules more predictable at low resolutions +% after distilling to PDF. +% May have unknown consequences for very thick rules. +% Tested only with dvips 5.85(k). +TeXDict begin +/QV { + gsave newpath /ruleY X /ruleX X + Rx Ry gt + { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry } + { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx } + ifelse + setlinewidth 0 setlinecap stroke grestore +} bind def +end + +%%EndProcSet +%%BeginProcSet: pstricks.pro 0 0 +%! +% PostScript prologue for pstricks.tex. +% Version 1.00, 2005/09/18 +% For distribution, see pstricks.tex. +% +/tx@Dict 200 dict def tx@Dict begin +/ADict 25 dict def +/CM { matrix currentmatrix } bind def +/SLW /setlinewidth load def +/CLW /currentlinewidth load def +/CP /currentpoint load def +/ED { exch def } bind def +/L /lineto load def +/T /translate load def +/TMatrix { } def +/RAngle { 0 } def +/Atan { /atan load stopped { pop pop 0 } if } def +/ATAN1 {neg -1 atan 180 sub } def % atan(x) (only one parameter) +/Div { dup 0 eq { pop } { div } ifelse } def % control the division +/NET { neg exch neg exch T } def % change coordinate system to the negative one +/Pyth { dup mul exch dup mul add sqrt } def % Pythagoras, epects 2 parameter +/PtoC { 2 copy cos mul 3 1 roll sin mul } def % Polar to Cartesian +%----------------- hv added 20050516 --------------- +/Pi 3.14159265359 def +/TwoPi 6.28318530718 def +/Euler 2.71828182846 def +/RadtoDeg { 180 mul Pi div } def % convert from radian to degrees +/DegtoRad { Pi mul 180 div } def % viceversa +%----------------- hv end--------------------------- +/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def } def +/PathLength { flattenpath /z 0 def + { /y1 ED /x1 ED /y2 y1 def /x2 x1 def + }{ /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ } + /pathforall load stopped { pop pop pop pop } if z } def +/STP { .996264 dup scale } def +/STV { SDict begin normalscale end STP } def +% +%%-------------- DG begin patch 15 ---------------%% +%/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def +%PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y +%mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul +%/y ED x mul /x ED x 0 gt y 0 gt and { [ y x ] 1 a sub y mul } { [ 1 0 ] +%0 } ifelse setdash stroke } def +/DashLine { + dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def PathLength } ifelse + /b ED /x1 ED /y1 ED /x ED /y ED + /z y x add y1 add x1 add def + /Coef b a .5 sub 2 mul y mul sub z Div round + z mul a .5 sub 2 mul y mul add b exch Div def + /y y Coef mul def + /x x Coef mul def + /y1 y1 Coef mul def + /x1 x1 Coef mul def + x1 0 gt y1 0 gt or x 0 gt or y 0 gt and + { [ y x y1 x1 ] 1 a sub y mul } + { [ 1 0 ] 0 } ifelse + setdash stroke +} def +%%-------------- DG end patch 15 ---------------%% +/DotLine { + /b PathLength def + /a ED /z ED /y CLW def + /z y z add def + a 0 gt { + /b b a div def + }{ + a 0 eq { + /b b y sub def + }{ a -3 eq { + /b b y add def } if + } ifelse + } ifelse + [ 0 b b z Div round Div dup 0 le { pop 1 } if ] + a 0 gt { 0 }{ y 2 div a -2 gt { neg }if } ifelse + setdash 1 setlinecap stroke +} def +% +/LineFill { % hv ------------ patch 7 ------------- + gsave + abs /hatchWidthInc ED + abs /hatchSepInc ED + abs CLW add /a ED + a 0 dtransform round exch round exch + 2 copy idtransform + exch Atan rotate + idtransform pop /a ED + .25 .25 itransform pathbbox + /y2 ED + a Div ceiling cvi /x2 ED /y1 ED + a Div cvi /x1 ED /y2 y2 y1 sub def + clip + newpath + 2 setlinecap + systemdict + /setstrokeadjust known { true setstrokeadjust } if + x2 x1 sub 1 add { + x1 a mul y1 moveto 0 y2 rlineto stroke + /x1 x1 1 add + hatchWidthInc 0 gt { CLW add } if + def + hatchSepInc 0 gt hatchWidthInc 0 gt or { + /a a hatchSepInc add def + CLW hatchWidthInc add SLW + } if + } repeat + grestore + pop pop } def +% +%gsave abs CLW add /a ED a 0 dtransform round exch round exch +%2 copy idtransform exch Atan rotate idtransform pop /a ED .25 .25 +%% DG/SR modification begin - Dec. 12, 1997 - Patch 2 +%%itransform translate pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a +%itransform pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a +%% DG/SR modification end +%Div cvi /x1 ED /y2 y2 y1 sub def clip newpath 2 setlinecap systemdict +%/setstrokeadjust known { true setstrokeadjust } if x2 x1 sub 1 add { x1 +%% DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis) +%% a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore } +%% def +%a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore +%pop pop } def +%% DG/SR modification end +% +/BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg +exch 3 index sub exch Atan rotate newpath } def +/EndArrow { @mtrx setmatrix CP grestore end } def +/Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1 +scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill +grestore } def +/Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0 +CLW moveto } def +/Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2 +div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0 +CLW moveto } def +/RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW +2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0 +curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto } +def +/SD { 0 360 arc fill } def +/EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS +CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def +/Shadow { [ { /moveto load } { /lineto load } { /curveto load } { +/closepath load } /pathforall load stopped { pop pop pop pop CP /moveto +load } if ] cvx newpath 3 1 roll T exec } def +/NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch +cvi def } def +/NArray { % holds the coordinates and on top of stack the showpoints boolean + /f ED + counttomark 2 div dup cvi /n ED + n eq not { exch pop } if + f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse +} def +/Line { + NArray n 0 eq not + { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub def + n { Lineto } repeat + CP 4 2 roll ArrowB L pop pop + } if +} def +/Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 } + ifelse { pop } repeat a } def +/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq + and { pop pop /n n 1 sub def } if } def +/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop } + repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1 + ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1 + moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto + Lineto pop pop closepath } ifelse } def +/Diamond { + /mtrx CM def + T rotate + /h ED + /w ED + dup 0 eq { pop } { CLW mul neg + /d ED + /a w h Atan def + /h d a sin Div h add def + /w d a cos Div w add def } ifelse + mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2 div + /ArrowA { moveto } def + /ArrowB { } def + false Line + closepath mtrx setmatrix } def +% DG modification begin - Jan. 15, 1997 +%/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup 0 eq { +%pop } { CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2 +%div dup cos exch sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d 0 +%d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx +%setmatrix } def +/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup +CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2 +div dup cos exch sin Div mul sub def mark 0 d w neg d 0 h w d 0 +d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx +% DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis) +% setmatrix } def +setmatrix pop } def +% DG/SR modification end +/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth +def } def +/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth +def } def +/CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1 +def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp +mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos +abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def +/y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul +m mul neg def } def +/IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if } +ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def } +def +/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def +/NC { CC x1 y1 x2 y2 x y curveto } def +/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def +/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def +/NAC { x2 y2 x y curveto CC x1 y1 } def +/EAC { x2 y2 x y ArrowB curveto pop pop } def +/OpenCurve { + NArray n 3 lt + { n { pop pop } repeat } + { BOC /n n 3 sub def n { NC } repeat EOC } ifelse +} def +/AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload +/Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop +pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def +/ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt { +CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC } +repeat closepath pop pop } ifelse } def +/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def +/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def +/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore } +def +/FontDot { DS 2 mul dup matrix scale matrix concatmatrix exch matrix +rotate matrix concatmatrix exch findfont exch makefont setfont } def +/Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto +x1 y1 lineto closepath } def +/OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1 +y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div +exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse +/b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto +x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath } +ifelse } def +/Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add +/y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq { +pop pop Rect } { OvalFrame } ifelse } def +/BezierNArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop +} if n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat f { ] +aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def +/OpenBezier { BezierNArray n 1 eq { pop pop } { ArrowA n 4 sub 3 idiv { 6 +2 roll 4 2 roll curveto } repeat 6 2 roll 4 2 roll ArrowB curveto } +ifelse } def +/ClosedBezier { BezierNArray n 1 eq { pop pop } { moveto n 1 sub 3 idiv { +6 2 roll 4 2 roll curveto } repeat closepath } ifelse } def +/BezierShowPoints { gsave Points aload length 2 div cvi /n ED moveto n 1 +sub { lineto } repeat CLW 2 div SLW [ 4 4 ] 0 setdash stroke grestore } +def +/Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1 +sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA +x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0 +y0 x0 2 mul x1 sub y1 ] def } def +/Grid { newpath /a 4 string def /b ED /c ED /n ED cvi dup 1 lt { pop 1 } +if /s ED s div dup 0 eq { pop 1 } if /dy ED s div dup 0 eq { pop 1 } if +/dx ED dy div round dy mul /y0 ED dx div round dx mul /x0 ED dy div +round cvi /y2 ED dx div round cvi /x2 ED dy div round cvi /y1 ED dx div +round cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def /w x2 x1 sub +0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2 div add def +/Helvetica findfont b scalefont setfont /b b .95 mul CLW 2 div add def } +if systemdict /setstrokeadjust known { true setstrokeadjust /t { } def } +{ /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add +exch itransform } bind def } ifelse gsave n 0 gt { 1 setlinecap [ 0 dy n +div ] dy n div 2 div setdash } { 2 setlinecap } ifelse /i x1 def /f y1 +dy mul n 0 gt { dy n div 2 div h mul sub } if def /g y2 dy mul n 0 gt { +dy n div 2 div h mul add } if def x2 x1 sub w mul 1 add dup 1000 gt { +pop 1000 } if { i dx mul dup y0 moveto b 0 gt { gsave c i a cvs dup +stringwidth pop /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse h 0 gt {b neg} +{z1} ifelse rmoveto show grestore } if dup t f moveto g t L stroke /i i +w add def } repeat grestore gsave n 0 gt +% DG/SR modification begin - Nov. 7, 1997 - Patch 1 +%{ 1 setlinecap [ 0 dx n div ] dy n div 2 div setdash } +{ 1 setlinecap [ 0 dx n div ] dx n div 2 div setdash } +% DG/SR modification end +{ 2 setlinecap } ifelse /i y1 def /f x1 dx mul +n 0 gt { dx n div 2 div w mul sub } if def /g x2 dx mul n 0 gt { dx n +div 2 div w mul add } if def y2 y1 sub h mul 1 add dup 1000 gt { pop +1000 } if { newpath i dy mul dup x0 exch moveto b 0 gt { gsave c i a cvs +dup stringwidth pop /z2 ED w 0 gt {z1 z2 add neg} {z1} ifelse h 0 gt +{z1} {b neg} ifelse rmoveto show grestore } if dup f exch t moveto g +exch t L stroke /i i h add def } repeat grestore } def +/ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0 +1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add +exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c +mul neg d } def +/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def +% +/ArcAdjust { +% given a target length (targetLength) and an initial angle (angle0) [in the stack], +% let M(angle0)=(rx*cos(angle0),ry*sin(angle0))=(x0,y0). +% This computes an angle t such that (x0,y0) is at distance targetLength from the point M(t)=(rx*cos(t),ry*sin(t)). +% NOTE: this an absolute angle, it does not have to be added or substracted to angle0 +% contrary to TvZ's code. +% To achieve, this, one iterates the following process: start with some angle t, +% compute the point M' at distance targetLength of (x0,y0) on the semi-line [(x0,y0) M(t)]. +% Now take t' (= new angle) so that (0,0) M(t') and M' are aligned. +% +% Another difference with TvZ's code is that we need d (=add/sub) to be defined. +% the value of d = add/sub is used to know on which side we have to move. +% It is only used in the initialisation of the angle before the iteration. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Input stack: 1: target length 2: initial angle +% variables used : rx, ry, d (=add/sub) +% + /targetLength ED /angle0 ED + /x0 rx angle0 cos mul def + /y0 ry angle0 sin mul def +% we are looking for an angle t such that (x0,y0) is at distance targetLength from the point M(t)=(rx*cos(t),ry*sin(t))) +%initialisation of angle (using 1st order approx = TvZ's code) + targetLength 57.2958 mul + angle0 sin rx mul dup mul + angle0 cos ry mul dup mul + add sqrt div +% if initialisation angle is two large (more than 90 degrees) set it to 90 degrees +% (if the ellipse is very curved at the point where we draw the arrow, the value can be much more than 360 degrees !) +% this should avoid going on the wrong side (more than 180 degrees) or go near +% a bad attractive point (at 180 degrees) + dup 90 ge { pop 90 } if + angle0 exch d +% maximum number of times to iterate the iterative procedure: + 30 +% iterative procedure: takes an angle t on top of stack, computes a better angle (an put it on top of stack) + { dup +% compute distance D between (x0,y0) and M(t) + dup cos rx mul x0 sub dup mul exch sin ry mul y0 sub dup mul add sqrt +% if D almost equals targetLength, we stop + dup targetLength sub abs 1e-5 le { pop exit } if +% stack now contains D t +% compute the point M(t') at distance targetLength of (x0,y0) on the semi-line [(x0,y0) M(t)]: +% M(t')= ( (x(t)-x0)*targetLength/d+x0 , (y(t)-y0)*targetLength/d+y0 ) + exch dup cos rx mul x0 sub exch sin ry mul y0 sub +% stack contains: y(t)-y0, x(t)-x0, d + 2 index Div targetLength mul y0 add ry Div exch + 2 index Div targetLength mul x0 add rx Div +% stack contains x(t')/rx , y(t')/ry , d +% now compute t', and remove D from stack + atan exch pop + } repeat +% we don't look at what happened... in particular, if targetLength is greater than the diameter of the ellipse... +% the final angle will be around /angle0 + 180. maybe we should treat this pathological case... +%after iteration, stack contains an angle t such that M(t) is the tail of the arrow +% to give back the result as a an angle relative to angle0 we could add the following line: +% angle0 sub 0 exch d +% +} def +% +/EllipticArcArrow { + /d ED % add/sub + /b ED % arrow procedure + /a1 ED % angle + gsave + newpath + 0 -1000 moveto + clip % Set clippath far from arrow. + newpath + 0 1 0 0 b % Draw arrow to determine length. + grestore +% Length of arrow is on top of stack. Next 3 numbers are junk. +% + a1 exch ArcAdjust % Angular position of base of arrow. + /a2 ED + pop pop pop + a2 cos rx mul x add + a2 sin ry mul y add + a1 cos rx mul x add + a1 sin ry mul y add +% Now arrow tip coor and base coor are on stack. + b pop pop pop pop % Draw arrow, and discard coordinates. + a2 CLW 8 div +% change value of d (test it by looking if `` 1 1 d '' gives 2 or not ) + 1 1 d 2 eq { /d { sub } def } { /d { add } def } ifelse + ArcAdjust +% resets original value of d + 1 1 d 2 eq { /d { sub } def } { /d { add } def } ifelse % Adjust angle to give overlap. +} def +%%------------------ tvz/DG/hv (2004-05-10) end -------------------%% +% +/Rot { CP CP translate 3 -1 roll neg rotate NET } def +/RotBegin { tx@Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 } +def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot /RAngle [ RAngle +dup a add ] cvx def } def +/RotEnd { /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle pop ] +cvx def } def +/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def +/PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def +/PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def +/Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s +abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b +div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } { +h1 abs h sub dup s mul abs } ifelse } def +/UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s +mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q +{ x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add +exch } def +/BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { Visible +/IfVisible true def } if } { IfVisible { Invisible /IfVisible false def +} if } ifelse } def +/InitOL { /OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def +/Visible { CP OLUnit idtransform T moveto } def /Invisible { CP OLUnit +neg exch neg exch idtransform T moveto } def /BOL { BeginOL } def +/IfVisible true def } def +end +% END pstricks.pro + +%%EndProcSet +%%BeginProcSet: pst-dots.pro 0 0 +%!PS-Adobe-2.0 +%%Title: Dot Font for PSTricks +%%Creator: Timothy Van Zandt +%%Creation Date: May 7, 1993 +%% Version 97 patch 1, 99/12/16 +%% Modified by Etienne Riga - Dec. 16, 1999 +%% to add /Diamond, /SolidDiamond and /BoldDiamond +10 dict dup begin + /FontType 3 def + /FontMatrix [ .001 0 0 .001 0 0 ] def + /FontBBox [ 0 0 0 0 ] def + /Encoding 256 array def + 0 1 255 { Encoding exch /.notdef put } for + Encoding + dup (b) 0 get /Bullet put + dup (c) 0 get /Circle put + dup (C) 0 get /BoldCircle put + dup (u) 0 get /SolidTriangle put + dup (t) 0 get /Triangle put + dup (T) 0 get /BoldTriangle put + dup (r) 0 get /SolidSquare put + dup (s) 0 get /Square put + dup (S) 0 get /BoldSquare put + dup (q) 0 get /SolidPentagon put + dup (p) 0 get /Pentagon put + dup (P) 0 get /BoldPentagon put +% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga + dup (l) 0 get /SolidDiamond put + dup (d) 0 get /Diamond put + (D) 0 get /BoldDiamond put +% DG/SR modification end + /Metrics 13 dict def + Metrics begin + /Bullet 1000 def + /Circle 1000 def + /BoldCircle 1000 def + /SolidTriangle 1344 def + /Triangle 1344 def + /BoldTriangle 1344 def + /SolidSquare 886 def + /Square 886 def + /BoldSquare 886 def + /SolidPentagon 1093.2 def + /Pentagon 1093.2 def + /BoldPentagon 1093.2 def +% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga + /SolidDiamond 1008 def + /Diamond 1008 def + /BoldDiamond 1008 def +% DG/SR modification end + /.notdef 0 def + end + /BBoxes 13 dict def + BBoxes begin + /Circle { -550 -550 550 550 } def + /BoldCircle /Circle load def + /Bullet /Circle load def + /Triangle { -571.5 -330 571.5 660 } def + /BoldTriangle /Triangle load def + /SolidTriangle /Triangle load def + /Square { -450 -450 450 450 } def + /BoldSquare /Square load def + /SolidSquare /Square load def + /Pentagon { -546.6 -465 546.6 574.7 } def + /BoldPentagon /Pentagon load def + /SolidPentagon /Pentagon load def +% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga + /Diamond { -428.5 -742.5 428.5 742.5 } def + /BoldDiamond /Diamond load def + /SolidDiamond /Diamond load def +% DG/SR modification end + /.notdef { 0 0 0 0 } def + end + /CharProcs 20 dict def + CharProcs begin + /Adjust { + 2 copy dtransform floor .5 add exch floor .5 add exch idtransform + 3 -1 roll div 3 1 roll exch div exch scale + } def + /CirclePath { 0 0 500 0 360 arc closepath } def + /Bullet { 500 500 Adjust CirclePath fill } def + /Circle { 500 500 Adjust CirclePath .9 .9 scale CirclePath + eofill } def + /BoldCircle { 500 500 Adjust CirclePath .8 .8 scale CirclePath + eofill } def + /BoldCircle { CirclePath .8 .8 scale CirclePath eofill } def + /TrianglePath { 0 660 moveto -571.5 -330 lineto 571.5 -330 lineto + closepath } def + /SolidTriangle { TrianglePath fill } def + /Triangle { TrianglePath .85 .85 scale TrianglePath eofill } def + /BoldTriangle { TrianglePath .7 .7 scale TrianglePath eofill } def + /SquarePath { -450 450 moveto 450 450 lineto 450 -450 lineto + -450 -450 lineto closepath } def + /SolidSquare { SquarePath fill } def + /Square { SquarePath .89 .89 scale SquarePath eofill } def + /BoldSquare { SquarePath .78 .78 scale SquarePath eofill } def + /PentagonPath { + -337.8 -465 moveto + 337.8 -465 lineto + 546.6 177.6 lineto + 0 574.7 lineto + -546.6 177.6 lineto + closepath + } def + /SolidPentagon { PentagonPath fill } def + /Pentagon { PentagonPath .89 .89 scale PentagonPath eofill } def + /BoldPentagon { PentagonPath .78 .78 scale PentagonPath eofill } def +% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga + /DiamondPath { 0 742.5 moveto -428.5 0 lineto 0 -742.5 lineto + 428.5 0 lineto closepath } def + /SolidDiamond { DiamondPath fill } def + /Diamond { DiamondPath .85 .85 scale DiamondPath eofill } def + /BoldDiamond { DiamondPath .7 .7 scale DiamondPath eofill } def +% DG/SR modification end + /.notdef { } def + end + /BuildGlyph { + exch + begin + Metrics 1 index get exec 0 + BBoxes 3 index get exec + setcachedevice + CharProcs begin load exec end + end + } def + /BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec + } bind def +end +/PSTricksDotFont exch definefont pop +%END pst-dots.pro + +%%EndProcSet +%%BeginProcSet: pst-grad.pro 0 0 +%! +% PostScript prologue for pst-grad.tex. +% Version 1.04, 2004/06/23 (adding %GradientCircle style - D.G.) +% prepared by Herbert Voss +% For copying restrictions, see pstricks.tex. +% +% For the PSTricks gradient fillstyle.% +% Based on some EPS files by leeweyr!bill@nuchat.sccsi.com (W. R. Lee).% +% Syntax:% D.G. modification begin - Apr. 9, %1998 +%%%%%% R0 G0 B0 R1 G1 B1 NumLines MidPoint Angle GradientFill +% ifGradientCircle GradientScale %GradientPosX GradientPosY +% R0 G0 B0 R1 G1 B1 NumLines MidPoint %Angle GradientFill +% D.G. modification end +% +/tx@GradientDict 40 dict def +tx@GradientDict begin +/GradientFill { + rotate + /MidPoint ED + /NumLines ED + /LastBlue ED + /LastGreen ED + /LastRed ED + /FirstBlue ED + /FirstGreen ED +/FirstRed ED +% D.G. modification begin - Apr. 9, 1998 +/GradientPosY ED +/GradientPosX ED + /GradientScale ED + /ifGradientCircle ED +% D.G. modification end + % This avoids gaps due to rounding errors: + clip + pathbbox %leave llx,lly,urx,ury on stack +% D.G. modification begin - Apr. 10, 1998 + 4 copy /ury ED /urx ED /lly ED /llx ED +% D.G. modification end + /y ED /x ED +% D.G. modification begin - Apr. 10, 1998 +ifGradientCircle + {0 GradientPosX eq + {0 GradientPosX eq {2 copy translate} if} if} + {2 copy translate} ifelse +% D.G. modification end + y sub neg /y ED + x sub neg /x ED % This avoids gaps due to rounding errors: + LastRed FirstRed add 2 div + LastGreen FirstGreen add 2 div + LastBlue FirstBlue add 2 div + setrgbcolor +% D.G. modification begin - Jul. 23, 1997 / Apr. 9, 1998 + ifGradientCircle + {/YSizePerLine y NumLines div def + /CurrentY y 2 div def + /MidLine NumLines 2 div 1 MidPoint sub mul abs cvi def} + {fill + /YSizePerLine y NumLines div def + /CurrentY 0 def + /MidLine NumLines 1 MidPoint sub mul abs cvi def} ifelse +% DG modification end + MidLine NumLines 2 sub gt + { /MidLine NumLines def } + { MidLine 2 lt { /MidLine 0 def } if } + ifelse + MidLine 0 gt + { + /Red FirstRed def + /Green FirstGreen def + /Blue FirstBlue def + /RedIncrement LastRed FirstRed sub MidLine 1 sub div def + /GreenIncrement LastGreen FirstGreen sub MidLine 1 sub div def + /BlueIncrement LastBlue FirstBlue sub MidLine 1 sub div def + MidLine { GradientLoop } repeat + } if + MidLine NumLines lt + { + /Red LastRed def + /Green LastGreen def + /Blue LastBlue def + /RedIncrement FirstRed LastRed sub NumLines MidLine sub 1 sub div def + /GreenIncrement FirstGreen LastGreen sub NumLines MidLine sub 1 sub div def + /BlueIncrement FirstBlue LastBlue sub NumLines MidLine sub 1 sub div def + NumLines MidLine sub { GradientLoop } repeat } + if + } def/GradientLoop { +% D.G. modification begin - Jul. 23, 1997 / Apr. 9, 1998 + ifGradientCircle + {CurrentY 0 gt { +% The default center used is the center of the bounding box of the object + 0 GradientPosX eq {0 GradientPosX eq + {/GradientPosX urx llx sub 2 div def + /GradientPosY ury lly sub 2 div def} if} if + GradientPosX GradientPosY CurrentY GradientScale mul 0 360 arc + Red Green Blue setrgbcolor fill + /CurrentY CurrentY YSizePerLine sub def + /Blue Blue BlueIncrement add def + /Green Green GreenIncrement add def + /Red Red RedIncrement add def} if} {0 CurrentY moveto x 0 rlineto + 0 YSizePerLine rlineto x neg 0 rlineto closepath + Red Green Blue setrgbcolor fill /CurrentY CurrentY YSizePerLine add def + /Blue Blue BlueIncrement add def /Green Green GreenIncrement add def + /Red Red RedIncrement add def} ifelse% D.G. modification end + }def + end +% END pst-grad.pro + +%%EndProcSet +%%BeginProcSet: pst-coil.pro 0 0 +%! +% PostScript prologue for pst-coil.tex. +% Version 97 patch 1, 98/06/02 +% For distribution, see pstricks.tex. +% +/tx@CoilDict 40 dict def tx@CoilDict begin +/CoilLoop { /t ED t sin AspectSin mul t 180 div AspectCos mul add t cos +lineto } def +/Coil { /Inc ED dup sin /AspectSin ED cos /AspectCos ED /ArmB ED /ArmA ED +/h ED /w ED /y1 ED /x1 ED /y0 ED /x0 ED x0 y0 translate y1 y0 sub x1 x0 +sub 2 copy Pyth /TotalLength ED Atan rotate /BeginAngle ArmA AspectCos +Div w h mul Div 360 mul def /EndAngle TotalLength ArmB sub AspectCos Div +w h mul Div 360 mul def 1 0 0 0 ArrowA ArmA 0 lineto /mtrx CM def w h +mul 2 Div w 2 Div scale BeginAngle Inc EndAngle { CoilLoop } for +EndAngle CoilLoop mtrx setmatrix TotalLength ArmB sub 0 lineto CP +% DG/SR modification begin - Jun. 2, 1998 - Patch 1 (from Michael Vulis) +% TotalLength 0 ArrowB lineto } def +TotalLength 0 ArrowB lineto +pop pop pop pop } def +% DG/SR modification end +/AltCoil { /Inc ED dup sin /AspectSin ED cos /AspectCos ED /h ED /w ED +/EndAngle ED /BeginAngle ED /mtrx CM def w h mul 2 Div w 2 Div scale +BeginAngle sin AspectSin mul BeginAngle 180 div AspectCos mul add +BeginAngle cos /lineto load stopped { moveto } if BeginAngle Inc +EndAngle { CoilLoop } for EndAngle CoilLoop mtrx setmatrix } def +/ZigZag { /ArmB ED /ArmA ED 2 div /w ED w mul /h ED /y1 ED /x1 ED /y0 ED +/x0 ED x1 y1 translate y0 y1 sub x0 x1 sub 2 copy Pyth /TotalLength ED +Atan rotate TotalLength ArmA sub ArmB sub dup h div cvi /n ED n h mul +sub 2 div dup ArmA add /ArmA ED ArmB add /ArmB ED /x ArmB h 2 div add +def mark 0 0 ArmB 0 n { x w /w w neg def /x x h add def } repeat +TotalLength ArmA sub 0 TotalLength 0 } def +end +% END pst-coil.pro + +%%EndProcSet +%%BeginProcSet: pst-text.pro 0 0 +%! +% PostScript header file pst-text.pro +% Version 1.00, 2005/12/15 +% For distribution, see pstricks.tex. + +/tx@TextPathDict 40 dict def +tx@TextPathDict begin + +% Syntax: PathPosition - +% Function: Searches for position of currentpath distance from +% beginning. Sets (X,Y)=position, and Angle=tangent. +/PathPosition +{ /targetdist exch def + /pathdist 0 def + /continue true def + /X { newx } def /Y { newy } def /Angle 0 def + gsave + flattenpath + { movetoproc } { linetoproc } { } { firstx firsty linetoproc } + /pathforall load stopped { pop pop pop pop /X 0 def /Y 0 def } if + grestore +} def + +/movetoproc { continue { @movetoproc } { pop pop } ifelse } def + +/@movetoproc +{ /newy exch def /newx exch def + /firstx newx def /firsty newy def +} def + +/linetoproc { continue { @linetoproc } { pop pop } ifelse } def + +/@linetoproc +{ + /oldx newx def /oldy newy def + /newy exch def /newx exch def + /dx newx oldx sub def + /dy newy oldy sub def + /dist dx dup mul dy dup mul add sqrt def + /pathdist pathdist dist add def + pathdist targetdist ge + { pathdist targetdist sub dist div dup + dy mul neg newy add /Y exch def + dx mul neg newx add /X exch def + /Angle dy dx atan def + /continue false def + } if +} def + +/TextPathShow +{ /String exch def + /CharCount 0 def +% hv begin 2005-11-29 1.00 +% String length +% { String CharCount 1 getinterval ShowChar +% /CharCount CharCount 1 add def + /CharSize 1 def + currentfont /FontType get 0 eq + { currentfont /FMapType get dup 2 eq exch dup 5 eq exch 9 eq or or + { /CharSize 2 def} if + } if + String length CharSize idiv + { String CharCount CharSize getinterval ShowChar + /CharCount CharCount CharSize add def +% hv end 2005-11-29 1.00 + } repeat +} def + +% Syntax: InitTextPath - +/InitTextPath +{ gsave + currentpoint /Y exch def /X exch def + exch X Hoffset sub sub mul + Voffset Hoffset sub add + neg X add /Hoffset exch def + /Voffset Y def + grestore +} def + +/Transform +{ PathPosition + dup + Angle cos mul Y add exch + Angle sin mul neg X add exch + translate + Angle rotate +} def + +/ShowChar +{ /Char exch def + gsave + Char end stringwidth + tx@TextPathDict begin + 2 div /Sy exch def 2 div /Sx exch def + +%%% MV 10-09-99 00:36 + /sc?currentpoint where {pop sc?currentpoint} {currentpoint} ifelse +% currentpoint + + Voffset sub Sy add exch + Hoffset sub Sx add + Transform + Sx neg Sy neg moveto + Char end tx@TextPathSavedShow + tx@TextPathDict begin + grestore + Sx 2 mul Sy 2 mul rmoveto +} def + +end +% END pst-text.pro + +%%EndProcSet +%%BeginProcSet: pst-node.pro 0 0 +%! +% PostScript prologue for pst-node.tex. +% Version 97 patch 1, 97/05/09. +% For distribution, see pstricks.tex. +% +/tx@NodeDict 400 dict def tx@NodeDict begin +tx@Dict begin /T /translate load def end +/NewNode { gsave /next ED dict dup 3 1 roll def exch { dup 3 1 roll def } +if begin tx@Dict begin STV CP T exec end /NodeMtrx CM def next end +grestore } def +/InitPnode { /Y ED /X ED /NodePos { NodeSep Cos mul NodeSep Sin mul } def +} def +/InitCnode { /r ED /Y ED /X ED /NodePos { NodeSep r add dup Cos mul exch +Sin mul } def } def +/GetRnodePos { Cos 0 gt { /dx r NodeSep add def } { /dx l NodeSep sub def +} ifelse Sin 0 gt { /dy u NodeSep add def } { /dy d NodeSep sub def } +ifelse dx Sin mul abs dy Cos mul abs gt { dy Cos mul Sin div dy } { dx +dup Sin mul Cos Div } ifelse } def +/InitRnode { /Y ED /X ED X sub /r ED /l X neg def Y add neg /d ED Y sub +/u ED /NodePos { GetRnodePos } def } def +/DiaNodePos { w h mul w Sin mul abs h Cos mul abs add Div NodeSep add dup +Cos mul exch Sin mul } def +/TriNodePos { Sin s lt { d NodeSep sub dup Cos mul Sin Div exch } { w h +mul w Sin mul h Cos abs mul add Div NodeSep add dup Cos mul exch Sin mul +} ifelse } def +/InitTriNode { sub 2 div exch 2 div exch 2 copy T 2 copy 4 index index /d +ED pop pop pop pop -90 mul rotate /NodeMtrx CM def /X 0 def /Y 0 def d +sub abs neg /d ED d add /h ED 2 div h mul h d sub Div /w ED /s d w Atan +sin def /NodePos { TriNodePos } def } def +/OvalNodePos { /ww w NodeSep add def /hh h NodeSep add def Sin ww mul Cos +hh mul Atan dup cos ww mul exch sin hh mul } def +/GetCenter { begin X Y NodeMtrx transform CM itransform end } def +/XYPos { dup sin exch cos Do /Cos ED /Sin ED /Dist ED Cos 0 gt { Dist +Dist Sin mul Cos div } { Cos 0 lt { Dist neg Dist Sin mul Cos div neg } +{ 0 Dist Sin mul } ifelse } ifelse Do } def +/GetEdge { dup 0 eq { pop begin 1 0 NodeMtrx dtransform CM idtransform +exch atan sub dup sin /Sin ED cos /Cos ED /NodeSep ED NodePos NodeMtrx +dtransform CM idtransform end } { 1 eq {{exch}} {{}} ifelse /Do ED pop +XYPos } ifelse } def +/AddOffset { 1 index 0 eq { pop pop } { 2 copy 5 2 roll cos mul add 4 1 +roll sin mul sub exch } ifelse } def +/GetEdgeA { NodeSepA AngleA NodeA NodeSepTypeA GetEdge OffsetA AngleA +AddOffset yA add /yA1 ED xA add /xA1 ED } def +/GetEdgeB { NodeSepB AngleB NodeB NodeSepTypeB GetEdge OffsetB AngleB +AddOffset yB add /yB1 ED xB add /xB1 ED } def +/GetArmA { ArmTypeA 0 eq { /xA2 ArmA AngleA cos mul xA1 add def /yA2 ArmA +AngleA sin mul yA1 add def } { ArmTypeA 1 eq {{exch}} {{}} ifelse /Do ED +ArmA AngleA XYPos OffsetA AngleA AddOffset yA add /yA2 ED xA add /xA2 ED +} ifelse } def +/GetArmB { ArmTypeB 0 eq { /xB2 ArmB AngleB cos mul xB1 add def /yB2 ArmB +AngleB sin mul yB1 add def } { ArmTypeB 1 eq {{exch}} {{}} ifelse /Do ED +ArmB AngleB XYPos OffsetB AngleB AddOffset yB add /yB2 ED xB add /xB2 ED +} ifelse } def +/InitNC { /b ED /a ED /NodeSepTypeB ED /NodeSepTypeA ED /NodeSepB ED +/NodeSepA ED /OffsetB ED /OffsetA ED tx@NodeDict a known tx@NodeDict b +known and dup { /NodeA a load def /NodeB b load def NodeA GetCenter /yA +ED /xA ED NodeB GetCenter /yB ED /xB ED } if } def +/LPutLine { 4 copy 3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED 1 t sub +mul 3 1 roll 1 t sub mul 4 1 roll t mul add /Y ED t mul add /X ED } def +/LPutLines { mark LPutVar counttomark 2 div 1 sub /n ED t floor dup n gt +{ pop n 1 sub /t 1 def } { dup t sub neg /t ED } ifelse cvi 2 mul { pop +} repeat LPutLine cleartomark } def +/BezierMidpoint { /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED +/t ED /cx x1 x0 sub 3 mul def /cy y1 y0 sub 3 mul def /bx x2 x1 sub 3 +mul cx sub def /by y2 y1 sub 3 mul cy sub def /ax x3 x0 sub cx sub bx +sub def /ay y3 y0 sub cy sub by sub def ax t 3 exp mul bx t t mul mul +add cx t mul add x0 add ay t 3 exp mul by t t mul mul add cy t mul add +y0 add 3 ay t t mul mul mul 2 by t mul mul add cy add 3 ax t t mul mul +mul 2 bx t mul mul add cx add atan /NAngle ED /Y ED /X ED } def +/HPosBegin { yB yA ge { /t 1 t sub def } if /Y yB yA sub t mul yA add def +} def +/HPosEnd { /X Y yyA sub yyB yyA sub Div xxB xxA sub mul xxA add def +/NAngle yyB yyA sub xxB xxA sub Atan def } def +/HPutLine { HPosBegin /yyA ED /xxA ED /yyB ED /xxB ED HPosEnd } def +/HPutLines { HPosBegin yB yA ge { /check { le } def } { /check { ge } def +} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { dup Y check { exit +} { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark HPosEnd +} def +/VPosBegin { xB xA lt { /t 1 t sub def } if /X xB xA sub t mul xA add def +} def +/VPosEnd { /Y X xxA sub xxB xxA sub Div yyB yyA sub mul yyA add def +/NAngle yyB yyA sub xxB xxA sub Atan def } def +/VPutLine { VPosBegin /yyA ED /xxA ED /yyB ED /xxB ED VPosEnd } def +/VPutLines { VPosBegin xB xA ge { /check { le } def } { /check { ge } def +} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { 1 index X check { +exit } { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark +VPosEnd } def +/HPutCurve { gsave newpath /SaveLPutVar /LPutVar load def LPutVar 8 -2 +roll moveto curveto flattenpath /LPutVar [ {} {} {} {} pathforall ] cvx +def grestore exec /LPutVar /SaveLPutVar load def } def +/NCCoor { /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def +GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 xA1 yA1 ] cvx def /LPutPos { +LPutVar LPutLine } def /HPutPos { LPutVar HPutLine } def /VPutPos { +LPutVar VPutLine } def LPutVar } def +/NCLine { NCCoor tx@Dict begin ArrowA CP 4 2 roll ArrowB lineto pop pop +end } def +/NCLines { false NArray n 0 eq { NCLine } { 2 copy yA sub exch xA sub +Atan /AngleA ED n 2 mul dup index exch index yB sub exch xB sub Atan +/AngleB ED GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 n 2 mul 4 add 4 roll xA1 +yA1 ] cvx def mark LPutVar tx@Dict begin false Line end /LPutPos { +LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } +ifelse } def +/NCCurve { GetEdgeA GetEdgeB xA1 xB1 sub yA1 yB1 sub Pyth 2 div dup 3 -1 +roll mul /ArmA ED mul /ArmB ED /ArmTypeA 0 def /ArmTypeB 0 def GetArmA +GetArmB xA2 yA2 xA1 yA1 tx@Dict begin ArrowA end xB2 yB2 xB1 yB1 tx@Dict +begin ArrowB end curveto /LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ] +cvx def /LPutPos { t LPutVar BezierMidpoint } def /HPutPos { { HPutLines +} HPutCurve } def /VPutPos { { VPutLines } HPutCurve } def } def +/NCAngles { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate +def xA2 yA2 mtrx transform pop xB2 yB2 mtrx transform exch pop mtrx +itransform /y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA2 +yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false Line end /LPutVar [ xB1 +yB1 xB2 yB2 x0 y0 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { LPutLines } def +/HPutPos { HPutLines } def /VPutPos { VPutLines } def } def +/NCAngle { GetEdgeA GetEdgeB GetArmB /mtrx AngleA matrix rotate def xB2 +yB2 mtrx itransform pop xA1 yA1 mtrx itransform exch pop mtrx transform +/y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA1 yA1 +tx@Dict begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA1 yA1 ] +cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos { +VPutLines } def } def +/NCBar { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate def +xA2 yA2 mtrx itransform pop xB2 yB2 mtrx itransform pop sub dup 0 mtrx +transform 3 -1 roll 0 gt { /yB2 exch yB2 add def /xB2 exch xB2 add def } +{ /yA2 exch neg yA2 add def /xA2 exch neg xA2 add def } ifelse mark ArmB +0 ne { xB1 yB1 } if xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict +begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx +def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos { +VPutLines } def } def +/NCDiag { GetEdgeA GetEdgeB GetArmA GetArmB mark ArmB 0 ne { xB1 yB1 } if +xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false Line end +/LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { +LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } +def +/NCDiagg { GetEdgeA GetArmA yB yA2 sub xB xA2 sub Atan 180 add /AngleB ED +GetEdgeB mark xB1 yB1 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin +false Line end /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { +LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } +def +/NCLoop { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate +def xA2 yA2 mtrx transform loopsize add /yA3 ED /xA3 ED /xB3 xB2 yB2 +mtrx transform pop def xB3 yA3 mtrx itransform /yB3 ED /xB3 ED xA3 yA3 +mtrx itransform /yA3 ED /xA3 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 +xB3 yB3 xA3 yA3 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false +Line end /LPutVar [ xB1 yB1 xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 xA1 yA1 ] +cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos { +VPutLines } def } def +% DG/SR modification begin - May 9, 1997 - Patch 1 +%/NCCircle { 0 0 NodesepA nodeA \tx@GetEdge pop xA sub 2 div dup 2 exp r +%r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add +%exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360 +%mul add dup 5 1 roll 90 sub \tx@PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED +/NCCircle { NodeSepA 0 NodeA 0 GetEdge pop 2 div dup 2 exp r +r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add +exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360 +mul add dup 5 1 roll 90 sub PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED +% DG/SR modification end +} def /HPutPos { LPutPos } def /VPutPos { LPutPos } def r AngleA 90 sub a add +AngleA 270 add a sub tx@Dict begin /angleB ED /angleA ED /r ED /c 57.2957 r +Div def /y ED /x ED } def +/NCBox { /d ED /h ED /AngleB yB yA sub xB xA sub Atan def /AngleA AngleB +180 add def GetEdgeA GetEdgeB /dx d AngleB sin mul def /dy d AngleB cos +mul neg def /hx h AngleB sin mul neg def /hy h AngleB cos mul def +/LPutVar [ xA1 hx add yA1 hy add xB1 hx add yB1 hy add xB1 dx add yB1 dy +add xA1 dx add yA1 dy add ] cvx def /LPutPos { LPutLines } def /HPutPos +{ xB yB xA yA LPutLine } def /VPutPos { HPutPos } def mark LPutVar +tx@Dict begin false Polygon end } def +/NCArcBox { /l ED neg /d ED /h ED /a ED /AngleA yB yA sub xB xA sub Atan +def /AngleB AngleA 180 add def /tA AngleA a sub 90 add def /tB tA a 2 +mul add def /r xB xA sub tA cos tB cos sub Div dup 0 eq { pop 1 } if def +/x0 xA r tA cos mul add def /y0 yA r tA sin mul add def /c 57.2958 r div +def /AngleA AngleA a sub 180 add def /AngleB AngleB a add 180 add def +GetEdgeA GetEdgeB /AngleA tA 180 add yA yA1 sub xA xA1 sub Pyth c mul +sub def /AngleB tB 180 add yB yB1 sub xB xB1 sub Pyth c mul add def l 0 +eq { x0 y0 r h add AngleA AngleB arc x0 y0 r d add AngleB AngleA arcn } +{ x0 y0 translate /tA AngleA l c mul add def /tB AngleB l c mul sub def +0 0 r h add tA tB arc r h add AngleB PtoC r d add AngleB PtoC 2 copy 6 2 +roll l arcto 4 { pop } repeat r d add tB PtoC l arcto 4 { pop } repeat 0 +0 r d add tB tA arcn r d add AngleA PtoC r h add AngleA PtoC 2 copy 6 2 +roll l arcto 4 { pop } repeat r h add tA PtoC l arcto 4 { pop } repeat } +ifelse closepath /LPutVar [ x0 y0 r AngleA AngleB h d ] cvx def /LPutPos +{ LPutVar /d ED /h ED /AngleB ED /AngleA ED /r ED /y0 ED /x0 ED t 1 le { +r h add AngleA 1 t sub mul AngleB t mul add dup 90 add /NAngle ED PtoC } +{ t 2 lt { /NAngle AngleB 180 add def r 2 t sub h mul t 1 sub d mul add +add AngleB PtoC } { t 3 lt { r d add AngleB 3 t sub mul AngleA 2 t sub +mul add dup 90 sub /NAngle ED PtoC } { /NAngle AngleA 180 add def r 4 t +sub d mul t 3 sub h mul add add AngleA PtoC } ifelse } ifelse } ifelse +y0 add /Y ED x0 add /X ED } def /HPutPos { LPutPos } def /VPutPos { +LPutPos } def } def +/Tfan { /AngleA yB yA sub xB xA sub Atan def GetEdgeA w xA1 xB sub yA1 yB +sub Pyth Pyth w Div CLW 2 div mul 2 div dup AngleA sin mul yA1 add /yA1 +ED AngleA cos mul xA1 add /xA1 ED /LPutVar [ xA1 yA1 m { xB w add yB xB +w sub yB } { xB yB w sub xB yB w add } ifelse xA1 yA1 ] cvx def /LPutPos +{ LPutLines } def /VPutPos@ { LPutVar flag { 8 4 roll pop pop pop pop } +{ pop pop pop pop 4 2 roll } ifelse } def /VPutPos { VPutPos@ VPutLine } +def /HPutPos { VPutPos@ HPutLine } def mark LPutVar tx@Dict begin +/ArrowA { moveto } def /ArrowB { } def false Line closepath end } def +/LPutCoor { NAngle tx@Dict begin /NAngle ED end gsave CM STV CP Y sub neg +exch X sub neg exch moveto setmatrix CP grestore } def +/LPut { tx@NodeDict /LPutPos known { LPutPos } { CP /Y ED /X ED /NAngle 0 +def } ifelse LPutCoor } def +/HPutAdjust { Sin Cos mul 0 eq { 0 } { d Cos mul Sin div flag not { neg } +if h Cos mul Sin div flag { neg } if 2 copy gt { pop } { exch pop } +ifelse } ifelse s add flag { r add neg } { l add } ifelse X add /X ED } +def +/VPutAdjust { Sin Cos mul 0 eq { 0 } { l Sin mul Cos div flag { neg } if +r Sin mul Cos div flag not { neg } if 2 copy gt { pop } { exch pop } +ifelse } ifelse s add flag { d add } { h add neg } ifelse Y add /Y ED } +def +end +% END pst-node.pro + +%%EndProcSet +%%BeginProcSet: pstricks-add.pro 0 0 +%! +% PostScript prologue for pstricks-add.tex. +% Version 0.01, 2005/09/27 +% For distribution, see pstricks.tex. +% +% HISTORY +% 2005/09/28 : - rename it to pstricks-add.pro +% - agg support for Gouraud shading +% 2005/05/20 : small (unimportant) changes (hv) +% 2005/02/25 : white space removal from expression +% 2004/12/16 : addition of SUM and IFTE +% 2004/11/14 : correction of a priority problem +% ^ before unary - (new rule FS) +/tx@addDict 410 dict def tx@addDict begin +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Pi and Euler are defined in pstricks.pro +/PIdiv2 1.57079632680 def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% PS ANALYZER FOR ALGEBRAIC EXPRESSION V1.12 +% E->T|E+T +% T->FS|T*FS %%% NEW 2004/11/14 +% FS -> F | +SF | -SF %%% NEW 2004/11/14 +% F->P|F^P %%% OLD +% F->P|F^SF %%% NEW 2004/11/14 ???? ^FS +% P->(E)|literal +% literal->number|var|var[E]|func(params)%%|-P|+P%%% OLD +% params->E|E,param +% +% E expression, T term, SF signed factor, F factor, P power +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% parser +%% str -> [ LIFO vector ] +/AlgParser { InitParser SetExpr LexStr 0 exch AnalyzeListOfE ExpressionVector /ExpressionVector [] def} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +/SetExpr { RemoveWS /ExpressionString exch def } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +/InitParser { + /ExpressionVector [] def /AddVector [] def + /AddVectorfree [] def /MulVector [] def + /MulVectorfree [] def /PowVector [] def + /PowVectorfree [] def /OpParVector [] def + /ClParVector [] def /ParVectorFree [] def + %%/CompVector [] def /CompVectorFree [] def + /BraVector [] def /SemVector [] def + /ComVector [] def /ExpressionVector [] def + /LoopLevel -1 def /LoopContext [] def %%% NEW for SUM function +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +/FLbreak { tst not {/L exch def /F exch def 2 copy L eq exch F eq and /tst exch def} {pop pop} ifelse} def +/Negbreak { tst not { dup 0 lt /tst exch def } if } def +/STOP { tst {TOUF} if} def +/tst false def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% analyze Expression List +%% first last +/AnalyzeListOfE { + exch SemVector { + exch 1 index 1 sub AnalyzeExpr 1 add + } forall%%last_char + exch AnalyzeExpr +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% analyze Expr +%% first last +/AnalyzeExpr { + FindFirstAdd%% first last pos+ + 2 copy abs 1 sub ne + { 3 -1 roll 1 index abs 1 sub AnalyzeExpr dup abs 1 add 3 -1 roll AnalyzeTerm EvalAdd } + { pop AnalyzeTerm } ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% analyze Term +%% first last +/AnalyzeTerm {%%19 28 FLbreak STOP + FindFirstMul%% first last pos* + 2 copy abs 1 sub ne + { 3 -1 roll 1 index abs 1 sub AnalyzeTerm dup abs 1 add 3 -1 roll AnalyzeSignedFactor EvalMul }%%% NEW 2004/11/14 + { pop AnalyzeSignedFactor } ifelse%%% NEW 2004/11/14 +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NEW 2004/11/14 +%% analyze Signed Factor +%% first last -> +/AnalyzeSignedFactor { + ExpressionString 2 index get + dup 45 eq%% a - sign + { pop exch 1 add exch AnalyzeSignedFactor EvalNeg } + { 43 eq%%a + sign + { exch 1 add exch AnalyzeSignedFactor } + { AnalyzeFactor } ifelse } ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% analyze Factor +%% first last -> +/AnalyzeFactor { + FindFirstPow%% first last pos* + 2 copy abs 1 sub ne +% { 3 -1 roll 1 index abs 1 sub AnalyzeFactor dup abs 1 add 3 -1 roll AnalyzePower EvalPow } + { 3 -1 roll 1 index abs 1 sub AnalyzeFactor dup abs 1 add 3 -1 roll AnalyzeSignedFactor EvalPow }% NEW 2004/11/14 + { pop AnalyzePower } ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% analyze Power +%% first last -> +/compteur 0 def +/AnalyzePower { + ExpressionString 2 index get + dup 40 eq%% an open parenthesis + { pop 1 index UnfreePar 1 sub exch 1 add exch AnalyzeExpr } + { dup 45 eq%% a - sign + { pop exch 1 add exch AnalyzePower EvalNeg } + { dup 43 eq%%a + sign + { pop exch 1 add exch AnalyzePower } + { dup 46 eq 1 index 48 ge 2 index 57 le and or%%a digit or a dot + { pop AnalyzeNumber } + { pop AnalyzeLiteral } ifelse } ifelse } ifelse } ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% analyze parameters list +%% first last +/AnalyzeParam { + { FindFirstCom%% first last pos, + 3 -1 roll 1 index 1 sub AnalyzeExpr + 2 copy 1 sub ne { 1 add exch } { pop pop exit } ifelse + } loop +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Find the eventual addition at this level +%% first last -> position +/FindFirstAdd { + 2 copy /Last exch def /First exch def false 0 + AddVector { + AddVectorFree 2 index get + { /pos exch def + %% if it is in the current part of the analysed expr + pos abs First gt pos abs Last lt and + { true 0 1 ClParVector length + dup 0 eq%% no parenthesis + { pop pop pop pop exch not exch exit } + { 1 sub + { ParVectorFree 1 index get + { OpParVector 1 index get pos abs lt%% in this parenthesis level + ClParVector 2 index get pos abs gt and + { pop pop false exit } if%%then exit loop + } if + pop } for + { pop pop true dup exit } if } ifelse } if + } { pop } ifelse + 1 add + } forall + pop + { pos UnfreeAdd} %% find one mul + { Last 1 add } ifelse +} def +%% { +%% 2 copy /Last exch def /First exch def false 0 +%% AddVector { +%% AddVectorFree 2 index get +%% { /pos exch def +%% true 0 1 ClParVector length 1 sub +%% { ParVectorFree 1 index get +%% { OpParVector 1 index get pos abs le +%% ClParVector 2 index get pos abs ge and +%% pos abs First lt pos abs Last gt or or +%% { pop pop false exit } if +%% } if +%% pop +%% } for +%% { pop pop true dup exit } if +%% } +%% { pop } ifelse +%% 1 add +%% } forall +%% pop +%% { pos UnfreeAdd}%% find one add +%% { Last 1 add } ifelse +%% } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Find the eventual multiplication at this level +%% first last -> first last position +/FindFirstMul { + 2 copy /Last exch def /First exch def false 0 + MulVector { + MulVectorFree 2 index get + { /pos exch def + %% if it is in the current part of the analysed expr + pos abs First gt pos abs Last lt and + { true 0 1 ClParVector length + dup 0 eq%% no parenthesis + { pop pop pop pop exch not exch exit } + { 1 sub + { ParVectorFree 1 index get + { OpParVector 1 index get pos abs lt%% in this parenthesis level + ClParVector 2 index get pos abs gt and + { pop pop false exit } if%%then exit loop + } if + pop } for + { pop pop true dup exit } if } ifelse } if + } { pop } ifelse + 1 add + } forall + pop + { pos UnfreeMul} %% find one mul + { Last 1 add } ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Find the eventual power at this level +%% first last -> first last position +/FindFirstPow { + 2 copy /Last exch def /First exch def false 0 + PowVector { + PowVectorFree 2 index get + { /pos exch def + %% if it is in the current part of the analysed expr + pos First gt pos Last lt and + { true 0 1 ClParVector length + dup 0 eq%% no parenthesis + { pop pop pop pop exch not exch exit } + { 1 sub + { ParVectorFree 1 index get + { OpParVector 1 index get pos abs lt%% in this parenthesis level + ClParVector 2 index get pos abs gt and + { pop pop false exit } if%%then exit loop + } if + pop } for + { pop pop true dup exit } if } ifelse } if + } { pop } ifelse + 1 add + } forall + pop + { pos UnfreePow} %% find one ^ + { Last 1 add } ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Find the eventual comma at this level +%% first last -> first last position +/FindFirstCom { + 2 copy /Last exch def /First exch def false 0 + ComVector { + ComVectorFree 2 index get + { /pos exch def + %% if it is in the current part of the analysed expr + pos First gt pos Last lt and + { true 0 1 ClParVector length + dup 0 eq%% no parenthesisSTOP + { pop pop pop pop exch not exch exit } + { 1 sub + { ParVectorFree 1 index get + { OpParVector 1 index get pos abs lt%% in this parenthesis level + ClParVector 2 index get pos abs gt and + { pop pop false exit } if%%then exit loop + } if + pop } for + { pop pop true dup exit } if } ifelse } if + } { pop } ifelse + 1 add + } forall + pop + { pos UnfreeCom} %% find one comma + { Last 1 add } ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Find the first opened parenthesis (only for func call) +%% first last -> first last position +/FindFirstPar { + 2 copy /Last exch def /First exch def false 0 + OpParVector { + ParVectorFree 2 index get + { /pos exch def + pos First gt pos Last lt and + { exch not exch exit } if + } { pop } ifelse + 1 add + } forall + pop + { pos dup UnfreePar }%% find one par + { Last 1 add } ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Find the first opening bracket +%% first last -> first last position +/FindFirstBra { + 2 copy /Last exch def /First exch def + BraVector { + /pos exch def + pos First gt pos Last lt and + { exit } if + } forall + pos dup UnfreePar%% finding it is mandatory +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Read the number and push it in the vector +%% first last -> +/AnalyzeNumber { + 1 index sub 1 add ExpressionString 3 1 roll getinterval cvr /n exch def + /ExpressionVector ExpressionVector aload length n exch 1 add array astore def +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Read the literal and push it in the vector +%% first last -> +/AnalyzeLiteral { + ExpressionString 1 index get dup 41 eq %%close par at the end => function call + { pop FindFirstPar%%first last parpos + ExpressionString 3 index dup 3 index exch sub getinterval + dup (SUM) eq { sumation } + { dup (IFTE) eq { condition } + { 1 index 1 add 3 index 1 sub AnalyzeParam + dup cvn /n exch def TrigoFunc + /ExpressionVector ExpressionVector aload length + /tx@addDict cvx /begin cvx n cvx /end cvx 5 -1 roll 4 add array astore def + %%n cvx exch 1 add array astore def + pop pop pop } ifelse } ifelse } + { 93 eq%%close bracket => vector element + { FindFirstBra%%first last brapos + ExpressionString 3 index dup 3 index exch sub getinterval cvn /n exch def + /ExpressionVector ExpressionVector aload length n cvx exch 1 add array astore def + 2 copy 1 add exch 1 sub AnalyzeExpr + /ExpressionVector ExpressionVector aload length /cvi cvx exch /get cvx exch 2 add array astore def + pop pop pop + } + { 1 index sub 1 add ExpressionString 3 1 roll getinterval cvn /n exch def + /ExpressionVector ExpressionVector aload length n cvx exch 1 add array astore def } ifelse } ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% push add in the vector +%% kind -> +%% if kind>0 then add else sub +/EvalAdd { + /ExpressionVector ExpressionVector aload length dup 3 add -1 roll + 0 gt { /add } { /sub } ifelse cvx exch 1 add array astore def +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% push mul in the vector +%% -> +/EvalMul { + /ExpressionVector ExpressionVector aload length dup 3 add -1 roll + 0 gt { /mul } { /div } ifelse cvx exch 1 add array astore def +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% push exp in the vector +%% -> +/EvalPow { + pop /ExpressionVector ExpressionVector aload length + /tx@addDict cvx exch /begin cvx exch /EXP cvx exch /end cvx exch 4 add array astore def +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% push neg in the vector +%% -> +/EvalNeg { + /ExpressionVector ExpressionVector aload length /neg cvx exch 1 add array astore def +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Lexical Analyzis of the string +%% -> +/LexStr { + /freepar 0 def /lastpar 0 def /lastchar 0 def + 0 ExpressionString + { dup 40 eq 1 index 91 eq or %% open parenthesis + { /OpParVector OpParVector aload length dup 3 add index exch 1 add array astore def + /ClParVector ClParVector aload length -1 exch 1 add array astore def + /lastpar freepar def /freepar freepar 1 add def /NoPar false def} if + dup 41 eq 1 index 93 eq or %% close parenthesis + { ClParVector lastpar 3 index put lastpar + dup 0 eq + { pop } + { { 1 sub dup ClParVector exch get -1 eq { /lastpar exch def exit } { dup 0 eq { pop exit} if } ifelse } loop } + ifelse } if + dup 42 eq %% * operator + %%{ /MulVector MulVector aload length dup 3 add index exch 1 add array astore def } if + { /MulVector 2 index MulVector aload length 1 add array astore def } if + dup 43 eq %% + operator + { %%test if it is a real operator and not the unary operator + lastchar dup 40 ne %% open parenthesis + 1 index 59 ne and %% ; + 1 index 42 ne and %% * + 1 index 43 ne and %% + + 1 index 44 ne and %% , + 1 index 45 ne and %% - + 1 index 47 ne and %% / + 1 index 0 ne and %% first char + 1 index 94 ne and %% ^%%2004/11/14 + exch 124 ne and %% | + %%{/AddVector AddVector aload length dup 3 add index exch 1 add array astore def } if} + {/AddVector 2 index AddVector aload length 1 add array astore def } if} + if + dup 44 eq %% , separator + { /ComVector ComVector aload length dup 3 add index exch 1 add array astore def } + if + dup 45 eq %% - operator + { %%test if it is a real operator and not the unary operator + lastchar dup 40 ne %% open parenthesis + 1 index 59 ne and %% ; + 1 index 42 ne and %% * + 1 index 43 ne and %% + + 1 index 44 ne and %% , + 1 index 45 ne and %% - + 1 index 47 ne and %% / + 1 index 0 ne and %% first char + 1 index 94 ne and %% ^%%2004/11/14 + exch 124 ne and %% | + %%{/AddVector AddVector aload length dup 3 add index neg exch 1 add array astore def } if} + {/AddVector 2 index neg AddVector aload length 1 add array astore def } if} + if + dup 47 eq %% / operator + %%{ /MulVector MulVector aload length dup 3 add index neg exch 1 add array astore def } + { /MulVector 2 index neg MulVector aload length 1 add array astore def } + if + dup 59 eq 1 index 124 eq or%% ; separator | + { /SemVector SemVector aload length dup 3 add index exch 1 add array astore def } + if + dup 91 eq %% open bracket + { /BraVector BraVector aload length dup 3 add index exch 1 add array astore def } + if + dup 94 eq %% ^ operator + %%{ /PowVector PowVector aload length dup 3 add index exch 1 add array astore def } + { /PowVector 2 index PowVector aload length 1 add array astore def }%%2004/11/14 + if + /lastchar exch def 1 add + } forall + /AddVectorFree AddVector CreateFree def + /MulVectorFree MulVector CreateFree def + /ParVectorFree OpParVector CreateFree def + /PowVectorFree PowVector CreateFree def + /ComVectorFree ComVector CreateFree def + 1 sub +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Create Free vector +%% -> +/CreateFree { + dup length array exch + { pop true exch } forall astore +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Unfree parenthesis +%% pos -> +/UnfreePar { + /pos exch def ParVectorFree 0 + OpParVector { pos eq { exit } if 1 add } forall + false put +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Unfree mul +%% pos -> +/UnfreeMul { + MulVectorFree 0 + MulVector { pos eq { exit } if 1 add } forall + false put +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Unfree add +%% pos -> +/UnfreeAdd { + AddVectorFree 0 + AddVector { pos eq { exit } if 1 add } forall + false put +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Unfree exp +%% pos -> +/UnfreePow { + PowVectorFree 0 + PowVector { pos eq { exit } if 1 add } forall + false put +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Unfree com +%% pos -> +/UnfreeCom { + ComVectorFree 0 + ComVector { pos eq { exit } if 1 add } forall + false put +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Convert to radians if trigo function call +%% (name) -> +/TrigoFunc { + dup (cos) eq 1 index (sin) eq or exch (tan) eq or + { /ExpressionVector ExpressionVector aload length 3.14159265359 /div cvx 180 /mul cvx 5 -1 roll 4 add + array astore def + } if +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% the condition function +%% -> +/condition { + %% manage the condition + 1 index 1 add 3 index 1 sub FindFirstCom + %% find the test char <,>,=,! + 4 index 1 index 1 sub FindTestChar + 4 index 2 index 1 sub AnalyzeExpr 3 1 roll + 1 add 1 index 1 sub AnalyzeExpr exch + /ExpressionVector ExpressionVector aload length dup 1 add array exch 3 add -1 roll cvx exch astore def + %% manage the then clause + MngClause + %% manage the else clause + MngClause + /ExpressionVector ExpressionVector aload length 1 add /ifelse cvx exch array astore def + mark 8 1 roll cleartomark +} def +/FindTestChar { + 1 exch + { dup ExpressionString exch get + dup 60 eq { pop /lt exit } if%%< + dup 61 eq { pop /eq exit } if%%= + dup 62 eq { pop /gt exit } if%%> + pop pop } for +} def +/MngClause { + 3 1 roll FindFirstCom 4 -1 roll 1 add 1 index 1 sub + /ExpressionVector ExpressionVector exch [] def 3 1 roll AnalyzeExpr + /ExpressionVector exch aload length 1 add ExpressionVector cvx exch array astore def +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% the sumation function +%% -> +/sumation { + /LoopLevel LoopLevel 1 add def + %% create the accumulator + /ExpressionVector ExpressionVector aload length 1 add 0 exch array astore def + %% read the variable name + 1 index 1 add 3 index 1 sub FindFirstCom + ExpressionString 4 -1 roll 2 index 1 index sub getinterval cvn + /tempvar exch def + %% read the initial value + GetNextNumber + /ExpressionVector ExpressionVector aload length 1 add temp exch array astore def + %% read the increment value + GetNextNumber + /ExpressionVector ExpressionVector aload length 1 add temp exch array astore def + %% read the limit value + GetNextNumber + /ExpressionVector ExpressionVector aload length 1 add temp exch array astore def + /LoopContext LoopContext aload length 1 add ExpressionVector exch array astore def + /ExpressionVector [ tempvar /exch cvx /def cvx ] def + 1 add exch AnalyzeExpr + %% add each term of the sum + /ExpressionVector ExpressionVector aload length 1 add /add cvx exch array astore def + /ExpressionVector LoopContext LoopLevel get aload length 2 add + ExpressionVector cvx exch /for cvx exch array astore def pop pop pop pop } def +/GetNextNumber { + exch FindFirstCom ExpressionString 4 -1 roll 1 add 2 index 1 index sub getinterval cvi + /temp exch def } def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% METHODS FUNC +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% MISC FUNC +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +/RemoveWS {% + dup length + 0 2 index { 32 ne { 1 add } if } forall + 2 copy ne + { exch pop string 0 2 index + { dup 32 ne { 2 index 2 index 3 -1 roll put 1 add } { pop } ifelse } forall + pop exch pop } { pop pop } ifelse +} def +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% NEW FUNC +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Make a discrete sum +%% var n begin end expr -> +/SUM {} def +%% function arcsine in radians +%% x -> theta +/asin {% + dup abs 1 gt { EQDFasinrangeerror } if + dup abs 1 eq + { PIdiv2 exch -1 eq { neg } if } + { .1 %% asin(x) + { dup dup PI div 180 mul sin 3 index sub exch PI div 180 mul cos div + dup abs 1e-6 lt { sub exit } if sub + } loop + exch pop } ifelse +} def +%% function arccosine in radians +%% x -> theta +/acos {% + dup abs 1 gt { EQDFacosrangeerror } if + dup abs 1 eq + { -1 eq { PI } { 0 } ifelse } + { 1.5 %% asin(x) + { dup dup PI div 180 mul cos 3 index sub exch PI div 180 mul sin neg div + dup abs 1e-6 lt { sub exit } if sub + } loop + exch pop } ifelse +} def +%% factorial function +%% n -> n! +/fact { 1 exch 2 exch 1 exch { mul } for } def + +%end + +%% modified exponential funtion for 0 +%% x n -> x^n +/EXP { dup 0 eq { pop pop 1 } { exp } ifelse } def +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +/GTriangle { + gsave + /mtrx CM def + /colorA ED /colorB ED /colorC ED % save the colors + /xA ED /yA ED % save the origin + xA yA translate + rotate % \psk@gangle + /yB ED /xB ED /yC ED /xC ED % save other coordinates + /ds [ % save data in a array + 0 0 0 colorA aload pop % fd x y xr xg xb + 0 xB xA sub yB yA sub colorB aload pop + 0 xC xA sub yC yA sub colorC aload pop +% 1 xC xB add yB colorA aload pop % for use with 4 points ABCD + ] def + newpath + << + /ShadingType 4 % single Gouraud + /ColorSpace [ /DeviceRGB ] + /DataSource ds + >> + shfill + closepath + mtrx + setmatrix grestore} def +% +%% convertisseur longueur d'onde ->R,G,B Manuel Luque +%% lambda max=780 nanomtres +%% lambda min=380 nanomtres +%% adaptation de : +%% http://www.physics.sfasu.edu/astro/color.html +%% www.efg2.com/lab +% +/Gamma 0.8 def +/calculateRGB { + lambda 379 le {/Red 0 def /Green 0 def /Blue 0 def} if + lambda 781 ge {/Red 0 def /Green 0 def /Blue 0 def} if + lambda 380 ge {lambda 439 le { + /R {lambda 440 sub neg 440 380 sub div} def + /Red R factor mul Gamma exp def + /G 0 def + /Green G factor mul Gamma exp def + /B 1 def + /Blue B factor mul Gamma exp def} if + } if + lambda 440 ge { lambda 489 le { + /G {lambda 440 sub 490 440 sub div} def + /Green G factor mul Gamma exp def + /R 0 def /Red 0 def + /B 1 def + /Blue B factor mul Gamma exp def } if + } if + lambda 490 ge {lambda 509 le { + /B {lambda 510 sub neg 510 490 sub div} def + /Blue B factor mul Gamma exp def + /R 0 def /Red 0 def + /G 1 def + /Green G factor mul Gamma exp def } if + } if + lambda 510 ge {lambda 579 le { + /R {lambda 510 sub 580 510 sub div } def + /Red R factor mul Gamma exp def + /Blue 0 def + /G 1 def + /Green G factor mul Gamma exp def } if + } if + lambda 580 ge {lambda 644 le { + /G {lambda 645 sub neg 645 580 sub div } def + /Green G factor mul Gamma exp def + /Blue 0 def + /R 1 def + /Red R factor mul Gamma exp def } if + } if + lambda 645 ge { lambda 780 le { + /Red 1 factor mul Gamma exp def + /Blue 0 def + /Green 0 def } if + } if +} def +% +/factor { + lambda 380 ge {lambda 419 le { 0.3 0.7 lambda 380 sub mul 420 380 sub div add} if } if + lambda 420 ge {lambda 700 le { 1 } if } if + lambda 701 ge {lambda 780 le { 0.3 0.7 780 lambda sub mul 780 700 sub div add} if } if +} def + +/wavelengthToRGB { % the wavelength in nm must be on top of the stack + /lambda exch def + calculateRGB +} def + + +/axfill { + 8 dict begin + /xw exch def /nl exch def + /C1 exch def /y1 exch def/x1 exch def + /C0 exch def /y0 exch def/x0 exch def + << /ShadingType 2 + /ColorSpace /DeviceRGB + /Coords [ x0 y0 x1 y1 ] + /EmulatorHints [ xw 2 div dup ] + /Function << + /FunctionType 2 + /Domain [0 1] + /C0 C0 + /C1 C1 + /N 1 + >> + >> shfill + end +} bind def + +systemdict /shfill known not { + +/Emulate_shfill 32 dict def Emulate_shfill begin + +/NumberOfLayers 128 def + +/assert { not { (assert) /typecheck signalerror} if } bind def +/assert /pop load def + +% generic interpolation +% takes two n-arrays, returns a hopefully optimized procedure taking one +% argument, and returning a correct blend of the two arrays (hence an +% n-array) +/interpolating_function { + 10 dict begin /a1 exch def /a0 exch def + a0 length a1 length eq assert + [ /mark load /exch load + 0 1 a0 length 1 sub { /i exch def /dup load a1 i get a0 i get sub /mul load a0 i get /add load /exch load } for /pop load (]) cvn load ] cvx end +} bind def + +% Emulates (rather poorly) a radial or axial fill. +% For radial fills, we _require_ that the inner circle be specified +% first. +% For axial fills, the ``Extend'' behaviour is ignored, and we _require_ +% an additional parameters in the dictionary, named EmulatorHints. It's a +% 2-array denoting the left and right extent of the area to paint. These +% are taken as multiples of the vector orthogonal to the direction vector. +/xshfill { begin gsave + % do some checks. + Function begin FunctionType 2 eq assert + Domain 0 get 0 eq Domain 1 get 1 eq and assert end + ColorSpace setcolorspace + % we assume ll2 at least, so that dicts can be extended. anyway + % the syntax we request is ll2 only. + /mkcol Function begin C0 C1 end interpolating_function bind def + ShadingType 3 eq { + /mkcoords + [ Coords cvx exec 7 3 roll ] [ 5 -3 roll ] + interpolating_function + bind def + /one { newpath mkcoords cvx dup exec 3 -1 roll add exch moveto + exec 0 360 arc fill } bind def + } if + ShadingType 2 eq { + /dv [ Coords cvx exec exch 4 1 roll exch sub 3 1 roll sub exch + ] cvx def % normal vector + /nv [ dv neg exch ] cvx def + /mkcoords + [ Coords cvx exec 5 2 roll nv + exch 4 -1 roll exch EmulatorHints 0 get mul add + 3 1 roll EmulatorHints 0 get mul add ] + [ 4 -2 roll nv + exch 4 -1 roll exch EmulatorHints 0 get mul add + 3 1 roll EmulatorHints 0 get mul add ] + interpolating_function + % rescale to adapt to our reverse scan behaviour. + /dv [ dv neg NumberOfLayers div exch neg NumberOfLayers div exch ] cvx def + /bnv [ nv EmulatorHints cvx exec add mul exch + EmulatorHints cvx exec add mul exch ] cvx def + /nv [ bnv neg exch neg exch ] cvx def + bind def + /one { newpath mkcoords cvx exec moveto + nv rlineto + dv rlineto + bnv rlineto + closepath fill } bind def + } if + % The space is traversed backwards, since it is more customary + % for me at least to put the inner circle first for radial fills. + % For axial fills, this does not matter afaict. + 1 1 NumberOfLayers div neg 0 + { dup Function /N get exp mkcol cvx exec setcolor one } + for + grestore end +} bind def + +end +userdict /shfill { Emulate_shfill begin xshfill end } bind put } if + +end + +% END pst-eqdf.pro + +%%EndProcSet +%%BeginProcSet: texps.pro 0 0 +%! +TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 +index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll +exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics +exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub +dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} +ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict +end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{ +dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 +roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def +dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def} +if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def} +def end + +%%EndProcSet +%%BeginProcSet: special.pro 0 0 +%! +TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N +/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N +/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N +/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ +/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho +X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B +/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ +/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known +{userdict/md get type/dicttype eq{userdict begin md length 10 add md +maxlength ge{/md md dup length 20 add dict copy def}if end md begin +/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S +atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ +itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll +transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll +curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf +pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} +if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 +-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 +get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip +yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub +neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ +noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop +90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get +neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr +1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr +2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 +-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S +TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ +Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale +}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState +save N userdict maxlength dict begin/magscale true def normalscale +currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts +/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x +psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx +psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub +TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{ +psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 +roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath +moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict +begin/SpecialSave save N gsave normalscale currentpoint TR +@SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{ +CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto +closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx +sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR +}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse +CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury +lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N +/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end} +repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N +/@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX +currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY +moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X +/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 +1 startangle endangle arc savematrix setmatrix}N end + +%%EndProcSet +TeXDict begin @defspecial + +/preview@version(11.81)def + +userdict begin/preview-bop-level 0 def/bop-hook{/preview-bop-level +dup load dup 0 le{/isls false def/vsize 792 def/hsize 612 def}if 1 +add store}bind def/eop-hook{/preview-bop-level dup load dup 0 gt{1 +sub}if store}bind def end + +/preview@tightpage true def (compatibility PostScript comment for dvipng<=1.5 + +userdict begin/bop-hook{7{currentfile token not{stop}if 65781.76 div +DVImag mul}repeat 72 add 72 2 copy gt{exch}if 4 2 roll neg 2 copy lt{exch}if +dup 0 gt{pop 0 exch}{exch dup 0 lt{pop 0}if}ifelse 720 add exch 720 +add 3 1 roll 4{5 -1 roll add 4 1 roll}repeat <>setpagedevice//bop-hook exec}bind def +end + +userdict (some extra code to avoid dvipng>=1.6 unknown special: 7{currentfile token not{stop}if 65781.76 div })) +pop + +userdict begin/bop-hook{preview-bop-level 0 le{7{currentfile token +not{stop}if 65781.76 div DVImag mul}repeat 72 add 72 2 copy gt{exch}if +4 2 roll neg 2 copy lt{exch}if dup 0 gt{pop 0 exch}{exch dup 0 lt{pop +0}if}ifelse 720 add exch 720 add 3 1 roll 4{5 -1 roll add 4 1 roll}repeat +<>setpagedevice}if//bop-hook +exec}bind def end + +@fedspecial end +%%BeginFont: CMR7 +%!PS-AdobeFont-1.1: CMR7 1.0 +%%CreationDate: 1991 Aug 20 16:39:21 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR7) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR7 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 49 /one put +dup 50 /two put +readonly def +/FontBBox{-27 -250 1122 750}readonly def +/UniqueID 5000790 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6CC3F1E9AE32F234EB60FE7D +E34995B1ACFF52428EA20C8ED4FD73E3935CEBD40E0EAD70C0887A451E1B1AC8 +47AEDE4191CCDB8B61345FD070FD30C4F375D8418DDD454729A251B3F61DAE7C +8882384282FDD6102AE8EEFEDE6447576AFA181F27A48216A9CAD730561469E4 +78B286F22328F2AE84EF183DE4119C402771A249AAC1FA5435690A28D1B47486 +1060C8000D3FE1BF45133CF847A24B4F8464A63CEA01EC84AA22FD005E74847E +01426B6890951A7DD1F50A5F3285E1F958F11FC7F00EE26FEE7C63998EA1328B +C9841C57C80946D2C2FC81346249A664ECFB08A2CE075036CEA7359FCA1E90C0 +F686C3BB27EEFA45D548F7BD074CE60E626A4F83C69FE93A5324133A78362F30 +8E8DCC80DD0C49E137CDC9AC08BAE39282E26A7A4D8C159B95F227BDA2A281AF +A9DAEBF31F504380B20812A211CF9FEB112EC29A3FB3BD3E81809FC6293487A7 +455EB3B879D2B4BD46942BB1243896264722CB59146C3F65BD59B96A74B12BB2 +9A1354AF174932210C6E19FE584B1B14C00E746089CBB17E68845D7B3EA05105 +EEE461E3697FCF835CBE6D46C75523478E766832751CF6D96EC338BDAD57D53B +52F5340FAC9FE0456AD13101824234B262AC0CABA43B62EBDA39795BAE6CFE97 +563A50AAE1F195888739F2676086A9811E5C9A4A7E0BF34F3E25568930ADF80F +0BDDAC3B634AD4BA6A59720EA4749236CF0F79ABA4716C340F98517F6F06D9AB +7ED8F46FC1868B5F3D3678DF71AA772CF1F7DD222C6BF19D8EF0CFB7A76FC6D1 +0AD323C176134907AB375F20CFCD667AB094E2C7CB2179C4283329C9E435E7A4 +1E042AD0BAA059B3F862236180B34D3FCED833472577BACD472A4CD5C7347D2E +1D0D6630F446F3708FCB29A85F40B4DAB4D60AA8F5B2DBD67F2E45D80C7A7E86 +144669F75F8FA14609F8E4246FEC475ED262E03D30393C78C7828206842B565A +DBE20EA52EE9C4C3862B2F5F12CF89D935B89B84A45CEFCEAEE8EC8806339364 +56FF1FE2E5112803E3E40162D5188D2210A54816AA9960611721C23A292AE80A +8F8C0FB114D71C111700B0FEA8804F37C5D31ECD7006603C53F4BDF7208286AF +3A25CEE58E88BF81A4800B68C2A19EBDADF9B1074702E779A7DD915EFE09D35E +BD176D7346D859D0944520171C4E97696AE0502C43C391FCE5E8FB1789065E18 +BE3AF62200D57912360411CE848B4550D1B0A3BA576F9B41CED3A23E753631A7 +25375ABE8A4B55BC65AE2EAFAE452766961965093084D218637FB447795CC991 +EB1EF26BF82B7A81FA847ABD3B559D35828AD7DDC5FC7B43C6C14E6ADEDD7663 +F272AA9A121630C5263D58773BCB1437EC2FC54C4AF90E677A8E7D1738D003D4 +18998C03CC9AE182E7758767FEB5E1B03C6CC32AD30D0ABAE6552290771E2CB1 +A23F469A8447C1868C6DEC2C3C2BCFC691867E +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMI10 +%!PS-AdobeFont-1.1: CMMI10 1.100 +%%CreationDate: 1996 Jul 23 07:53:57 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 58 /period put +dup 59 /comma put +dup 75 /K put +dup 97 /a put +dup 100 /d put +dup 101 /e put +dup 105 /i put +dup 110 /n put +dup 111 /o put +dup 114 /r put +dup 116 /t put +dup 120 /x put +dup 121 /y put +readonly def +/FontBBox{-32 -250 1048 750}readonly def +/UniqueID 5087385 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 +9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321 +990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E +6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB +DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721 +59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823 +D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF +8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808 +6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9 +1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE +03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909 +95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1 +74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2 +3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8 +47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19 +AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8 +42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8 +40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837 +B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53 +95601766758820333028C2295F4A921FA3F2A6AC5D3E60DC3A492FE965A7987C +6F4F0FF187FE2A577491EAE8A210018735A966012423879709D2555AB137295B +9B5817743E31C669E80C1C9C53C1E983AE730859A5F234D0225EE9AFC07A8E3B +EC5E7B264E010BEE39E6DC5E3E327C3666CB9A4A08C4B8CBACDC924E433641C6 +686D21874F17E0BF13EFE32F4BF7411F2D25D6DDF429E1E542A3E0DC5AA099AD +49FE89DE38D4A30E3B66EE30D8A8C209E368FCF5618A41FDAA24EDE7DBB91772 +0CBDC4BDEF23FD8FC13F2A3504DAC04480F21D0129D01C4DFCE85B5A476CC56D +F23924BCE3DDD30051D925086920AFC3A3EC706820AC9909A3418F772D4C1424 +E0240538BD41B3BFF3F428025FCEAB3C268416261A4599E220CE810FDA48ECF2 +D3DA1BCED380B1D97009F93D8C1986995D8DB275D6AD3D8278E16917DE54627F +968E88436E28A3961BA0D8968EDFD198D79630CAB56802CFA87EBF6E89B5C07F +290936E9C095B4212F3EF23211FA61DF05A13609CCBB74EE8413623ED6AFAC9D +ACB5B3D73FAF6001C57B0B17C1FF78C77F5B1303F1EF4C48552570CBDA9CB9EF +7D5860AC693D0E11A2CE55523F68CFC9FCB0AC7D5686C0CE58186B7307C50659 +BF8777E9F2337FE30A88E2E92607EC7CA81B2E3F07489267718381A344FBADB7 +C46F5D0E5DA5C5C5C1A45DBB46849939AA1B00F8BFBFB3660ABE17E449546711 +0F18BF16C69BA8C66C633A6CF96FA21B47A2AC8854B10FA1B095A41E4803EE51 +EAD1F80BD21CC20EF8287AEB8B06D2E6E825D032948BD9FD8AF17502D43AD55B +C9CE742D7CA43398176315BD3670118B6418BE757575C3F6C90850C10BE05F83 +100BACE4EA8D8A6622B9C34801AED6FDD2C1771AA8C11EC5E254364342C2FB00 +BF6A8B8FB21EBFBAF159C13E7F43D7C7B40D49A3B95898934FBFEF6D7A5C283D +FBCE910D5A0F78BB5ABA70C209A308FFE9F75396AD23B892EDEA965362397C06 +BC4159699BB635F4C5013498F952EA9C219ABE28590EF89F77DB4929878DE390 +7062FB42623CA24AA2900E0D136A843B83EE823D630D48238089F66BC452E581 +D480D3F1CB3D51E2A44BC65A8D8721CF4EDE51F617DA4BC63CAD1C62F8FB3DDA +3DE2CC019B65626F26A9EBAABA55A5B8E3E26F7F328A11234160B12A4E1A3248 +FA131B07C055CC223D55F2D3BEB4242A82B9F91263D2BF418B8AB841AB4C33B9 +1CB5A3578C5E41BEB1E24FF38249B114203725030EA435F0C883B1BA0A9440DC +21DC41BD9232A248FD2D9C0D0D0C341F4B0FFDCF1159293F208A2CDE0EC73288 +892332BB56150506790F33B4D3A0BC27B3F7678F0E42A60F07E608B12D68B859 +CC92AA1E1C23AF5F3E2B3BDDB92AE9649E906FDAF9CC5112FFE426623C4C910F +4A635E6AFCDDCBFF82269F50BE8168C1C634FB0CEF79E17FC7966B1AE960DC31 +3E91B2A7A137AA5392C5BBF0E8E9A6914A44E49C7E77A0BDE2A0DB041410054D +5109C31E618C0015134DA634F2409994E37271A49DA08DD599CF4EE6EF4A1B91 +7BF8A877C5EF71AE7D1D4D528D387FFEBA76F6202A0BB21B7CDF21A564039EE7 +FEE03AE534FB8CC8F11EA00D195068D2A6EC6DF4BEA0DE3D1E65504E310B0864 +0AD910C3325A65643044FA8F9F7AE501639864D4BC9BA6AFC1FE4143102B18E9 +F28D8C9E7C7C6286521C03EB4C52897F5D3DDE2C25EE9EFD316D97DEDBB6478F +FB7DD54A1A644780EE884333614997F1A79DFC55AFC41B2B63B56C7273C0906B +AD91B6BD0748AC6DDB23C735912A808F4AB2F6AD745A73E4CAA4F7DEA08DF644 +A4930E97301BFE070294B5796F123ED2B4224216540B14159C4B334E3AEC2540 +3DBCB792F822D0A94617DF5AAB3A7C4DD06D21C38EB9F0C5D68B7D3902AEA3E3 +BB08D5354741046784652E806F1956C531B5DFC47F8F1084935D507A519DC362 +FCDA5667426614B8B96814CD6A56A280874D5549AD791BF80CB8BFB6360CCCF8 +CE4F776AC01F2B5EFC3E7856362C28D6DA097F2B0432B36F7105BA20D4E6D91D +F75404D812DE4B83F5206380F738A6FD6666FD95A70554904FA4E45A3E89E2D2 +5BBBAB1194DDEB8903998FD4B87657C6587D9E78C875A1C115D52B1D68A8AECB +EA8DC4A19D7E45B5E5EBA645D1C79789484CB401F6B601F324C879ABB4FBE745 +6382884FFEF01C78624807BABA107769A5CE48DEC59B50ED4F3F8A412A087E9A +87EF124C0EB37EBEC02715B8769FDC38C4953721C50A528C06D7539AC65AF753 +C286213FCC8F73B928468B7FBE35C099CCCEE900C3EFBB6EB734D72544184C6B +45560B398CB0E03FCC408B0B38FCDD9145AC7039499DAEBA3D58FB80DCD4A98E +59E1CCF44296612EA94CAD9675F665C1FCA25B44F7F04C1AE6A2AE2150B7280F +D83F07A373B9A923771057AAFA1DF31A3AF8CE250B3260FB5E1E4BBB2A8A7D6C +693016D2A46E2BA76CCDCB2B24A988A92168A4004B40C6AA5F24F92E7313371C +A0B4F7924BDEE84B1C1C2E9D46B22BCA1C346A7BA5738A195B9EE5D9DB56C06A +8A575A4E6FBF37F3E738413A7F32CAA63A5886824331E783EB506267559E3FD9 +652EB7C24B165D28DA47E51FA4014ADF8DA6110F995A306D158EA2CE18D58DD0 +E30375A60244ECA4E5ED956E2413E9D4CE5D0DD991AD3075B027DCA48E73C845 +7926BC40AF7FB7B12826FC870E409538794185D00FBFD55B7B3A204947FD325D +417EBE45B0B4874819CE22F9C676A999BC5F46E964A84C26D381601DB66F5AB1 +2A20B034DD6365BB02888AAEB83AB1B8612E3923A8A49FACB3FE9807CE2C64EE +07E87E6F8264ADD02284E458471E9934D74F6DC45916A85738B40317B803FC46 +0EE52ADB77A4A8735D1A9D0664467D2C2A9F55EE9D93BC0369847D1317D3F7E2 +50A23319CA8D3C563DF8D3A33FE5E80B000731F21960B81B328ABC661136A897 +076EBE4EC5669E43688A1FF373C70674DBF0A3EBD6F12EBB37D8A5FD08DC8894 +52BA09304D3F2C664AF995B39E6858933EB7987B63FE19A35989AB8BDF639454 +D55A572F5A670AE281CDC090BE83F37A71E4F4937E822E5DA294EAF054245FC3 +5709F9951AB572805B3F51D7940E22571D34D3D077B4E485D001C8F63898C40A +750A0E21C8C226BA4F9322164D1DC3029CDA78B6EB85EB7C066DBFCEB3DD9353 +15A07243935489873A7E85C80182562F190714FB64E16CEA199640AF92EC01B8 +28202A3F402F8A63F8F01BC368FF49E0FC6BCE198F47744FA83F538AF8FA21B3 +69BE65FE9F3E1642D37720B1B2D1E331DFAE2388142E6BD29011F40AECD28526 +E18854CC07170E62945AC37D4990B343EA78698C2DFEF0908FC6CA012EEB1F43 +D87D88E80C9BD5E32807ECBB8D7505DFBFA8842AFD6BCE6F0D4ACEF53B0AA318 +DDFD8E707B41A19F235D8669194FFBEE1DBB2B9EA4A4109966ED793963292FCE +6C91F779ACAD52050242232FA5D63F540F37ED54C997001268D3CDF40E433BFD +BC143839C3F09065A0FBD4AA5431D57E7648AB9C9D4F4E889AFED6FAE6F7E459 +929D0E86BADE9DBE3BC81DA20E393C9CB41C8D9F70272AC3B678520A17367451 +6343D6228BA9AE7A7A444595D8402FFC5E28522CBD33C1836E96123018BAD12F +DC82861C4C4840910FFF41146A +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR10 +%!PS-AdobeFont-1.1: CMR10 1.00B +%%CreationDate: 1992 Feb 19 19:54:52 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 40 /parenleft put +dup 41 /parenright put +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 52 /four put +dup 80 /P put +dup 107 /k put +dup 110 /n put +dup 116 /t put +dup 117 /u put +readonly def +/FontBBox{-251 -250 1009 969}readonly def +/UniqueID 5000793 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 +87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F +D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 +92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C +295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 +409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C +4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF +2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E +0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E +B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 +24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B +43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF +D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 +5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC +96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 +7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65 +0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830 +B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D +AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007 +97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8 +FEF3D8C63B283796A9AD847424B4E6508546C36223A3B17EB82A56592F27FC27 +F1D49D5FF4BBC0E16231807AF7E195AA7D0D01C7566243448B222D57B811EAE6 +DE9370F84E207DC9BEC731AD6040FD9B804FA14CA264B73136F9AF34390319F6 +A543D5D4D7FDDDF2F76651E557683614521110DEC1CCAC426117DDA7D6CF1B8B +7879B21FDC78BAB3C944BCDCD6A65B67F3692F0A8D5E36FB783A63D4FBC9842E +2CBC2720A7206F42A99AEC79FBBA92A27965AF40A71E05E4BA8D7FC58C828491 +84A8EBDB90B1167333987F7D42A76E9C5C5A8429E1CACD4206D312E9CA60D7E0 +6E906270BD9F42EEE618B7F5CC9ACBE1FCDB7E7C02D756FBDCA1E23E47BCF2C9 +6A9C58E53950DB59E43228DF2E17F44D2828175BF383AD06F224BB9C8438B787 +B5673AAE3772C82AC0ED80420E4BCD787F6C1979B339E271D9F3A9068D32ACDB +476F04E5FFEACBC97E5C7B8E2229F94F3B360D1F7D0B7CE61AEDAAEF98864CB6 +CD1339FB5894E7A3752963AA6043403EF01422549C478F514629E5A25C4FDE51 +CB19068F183D547C8A109854E67074DD421CDC878BB48835AF0D965A0FDFD392 +847AE57C85675CF04BFD1410B56E616F68C399DAD07C9A198489AA1D0FA3717B +F3CD52E7FC86C8FFE001893AA6D9E4B7582ACD74AC46BE3E8161DEF949C13FE2 +F29D25BC8614D6C29F336C5E9F60656D2F7F6666A132347F5F471F11393C9873 +6262C0F79D55A0857D36058B06F3AABB121CA1540BA17F0A43DF8A4826C67875 +5F62A3B464A0300513DB48355B3D1870DC28137B05A079E7C728D8AE7462A5C4 +D2D09AC4B8DEDA847358A6856E3D6F3B11C1F343EA1AB3E596E20FDCE0830DD3 +016CB7301921FBD57FB36791D959D7D753D299285497CD3FF06B9FBF62FB1396 +CF5121199EB486424448B45EDB617EDB931969D35B7492B339AF758E0458C527 +D07286045CE90BA9685C38C23AE0E328D4FDC5C2E8652C59215D05298EF3AF28 +5D1905BB1471ED972022B4D84CF007C1D9B1D62815143BF43B1E4E2F9DD0328D +F38D31EEB4D23008289268A5885285EB671AFC98228DC94089124FA93E272C05 +50DB0509197D7656C887B7E0178ACC328E3FE36687F73F6E363A2CFAC2670653 +756797F6518CC0653A84BD915B7BDD4FCDAA5568A68ED3060B489924057FD0AC +1A617DBB69FC042B9BA407139ACECC6BA9E7A28221D26E54B1AB1EE6227AD836 +AE74E7809429D6D8774965604AF8971B3B95C979ACEE908EFED5DDB3CC116A1D +EE00A4165D7467E6E42A4C0D2DE72EE690D4A8E518B9E9A9551110A5D11459CC +68FBD07385D092561C228DF2784BABC30FBB94851B343EDBB40D23899DCE526A +1385533CE7F61B975686F6A58AECBE0C064E53C9993747EB6EA1C03863D75335 +9D618D6726A199D6F49F0BC19BBF03461B3FBDE2FF0F319EEC1A563B7F5DD72F +010AB26A0A8984BAA20506F412497862C3228D8730FA17B0E5379F10B882F7B6 +5BA35297C43859075E2C815D0631D83C7704DA8A7CA576E19877A8E6F294A1D7 +B48671C83AE0A97119D5C3D91C5D9203574FCAEDDFF997C84A6E6CB5BDD3ACD5 +FFC200F50229116CA9D17A3F9EF5C4B933AC28FCC8417193FAEB5C3C281AA0D9 +CB699FF1AAE89864854FD614DA061806D8BE8E768B3977E907A2215E8192D48B +0108F89C1B4A69E0D46B046205D77C7DE68D63399B6609837F330559173C219B +FE2964EE88A9D4BDA447E6EC32B154FF2E6B2AEC4D5D68E2D06693AD3A8764E2 +B33EBAE73DA62E20A5EAF90DBD5E91E36D15DF5DE0F7A750D7F9C5CC23428BEB +9975AED73D37681224C6347530D36C171F9F1C20251B5028FD55EE47DE935442 +EC909D4C3F11F2B5C337A9DFF6CB01418A3AEF4284F14D633828F42340AE663B +AEB2E8EFA8B07CCB3D6BEDD0294DC87AC15C2A1C3B3B53DFDD04374BE6E16AED +45A005180FBC22611262D8C468450616231B64293151532450CF54E76AAEC889 +116A37133BC43D2732CA86B2C644A3F9E3E55D3F0EB623B15A3402CD44963BC6 +78B20A1053DF478CC8C74BCD429F565DF55E1995E79BE4D72095DE8FA4AC2666 +7010306B78477C86508827A66C33F5F2513DB6419BF50B4CE3E86F8B97CE3044 +84DFD1FD5394887B86C1B167236082180B0E8F37EB73F0127EF5C35B9221FB2A +BFFD47CA9D937B791474D59C72624DB04964F6E8161C37077D88E47925C53D9E +3299AEE8EAEFCD13C368F6B85A3C3646384E0CBB4F4E0E017C287908392C4937 +41FCE7B58EEE6BEA1AA8A1BB60B82F106BA6AA34FF28658B0CD8E2EF05B04E21 +7552EB4004793B7B27DEA9C550385ED2E451722C35C283638E256D8E2FB255AF +7D00FE63D91DA29A65059FA96F11CA784A1B28E921ABD9FE679A182B64188C80 +D9BEB3691A4C9B483E10ADE9AB01D13A79E49E0B2E09462F653C777FBAF90F95 +A978A7B4EB650EB336437AD8F8675B0A7DFAE7B57BADEFE487AABBD4CCD2C0D5 +E7589EFDBC36FE7B16A0E0DAD13A4A429A3EF89AEF4305739A264961CD68CD15 +8C48B8CA7FC615D308C6B0CC083677DCA62E2F85B66F8A744055EEAC55567582 +41144955F968099B95B21D5C87F53EB30164B6DDA6D3380E39937DB020347079 +78E0263555882737220697982B3F916A3D2D3FF7C2C38C0801CB1FB5B52711D2 +1ACB9671D1EDA6F1ECC52E589A44B6B56A527E64FB8F89C6E8812C6005E3CBCB +764B0296A00B98802F0A5C3804E95F90306A7424065EA762732DA4D70CB05C0A +CDCAF8C0812DB7A00CB8D385457BF484A63C8AA561D16BC283023E6908B06921 +BE565026A59801988F1D7B7935ABE47D7B1E552E87BFD6C0E6F444D4665E3690 +AB86E9501875D208CE4F974AC7B39E07508F0DB2C082ED13FFE3652D730C4BAE +B264311C2DC30D971B5ED2396D232B84B32ED5A458EEE3D96FBE0E6B57BCF5AE +AB8B92B6BABFE29763DE0ABBCC4E60AC84D15B59626B835BF310C71FDA86F943 +8E28EF5982339BC409A2A3526C54D0A5A09162F15E2099A82890D12385AFEE77 +EF924D4B32DB34F226AA7F576A1457ADEBEE2C3DF0A232A4C117E00F401689CB +C3E4909AABCA8ED1265030CBA8C2EEA6FC3EAD67301BBE5F73080561FDC9AD29 +CDD57F38F01650E8A4D9FC522FFCE948B5EF65F0C5FD5EF33E025C81E446C186 +3C4BB1ED25465B41FAD6506310CC7E57E91EEEB09A45E506B56B79FC8635AC14 +81FBBB90E8C70355F9D4D1E4CD68A8BD4EB2BFEF6FA2437325480C5E8C1AE66A +DB02BB80DBBF329BB527B45F2BA89EB463F85AD9CE86D0AF46C97F3DA7911A0C +8803C1B03AC9D4BF9195C8FE90719A22BF9188E986E62BC9AA7886EA7D8AFD9C +D52588D561548D4C40C08F3451CC710E0B5AFDECB719F31C58AC28877F59E4AE +5D778B9F4747E96D7962FDD6DA24D3E0C049D13571DF921634F0D3B116C96741 +B94D98DBC0556FFC528DA41C5A5EFCFC0608F4F530AF714A02F9D2D324B339B9 +AAE949 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +TeXDict begin 39139632 55387786 1000 8000 8000 +(F:/MathematikFHTW/2dgrafiken/2dgrafiken.dvi) @start +/Fa 205[441 441 49[{}2 774.872 /CMR7 rf /Fb 134[543 633 +3[400 1[499 2[537 664 4[381 3[515 576 2[585 21[940 15[307 +307 58[{}13 1106.96 /CMMI10 rf /Fc 138[615 430 5[615 +2[584 26[753 27[553 1[553 553 553 6[430 430 40[{}11 1106.96 +/CMR10 rf end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 8000dpi +TeXDict begin +%%PaperSize: A4 + end +%%EndSetup +%%Page: 1 1 +TeXDict begin 1 0 bop +-32891 -32891 32891 32891 11001594 0 11001594 + 3150 -3150 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 0 setgray /ArrowA { moveto } def +/ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. CLW mul add +dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1 scale } if gsave +w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill grestore +grestore 0 h a sub moveto EndArrow } def /ArrowInside { } def +128.03734 0 0.0 0 ArrowA CP 4 2 roll ArrowB /yEnd exch def /xEnd +exch def xEnd yEnd L /yStart exch def /xStart exch def 0 setlinecap +stroke stroke 0 dup 2 mod 0 eq false and exch 2 lt true and or { /viceversa +0.0 128.03734 gt { true }{ false } ifelse def /epsilon 0.01 def /minTickline +0.0 def /maxTickline 128.03734 def /dT 3729358 65536 div viceversa +{neg} if def /subTNo 1 def subTNo 0 gt { /dsubT dT subTNo div def}{ +/dsubT 0 def } ifelse -4.0 4.0 /tickend exch def /tickstart exch def +/Twidth 0.4 def /subTwidth 0.2 def /STsize 0.75 def /TColor { 0 +setgray } def /subTColor { 0.5 setgray } def /MinValue { xStart +} def /MaxValue { xEnd 1.5 2. CLW mul add 1.4 mul viceversa { add +epsilon sub } { sub epsilon add } ifelse } def /logLines { false } +def /LSstroke { 0 setlinecap stroke } def /subLSstroke { 0 setlinecap +stroke } def 0 dT MaxValue { /cntTick exch def logLines { gsave 1 10 +subTNo div 9.99 { /dx exch def /x cntTick dT dx log mul add def x abs +MaxValue abs le { x minTickline moveto x maxTickline lineto } if +} for subTwidth SLW subTColor subLSstroke grestore stroke /dsubT 0 +def } if dsubT abs 0 gt { gsave /cntsubTick cntTick dsubT add def subTNo +1 sub { cntsubTick abs MaxValue abs le { cntsubTick tickstart STsize +mul moveto cntsubTick tickend STsize mul lineto }{ exit } ifelse +/cntsubTick cntsubTick dsubT add def } repeat subTwidth SLW subTColor +subLSstroke grestore } if gsave cntTick tickstart moveto cntTick tickend + lineto Twidth SLW TColor LSstroke grestore } for /dT dT neg def /dsubT +dsubT neg def 0 dT MinValue epsilon viceversa { add }{ sub } ifelse +{ /cntTick exch def logLines { gsave 1 10 subTNo div 9.99 { /dx exch +def /x cntTick dT dx log mul add def x abs MinValue abs le { x minTickline + moveto x maxTickline lineto } if } for /dsubT 0 def subTwidth SLW +subTColor subLSstroke grestore } dsubT abs 0 gt { gsave /cntsubTick +cntTick dsubT add def subTNo 1 sub { cntsubTick abs MinValue abs le +{ cntsubTick tickstart STsize mul moveto cntsubTick tickend STsize +mul lineto }{ exit } ifelse /cntsubTick cntsubTick dsubT add def } +repeat subTwidth SLW subTColor subLSstroke grestore } if gsave cntTick +tickstart moveto cntTick tickend lineto Twidth SLW TColor LSstroke +grestore } for } if end + + +@endspecial @beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 0 setgray /ArrowA { moveto } def +/ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. CLW mul add +dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1 scale } if gsave +w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill grestore +grestore 0 h a sub moveto EndArrow } def /ArrowInside { } def +0 128.03734 0 0.0 ArrowA CP 4 2 roll ArrowB /yEnd exch def /xEnd +exch def xEnd yEnd L /yStart exch def /xStart exch def 0 setlinecap +stroke stroke 0 dup 2 mod 0 eq true and exch 2 lt false and or { /viceversa +0.0 128.03734 gt { true }{ false } ifelse def /epsilon 0.01 def /minTickline +0.0 def /maxTickline 128.03734 def /dT 3729358 65536 div viceversa +{neg} if def /subTNo 1 def subTNo 0 gt { /dsubT dT subTNo div def}{ +/dsubT 0 def } ifelse -4.0 4.0 /tickend exch def /tickstart exch def +/Twidth 0.4 def /subTwidth 0.2 def /STsize 0.75 def /TColor { 0 +setgray } def /subTColor { 0.5 setgray } def /MinValue { yStart +} def /MaxValue { yEnd 1.5 2. CLW mul add 1.4 mul viceversa { add +epsilon sub } { sub epsilon add } ifelse } def /logLines { false } +def /LSstroke { 0 setlinecap stroke } def /subLSstroke { 0 setlinecap +stroke } def 0 dT MaxValue { /cntTick exch def logLines { gsave 1 +10 subTNo div 9.99 { /dx exch def /x cntTick dT dx log mul add def +x abs MaxValue abs le { x minTickline exch moveto x maxTickline exch +lineto } if } for subTwidth SLW subTColor subLSstroke grestore stroke +/dsubT 0 def } if dsubT abs 0 gt { gsave /cntsubTick cntTick dsubT +add def subTNo 1 sub { cntsubTick abs MaxValue abs le { cntsubTick +tickstart STsize mul exch moveto cntsubTick tickend STsize mul exch +lineto }{ exit } ifelse /cntsubTick cntsubTick dsubT add def } repeat +subTwidth SLW subTColor subLSstroke grestore } if gsave cntTick tickstart +exch moveto cntTick tickend exch lineto Twidth SLW TColor LSstroke +grestore } for /dT dT neg def /dsubT dsubT neg def 0 dT MinValue epsilon +viceversa { add }{ sub } ifelse { /cntTick exch def logLines { gsave +1 10 subTNo div 9.99 { /dx exch def /x cntTick dT dx log mul add def +x abs MinValue abs le { x minTickline exch moveto x maxTickline exch +lineto } if } for /dsubT 0 def subTwidth SLW subTColor subLSstroke +grestore } dsubT abs 0 gt { gsave /cntsubTick cntTick dsubT add def +subTNo 1 sub { cntsubTick abs MinValue abs le { cntsubTick tickstart +STsize mul exch moveto cntsubTick tickend STsize mul exch lineto }{ +exit } ifelse /cntsubTick cntsubTick dsubT add def } repeat subTwidth +SLW subTColor subLSstroke grestore } if gsave cntTick tickstart exch +moveto cntTick tickend exch lineto Twidth SLW TColor LSstroke grestore +} for } if end + +@endspecial 1600 +-2793 a Fc(0)1600 -9092 y(2)1600 -15391 y(4)2873 -1440 +y(0)5746 b(2)g(4)3150 -3150 y + tx@Dict begin { 48.36957 -22.76227 } PutCoor PutBegin end + 3150 -3150 a 385 x Fc(1)p +Fb(:)370 b(K)79 b(oor)31 b(dinate)3150 -3150 y + tx@Dict begin PutEnd end + 3150 -3150 +a 3150 -3150 a + tx@Dict begin { 136.57324 0.0 } PutCoor PutBegin end + 3150 -3150 a 2834 -2911 a Fb(x)3150 -3150 +y + tx@Dict begin PutEnd end + 3150 -3150 a 3150 -3150 a + tx@Dict begin { 11.38092 113.81097 } PutCoor PutBegin end + 3150 -3150 a 385 x Fc(2)p +Fb(:)370 b(K)79 b(oor)31 b(dinate)3150 -3150 y + tx@Dict begin PutEnd end + 3150 -3150 +a 3150 -3150 a + tx@Dict begin { 0.0 136.57324 } PutCoor PutBegin end + 3150 -3150 a 2859 -3019 a Fb(y)3150 -3150 +y + tx@Dict begin PutEnd end + 3150 -3150 a @beginspecial @setspecial + tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def /ArrowInside +{ } def 0.1 SLW 1 0 0 setrgbcolor /ArrowA { moveto } def /ArrowB +{ } def /ArrowInside { } def [ 85.35823 85.35823 0.0 0.0 /Lineto +/lineto load def false NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } +if () length 0 gt { 2 copy /y1 ED /x1 ED ArrowA x1 y1 /n n 1 sub def +n { 4 copy /y1 ED /x1 ED /y2 ED /x2 ED x1 y1 0.5 1 gt { /Alpha y2 +y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length x2 x1 sub y2 y1 +sub Pyth def /dArrowPos 0.5 abs def { /ArrowPos ArrowPos dArrowPos +add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos mul add +y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{ /ArrowPos +0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{0.5 } ifelse def 1. + cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul +x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat } +ifelse pop pop Lineto } repeat }{ ArrowA /n n 2 sub def n { Lineto +} repeat } ifelse CP 4 2 roll ArrowB L pop pop } if gsave 0.1 SLW +1 0 0 setrgbcolor 0 setlinecap stroke grestore end + +@endspecial +3150 -3150 a + tx@Dict begin { 85.35823 -8.5359 } PutCoor PutBegin end + 3150 -3150 a 2609 -2995 a Fb(a)3194 -2829 +y Fa(1)3150 -3150 y + tx@Dict begin PutEnd end + 3150 -3150 a 3150 -3150 a + tx@Dict begin { -8.5359 85.35823 } PutCoor PutBegin end + 3150 -3150 +a 2609 -2995 a Fb(a)3194 -2829 y Fa(2)3150 -3150 y + tx@Dict begin PutEnd end + 3150 +-3150 a @beginspecial @setspecial + tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def /ArrowInside +{ } def 0.1 SLW 0 0 1 setrgbcolor /ArrowA { moveto } def /ArrowB +{ } def /ArrowInside { } def [ 85.35823 85.35823 85.35823 -5.69046 + /Lineto /lineto load def false NArray n 0 eq not { n 1 eq { 0 0 /n +2 def } if () length 0 gt { 2 copy /y1 ED /x1 ED ArrowA x1 y1 /n n +1 sub def n { 4 copy /y1 ED /x1 ED /y2 ED /x2 ED x1 y1 0.5 1 gt { +/Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length x2 x1 +sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def { /ArrowPos ArrowPos +dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos +mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{ +/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{0.5 } ifelse +def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos +mul x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat +} ifelse pop pop Lineto } repeat }{ ArrowA /n n 2 sub def n { Lineto +} repeat } ifelse CP 4 2 roll ArrowB L pop pop } if gsave 0.1 SLW +0 0 1 setrgbcolor [ 5.0 3.0 ] 0 0 add dup 0 gt { /a .5 def PathLength +exch div } { pop /a 1 def PathLength } ifelse /b ED dup /X ED 0 get +/y ED /z 0 X {add} forall def b a .5 sub 2 mul y mul sub z Div round +z mul a .5 sub 2 mul y mul add b exch Div /z ED false X { z mul } forall +X astore {0 gt or} forall { X 1 a sub y mul } { [ 1 0 ] 0 } ifelse +setdash stroke grestore end + +@endspecial @beginspecial +@setspecial + tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def /ArrowInside +{ } def 0.1 SLW 0 0 1 setrgbcolor /ArrowA { moveto } def /ArrowB +{ } def /ArrowInside { } def [ 85.35823 85.35823 -5.69046 85.35823 + /Lineto /lineto load def false NArray n 0 eq not { n 1 eq { 0 0 /n +2 def } if () length 0 gt { 2 copy /y1 ED /x1 ED ArrowA x1 y1 /n n +1 sub def n { 4 copy /y1 ED /x1 ED /y2 ED /x2 ED x1 y1 0.5 1 gt { +/Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length x2 x1 +sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def { /ArrowPos ArrowPos +dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos +mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{ +/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{0.5 } ifelse +def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos +mul x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat +} ifelse pop pop Lineto } repeat }{ ArrowA /n n 2 sub def n { Lineto +} repeat } ifelse CP 4 2 roll ArrowB L pop pop } if gsave 0.1 SLW +0 0 1 setrgbcolor [ 5.0 3.0 ] 0 0 add dup 0 gt { /a .5 def PathLength +exch div } { pop /a 1 def PathLength } ifelse /b ED dup /X ED 0 get +/y ED /z 0 X {add} forall def b a .5 sub 2 mul y mul sub z Div round +z mul a .5 sub 2 mul y mul add b exch Div /z ED false X { z mul } forall +X astore {0 gt or} forall { X 1 a sub y mul } { [ 1 0 ] 0 } ifelse +setdash stroke grestore end + +@endspecial @beginspecial @setspecial + tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { BeginArrow +1. 1. scale false 0.4 1.4 1.5 2. CLW mul add dup 2 div /w ED mul +dup /h ED mul /a ED { 0 h T 1 -1 scale } if gsave w neg h moveto 0 +0 L w h L w neg a neg rlineto gsave fill grestore grestore 0 h a sub +moveto EndArrow } def /ArrowInside { } def 0.8 SLW 0 setgray +/ArrowA { moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 +1.4 1.5 2. CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 +h T 1 -1 scale } if gsave w neg h moveto 0 0 L w h L w neg a neg rlineto +gsave fill grestore grestore 0 h a sub moveto EndArrow } def /ArrowInside +{ } def [ 88.20367 82.51277 99.5846 71.13185 /Lineto /lineto load +def false NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if () length +0 gt { 2 copy /y1 ED /x1 ED ArrowA x1 y1 /n n 1 sub def n { 4 copy +/y1 ED /x1 ED /y2 ED /x2 ED x1 y1 0.5 1 gt { /Alpha y2 y1 sub x2 x1 +sub atan def /ArrowPos 0. def /Length x2 x1 sub y2 y1 sub Pyth def +/dArrowPos 0.5 abs def { /ArrowPos ArrowPos dArrowPos add def ArrowPos +Length gt { exit } if x1 Alpha cos ArrowPos mul add y1 Alpha sin ArrowPos +mul add ArrowInside pop pop } loop }{ /ArrowPos 0. def /dArrowPos +1. 1 gt {1.0 1. 1.0 add div }{0.5 } ifelse def 1. cvi { /ArrowPos +ArrowPos dArrowPos add def x2 x1 sub ArrowPos mul x1 add y2 y1 sub +ArrowPos mul y1 add ArrowInside pop pop } repeat } ifelse pop pop Lineto +} repeat }{ ArrowA /n n 2 sub def n { Lineto } repeat } ifelse CP 4 +2 roll ArrowB L pop pop } if gsave 0.8 SLW 0 setgray 0 setlinecap +stroke grestore end + +@endspecial +@beginspecial @setspecial + tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def /ArrowInside +{ } def 0.8 SLW 0 1 0 setrgbcolor /ArrowA { moveto } def /ArrowB +{ } def /ArrowInside { } def [ 88.20367 82.51277 82.51277 88.20367 + /Lineto /lineto load def false NArray n 0 eq not { n 1 eq { 0 0 /n +2 def } if () length 0 gt { 2 copy /y1 ED /x1 ED ArrowA x1 y1 /n n +1 sub def n { 4 copy /y1 ED /x1 ED /y2 ED /x2 ED x1 y1 0.5 1 gt { +/Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length x2 x1 +sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def { /ArrowPos ArrowPos +dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos +mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{ +/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{0.5 } ifelse +def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos +mul x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat +} ifelse pop pop Lineto } repeat }{ ArrowA /n n 2 sub def n { Lineto +} repeat } ifelse CP 4 2 roll ArrowB L pop pop } if gsave 0.8 SLW +0 1 0 setrgbcolor 0 setlinecap stroke grestore end + +@endspecial @beginspecial +@setspecial + tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB { } def /ArrowInside +{ } def 0.8 SLW 0 1 0 setrgbcolor /ArrowA { moveto } def /ArrowB +{ } def /ArrowInside { } def [ 88.20367 88.20367 82.51277 82.51277 + /Lineto /lineto load def false NArray n 0 eq not { n 1 eq { 0 0 /n +2 def } if () length 0 gt { 2 copy /y1 ED /x1 ED ArrowA x1 y1 /n n +1 sub def n { 4 copy /y1 ED /x1 ED /y2 ED /x2 ED x1 y1 0.5 1 gt { +/Alpha y2 y1 sub x2 x1 sub atan def /ArrowPos 0. def /Length x2 x1 +sub y2 y1 sub Pyth def /dArrowPos 0.5 abs def { /ArrowPos ArrowPos +dArrowPos add def ArrowPos Length gt { exit } if x1 Alpha cos ArrowPos +mul add y1 Alpha sin ArrowPos mul add ArrowInside pop pop } loop }{ +/ArrowPos 0. def /dArrowPos 1. 1 gt {1.0 1. 1.0 add div }{0.5 } ifelse +def 1. cvi { /ArrowPos ArrowPos dArrowPos add def x2 x1 sub ArrowPos +mul x1 add y2 y1 sub ArrowPos mul y1 add ArrowInside pop pop } repeat +} ifelse pop pop Lineto } repeat }{ ArrowA /n n 2 sub def n { Lineto +} repeat } ifelse CP 4 2 roll ArrowB L pop pop } if gsave 0.8 SLW +0 1 0 setrgbcolor 0 setlinecap stroke grestore end + +@endspecial 3150 -3150 a + tx@Dict begin { 93.89413 65.44139 } PutCoor PutBegin end + 3150 -3150 a 385 +x Fc(Punkt)3150 -3150 y + tx@Dict begin PutEnd end + 3150 -3150 a 3150 -3150 a + tx@Dict begin { 91.04869 54.06003 } PutCoor PutBegin end + 3150 +-3150 a 277 x Fc(\()p Fb(a)4165 -2707 y Fa(1)4662 -2873 +y Fb(;)184 b(a)5738 -2707 y Fa(2)6236 -2873 y Fc(\))3150 +-3150 y + tx@Dict begin PutEnd end + 3150 -3150 a eop end +%%Trailer + +userdict /end-hook known{end-hook}if +%%EOF diff --git a/VektorenInEbeneVeranschaulichung01.pdf b/VektorenInEbeneVeranschaulichung01.pdf new file mode 100644 index 0000000..18e11eb Binary files /dev/null and b/VektorenInEbeneVeranschaulichung01.pdf differ diff --git a/VektorenInEbeneVeranschaulichung01.pst b/VektorenInEbeneVeranschaulichung01.pst new file mode 100644 index 0000000..4ddfb41 --- /dev/null +++ b/VektorenInEbeneVeranschaulichung01.pst @@ -0,0 +1,33 @@ + \begin{pspicture}(-1,-1)(4.9,4.9) + %\psgrid[griddots=10,gridlabels=0pt, subgriddiv=0] + + %%%%%%%%%%%%%%%%%%%%%%%%Koor%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \psaxes[Ox=0,Dx=2,Oy=0,Dy=2,linewidth=0.1pt]{->}(0,0)(0,0)(4.5,4.5)%Schnittpunkt, x0, y0 x1,y1 + \rput[l](1.7,-0.8){$1.\ Koordinate$} + \rput[c](4.8,0){$x$} + + \rput[l](0.4,4){$2.\ Koordinate$} + \rput[c](0,4.8){$y$} + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Vektor / Gerade%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \psline[linecolor=red, linewidth=0.1pt](0,0)(3,3) + \rput[c](3.0,-0.3){$a_1$} + \rput[c](-0.3,3){$a_2$} + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%Hlfslinien%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \psline[linecolor=blue, linestyle=dashed, linewidth=0.1pt](3,-0.2)(3,3) + \psline[linecolor=blue, linestyle=dashed, linewidth=0.1pt](-0.2,3)(3,3) + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Pfeil%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \psline{->}(3.5,2.5)(3.1,2.9) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Kreuz %%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \psline[linecolor=green] (2.9,3.1)(3.1,2.9) + \psline[linecolor=green] (2.9,2.9)(3.1,3.1) + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Beschriftung am Pfeil %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \rput[l](3.3,2.3){Punkt} + \rput[l](3.2,1.9){$(a_1, a_2)$} + \end{pspicture} \ No newline at end of file diff --git a/VektorenInEbeneVeranschaulichung02.eps b/VektorenInEbeneVeranschaulichung02.eps new file mode 100644 index 0000000..0ba5c16 --- /dev/null +++ b/VektorenInEbeneVeranschaulichung02.eps @@ -0,0 +1,1513 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Creator: dvips(k) 5.94a Copyright 2003 Radical Eye Software +%%Title: 2dgrafiken.dvi +%%CreationDate: Wed Aug 18 10:21:27 2004 +%%BoundingBox: 71 552 250 721 +%%DocumentFonts: CMR10 CMMI10 CMR7 CMSY7 +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: E:\texmf\miktex\bin\dvips.exe -E 2dgrafiken.dvi +%DVIPSParameters: dpi=600 +%DVIPSSource: TeX output 2004.08.18:1021 +%%BeginProcSet: tex.pro 0 0 +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 +mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 +0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ +landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize +mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ +matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round +exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ +statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] +N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin +/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array +/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N +df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S +/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy +setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask +restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put +}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ +bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A +mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ +SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ +userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X +1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N +/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ +/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) +(LaserWriter 16/600)]{A length product length le{A length product exch 0 +exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse +end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask +grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} +imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round +exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto +fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p +delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} +B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ +p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S +rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end + +%%EndProcSet +%%BeginProcSet: pstricks.pro 0 0 +%! +% PostScript prologue for pstricks.tex. +% Version 97 patch 4, 04/05/10 +% For distribution, see pstricks.tex. +% +/tx@Dict 200 dict def tx@Dict begin +/ADict 25 dict def +/CM { matrix currentmatrix } bind def +/SLW /setlinewidth load def +/CLW /currentlinewidth load def +/CP /currentpoint load def +/ED { exch def } bind def +/L /lineto load def +/T /translate load def +/TMatrix { } def +/RAngle { 0 } def +/Atan { /atan load stopped { pop pop 0 } if } def +/Div { dup 0 eq { pop } { div } ifelse } def +/NET { neg exch neg exch T } def +/Pyth { dup mul exch dup mul add sqrt } def +/PtoC { 2 copy cos mul 3 1 roll sin mul } def +/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def } +def +/PathLength { flattenpath /z 0 def { /y1 ED /x1 ED /y2 y1 def /x2 x1 def +} { /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ } +/pathforall load stopped { pop pop pop pop } if z } def +/STP { .996264 dup scale } def +/STV { SDict begin normalscale end STP } def +% +%%-------------- DG begin patch 15 ---------------%% +%/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def +%PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y +%mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul +%/y ED x mul /x ED x 0 gt y 0 gt and { [ y x ] 1 a sub y mul } { [ 1 0 ] +%0 } ifelse setdash stroke } def +/DashLine { + dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def PathLength } ifelse + /b ED /x1 ED /y1 ED /x ED /y ED + /z y x add y1 add x1 add def + /Coef b a .5 sub 2 mul y mul sub z Div round + z mul a .5 sub 2 mul y mul add b exch Div def + /y y Coef mul def /x x Coef mul def /y1 y1 Coef mul def /x1 x1 Coef mul def + x1 0 gt y1 0 gt x 0 gt y 0 gt and { [ y x y1 x1 ] 1 a sub y mul} + { [ 1 0] 0 } ifelse setdash stroke +} def +%%-------------- DG end patch 15 ---------------%% +/DotLine { /b PathLength def /a ED /z ED /y CLW def /z y z add def a 0 gt +{ /b b a div def } { a 0 eq { /b b y sub def } { a -3 eq { /b b y add +def } if } ifelse } ifelse [ 0 b b z Div round Div dup 0 le { pop 1 } if +] a 0 gt { 0 } { y 2 div a -2 gt { neg } if } ifelse setdash 1 +setlinecap stroke } def +/LineFill { gsave abs CLW add /a ED a 0 dtransform round exch round exch +2 copy idtransform exch Atan rotate idtransform pop /a ED .25 .25 +% DG/SR modification begin - Dec. 12, 1997 - Patch 2 +%itransform translate pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a +itransform pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a +% DG/SR modification end +Div cvi /x1 ED /y2 y2 y1 sub def clip newpath 2 setlinecap systemdict +/setstrokeadjust known { true setstrokeadjust } if x2 x1 sub 1 add { x1 +% DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis) +% a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore } +% def +a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore +pop pop } def +% DG/SR modification end +/BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg +exch 3 index sub exch Atan rotate newpath } def +/EndArrow { @mtrx setmatrix CP grestore end } def +/Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1 +scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill +grestore } def +/Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0 +CLW moveto } def +/Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2 +div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0 +CLW moveto } def +/RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW +2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0 +curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto } +def +/SD { 0 360 arc fill } def +/EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS +CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def +/Shadow { [ { /moveto load } { /lineto load } { /curveto load } { +/closepath load } /pathforall load stopped { pop pop pop pop CP /moveto +load } if ] cvx newpath 3 1 roll T exec } def +/NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch +cvi def } def +/NArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if +f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def +/Line { NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub +def n { Lineto } repeat CP 4 2 roll ArrowB L pop pop } if } def +/Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 } +ifelse { pop } repeat a } def +/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq +and { pop pop /n n 1 sub def } if } def +/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop } +repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1 +ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1 +moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto +Lineto pop pop closepath } ifelse } def +/Diamond { /mtrx CM def T rotate /h ED /w ED dup 0 eq { pop } { CLW mul +neg /d ED /a w h Atan def /h d a sin Div h add def /w d a cos Div w add +def } ifelse mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2 +div /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx +setmatrix } def +% DG modification begin - Jan. 15, 1997 +%/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup 0 eq { +%pop } { CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2 +%div dup cos exch sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d 0 +%d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx +%setmatrix } def +/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup +CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2 +div dup cos exch sin Div mul sub def mark 0 d w neg d 0 h w d 0 +d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx +% DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis) +% setmatrix } def +setmatrix pop } def +% DG/SR modification end +/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth +def } def +/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth +def } def +/CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1 +def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp +mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos +abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def +/y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul +m mul neg def } def +/IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if } +ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def } +def +/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def +/NC { CC x1 y1 x2 y2 x y curveto } def +/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def +/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def +/NAC { x2 y2 x y curveto CC x1 y1 } def +/EAC { x2 y2 x y ArrowB curveto pop pop } def +/OpenCurve { NArray n 3 lt { n { pop pop } repeat } { BOC /n n 3 sub def + n { NC } repeat EOC } ifelse } def +/AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload +/Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop +pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def +/ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt { +CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC } +repeat closepath pop pop } ifelse } def +/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def +/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def +/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore } +def +/FontDot { DS 2 mul dup matrix scale matrix concatmatrix exch matrix +rotate matrix concatmatrix exch findfont exch makefont setfont } def +/Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto +x1 y1 lineto closepath } def +/OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1 +y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div +exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse +/b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto +x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath } +ifelse } def +/Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add +/y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq { +pop pop Rect } { OvalFrame } ifelse } def +/BezierNArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop +} if n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat f { ] +aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def +/OpenBezier { BezierNArray n 1 eq { pop pop } { ArrowA n 4 sub 3 idiv { 6 +2 roll 4 2 roll curveto } repeat 6 2 roll 4 2 roll ArrowB curveto } +ifelse } def +/ClosedBezier { BezierNArray n 1 eq { pop pop } { moveto n 1 sub 3 idiv { +6 2 roll 4 2 roll curveto } repeat closepath } ifelse } def +/BezierShowPoints { gsave Points aload length 2 div cvi /n ED moveto n 1 +sub { lineto } repeat CLW 2 div SLW [ 4 4 ] 0 setdash stroke grestore } +def +/Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1 +sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA +x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0 +y0 x0 2 mul x1 sub y1 ] def } def +/Grid { newpath /a 4 string def /b ED /c ED /n ED cvi dup 1 lt { pop 1 } +if /s ED s div dup 0 eq { pop 1 } if /dy ED s div dup 0 eq { pop 1 } if +/dx ED dy div round dy mul /y0 ED dx div round dx mul /x0 ED dy div +round cvi /y2 ED dx div round cvi /x2 ED dy div round cvi /y1 ED dx div +round cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def /w x2 x1 sub +0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2 div add def +/Helvetica findfont b scalefont setfont /b b .95 mul CLW 2 div add def } +if systemdict /setstrokeadjust known { true setstrokeadjust /t { } def } +{ /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add +exch itransform } bind def } ifelse gsave n 0 gt { 1 setlinecap [ 0 dy n +div ] dy n div 2 div setdash } { 2 setlinecap } ifelse /i x1 def /f y1 +dy mul n 0 gt { dy n div 2 div h mul sub } if def /g y2 dy mul n 0 gt { +dy n div 2 div h mul add } if def x2 x1 sub w mul 1 add dup 1000 gt { +pop 1000 } if { i dx mul dup y0 moveto b 0 gt { gsave c i a cvs dup +stringwidth pop /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse h 0 gt {b neg} +{z1} ifelse rmoveto show grestore } if dup t f moveto g t L stroke /i i +w add def } repeat grestore gsave n 0 gt +% DG/SR modification begin - Nov. 7, 1997 - Patch 1 +%{ 1 setlinecap [ 0 dx n div ] dy n div 2 div setdash } +{ 1 setlinecap [ 0 dx n div ] dx n div 2 div setdash } +% DG/SR modification end +{ 2 setlinecap } ifelse /i y1 def /f x1 dx mul +n 0 gt { dx n div 2 div w mul sub } if def /g x2 dx mul n 0 gt { dx n +div 2 div w mul add } if def y2 y1 sub h mul 1 add dup 1000 gt { pop +1000 } if { newpath i dy mul dup x0 exch moveto b 0 gt { gsave c i a cvs +dup stringwidth pop /z2 ED w 0 gt {z1 z2 add neg} {z1} ifelse h 0 gt +{z1} {b neg} ifelse rmoveto show grestore } if dup f exch t moveto g +exch t L stroke /i i h add def } repeat grestore } def +/ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0 +1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add +exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c +mul neg d } def +/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def +/Rot { CP CP translate 3 -1 roll neg rotate NET } def +/RotBegin { tx@Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 } +def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot /RAngle [ RAngle +dup a add ] cvx def } def +/RotEnd { /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle pop ] +cvx def } def +/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def +/PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def +/PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def +/Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s +abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b +div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } { +h1 abs h sub dup s mul abs } ifelse } def +/UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s +mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q +{ x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add +exch } def +/BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { Visible +/IfVisible true def } if } { IfVisible { Invisible /IfVisible false def +} if } ifelse } def +/InitOL { /OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def +/Visible { CP OLUnit idtransform T moveto } def /Invisible { CP OLUnit +neg exch neg exch idtransform T moveto } def /BOL { BeginOL } def +/IfVisible true def } def +end +% END pstricks.pro + +%%EndProcSet +%%BeginProcSet: pst-dots.pro 0 0 +%!PS-Adobe-2.0 +%%Title: Dot Font for PSTricks +%%Creator: Timothy Van Zandt +%%Creation Date: May 7, 1993 +%% Version 97 patch 1, 99/12/16 +%% Modified by Etienne Riga - Dec. 16, 1999 +%% to add /Diamond, /SolidDiamond and /BoldDiamond +10 dict dup begin + /FontType 3 def + /FontMatrix [ .001 0 0 .001 0 0 ] def + /FontBBox [ 0 0 0 0 ] def + /Encoding 256 array def + 0 1 255 { Encoding exch /.notdef put } for + Encoding + dup (b) 0 get /Bullet put + dup (c) 0 get /Circle put + dup (C) 0 get /BoldCircle put + dup (u) 0 get /SolidTriangle put + dup (t) 0 get /Triangle put + dup (T) 0 get /BoldTriangle put + dup (r) 0 get /SolidSquare put + dup (s) 0 get /Square put + dup (S) 0 get /BoldSquare put + dup (q) 0 get /SolidPentagon put + dup (p) 0 get /Pentagon put + dup (P) 0 get /BoldPentagon put +% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga + dup (l) 0 get /SolidDiamond put + dup (d) 0 get /Diamond put + (D) 0 get /BoldDiamond put +% DG/SR modification end + /Metrics 13 dict def + Metrics begin + /Bullet 1000 def + /Circle 1000 def + /BoldCircle 1000 def + /SolidTriangle 1344 def + /Triangle 1344 def + /BoldTriangle 1344 def + /SolidSquare 886 def + /Square 886 def + /BoldSquare 886 def + /SolidPentagon 1093.2 def + /Pentagon 1093.2 def + /BoldPentagon 1093.2 def +% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga + /SolidDiamond 1008 def + /Diamond 1008 def + /BoldDiamond 1008 def +% DG/SR modification end + /.notdef 0 def + end + /BBoxes 13 dict def + BBoxes begin + /Circle { -550 -550 550 550 } def + /BoldCircle /Circle load def + /Bullet /Circle load def + /Triangle { -571.5 -330 571.5 660 } def + /BoldTriangle /Triangle load def + /SolidTriangle /Triangle load def + /Square { -450 -450 450 450 } def + /BoldSquare /Square load def + /SolidSquare /Square load def + /Pentagon { -546.6 -465 546.6 574.7 } def + /BoldPentagon /Pentagon load def + /SolidPentagon /Pentagon load def +% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga + /Diamond { -428.5 -742.5 428.5 742.5 } def + /BoldDiamond /Diamond load def + /SolidDiamond /Diamond load def +% DG/SR modification end + /.notdef { 0 0 0 0 } def + end + /CharProcs 20 dict def + CharProcs begin + /Adjust { + 2 copy dtransform floor .5 add exch floor .5 add exch idtransform + 3 -1 roll div 3 1 roll exch div exch scale + } def + /CirclePath { 0 0 500 0 360 arc closepath } def + /Bullet { 500 500 Adjust CirclePath fill } def + /Circle { 500 500 Adjust CirclePath .9 .9 scale CirclePath + eofill } def + /BoldCircle { 500 500 Adjust CirclePath .8 .8 scale CirclePath + eofill } def + /BoldCircle { CirclePath .8 .8 scale CirclePath eofill } def + /TrianglePath { 0 660 moveto -571.5 -330 lineto 571.5 -330 lineto + closepath } def + /SolidTriangle { TrianglePath fill } def + /Triangle { TrianglePath .85 .85 scale TrianglePath eofill } def + /BoldTriangle { TrianglePath .7 .7 scale TrianglePath eofill } def + /SquarePath { -450 450 moveto 450 450 lineto 450 -450 lineto + -450 -450 lineto closepath } def + /SolidSquare { SquarePath fill } def + /Square { SquarePath .89 .89 scale SquarePath eofill } def + /BoldSquare { SquarePath .78 .78 scale SquarePath eofill } def + /PentagonPath { + -337.8 -465 moveto + 337.8 -465 lineto + 546.6 177.6 lineto + 0 574.7 lineto + -546.6 177.6 lineto + closepath + } def + /SolidPentagon { PentagonPath fill } def + /Pentagon { PentagonPath .89 .89 scale PentagonPath eofill } def + /BoldPentagon { PentagonPath .78 .78 scale PentagonPath eofill } def +% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga + /DiamondPath { 0 742.5 moveto -428.5 0 lineto 0 -742.5 lineto + 428.5 0 lineto closepath } def + /SolidDiamond { DiamondPath fill } def + /Diamond { DiamondPath .85 .85 scale DiamondPath eofill } def + /BoldDiamond { DiamondPath .7 .7 scale DiamondPath eofill } def +% DG/SR modification end + /.notdef { } def + end + /BuildGlyph { + exch + begin + Metrics 1 index get exec 0 + BBoxes 3 index get exec + setcachedevice + CharProcs begin load exec end + end + } def + /BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec + } bind def +end +/PSTricksDotFont exch definefont pop +%END pst-dots.pro + +%%EndProcSet +%%BeginProcSet: pst-grad.pro 0 0 +%! +% PostScript prologue for pst-grad.tex. +% Version 1.04, 2004/06/23 (adding %GradientCircle style - D.G.) +% prepared by Herbert Voss +% For copying restrictions, see pstricks.tex. +% +% For the PSTricks gradient fillstyle.% +% Based on some EPS files by leeweyr!bill@nuchat.sccsi.com (W. R. Lee).% +% Syntax:% D.G. modification begin - Apr. 9, %1998 +%%%%%% R0 G0 B0 R1 G1 B1 NumLines MidPoint Angle GradientFill +% ifGradientCircle GradientScale %GradientPosX GradientPosY +% R0 G0 B0 R1 G1 B1 NumLines MidPoint %Angle GradientFill +% D.G. modification end +% +/tx@GradientDict 40 dict def +tx@GradientDict begin +/GradientFill { + rotate + /MidPoint ED + /NumLines ED + /LastBlue ED + /LastGreen ED + /LastRed ED + /FirstBlue ED + /FirstGreen ED +/FirstRed ED +% D.G. modification begin - Apr. 9, 1998 +/GradientPosY ED +/GradientPosX ED + /GradientScale ED + /ifGradientCircle ED +% D.G. modification end + % This avoids gaps due to rounding errors: + clip + pathbbox %leave llx,lly,urx,ury on stack +% D.G. modification begin - Apr. 10, 1998 + 4 copy /ury ED /urx ED /lly ED /llx ED +% D.G. modification end + /y ED /x ED +% D.G. modification begin - Apr. 10, 1998 +ifGradientCircle + {0 GradientPosX eq + {0 GradientPosX eq {2 copy translate} if} if} + {2 copy translate} ifelse +% D.G. modification end + y sub neg /y ED + x sub neg /x ED % This avoids gaps due to rounding errors: + LastRed FirstRed add 2 div + LastGreen FirstGreen add 2 div + LastBlue FirstBlue add 2 div + setrgbcolor +% D.G. modification begin - Jul. 23, 1997 / Apr. 9, 1998 + ifGradientCircle + {/YSizePerLine y NumLines div def + /CurrentY y 2 div def + /MidLine NumLines 2 div 1 MidPoint sub mul abs cvi def} + {fill + /YSizePerLine y NumLines div def + /CurrentY 0 def + /MidLine NumLines 1 MidPoint sub mul abs cvi def} ifelse +% DG modification end + MidLine NumLines 2 sub gt + { /MidLine NumLines def } + { MidLine 2 lt { /MidLine 0 def } if } + ifelse + MidLine 0 gt + { + /Red FirstRed def + /Green FirstGreen def + /Blue FirstBlue def + /RedIncrement LastRed FirstRed sub MidLine 1 sub div def + /GreenIncrement LastGreen FirstGreen sub MidLine 1 sub div def + /BlueIncrement LastBlue FirstBlue sub MidLine 1 sub div def + MidLine { GradientLoop } repeat + } if + MidLine NumLines lt + { + /Red LastRed def + /Green LastGreen def + /Blue LastBlue def + /RedIncrement FirstRed LastRed sub NumLines MidLine sub 1 sub div def + /GreenIncrement FirstGreen LastGreen sub NumLines MidLine sub 1 sub div def + /BlueIncrement FirstBlue LastBlue sub NumLines MidLine sub 1 sub div def + NumLines MidLine sub { GradientLoop } repeat } + if + } def/GradientLoop { +% D.G. modification begin - Jul. 23, 1997 / Apr. 9, 1998 + ifGradientCircle + {CurrentY 0 gt { +% The default center used is the center of the bounding box of the object + 0 GradientPosX eq {0 GradientPosX eq + {/GradientPosX urx llx sub 2 div def + /GradientPosY ury lly sub 2 div def} if} if + GradientPosX GradientPosY CurrentY GradientScale mul 0 360 arc + Red Green Blue setrgbcolor fill + /CurrentY CurrentY YSizePerLine sub def + /Blue Blue BlueIncrement add def + /Green Green GreenIncrement add def + /Red Red RedIncrement add def} if} {0 CurrentY moveto x 0 rlineto + 0 YSizePerLine rlineto x neg 0 rlineto closepath + Red Green Blue setrgbcolor fill /CurrentY CurrentY YSizePerLine add def + /Blue Blue BlueIncrement add def /Green Green GreenIncrement add def + /Red Red RedIncrement add def} ifelse% D.G. modification end + }def + end +% END pst-grad.pro + +%%EndProcSet +%%BeginProcSet: pst-coil.pro 0 0 +%! +% PostScript prologue for pst-coil.tex. +% Version 97 patch 1, 98/06/02 +% For distribution, see pstricks.tex. +% +/tx@CoilDict 40 dict def tx@CoilDict begin +/CoilLoop { /t ED t sin AspectSin mul t 180 div AspectCos mul add t cos +lineto } def +/Coil { /Inc ED dup sin /AspectSin ED cos /AspectCos ED /ArmB ED /ArmA ED +/h ED /w ED /y1 ED /x1 ED /y0 ED /x0 ED x0 y0 translate y1 y0 sub x1 x0 +sub 2 copy Pyth /TotalLength ED Atan rotate /BeginAngle ArmA AspectCos +Div w h mul Div 360 mul def /EndAngle TotalLength ArmB sub AspectCos Div +w h mul Div 360 mul def 1 0 0 0 ArrowA ArmA 0 lineto /mtrx CM def w h +mul 2 Div w 2 Div scale BeginAngle Inc EndAngle { CoilLoop } for +EndAngle CoilLoop mtrx setmatrix TotalLength ArmB sub 0 lineto CP +% DG/SR modification begin - Jun. 2, 1998 - Patch 1 (from Michael Vulis) +% TotalLength 0 ArrowB lineto } def +TotalLength 0 ArrowB lineto +pop pop pop pop } def +% DG/SR modification end +/AltCoil { /Inc ED dup sin /AspectSin ED cos /AspectCos ED /h ED /w ED +/EndAngle ED /BeginAngle ED /mtrx CM def w h mul 2 Div w 2 Div scale +BeginAngle sin AspectSin mul BeginAngle 180 div AspectCos mul add +BeginAngle cos /lineto load stopped { moveto } if BeginAngle Inc +EndAngle { CoilLoop } for EndAngle CoilLoop mtrx setmatrix } def +/ZigZag { /ArmB ED /ArmA ED 2 div /w ED w mul /h ED /y1 ED /x1 ED /y0 ED +/x0 ED x1 y1 translate y0 y1 sub x0 x1 sub 2 copy Pyth /TotalLength ED +Atan rotate TotalLength ArmA sub ArmB sub dup h div cvi /n ED n h mul +sub 2 div dup ArmA add /ArmA ED ArmB add /ArmB ED /x ArmB h 2 div add +def mark 0 0 ArmB 0 n { x w /w w neg def /x x h add def } repeat +TotalLength ArmA sub 0 TotalLength 0 } def +end +% END pst-coil.pro + +%%EndProcSet +%%BeginProcSet: pst-text.pro 0 0 +%! +% PostScript header file pst-text.pro +% Version 97, 94/04/20 +% For distribution, see pstricks.tex. + +/tx@TextPathDict 40 dict def +tx@TextPathDict begin + +% Syntax: PathPosition - +% Function: Searches for position of currentpath distance from +% beginning. Sets (X,Y)=position, and Angle=tangent. +/PathPosition +{ /targetdist exch def + /pathdist 0 def + /continue true def + /X { newx } def /Y { newy } def /Angle 0 def + gsave + flattenpath + { movetoproc } { linetoproc } { } { firstx firsty linetoproc } + /pathforall load stopped { pop pop pop pop /X 0 def /Y 0 def } if + grestore +} def + +/movetoproc { continue { @movetoproc } { pop pop } ifelse } def + +/@movetoproc +{ /newy exch def /newx exch def + /firstx newx def /firsty newy def +} def + +/linetoproc { continue { @linetoproc } { pop pop } ifelse } def + +/@linetoproc +{ + /oldx newx def /oldy newy def + /newy exch def /newx exch def + /dx newx oldx sub def + /dy newy oldy sub def + /dist dx dup mul dy dup mul add sqrt def + /pathdist pathdist dist add def + pathdist targetdist ge + { pathdist targetdist sub dist div dup + dy mul neg newy add /Y exch def + dx mul neg newx add /X exch def + /Angle dy dx atan def + /continue false def + } if +} def + +/TextPathShow +{ /String exch def + /CharCount 0 def + String length + { String CharCount 1 getinterval ShowChar + /CharCount CharCount 1 add def + } repeat +} def + +% Syntax: InitTextPath - +/InitTextPath +{ gsave + currentpoint /Y exch def /X exch def + exch X Hoffset sub sub mul + Voffset Hoffset sub add + neg X add /Hoffset exch def + /Voffset Y def + grestore +} def + +/Transform +{ PathPosition + dup + Angle cos mul Y add exch + Angle sin mul neg X add exch + translate + Angle rotate +} def + +/ShowChar +{ /Char exch def + gsave + Char end stringwidth + tx@TextPathDict begin + 2 div /Sy exch def 2 div /Sx exch def + currentpoint + Voffset sub Sy add exch + Hoffset sub Sx add + Transform + Sx neg Sy neg moveto + Char end tx@TextPathSavedShow + tx@TextPathDict begin + grestore + Sx 2 mul Sy 2 mul rmoveto +} def + +end +% END pst-text.pro + +%%EndProcSet +%%BeginProcSet: pst-node.pro 0 0 +%! +% PostScript prologue for pst-node.tex. +% Version 97 patch 1, 97/05/09. +% For distribution, see pstricks.tex. +% +/tx@NodeDict 400 dict def tx@NodeDict begin +tx@Dict begin /T /translate load def end +/NewNode { gsave /next ED dict dup 3 1 roll def exch { dup 3 1 roll def } +if begin tx@Dict begin STV CP T exec end /NodeMtrx CM def next end +grestore } def +/InitPnode { /Y ED /X ED /NodePos { NodeSep Cos mul NodeSep Sin mul } def +} def +/InitCnode { /r ED /Y ED /X ED /NodePos { NodeSep r add dup Cos mul exch +Sin mul } def } def +/GetRnodePos { Cos 0 gt { /dx r NodeSep add def } { /dx l NodeSep sub def +} ifelse Sin 0 gt { /dy u NodeSep add def } { /dy d NodeSep sub def } +ifelse dx Sin mul abs dy Cos mul abs gt { dy Cos mul Sin div dy } { dx +dup Sin mul Cos Div } ifelse } def +/InitRnode { /Y ED /X ED X sub /r ED /l X neg def Y add neg /d ED Y sub +/u ED /NodePos { GetRnodePos } def } def +/DiaNodePos { w h mul w Sin mul abs h Cos mul abs add Div NodeSep add dup +Cos mul exch Sin mul } def +/TriNodePos { Sin s lt { d NodeSep sub dup Cos mul Sin Div exch } { w h +mul w Sin mul h Cos abs mul add Div NodeSep add dup Cos mul exch Sin mul +} ifelse } def +/InitTriNode { sub 2 div exch 2 div exch 2 copy T 2 copy 4 index index /d +ED pop pop pop pop -90 mul rotate /NodeMtrx CM def /X 0 def /Y 0 def d +sub abs neg /d ED d add /h ED 2 div h mul h d sub Div /w ED /s d w Atan +sin def /NodePos { TriNodePos } def } def +/OvalNodePos { /ww w NodeSep add def /hh h NodeSep add def Sin ww mul Cos +hh mul Atan dup cos ww mul exch sin hh mul } def +/GetCenter { begin X Y NodeMtrx transform CM itransform end } def +/XYPos { dup sin exch cos Do /Cos ED /Sin ED /Dist ED Cos 0 gt { Dist +Dist Sin mul Cos div } { Cos 0 lt { Dist neg Dist Sin mul Cos div neg } +{ 0 Dist Sin mul } ifelse } ifelse Do } def +/GetEdge { dup 0 eq { pop begin 1 0 NodeMtrx dtransform CM idtransform +exch atan sub dup sin /Sin ED cos /Cos ED /NodeSep ED NodePos NodeMtrx +dtransform CM idtransform end } { 1 eq {{exch}} {{}} ifelse /Do ED pop +XYPos } ifelse } def +/AddOffset { 1 index 0 eq { pop pop } { 2 copy 5 2 roll cos mul add 4 1 +roll sin mul sub exch } ifelse } def +/GetEdgeA { NodeSepA AngleA NodeA NodeSepTypeA GetEdge OffsetA AngleA +AddOffset yA add /yA1 ED xA add /xA1 ED } def +/GetEdgeB { NodeSepB AngleB NodeB NodeSepTypeB GetEdge OffsetB AngleB +AddOffset yB add /yB1 ED xB add /xB1 ED } def +/GetArmA { ArmTypeA 0 eq { /xA2 ArmA AngleA cos mul xA1 add def /yA2 ArmA +AngleA sin mul yA1 add def } { ArmTypeA 1 eq {{exch}} {{}} ifelse /Do ED +ArmA AngleA XYPos OffsetA AngleA AddOffset yA add /yA2 ED xA add /xA2 ED +} ifelse } def +/GetArmB { ArmTypeB 0 eq { /xB2 ArmB AngleB cos mul xB1 add def /yB2 ArmB +AngleB sin mul yB1 add def } { ArmTypeB 1 eq {{exch}} {{}} ifelse /Do ED +ArmB AngleB XYPos OffsetB AngleB AddOffset yB add /yB2 ED xB add /xB2 ED +} ifelse } def +/InitNC { /b ED /a ED /NodeSepTypeB ED /NodeSepTypeA ED /NodeSepB ED +/NodeSepA ED /OffsetB ED /OffsetA ED tx@NodeDict a known tx@NodeDict b +known and dup { /NodeA a load def /NodeB b load def NodeA GetCenter /yA +ED /xA ED NodeB GetCenter /yB ED /xB ED } if } def +/LPutLine { 4 copy 3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED 1 t sub +mul 3 1 roll 1 t sub mul 4 1 roll t mul add /Y ED t mul add /X ED } def +/LPutLines { mark LPutVar counttomark 2 div 1 sub /n ED t floor dup n gt +{ pop n 1 sub /t 1 def } { dup t sub neg /t ED } ifelse cvi 2 mul { pop +} repeat LPutLine cleartomark } def +/BezierMidpoint { /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED +/t ED /cx x1 x0 sub 3 mul def /cy y1 y0 sub 3 mul def /bx x2 x1 sub 3 +mul cx sub def /by y2 y1 sub 3 mul cy sub def /ax x3 x0 sub cx sub bx +sub def /ay y3 y0 sub cy sub by sub def ax t 3 exp mul bx t t mul mul +add cx t mul add x0 add ay t 3 exp mul by t t mul mul add cy t mul add +y0 add 3 ay t t mul mul mul 2 by t mul mul add cy add 3 ax t t mul mul +mul 2 bx t mul mul add cx add atan /NAngle ED /Y ED /X ED } def +/HPosBegin { yB yA ge { /t 1 t sub def } if /Y yB yA sub t mul yA add def +} def +/HPosEnd { /X Y yyA sub yyB yyA sub Div xxB xxA sub mul xxA add def +/NAngle yyB yyA sub xxB xxA sub Atan def } def +/HPutLine { HPosBegin /yyA ED /xxA ED /yyB ED /xxB ED HPosEnd } def +/HPutLines { HPosBegin yB yA ge { /check { le } def } { /check { ge } def +} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { dup Y check { exit +} { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark HPosEnd +} def +/VPosBegin { xB xA lt { /t 1 t sub def } if /X xB xA sub t mul xA add def +} def +/VPosEnd { /Y X xxA sub xxB xxA sub Div yyB yyA sub mul yyA add def +/NAngle yyB yyA sub xxB xxA sub Atan def } def +/VPutLine { VPosBegin /yyA ED /xxA ED /yyB ED /xxB ED VPosEnd } def +/VPutLines { VPosBegin xB xA ge { /check { le } def } { /check { ge } def +} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { 1 index X check { +exit } { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark +VPosEnd } def +/HPutCurve { gsave newpath /SaveLPutVar /LPutVar load def LPutVar 8 -2 +roll moveto curveto flattenpath /LPutVar [ {} {} {} {} pathforall ] cvx +def grestore exec /LPutVar /SaveLPutVar load def } def +/NCCoor { /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def +GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 xA1 yA1 ] cvx def /LPutPos { +LPutVar LPutLine } def /HPutPos { LPutVar HPutLine } def /VPutPos { +LPutVar VPutLine } def LPutVar } def +/NCLine { NCCoor tx@Dict begin ArrowA CP 4 2 roll ArrowB lineto pop pop +end } def +/NCLines { false NArray n 0 eq { NCLine } { 2 copy yA sub exch xA sub +Atan /AngleA ED n 2 mul dup index exch index yB sub exch xB sub Atan +/AngleB ED GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 n 2 mul 4 add 4 roll xA1 +yA1 ] cvx def mark LPutVar tx@Dict begin false Line end /LPutPos { +LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } +ifelse } def +/NCCurve { GetEdgeA GetEdgeB xA1 xB1 sub yA1 yB1 sub Pyth 2 div dup 3 -1 +roll mul /ArmA ED mul /ArmB ED /ArmTypeA 0 def /ArmTypeB 0 def GetArmA +GetArmB xA2 yA2 xA1 yA1 tx@Dict begin ArrowA end xB2 yB2 xB1 yB1 tx@Dict +begin ArrowB end curveto /LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ] +cvx def /LPutPos { t LPutVar BezierMidpoint } def /HPutPos { { HPutLines +} HPutCurve } def /VPutPos { { VPutLines } HPutCurve } def } def +/NCAngles { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate +def xA2 yA2 mtrx transform pop xB2 yB2 mtrx transform exch pop mtrx +itransform /y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA2 +yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false Line end /LPutVar [ xB1 +yB1 xB2 yB2 x0 y0 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { LPutLines } def +/HPutPos { HPutLines } def /VPutPos { VPutLines } def } def +/NCAngle { GetEdgeA GetEdgeB GetArmB /mtrx AngleA matrix rotate def xB2 +yB2 mtrx itransform pop xA1 yA1 mtrx itransform exch pop mtrx transform +/y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA1 yA1 +tx@Dict begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA1 yA1 ] +cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos { +VPutLines } def } def +/NCBar { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate def +xA2 yA2 mtrx itransform pop xB2 yB2 mtrx itransform pop sub dup 0 mtrx +transform 3 -1 roll 0 gt { /yB2 exch yB2 add def /xB2 exch xB2 add def } +{ /yA2 exch neg yA2 add def /xA2 exch neg xA2 add def } ifelse mark ArmB +0 ne { xB1 yB1 } if xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict +begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx +def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos { +VPutLines } def } def +/NCDiag { GetEdgeA GetEdgeB GetArmA GetArmB mark ArmB 0 ne { xB1 yB1 } if +xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false Line end +/LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { +LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } +def +/NCDiagg { GetEdgeA GetArmA yB yA2 sub xB xA2 sub Atan 180 add /AngleB ED +GetEdgeB mark xB1 yB1 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin +false Line end /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { +LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } +def +/NCLoop { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate +def xA2 yA2 mtrx transform loopsize add /yA3 ED /xA3 ED /xB3 xB2 yB2 +mtrx transform pop def xB3 yA3 mtrx itransform /yB3 ED /xB3 ED xA3 yA3 +mtrx itransform /yA3 ED /xA3 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 +xB3 yB3 xA3 yA3 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false +Line end /LPutVar [ xB1 yB1 xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 xA1 yA1 ] +cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos { +VPutLines } def } def +% DG/SR modification begin - May 9, 1997 - Patch 1 +%/NCCircle { 0 0 NodesepA nodeA \tx@GetEdge pop xA sub 2 div dup 2 exp r +%r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add +%exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360 +%mul add dup 5 1 roll 90 sub \tx@PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED +/NCCircle { NodeSepA 0 NodeA 0 GetEdge pop 2 div dup 2 exp r +r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add +exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360 +mul add dup 5 1 roll 90 sub PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED +% DG/SR modification end +} def /HPutPos { LPutPos } def /VPutPos { LPutPos } def r AngleA 90 sub a add +AngleA 270 add a sub tx@Dict begin /angleB ED /angleA ED /r ED /c 57.2957 r +Div def /y ED /x ED } def +/NCBox { /d ED /h ED /AngleB yB yA sub xB xA sub Atan def /AngleA AngleB +180 add def GetEdgeA GetEdgeB /dx d AngleB sin mul def /dy d AngleB cos +mul neg def /hx h AngleB sin mul neg def /hy h AngleB cos mul def +/LPutVar [ xA1 hx add yA1 hy add xB1 hx add yB1 hy add xB1 dx add yB1 dy +add xA1 dx add yA1 dy add ] cvx def /LPutPos { LPutLines } def /HPutPos +{ xB yB xA yA LPutLine } def /VPutPos { HPutPos } def mark LPutVar +tx@Dict begin false Polygon end } def +/NCArcBox { /l ED neg /d ED /h ED /a ED /AngleA yB yA sub xB xA sub Atan +def /AngleB AngleA 180 add def /tA AngleA a sub 90 add def /tB tA a 2 +mul add def /r xB xA sub tA cos tB cos sub Div dup 0 eq { pop 1 } if def +/x0 xA r tA cos mul add def /y0 yA r tA sin mul add def /c 57.2958 r div +def /AngleA AngleA a sub 180 add def /AngleB AngleB a add 180 add def +GetEdgeA GetEdgeB /AngleA tA 180 add yA yA1 sub xA xA1 sub Pyth c mul +sub def /AngleB tB 180 add yB yB1 sub xB xB1 sub Pyth c mul add def l 0 +eq { x0 y0 r h add AngleA AngleB arc x0 y0 r d add AngleB AngleA arcn } +{ x0 y0 translate /tA AngleA l c mul add def /tB AngleB l c mul sub def +0 0 r h add tA tB arc r h add AngleB PtoC r d add AngleB PtoC 2 copy 6 2 +roll l arcto 4 { pop } repeat r d add tB PtoC l arcto 4 { pop } repeat 0 +0 r d add tB tA arcn r d add AngleA PtoC r h add AngleA PtoC 2 copy 6 2 +roll l arcto 4 { pop } repeat r h add tA PtoC l arcto 4 { pop } repeat } +ifelse closepath /LPutVar [ x0 y0 r AngleA AngleB h d ] cvx def /LPutPos +{ LPutVar /d ED /h ED /AngleB ED /AngleA ED /r ED /y0 ED /x0 ED t 1 le { +r h add AngleA 1 t sub mul AngleB t mul add dup 90 add /NAngle ED PtoC } +{ t 2 lt { /NAngle AngleB 180 add def r 2 t sub h mul t 1 sub d mul add +add AngleB PtoC } { t 3 lt { r d add AngleB 3 t sub mul AngleA 2 t sub +mul add dup 90 sub /NAngle ED PtoC } { /NAngle AngleA 180 add def r 4 t +sub d mul t 3 sub h mul add add AngleA PtoC } ifelse } ifelse } ifelse +y0 add /Y ED x0 add /X ED } def /HPutPos { LPutPos } def /VPutPos { +LPutPos } def } def +/Tfan { /AngleA yB yA sub xB xA sub Atan def GetEdgeA w xA1 xB sub yA1 yB +sub Pyth Pyth w Div CLW 2 div mul 2 div dup AngleA sin mul yA1 add /yA1 +ED AngleA cos mul xA1 add /xA1 ED /LPutVar [ xA1 yA1 m { xB w add yB xB +w sub yB } { xB yB w sub xB yB w add } ifelse xA1 yA1 ] cvx def /LPutPos +{ LPutLines } def /VPutPos@ { LPutVar flag { 8 4 roll pop pop pop pop } +{ pop pop pop pop 4 2 roll } ifelse } def /VPutPos { VPutPos@ VPutLine } +def /HPutPos { VPutPos@ HPutLine } def mark LPutVar tx@Dict begin +/ArrowA { moveto } def /ArrowB { } def false Line closepath end } def +/LPutCoor { NAngle tx@Dict begin /NAngle ED end gsave CM STV CP Y sub neg +exch X sub neg exch moveto setmatrix CP grestore } def +/LPut { tx@NodeDict /LPutPos known { LPutPos } { CP /Y ED /X ED /NAngle 0 +def } ifelse LPutCoor } def +/HPutAdjust { Sin Cos mul 0 eq { 0 } { d Cos mul Sin div flag not { neg } +if h Cos mul Sin div flag { neg } if 2 copy gt { pop } { exch pop } +ifelse } ifelse s add flag { r add neg } { l add } ifelse X add /X ED } +def +/VPutAdjust { Sin Cos mul 0 eq { 0 } { l Sin mul Cos div flag { neg } if +r Sin mul Cos div flag not { neg } if 2 copy gt { pop } { exch pop } +ifelse } ifelse s add flag { d add } { h add neg } ifelse Y add /Y ED } +def +end +% END pst-node.pro + +%%EndProcSet +%%BeginProcSet: texps.pro 0 0 +%! +TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 +index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll +exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics +exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub +dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} +ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict +end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{ +dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 +roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def +dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def} +if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def} +def end + +%%EndProcSet +%%BeginProcSet: special.pro 0 0 +%! +TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N +/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N +/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N +/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ +/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho +X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B +/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ +/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known +{userdict/md get type/dicttype eq{userdict begin md length 10 add md +maxlength ge{/md md dup length 20 add dict copy def}if end md begin +/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S +atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ +itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll +transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll +curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf +pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} +if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 +-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 +get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip +yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub +neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ +noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop +90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get +neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr +1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr +2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 +-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S +TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ +Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale +}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState +save N userdict maxlength dict begin/magscale true def normalscale +currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts +/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x +psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx +psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub +TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{ +psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 +roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath +moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict +begin/SpecialSave save N gsave normalscale currentpoint TR +@SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{ +CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto +closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx +sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR +}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse +CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury +lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N +/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end} +repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N +/@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX +currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY +moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X +/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 +1 startangle endangle arc savematrix setmatrix}N end + +%%EndProcSet +%%BeginProcSet: color.pro 0 0 +%! +TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop +setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll +}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def +/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ +setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ +/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch +known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC +/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC +/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 +setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 +setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 +0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC +/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 +setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 +0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ +0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ +0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC +/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 +setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 +setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 +0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC +/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 +setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 +0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ +0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ +0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC +/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 +setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC +/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 +0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 +0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 +0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 +setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 +0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC +/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 +setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 +0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 +1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC +/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 +setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ +0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} +DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 +setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 +setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 +setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end + +%%EndProcSet +%%BeginFont: CMSY7 +%!PS-AdobeFont-1.1: CMSY7 1.0 +%%CreationDate: 1991 Aug 15 07:21:52 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSY7) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /CMSY7 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 48 /prime put +readonly def +/FontBBox{-15 -951 1252 782}readonly def +/UniqueID 5000817 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 +7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 +A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 +E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A +221A37D9A807DD01161779DDE7D251491EBF65A98C9FE2B1CF8D725A70281949 +8F4AFFE638BBA6B12386C7F32BA350D62EA218D5B24EE612C2C20F43CD3BFD0D +F02B185B692D7B27BEC7290EEFDCF92F95DDEB507068DE0B0B0351E3ECB8E443 +E611BE0A41A1F8C89C3BC16B352C3443AB6F665EAC5E0CC4229DECFC58E15765 +424C919C273E7FA240BE7B2E951AB789D127625BBCB7033E005050EB2E12B1C8 +E5F3AD1F44A71957AD2CC53D917BFD09235601155886EE36D0C3DD6E7AA2EF9C +C402C77FF1549E609A711FC3C211E64E8F263D60A57E9F2B47E3480B978AAF63 +868AEA25DA3D5413467B76D2F02F8097D2841EDA6677731A6ACFEC0BABF1016A +089B2D24E941E5E7649642B5280D22A2A1499CA9708C88490B456D647364C957 +D289912A4360E31002BEB15135CC9FEBE452F9F6C627968ABD65EC4D987AC218 +E4C5427189CFB260E8321817639C61C05B19DD9035A4CDB46FCC415633BB924E +C508609EF6EA51685FD6E4EB10FB915414DBB3022D3733CBEB1BAFD628ACB64A +661042A600224B084B612B557596A01D1F1F5CB77E3E63E93510A79E0D131271 +3F35F8C34F36C30A593689DD275BDB0054C56527EE372B33BB5673041EE004DA +002AD9C278B0CBA7F111CF641C05FC33AD07591C6FE59CA12B0E2D +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR7 +%!PS-AdobeFont-1.1: CMR7 1.0 +%%CreationDate: 1991 Aug 20 16:39:21 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR7) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR7 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 49 /one put +dup 50 /two put +readonly def +/FontBBox{-27 -250 1122 750}readonly def +/UniqueID 5000790 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6CC3F1E9AE32F234EB60FE7D +E34995B1ACFF52428EA20C8ED4FD73E3935CEBD40E0EAD70C0887A451E1B1AC8 +47AEDE4191CCDB8B61345FD070FD30C4F375D8418DDD454729A251B3F61DAE7C +8882384282FDD6102AE8EEFEDE6447576AFA181F27A48216A9CAD730561469E4 +78B286F22328F2AE84EF183DE4119C402771A249AAC1FA5435690A28D1B47486 +1060C8000D3FE1BF45133CF847A24B4F8464A63CEA01EC84AA22FD005E74847E +01426B6890951A7DD1F50A5F3285E1F958F11FC7F00EE26FEE7C63998EA1328B +C9841C57C80946D2C2FC81346249A664ECFB08A2CE075036CEA7359FCA1E90C0 +F686C3BB27EEFA45D548F7BD074CE60E626A4F83C69FE93A5324133A78362F30 +8E8DCC80DD0C49E137CDC9AC08BAE39282E26A7A4D8C159B95F227BDA2A281AF +A9DAEBF31F504380B20812A211CF9FEB112EC29A3FB3BD3E81809FC6293487A7 +455EB3B879D2B4BD46942BB1243896264722CB59146C3F65BD59B96A74B12BB2 +9A1354AF174932210C6E19FE584B1B14C00E746089CBB17E68845D7B3EA05105 +EEE461E3697FCF835CBE6D46C75523478E766832751CF6D96EC338BDAD57D53B +52F5340FAC9FE0456AD13101824234B262AC0CABA43B62EBDA39795BAE6CFE97 +563A50AAE1F195888739F2676086A9811E5C9A4A7E0BF34F3E25568930ADF80F +0BDDAC3B634AD4BA6A59720EA4749236CF0F79ABA4716C340F98517F6F06D9AB +7ED8F46FC1868B5F3D3678DF71AA772CF1F7DD222C6BF19D8EF0CFB7A76FC6D1 +0AD323C176134907AB375F20CFCD667AB094E2C7CB2179C4283329C9E435E7A4 +1E042AD0BAA059B3F862236180B34D3FCED833472577BACD472A4CD5C7347D2E +1D0D6630F446F3708FCB29A85F40B4DAB4D60AA8F5B2DBD67F2E45D80C7A7E86 +144669F75F8FA14609F8E4246FEC475ED262E03D30393C78C7828206842B565A +DBE20EA52EE9C4C3862B2F5F12CF89D935B89B84A45CEFCEAEE8EC8806339364 +56FF1FE2E5112803E3E40162D5188D2210A54816AA9960611721C23A292AE80A +8F8C0FB114D71C111700B0FEA8804F37C5D31ECD7006603C53F4BDF7208286AF +3A25CEE58E88BF81A4800B68C2A19EBDADF9B1074702E779A7DD915EFE09D35E +BD176D7346D859D0944520171C4E97696AE0502C43C391FCE5E8FB1789065E18 +BE3AF62200D57912360411CE848B4550D1B0A3BA576F9B41CED3A23E753631A7 +25375ABE8A4B55BC65AE2EAFAE452766961965093084D218637FB447795CC991 +EB1EF26BF82B7A81FA847ABD3B559D35828AD7DDC5FC7B43C6C14E6ADEDD7663 +F272AA9A121630C5263D58773BCB1437EC2FC54C4AF90E677A8E7D1738D003D4 +18998C03CC9AE182E7758767FEB5E1B03C6CC32AD30D0ABAE6552290771E2CB1 +A23F469A8447C1868C6DEC2C3C2BCFC691867E +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMI10 +%!PS-AdobeFont-1.1: CMMI10 1.100 +%%CreationDate: 1996 Jul 23 07:53:57 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 80 /P put +dup 86 /V put +dup 97 /a put +dup 101 /e put +dup 102 /f put +dup 105 /i put +dup 107 /k put +dup 108 /l put +dup 111 /o put +dup 114 /r put +dup 116 /t put +dup 120 /x put +dup 121 /y put +dup 126 /vector put +readonly def +/FontBBox{-32 -250 1048 750}readonly def +/UniqueID 5087385 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 +9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321 +990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E +6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB +DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721 +59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823 +D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF +8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808 +6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9 +1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE +03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909 +95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1 +74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2 +3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8 +47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19 +AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8 +42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8 +40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837 +B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53 +956017667589EE6908966A17DDDE40C2FA52A4C9DA871E90BC37AE8F3EE3313C +27F8AC7F2682739C20889E85105CF10A10F928BC66EB5790EECA7BDF19E991AD +5EA8A95F6D9B54D455EE368F1C6975DA165A39306CDFD858660300F4BCA6DFE9 +F3D1EA52E75678472B8909B657CF8E6340273BD7FF70A03C4406A88EBFE23749 +4C939A4B0A307804DBFB9A8596EDA44BCB0F85ECDF03280E91E180E1D41FF5E7 +05D96349D2F7C7AEB8A375EEE5C75929A39570B1C8E60DAFBE394AE2E2A79F07 +A9437C547177DCE000FC7BABE4B14C2AE2DB39D948BB268FB742902209098ACD +6077A009A01F5971EEF64351866952DAFBD08F41C2716C85E553D1BD38AD04AB +44A82A3D9B126FA60EA47FE51E6583BC16BA0CED16FF8A401F284493668FE2C7 +D40DA88B36B96D67E3D63FDEBA80F6C1DCA71B8244F9EA3DECFB9B7EC83E1CAE +547E804527315482F2D43A84306A054A0F13FFD1850EC8854FE8FBBA6EB9A711 +9007FD28359772E2B9173942A02684A8DFBE224EB43FC6C920F31D0AD6782B3F +5612A2B3D31C7BA71C2701AA395F4D616D4EC5461B68B3979CD8ECC13BBEF603 +D714D5CA9341D79F2AB6E200CEC023020841B2598B2489C4D54FD35753081ACD +A3DA6F6AFA5CE44B46391FCE0E84F4E05F6F343B3F0501E546FD1AAF73CD8D64 +0A997E237BC5EBE85B1A4ADEE6ABF5CB4566AD001ACC34FE95B8CBF74A67D943 +34F2AC6D7F5E327AC1336AB13A94DA916532D6D68BC5783A02DCB7DA158002A1 +615135483906B884DF3C115D3751002AFE38E2FA21678B40E26D26DA7C530372 +0F5489A88633E03555724710902A4C266AFAD5D1D9799BFC5191FAE942B6F85F +AA9B0D64AA11A2AFFD9040EF8C4881C0835A9BEAD44CFA9E079A03AD30F9FC4C +C85AD235DF9DE1080AF647426EEFE9B9C3FD737A9F6EC42C937EF3B055A5706A +000E5FB042B0BAA09F8BD8C0AA127858201575B1EEBE96B44999595FCE327665 +75C8F3B4676F633A9B8D05FC017BA5F38A7783493D301A4179E5DE643532E221 +EC2E331F7F7E00D6B18F74F6856A57C9833EAB5E8D41A0CFEB9E33ED1108A946 +5C2EEC5533B7D6A19AA54417F7E25671D199E0CF023194FD4DD5DD9C48ED8A6C +81658AB2C77CF24D3BFBDE9365252A37CDAC54DBCF106EABEAA18918E1566C9C +5553DCB2FB76D8FB46059B0BD7CAEE20CB1C6ADCEFA160E198398387331ADE14 +43BA2FFB3A315318335F12C0D6BDE8358EA092DEF5BDAC17AF1D1B691418FA9F +C0189D5C2F79F0F82EE9B468F891552BEED0203CF86A30163FDA23E7369D6776 +6A9CDEADC274CB28E506C22742195EE1957F64A3493A4211B98EF1051698173F +FEA93E1CFF4D95E573D17B6C14B06379E39A3700566D7F6750A0801F79BFB6E2 +4D2970DB0ADF42027C7CB28397E2CD289AE1955F486A37F45D0CCC523136AC3B +4F6B0A587A2A8EA3EAFECCEE8B8A3F23261EB07A03E753C06BC9CA4D8673E659 +81663A676D98274F2463E8DC2504257236BCA1EBB16601A0FA2C75FA6E3D6C5D +E14D2F4758F06250AF3BECE5AF1DF1D9E6EAB6CD1E895373C2FE9AE6F5AB18DF +6BEE8D7C2014924C3C917489FBFB08147A9AC82A31E955F966CCF365C6DF68E5 +1CA81DFC7033407D7EF14F4E4D430F3FF165E328A07B88B765CF6D240C73515D +B48AE1DCF2BA20FD469EEA4C078B4946B57A7A0D57A999436F8CADB99B712476 +11AB2D53D1ABDA7EF74F699497A33CCE4AD1EDD01F7E6C36284624AE2E57FF38 +A2DAA38957B7FDCBBB0F9FB57657C58258FBC76592D9B43EE95F22B8B7013946 +C2863EE1D899DEF216A47DB76E4963F2FFFF16CBC349BCDCE7FD4FBC9B9368B4 +9F2427A97B35A947F37B4D5A77119D8EE4178B5E859A4AF3C735D1FF334CE0FA +7EF6B5FC6D76D9ADBE79D311C6BD8BAE9AA6E696084DB683E26EAD896DB855CD +5044B21C9DF771987CF2BF1E55333D1900F6E31641F09A17193EEAA11A360C66 +EA7CDCF4EA77313C2E2E0809739806474A3A92F382299BBBE9CE8297252103FD +8A2D9B195D902A3D54BE7F6DF07DD48F3126C67AD125FC4E85B0898CBD739214 +02EA8FCC966C1AD7211133E56A4A3B2C377ECB338C7374A04B3AFA2F21954D7E +B56609A8F44E871B7278F69EC9A03ADE5D1CD3EA049261A8CCE41CB1D58F8798 +9FECB6F0ED59EE13F50ECA4F11594196065377D5A2294B896E1D371934C0F730 +BB69DC24BE76CEB640271BC85F5B93C8AEE60107AD3978C1B08359422475F744 +C76488486DFAAC2165481A1011B3FD7DAE0E860B13A8B33ED7EFF24E5D966259 +07ED8302ECF1849899A45CFF3753A7F38282956344AAD703B27C0F9622885C21 +C36213D22E997B556E2BB1E8E4C24508DB5E3718E98A449CAD87AD674B6D8DE4 +4D4576F3E526DCBD3B8C41CA0FC11931EE1E01C02E337E2BD1C16ED8686087BD +E908BB9BDD668A60198D47C713E877934DEA43C763CCB5716121CF1A6E4B618C +89F1CF331627F8E245878484D58D09AA4A7F4F40CB3BE4E2627C6BEB70BFC692 +1004781F39BB4CC4634B47C5A9B45DBE4DB42A9345B45DFEE664E1BD83451B9D +69B9EC1F18439140A641B5940BEC5BE3D113DB988D1F98E4C94A14943FA6FA1A +9FB22C7E79BE5E11F6EF6A87E2F7D79A16C58868A24CE5981F8F792F0CBD35F0 +865DFFB82B3684978DB8211EB1906F21984F0F2B8AA34584629D6B93A45CC547 +8CEA7773520258A5907794D8C84FDA53079ACB3ACC1E20188D4C4C838A9A4A1D +96394E8B0A29618771C367190DF953113C6021390224676851491A578203EB2D +B7BAA0F8D8CAA82A3E077A9F423EEDE5A1477B73476F3E6C017C487C3A3386A7 +F36F05413D4B9F7FA741A9AF12DA5DC3DD760FA4E11B632ABB8B197A246D340B +E0924B6BD7A0B0A353CA8BF99913AB02527F6195A3139FB36FCE034D6E65951A +DDA9453A812C19CFA26AB0B45F411E75954E50C41D276138D7F9A2FC4383D8CF +E80B6FDE131D586794B01A4B1C4F3683667D6D2500CE68484CA230BA41131DA9 +F6111B1045C21F901893E82B3575FF5DE4E55F61DC3C7D2ABA1AAC5FD81A3982 +0F33E86C095C26EC6BCBCCACD78BFD4F953469AFBC44BDC3B19355A56E8B1C59 +33C0E145D52E78C1853220D0D7C826F2F40428E6EA3EA17FD2F4AFAA299F3C50 +A817D52D4F64C4BA64CDA0EC8B1EB87D761FCC533E85E165A384D2391596D050 +B1DB03EC39FFEE5372ACA5CE05815021B876E10F0625FDF782079298D18BE163 +5BD374C5F677DCE46D563B36DB5E87D6E5BC3A27DE99E764001EEA04329EAF28 +E92CCA0955ED2B10D9125096AF27B65D0869969220A8CA4F05A41A67AE37324D +71F84F46A8CD14779B52E88F07F3EED34A036E5A7D651388DB7244BE3BD284C9 +B2ACFD0518A0673146AF72EC8CBB8DD10FD3EB4C803B495CE3523F648E0B2266 +ACEB63BE045939CBE1D204D60D37DDFD9D5839B006F33C506506658C16DD4F6B +FC0B30518A6E9ADF63CD8162558A126EBB9C6A428A8A333B7B9D176EBE2121BA +F2F34DAF60A4B073F2561CD51627815484DCADCEC2B55014B78D751EB2637487 +7D65129EB16C1B6E434E8923ACC9206945F093516AD212200F8302A56C38C37F +6A432C9774AD7B396BAB391BCE4DEA9E35705609393258005797F1DC477642B1 +1E9C8E29F968E048E9F7D084934E5B627C964CBC7E9DEB54E272B44531C93686 +85224E2801FC62B99E06D3418504BD3C1BFBB35FAAC5C92F3AAD1C079E062C62 +78EE26D1ECD2F6C7CB7722CA1992399ED773220FF10D1C784227A4FB806A850B +894692278CAA363CF9B21C91E331C6C826673753C0AE45E8609BDE4EAAC055AE +0DD224C0122420A9F371B0F6777388E5FD1014D24FE68CFD9362BEB66991E8E4 +9D +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR10 +%!PS-AdobeFont-1.1: CMR10 1.00B +%%CreationDate: 1992 Feb 19 19:54:52 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 34 /quotedblright put +dup 40 /parenleft put +dup 41 /parenright put +dup 48 /zero put +dup 50 /two put +dup 52 /four put +dup 96 /quoteleft put +readonly def +/FontBBox{-251 -250 1009 969}readonly def +/UniqueID 5000793 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 +87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F +D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 +92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C +295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 +409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C +4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF +2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E +0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E +B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 +24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B +43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF +D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 +5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC +96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 +7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC390F0303E36E09AF75 +2659C90B837112B11D993027CA8BA9B5720A124F63E7DBABB2F0303A6D876536 +B55707F5C2F3D8090BA7F3C3776E669E5B78D3C03B6E07436B6560B5906E0348 +19F295F12536FFD558FBA1AB51DC370B95A56E0B988CA064E0AC7F9101EA7481 +AE0BE8FB1A69E4B782DE4E821305F50FE95C34D782990F0D0B632FC12B1E324F +1710B2002E0F3F132ED94495BC1892BB688C4FF28BEFE906F5D076592306D8BC +30833BD11CF1198C51BE09B0721EC7211F164A664AB4C7C6FE7EA206A7ABC433 +66FAAD8EF6D6DD77674A3480CBFA62794496BF327BA0BCF7739D813518451BBF +41F9D9F03F1466758C192E2BC0FE74616331609D6DD131325357A24634E1B3FB +059814C123CA62478537A6492B618815B78DB298E699E6064DCF24EEDD570C6D +62190EB9D3874C0A69B7FE6CC9CF1C0C94CA8B063A6E51A2EBF371201F6910F3 +50B8EF85203E4DAB28B15D18FE1EA4974CA1F2575D5BFE9A919CC65AE6B558A6 +FFD7EBFA6010495B5929C2756D0A66FA495A3FA9303D97BAC395E479BEDA98CB +EC189F19FDC65CC2FE68D6C8152153E7E4C0AFC7CA5E665768A29ED5A2621D8D +D3883320C1AFA37D6F52934351A9ACC9F1CBD41AA1890EAE28F254A30C4BB502 +D5F14F8216631985F9D3BDB786F71B831327C6592B23450261E62D8B2A602B7A +1A350AE5B81130505025B793E83CFD60B47B110441B7A7F9D601E5072CB9EF50 +A8C72E79B3E077194A693BCCEDF7166836AD9F4699391F7869AF1681A3047958 +BD1D749FBEC6A223043D7E3E1D9EE1CADC7A099CB3E1E0BEBD5D642A24B15BA2 +589E4D5F9E43E906C8D8A6DCDC531A043A12D30B7ADB48E4DE0C5F072E72156D +0BE50280008B0DC78F48B14A1985AFAA85E1290576C1A2DAFC8F8B7B01C9FB96 +803510425AC3BD73A7766D4DD8EBD093BBC7905C889ACC6045B671E03238F90B +DD4F29C7D11BEC45700826D0F8F069C13D627FB44DFA54B446A8B646FA9E521C +6E570A22A6EC149091F615EFEBEEF8D48BDBD3F3A2BFEDC78BB25C1B3EC02DF6 +0BEA2B8B3BD3EA65A3A9594657AB2221D5E656DE873F473FEE416DBFD7E0A327 +D041DA40DD9EC5A401A1D8CF77AD5252993D1FFAD0AADA5ED3AAF2DA5FABCADE +309FD408F124E8D242039E116BB3E696C8C6B1C0E9C4BE7DEDC17CE2638D7EE6 +D9AAFD5E2D9E0FB0F203DC102D50731F285FEB59ADC256CA732CBCA471F8EFA9 +81BBBD76520AD91BBD93DAC7A8727CC1ECA4E52B2636F74A17101022357C995C +367A759FCE5E0B19B92A487164AE677541F59DA8D5753DF50DFE9A01B329E47C +DBA2B1050497D959B84D03466436B5F4262B97CD97AF20BE00BBAB22AD97D7C5 +948617CB66370EF80F94F53A0216ADDDE9E70D4A8080A7B27423D6CFB904B02A +61B87D639B281C263FCCFF2871DB2987FBDE82ACB428D5F9CDE907B958813DF5 +B27BB3CD4D3850227D5FA244B0DF2E1AA09E26D95CF37D613892E687297CBB15 +8D2D007231D7ED8ABD57A72C2C147E5D24C0A3EB90C88FEAF3646DF1EF332592 +0737DA5E8332EA035325822A9BA8B732B83C1B6C6194D79AA3ED2F4A125EDCA2 +59A4C52E295765C81F1D4C62807CBA97C7F301C9266F171331B133D17173D628 +45713815C8E08E9D710351136B580529F2CE8AD18C97A7C902B79B4301E2E954 +CF28F769B6472F0D1BC978B5CF020A444305C8E0143589E4F576FD655DED1E26 +B6D3A0246C07C4D0D452D53CBA68BD4A8C002A594F9D86DACEBDCA3F1D5DDEDC +A6C43EAA712FC61E3187261898B1C1859D13EC6ECCAFCBE905EEB710B6761332 +FAD0540B6BC26838B854EE2283D0C7C66BADDBB93397CED3E07E82A7DEDE6005 +E84DE1C6C167ACD34056B76B9A55B35BFAC8EE36CF6C3C96098985BB6D0D8FB1 +2A9B23014EAA8E08CAB695D060E101A060C6106EE929DA61A32F2FB61A0CC276 +22F112A94D0BF1AC65AD98BE1CE33FC666477C35CF3791B2A5294023D26B925C +F668E7E65DEB91312EEE6F1DE82C5A23362672B74908600E97557962F328A098 +4CAEF45280AFE27875E9C8B2ADFFC871D65447FF37017878D4DFED387505E39F +EE265DB480CE6667A2023D454FC8B96012E6707C7C12515971298E7BF2909B70 +4741FBEA28AD3452F16C20944DAB7283DB30B1C625F88302FE337FDAD2E54C29 + +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +TeXDict begin 40258437 52099154 1000 600 600 (2dgrafiken.dvi) +@start /Fa 207[19 48[{}1 58.1154 /CMSY7 rf /Fb 205[33 +33 49[{}2 58.1154 /CMR7 rf /Fc 129[42 4[41 47 3[30 1[37 +2[40 2[25 43 1[29 2[41 39 3[44 10[48 5[53 80[{}14 83.022 +/CMMI10 rf /Fd 159[23 43[42 1[42 1[42 6[32 32 5[42 34[{}7 +83.022 /CMR10 rf end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 600dpi +TeXDict begin + end +%%EndSetup +TeXDict begin 1 0 bop 0 TeXcolorgray 1 TeXcolorgray 0 +TeXcolorgray 1 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray +0 TeXcolorgray 1 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray +0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray +0 TeXcolorgray 0.25 TeXcolorgray 0 TeXcolorgray 0.5 TeXcolorgray +0 TeXcolorgray 0 0.1 0.95 TeXcolorrgb 0 TeXcolorgray +0 1 1 TeXcolorrgb 0 TeXcolorgray 0.75 TeXcolorgray 0 +TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray 0 1394 a + tx@Dict begin gsave CM STV CP newpath moveto 3.0 neg 0 rmoveto clip +setmatrix end + 0 +1394 a 0 1394 1477 1394 v 1477 1394 a + currentpoint grestore moveto + 1477 1394 a 264 +1157 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 0 setgray /ArrowA { BeginArrow +1. 1. scale 2 setlinecap 0 0 moveto 0 0.5 L stroke 0 0 moveto EndArrow + moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 +2. Arrow EndArrow } def 128.03734 0 0.0 0 ArrowA CP 4 2 roll +ArrowB L pop pop gsave 0.1 SLW 0 setgray 0 setlinecap stroke grestore +end + +@endspecial @beginspecial +@setspecial + tx@Dict begin STP newpath 0.1 SLW 0 setgray /ArrowA { BeginArrow +1. 1. scale 2 setlinecap 0 0 moveto 0 0.5 L stroke 0 0 moveto EndArrow + moveto } def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 +2. Arrow EndArrow } def 128.03734 0 exch 0.0 0 exch ArrowA CP 4 +2 roll ArrowB L pop pop gsave 0.1 SLW 0 setgray 0 setlinecap stroke + grestore end + +@endspecial @beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 0 setgray 0 rotate /n 2 def /dx +56.90549 def n 0 lt { /dx dx neg def /n n neg def } if /y2 3.0 CLW +2 div add def /y1 y2 neg def /x dx def n { x y1 moveto x y2 lineto +stroke /x x dx add def } repeat end + +@endspecial +243 1278 a Fd(0)431 b(2)f(4)264 1157 y @beginspecial +@setspecial + tx@Dict begin STP newpath 0.1 SLW 0 setgray 90 rotate /n 2 def /dx +56.90549 def n 0 lt { /dx dx neg def /n n neg def } if /y2 3.0 CLW +2 div add def /y1 y2 neg def /x dx def n { x y1 moveto x y2 lineto +stroke /x x dx add def } repeat end + +@endspecial 156 1184 a(0)156 712 y(2)156 +239 y(4)1374 1175 y Fc(x)242 34 y(y)p 1 0 0 TeXcolorrgb +0 TeXcolorgray 264 1157 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. Arrow + EndArrow } def [ 85.35823 85.35823 0.0 0.0 /Lineto /lineto load +def false Line gsave 0.1 SLW 1 0 0 setrgbcolor 0 setlinecap stroke + grestore end + +@endspecial +0 0 1 TeXcolorrgb 0 TeXcolorgray @beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 0 0 1 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 85.35823 85.35823 85.35823 -5.69046 /Lineto +/lineto load def false Line gsave 0.1 SLW 0 0 1 setrgbcolor 5.0 3.0 +0.0 0.0 0 0 add DashLine grestore end + + +@endspecial 0 0 1 TeXcolorrgb 0 TeXcolorgray @beginspecial +@setspecial + tx@Dict begin STP newpath 0.1 SLW 0 0 1 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 85.35823 85.35823 -5.69046 85.35823 /Lineto +/lineto load def false Line gsave 0.1 SLW 0 0 1 setrgbcolor 5.0 3.0 +0.0 0.0 0 0 add DashLine grestore end + +@endspecial 932 1240 a(a)976 1252 y Fb(1)152 +461 y Fc(a)196 473 y Fb(2)264 1157 y @beginspecial @setspecial + tx@Dict begin STP newpath 0.8 SLW 0 setgray /ArrowA { moveto } def +/ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. Arrow EndArrow + } def [ 88.20367 82.51277 99.5846 71.13185 /Lineto /lineto load def +false Line gsave 0.8 SLW 0 setgray 0 setlinecap stroke grestore +end + + +@endspecial 689 635 a Fc(V)19 b(ek)s(tor)30 b Fd(\("`)p +Fc(P)12 b(f)d(eil)r Fd(")1327 605 y Fa(0)1348 635 y Fd(\))849 +738 y Fc(~)-37 b(a)p eop end +%%Trailer + +userdict /end-hook known{end-hook}if +%%EOF diff --git a/VektorenInEbeneVeranschaulichung02.pdf b/VektorenInEbeneVeranschaulichung02.pdf new file mode 100644 index 0000000..684f138 Binary files /dev/null and b/VektorenInEbeneVeranschaulichung02.pdf differ diff --git a/VektorenInEbeneVeranschaulichung02.pst b/VektorenInEbeneVeranschaulichung02.pst new file mode 100644 index 0000000..a6596b3 --- /dev/null +++ b/VektorenInEbeneVeranschaulichung02.pst @@ -0,0 +1,27 @@ + \begin{pspicture}(-1,-1)(4.9,4.9) + %\psgrid[griddots=10,gridlabels=0pt, subgriddiv=0] + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Koordinaten%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \psaxes[Ox=0,Dx=2,Oy=0,Dy=2,linewidth=0.1pt]{->}(0,0)(-0.0,-0.0)(4.5,4.5)%Schnittpunkt, x0, y0 x1,y1 + \rput[c](4.8,0){$x$} + \rput[c](0,4.8){$y$} + + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Vektor%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \psline[linecolor=red, linewidth=0.1pt]{->}(0,0)(3,3) + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Hilfslinien%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \psline[linecolor=blue, linestyle=dashed, linewidth=0.1pt](3,-0.2)(3,3) + \psline[linecolor=blue, linestyle=dashed, linewidth=0.1pt](-0.2,3)(3,3) + \rput[c](3.0,-0.3){$a_1$} + \rput[c](-0.3,3){$a_2$} + + %%%%%%%%%%%%%%%%%%%%%%%%%%%Pfeil mit Beschriftung%%%%%%%%%%%%%%%%%%%%%%%%%%% + \psline{->}(3.5,2.5)(3.1,2.9) + \rput[l](1.8,2.3){$Vektor\ ("`Pfeil"')$} + \rput[l](2.5,1.9){$\vec{a}$} + + + + + \end{pspicture} \ No newline at end of file diff --git a/VeranschaulichungVonVektorenImRaum01.eps b/VeranschaulichungVonVektorenImRaum01.eps new file mode 100644 index 0000000..1c9733e --- /dev/null +++ b/VeranschaulichungVonVektorenImRaum01.eps @@ -0,0 +1,3602 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Creator: dvips(k) 5.94a Copyright 2003 Radical Eye Software +%%Title: 3dgrafiken.dvi +%%CreationDate: Mon Aug 23 09:17:38 2004 +%%BoundingBox: 71 492 278 721 +%%DocumentFonts: CMMI10 CMSS8 CMR10 CMR7 +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: dvips -E 3dgrafiken.dvi +%DVIPSParameters: dpi=600 +%DVIPSSource: TeX output 2004.08.23:0916 +%%BeginProcSet: tex.pro 0 0 +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 +mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 +0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ +landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize +mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ +matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round +exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ +statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] +N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin +/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array +/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N +df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S +/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy +setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask +restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put +}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ +bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A +mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ +SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ +userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X +1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N +/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ +/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) +(LaserWriter 16/600)]{A length product length le{A length product exch 0 +exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse +end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask +grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} +imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round +exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto +fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p +delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} +B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ +p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S +rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end + +%%EndProcSet +%%BeginProcSet: pstricks.pro 0 0 +%! +% PostScript prologue for pstricks.tex. +% Version 97 patch 4, 04/05/10 +% For distribution, see pstricks.tex. +% +/tx@Dict 200 dict def tx@Dict begin +/ADict 25 dict def +/CM { matrix currentmatrix } bind def +/SLW /setlinewidth load def +/CLW /currentlinewidth load def +/CP /currentpoint load def +/ED { exch def } bind def +/L /lineto load def +/T /translate load def +/TMatrix { } def +/RAngle { 0 } def +/Atan { /atan load stopped { pop pop 0 } if } def +/Div { dup 0 eq { pop } { div } ifelse } def +/NET { neg exch neg exch T } def +/Pyth { dup mul exch dup mul add sqrt } def +/PtoC { 2 copy cos mul 3 1 roll sin mul } def +/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def } +def +/PathLength { flattenpath /z 0 def { /y1 ED /x1 ED /y2 y1 def /x2 x1 def +} { /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ } +/pathforall load stopped { pop pop pop pop } if z } def +/STP { .996264 dup scale } def +/STV { SDict begin normalscale end STP } def +% +%%-------------- DG begin patch 15 ---------------%% +%/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def +%PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y +%mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul +%/y ED x mul /x ED x 0 gt y 0 gt and { [ y x ] 1 a sub y mul } { [ 1 0 ] +%0 } ifelse setdash stroke } def +/DashLine { + dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def PathLength } ifelse + /b ED /x1 ED /y1 ED /x ED /y ED + /z y x add y1 add x1 add def + /Coef b a .5 sub 2 mul y mul sub z Div round + z mul a .5 sub 2 mul y mul add b exch Div def + /y y Coef mul def /x x Coef mul def /y1 y1 Coef mul def /x1 x1 Coef mul def + x1 0 gt y1 0 gt x 0 gt y 0 gt and { [ y x y1 x1 ] 1 a sub y mul} + { [ 1 0] 0 } ifelse setdash stroke +} def +%%-------------- DG end patch 15 ---------------%% +/DotLine { /b PathLength def /a ED /z ED /y CLW def /z y z add def a 0 gt +{ /b b a div def } { a 0 eq { /b b y sub def } { a -3 eq { /b b y add +def } if } ifelse } ifelse [ 0 b b z Div round Div dup 0 le { pop 1 } if +] a 0 gt { 0 } { y 2 div a -2 gt { neg } if } ifelse setdash 1 +setlinecap stroke } def +/LineFill { gsave abs CLW add /a ED a 0 dtransform round exch round exch +2 copy idtransform exch Atan rotate idtransform pop /a ED .25 .25 +% DG/SR modification begin - Dec. 12, 1997 - Patch 2 +%itransform translate pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a +itransform pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a +% DG/SR modification end +Div cvi /x1 ED /y2 y2 y1 sub def clip newpath 2 setlinecap systemdict +/setstrokeadjust known { true setstrokeadjust } if x2 x1 sub 1 add { x1 +% DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis) +% a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore } +% def +a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore +pop pop } def +% DG/SR modification end +/BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg +exch 3 index sub exch Atan rotate newpath } def +/EndArrow { @mtrx setmatrix CP grestore end } def +/Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1 +scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill +grestore } def +/Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0 +CLW moveto } def +/Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2 +div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0 +CLW moveto } def +/RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW +2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0 +curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto } +def +/SD { 0 360 arc fill } def +/EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS +CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def +/Shadow { [ { /moveto load } { /lineto load } { /curveto load } { +/closepath load } /pathforall load stopped { pop pop pop pop CP /moveto +load } if ] cvx newpath 3 1 roll T exec } def +/NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch +cvi def } def +/NArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if +f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def +/Line { NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub +def n { Lineto } repeat CP 4 2 roll ArrowB L pop pop } if } def +/Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 } +ifelse { pop } repeat a } def +/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq +and { pop pop /n n 1 sub def } if } def +/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop } +repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1 +ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1 +moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto +Lineto pop pop closepath } ifelse } def +/Diamond { /mtrx CM def T rotate /h ED /w ED dup 0 eq { pop } { CLW mul +neg /d ED /a w h Atan def /h d a sin Div h add def /w d a cos Div w add +def } ifelse mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2 +div /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx +setmatrix } def +% DG modification begin - Jan. 15, 1997 +%/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup 0 eq { +%pop } { CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2 +%div dup cos exch sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d 0 +%d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx +%setmatrix } def +/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup +CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2 +div dup cos exch sin Div mul sub def mark 0 d w neg d 0 h w d 0 +d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx +% DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis) +% setmatrix } def +setmatrix pop } def +% DG/SR modification end +/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth +def } def +/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth +def } def +/CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1 +def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp +mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos +abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def +/y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul +m mul neg def } def +/IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if } +ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def } +def +/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def +/NC { CC x1 y1 x2 y2 x y curveto } def +/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def +/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def +/NAC { x2 y2 x y curveto CC x1 y1 } def +/EAC { x2 y2 x y ArrowB curveto pop pop } def +/OpenCurve { NArray n 3 lt { n { pop pop } repeat } { BOC /n n 3 sub def + n { NC } repeat EOC } ifelse } def +/AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload +/Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop +pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def +/ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt { +CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC } +repeat closepath pop pop } ifelse } def +/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def +/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def +/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore } +def +/FontDot { DS 2 mul dup matrix scale matrix concatmatrix exch matrix +rotate matrix concatmatrix exch findfont exch makefont setfont } def +/Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto +x1 y1 lineto closepath } def +/OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1 +y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div +exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse +/b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto +x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath } +ifelse } def +/Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add +/y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq { +pop pop Rect } { OvalFrame } ifelse } def +/BezierNArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop +} if n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat f { ] +aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def +/OpenBezier { BezierNArray n 1 eq { pop pop } { ArrowA n 4 sub 3 idiv { 6 +2 roll 4 2 roll curveto } repeat 6 2 roll 4 2 roll ArrowB curveto } +ifelse } def +/ClosedBezier { BezierNArray n 1 eq { pop pop } { moveto n 1 sub 3 idiv { +6 2 roll 4 2 roll curveto } repeat closepath } ifelse } def +/BezierShowPoints { gsave Points aload length 2 div cvi /n ED moveto n 1 +sub { lineto } repeat CLW 2 div SLW [ 4 4 ] 0 setdash stroke grestore } +def +/Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1 +sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA +x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0 +y0 x0 2 mul x1 sub y1 ] def } def +/Grid { newpath /a 4 string def /b ED /c ED /n ED cvi dup 1 lt { pop 1 } +if /s ED s div dup 0 eq { pop 1 } if /dy ED s div dup 0 eq { pop 1 } if +/dx ED dy div round dy mul /y0 ED dx div round dx mul /x0 ED dy div +round cvi /y2 ED dx div round cvi /x2 ED dy div round cvi /y1 ED dx div +round cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def /w x2 x1 sub +0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2 div add def +/Helvetica findfont b scalefont setfont /b b .95 mul CLW 2 div add def } +if systemdict /setstrokeadjust known { true setstrokeadjust /t { } def } +{ /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add +exch itransform } bind def } ifelse gsave n 0 gt { 1 setlinecap [ 0 dy n +div ] dy n div 2 div setdash } { 2 setlinecap } ifelse /i x1 def /f y1 +dy mul n 0 gt { dy n div 2 div h mul sub } if def /g y2 dy mul n 0 gt { +dy n div 2 div h mul add } if def x2 x1 sub w mul 1 add dup 1000 gt { +pop 1000 } if { i dx mul dup y0 moveto b 0 gt { gsave c i a cvs dup +stringwidth pop /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse h 0 gt {b neg} +{z1} ifelse rmoveto show grestore } if dup t f moveto g t L stroke /i i +w add def } repeat grestore gsave n 0 gt +% DG/SR modification begin - Nov. 7, 1997 - Patch 1 +%{ 1 setlinecap [ 0 dx n div ] dy n div 2 div setdash } +{ 1 setlinecap [ 0 dx n div ] dx n div 2 div setdash } +% DG/SR modification end +{ 2 setlinecap } ifelse /i y1 def /f x1 dx mul +n 0 gt { dx n div 2 div w mul sub } if def /g x2 dx mul n 0 gt { dx n +div 2 div w mul add } if def y2 y1 sub h mul 1 add dup 1000 gt { pop +1000 } if { newpath i dy mul dup x0 exch moveto b 0 gt { gsave c i a cvs +dup stringwidth pop /z2 ED w 0 gt {z1 z2 add neg} {z1} ifelse h 0 gt +{z1} {b neg} ifelse rmoveto show grestore } if dup f exch t moveto g +exch t L stroke /i i h add def } repeat grestore } def +/ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0 +1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add +exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c +mul neg d } def +/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def +/Rot { CP CP translate 3 -1 roll neg rotate NET } def +/RotBegin { tx@Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 } +def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot /RAngle [ RAngle +dup a add ] cvx def } def +/RotEnd { /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle pop ] +cvx def } def +/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def +/PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def +/PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def +/Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s +abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b +div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } { +h1 abs h sub dup s mul abs } ifelse } def +/UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s +mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q +{ x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add +exch } def +/BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { Visible +/IfVisible true def } if } { IfVisible { Invisible /IfVisible false def +} if } ifelse } def +/InitOL { /OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def +/Visible { CP OLUnit idtransform T moveto } def /Invisible { CP OLUnit +neg exch neg exch idtransform T moveto } def /BOL { BeginOL } def +/IfVisible true def } def +end +% END pstricks.pro + +%%EndProcSet +%%BeginProcSet: pst-dots.pro 0 0 +%!PS-Adobe-2.0 +%%Title: Dot Font for PSTricks +%%Creator: Timothy Van Zandt +%%Creation Date: May 7, 1993 +%% Version 97 patch 1, 99/12/16 +%% Modified by Etienne Riga - Dec. 16, 1999 +%% to add /Diamond, /SolidDiamond and /BoldDiamond +10 dict dup begin + /FontType 3 def + /FontMatrix [ .001 0 0 .001 0 0 ] def + /FontBBox [ 0 0 0 0 ] def + /Encoding 256 array def + 0 1 255 { Encoding exch /.notdef put } for + Encoding + dup (b) 0 get /Bullet put + dup (c) 0 get /Circle put + dup (C) 0 get /BoldCircle put + dup (u) 0 get /SolidTriangle put + dup (t) 0 get /Triangle put + dup (T) 0 get /BoldTriangle put + dup (r) 0 get /SolidSquare put + dup (s) 0 get /Square put + dup (S) 0 get /BoldSquare put + dup (q) 0 get /SolidPentagon put + dup (p) 0 get /Pentagon put + dup (P) 0 get /BoldPentagon put +% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga + dup (l) 0 get /SolidDiamond put + dup (d) 0 get /Diamond put + (D) 0 get /BoldDiamond put +% DG/SR modification end + /Metrics 13 dict def + Metrics begin + /Bullet 1000 def + /Circle 1000 def + /BoldCircle 1000 def + /SolidTriangle 1344 def + /Triangle 1344 def + /BoldTriangle 1344 def + /SolidSquare 886 def + /Square 886 def + /BoldSquare 886 def + /SolidPentagon 1093.2 def + /Pentagon 1093.2 def + /BoldPentagon 1093.2 def +% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga + /SolidDiamond 1008 def + /Diamond 1008 def + /BoldDiamond 1008 def +% DG/SR modification end + /.notdef 0 def + end + /BBoxes 13 dict def + BBoxes begin + /Circle { -550 -550 550 550 } def + /BoldCircle /Circle load def + /Bullet /Circle load def + /Triangle { -571.5 -330 571.5 660 } def + /BoldTriangle /Triangle load def + /SolidTriangle /Triangle load def + /Square { -450 -450 450 450 } def + /BoldSquare /Square load def + /SolidSquare /Square load def + /Pentagon { -546.6 -465 546.6 574.7 } def + /BoldPentagon /Pentagon load def + /SolidPentagon /Pentagon load def +% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga + /Diamond { -428.5 -742.5 428.5 742.5 } def + /BoldDiamond /Diamond load def + /SolidDiamond /Diamond load def +% DG/SR modification end + /.notdef { 0 0 0 0 } def + end + /CharProcs 20 dict def + CharProcs begin + /Adjust { + 2 copy dtransform floor .5 add exch floor .5 add exch idtransform + 3 -1 roll div 3 1 roll exch div exch scale + } def + /CirclePath { 0 0 500 0 360 arc closepath } def + /Bullet { 500 500 Adjust CirclePath fill } def + /Circle { 500 500 Adjust CirclePath .9 .9 scale CirclePath + eofill } def + /BoldCircle { 500 500 Adjust CirclePath .8 .8 scale CirclePath + eofill } def + /BoldCircle { CirclePath .8 .8 scale CirclePath eofill } def + /TrianglePath { 0 660 moveto -571.5 -330 lineto 571.5 -330 lineto + closepath } def + /SolidTriangle { TrianglePath fill } def + /Triangle { TrianglePath .85 .85 scale TrianglePath eofill } def + /BoldTriangle { TrianglePath .7 .7 scale TrianglePath eofill } def + /SquarePath { -450 450 moveto 450 450 lineto 450 -450 lineto + -450 -450 lineto closepath } def + /SolidSquare { SquarePath fill } def + /Square { SquarePath .89 .89 scale SquarePath eofill } def + /BoldSquare { SquarePath .78 .78 scale SquarePath eofill } def + /PentagonPath { + -337.8 -465 moveto + 337.8 -465 lineto + 546.6 177.6 lineto + 0 574.7 lineto + -546.6 177.6 lineto + closepath + } def + /SolidPentagon { PentagonPath fill } def + /Pentagon { PentagonPath .89 .89 scale PentagonPath eofill } def + /BoldPentagon { PentagonPath .78 .78 scale PentagonPath eofill } def +% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga + /DiamondPath { 0 742.5 moveto -428.5 0 lineto 0 -742.5 lineto + 428.5 0 lineto closepath } def + /SolidDiamond { DiamondPath fill } def + /Diamond { DiamondPath .85 .85 scale DiamondPath eofill } def + /BoldDiamond { DiamondPath .7 .7 scale DiamondPath eofill } def +% DG/SR modification end + /.notdef { } def + end + /BuildGlyph { + exch + begin + Metrics 1 index get exec 0 + BBoxes 3 index get exec + setcachedevice + CharProcs begin load exec end + end + } def + /BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec + } bind def +end +/PSTricksDotFont exch definefont pop +%END pst-dots.pro + +%%EndProcSet +%%BeginProcSet: pst-node.pro 0 0 +%! +% PostScript prologue for pst-node.tex. +% Version 97 patch 1, 97/05/09. +% For distribution, see pstricks.tex. +% +/tx@NodeDict 400 dict def tx@NodeDict begin +tx@Dict begin /T /translate load def end +/NewNode { gsave /next ED dict dup 3 1 roll def exch { dup 3 1 roll def } +if begin tx@Dict begin STV CP T exec end /NodeMtrx CM def next end +grestore } def +/InitPnode { /Y ED /X ED /NodePos { NodeSep Cos mul NodeSep Sin mul } def +} def +/InitCnode { /r ED /Y ED /X ED /NodePos { NodeSep r add dup Cos mul exch +Sin mul } def } def +/GetRnodePos { Cos 0 gt { /dx r NodeSep add def } { /dx l NodeSep sub def +} ifelse Sin 0 gt { /dy u NodeSep add def } { /dy d NodeSep sub def } +ifelse dx Sin mul abs dy Cos mul abs gt { dy Cos mul Sin div dy } { dx +dup Sin mul Cos Div } ifelse } def +/InitRnode { /Y ED /X ED X sub /r ED /l X neg def Y add neg /d ED Y sub +/u ED /NodePos { GetRnodePos } def } def +/DiaNodePos { w h mul w Sin mul abs h Cos mul abs add Div NodeSep add dup +Cos mul exch Sin mul } def +/TriNodePos { Sin s lt { d NodeSep sub dup Cos mul Sin Div exch } { w h +mul w Sin mul h Cos abs mul add Div NodeSep add dup Cos mul exch Sin mul +} ifelse } def +/InitTriNode { sub 2 div exch 2 div exch 2 copy T 2 copy 4 index index /d +ED pop pop pop pop -90 mul rotate /NodeMtrx CM def /X 0 def /Y 0 def d +sub abs neg /d ED d add /h ED 2 div h mul h d sub Div /w ED /s d w Atan +sin def /NodePos { TriNodePos } def } def +/OvalNodePos { /ww w NodeSep add def /hh h NodeSep add def Sin ww mul Cos +hh mul Atan dup cos ww mul exch sin hh mul } def +/GetCenter { begin X Y NodeMtrx transform CM itransform end } def +/XYPos { dup sin exch cos Do /Cos ED /Sin ED /Dist ED Cos 0 gt { Dist +Dist Sin mul Cos div } { Cos 0 lt { Dist neg Dist Sin mul Cos div neg } +{ 0 Dist Sin mul } ifelse } ifelse Do } def +/GetEdge { dup 0 eq { pop begin 1 0 NodeMtrx dtransform CM idtransform +exch atan sub dup sin /Sin ED cos /Cos ED /NodeSep ED NodePos NodeMtrx +dtransform CM idtransform end } { 1 eq {{exch}} {{}} ifelse /Do ED pop +XYPos } ifelse } def +/AddOffset { 1 index 0 eq { pop pop } { 2 copy 5 2 roll cos mul add 4 1 +roll sin mul sub exch } ifelse } def +/GetEdgeA { NodeSepA AngleA NodeA NodeSepTypeA GetEdge OffsetA AngleA +AddOffset yA add /yA1 ED xA add /xA1 ED } def +/GetEdgeB { NodeSepB AngleB NodeB NodeSepTypeB GetEdge OffsetB AngleB +AddOffset yB add /yB1 ED xB add /xB1 ED } def +/GetArmA { ArmTypeA 0 eq { /xA2 ArmA AngleA cos mul xA1 add def /yA2 ArmA +AngleA sin mul yA1 add def } { ArmTypeA 1 eq {{exch}} {{}} ifelse /Do ED +ArmA AngleA XYPos OffsetA AngleA AddOffset yA add /yA2 ED xA add /xA2 ED +} ifelse } def +/GetArmB { ArmTypeB 0 eq { /xB2 ArmB AngleB cos mul xB1 add def /yB2 ArmB +AngleB sin mul yB1 add def } { ArmTypeB 1 eq {{exch}} {{}} ifelse /Do ED +ArmB AngleB XYPos OffsetB AngleB AddOffset yB add /yB2 ED xB add /xB2 ED +} ifelse } def +/InitNC { /b ED /a ED /NodeSepTypeB ED /NodeSepTypeA ED /NodeSepB ED +/NodeSepA ED /OffsetB ED /OffsetA ED tx@NodeDict a known tx@NodeDict b +known and dup { /NodeA a load def /NodeB b load def NodeA GetCenter /yA +ED /xA ED NodeB GetCenter /yB ED /xB ED } if } def +/LPutLine { 4 copy 3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED 1 t sub +mul 3 1 roll 1 t sub mul 4 1 roll t mul add /Y ED t mul add /X ED } def +/LPutLines { mark LPutVar counttomark 2 div 1 sub /n ED t floor dup n gt +{ pop n 1 sub /t 1 def } { dup t sub neg /t ED } ifelse cvi 2 mul { pop +} repeat LPutLine cleartomark } def +/BezierMidpoint { /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED +/t ED /cx x1 x0 sub 3 mul def /cy y1 y0 sub 3 mul def /bx x2 x1 sub 3 +mul cx sub def /by y2 y1 sub 3 mul cy sub def /ax x3 x0 sub cx sub bx +sub def /ay y3 y0 sub cy sub by sub def ax t 3 exp mul bx t t mul mul +add cx t mul add x0 add ay t 3 exp mul by t t mul mul add cy t mul add +y0 add 3 ay t t mul mul mul 2 by t mul mul add cy add 3 ax t t mul mul +mul 2 bx t mul mul add cx add atan /NAngle ED /Y ED /X ED } def +/HPosBegin { yB yA ge { /t 1 t sub def } if /Y yB yA sub t mul yA add def +} def +/HPosEnd { /X Y yyA sub yyB yyA sub Div xxB xxA sub mul xxA add def +/NAngle yyB yyA sub xxB xxA sub Atan def } def +/HPutLine { HPosBegin /yyA ED /xxA ED /yyB ED /xxB ED HPosEnd } def +/HPutLines { HPosBegin yB yA ge { /check { le } def } { /check { ge } def +} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { dup Y check { exit +} { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark HPosEnd +} def +/VPosBegin { xB xA lt { /t 1 t sub def } if /X xB xA sub t mul xA add def +} def +/VPosEnd { /Y X xxA sub xxB xxA sub Div yyB yyA sub mul yyA add def +/NAngle yyB yyA sub xxB xxA sub Atan def } def +/VPutLine { VPosBegin /yyA ED /xxA ED /yyB ED /xxB ED VPosEnd } def +/VPutLines { VPosBegin xB xA ge { /check { le } def } { /check { ge } def +} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { 1 index X check { +exit } { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark +VPosEnd } def +/HPutCurve { gsave newpath /SaveLPutVar /LPutVar load def LPutVar 8 -2 +roll moveto curveto flattenpath /LPutVar [ {} {} {} {} pathforall ] cvx +def grestore exec /LPutVar /SaveLPutVar load def } def +/NCCoor { /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def +GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 xA1 yA1 ] cvx def /LPutPos { +LPutVar LPutLine } def /HPutPos { LPutVar HPutLine } def /VPutPos { +LPutVar VPutLine } def LPutVar } def +/NCLine { NCCoor tx@Dict begin ArrowA CP 4 2 roll ArrowB lineto pop pop +end } def +/NCLines { false NArray n 0 eq { NCLine } { 2 copy yA sub exch xA sub +Atan /AngleA ED n 2 mul dup index exch index yB sub exch xB sub Atan +/AngleB ED GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 n 2 mul 4 add 4 roll xA1 +yA1 ] cvx def mark LPutVar tx@Dict begin false Line end /LPutPos { +LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } +ifelse } def +/NCCurve { GetEdgeA GetEdgeB xA1 xB1 sub yA1 yB1 sub Pyth 2 div dup 3 -1 +roll mul /ArmA ED mul /ArmB ED /ArmTypeA 0 def /ArmTypeB 0 def GetArmA +GetArmB xA2 yA2 xA1 yA1 tx@Dict begin ArrowA end xB2 yB2 xB1 yB1 tx@Dict +begin ArrowB end curveto /LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ] +cvx def /LPutPos { t LPutVar BezierMidpoint } def /HPutPos { { HPutLines +} HPutCurve } def /VPutPos { { VPutLines } HPutCurve } def } def +/NCAngles { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate +def xA2 yA2 mtrx transform pop xB2 yB2 mtrx transform exch pop mtrx +itransform /y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA2 +yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false Line end /LPutVar [ xB1 +yB1 xB2 yB2 x0 y0 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { LPutLines } def +/HPutPos { HPutLines } def /VPutPos { VPutLines } def } def +/NCAngle { GetEdgeA GetEdgeB GetArmB /mtrx AngleA matrix rotate def xB2 +yB2 mtrx itransform pop xA1 yA1 mtrx itransform exch pop mtrx transform +/y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA1 yA1 +tx@Dict begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA1 yA1 ] +cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos { +VPutLines } def } def +/NCBar { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate def +xA2 yA2 mtrx itransform pop xB2 yB2 mtrx itransform pop sub dup 0 mtrx +transform 3 -1 roll 0 gt { /yB2 exch yB2 add def /xB2 exch xB2 add def } +{ /yA2 exch neg yA2 add def /xA2 exch neg xA2 add def } ifelse mark ArmB +0 ne { xB1 yB1 } if xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict +begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx +def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos { +VPutLines } def } def +/NCDiag { GetEdgeA GetEdgeB GetArmA GetArmB mark ArmB 0 ne { xB1 yB1 } if +xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false Line end +/LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { +LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } +def +/NCDiagg { GetEdgeA GetArmA yB yA2 sub xB xA2 sub Atan 180 add /AngleB ED +GetEdgeB mark xB1 yB1 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin +false Line end /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { +LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } +def +/NCLoop { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate +def xA2 yA2 mtrx transform loopsize add /yA3 ED /xA3 ED /xB3 xB2 yB2 +mtrx transform pop def xB3 yA3 mtrx itransform /yB3 ED /xB3 ED xA3 yA3 +mtrx itransform /yA3 ED /xA3 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 +xB3 yB3 xA3 yA3 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false +Line end /LPutVar [ xB1 yB1 xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 xA1 yA1 ] +cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos { +VPutLines } def } def +% DG/SR modification begin - May 9, 1997 - Patch 1 +%/NCCircle { 0 0 NodesepA nodeA \tx@GetEdge pop xA sub 2 div dup 2 exp r +%r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add +%exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360 +%mul add dup 5 1 roll 90 sub \tx@PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED +/NCCircle { NodeSepA 0 NodeA 0 GetEdge pop 2 div dup 2 exp r +r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add +exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360 +mul add dup 5 1 roll 90 sub PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED +% DG/SR modification end +} def /HPutPos { LPutPos } def /VPutPos { LPutPos } def r AngleA 90 sub a add +AngleA 270 add a sub tx@Dict begin /angleB ED /angleA ED /r ED /c 57.2957 r +Div def /y ED /x ED } def +/NCBox { /d ED /h ED /AngleB yB yA sub xB xA sub Atan def /AngleA AngleB +180 add def GetEdgeA GetEdgeB /dx d AngleB sin mul def /dy d AngleB cos +mul neg def /hx h AngleB sin mul neg def /hy h AngleB cos mul def +/LPutVar [ xA1 hx add yA1 hy add xB1 hx add yB1 hy add xB1 dx add yB1 dy +add xA1 dx add yA1 dy add ] cvx def /LPutPos { LPutLines } def /HPutPos +{ xB yB xA yA LPutLine } def /VPutPos { HPutPos } def mark LPutVar +tx@Dict begin false Polygon end } def +/NCArcBox { /l ED neg /d ED /h ED /a ED /AngleA yB yA sub xB xA sub Atan +def /AngleB AngleA 180 add def /tA AngleA a sub 90 add def /tB tA a 2 +mul add def /r xB xA sub tA cos tB cos sub Div dup 0 eq { pop 1 } if def +/x0 xA r tA cos mul add def /y0 yA r tA sin mul add def /c 57.2958 r div +def /AngleA AngleA a sub 180 add def /AngleB AngleB a add 180 add def +GetEdgeA GetEdgeB /AngleA tA 180 add yA yA1 sub xA xA1 sub Pyth c mul +sub def /AngleB tB 180 add yB yB1 sub xB xB1 sub Pyth c mul add def l 0 +eq { x0 y0 r h add AngleA AngleB arc x0 y0 r d add AngleB AngleA arcn } +{ x0 y0 translate /tA AngleA l c mul add def /tB AngleB l c mul sub def +0 0 r h add tA tB arc r h add AngleB PtoC r d add AngleB PtoC 2 copy 6 2 +roll l arcto 4 { pop } repeat r d add tB PtoC l arcto 4 { pop } repeat 0 +0 r d add tB tA arcn r d add AngleA PtoC r h add AngleA PtoC 2 copy 6 2 +roll l arcto 4 { pop } repeat r h add tA PtoC l arcto 4 { pop } repeat } +ifelse closepath /LPutVar [ x0 y0 r AngleA AngleB h d ] cvx def /LPutPos +{ LPutVar /d ED /h ED /AngleB ED /AngleA ED /r ED /y0 ED /x0 ED t 1 le { +r h add AngleA 1 t sub mul AngleB t mul add dup 90 add /NAngle ED PtoC } +{ t 2 lt { /NAngle AngleB 180 add def r 2 t sub h mul t 1 sub d mul add +add AngleB PtoC } { t 3 lt { r d add AngleB 3 t sub mul AngleA 2 t sub +mul add dup 90 sub /NAngle ED PtoC } { /NAngle AngleA 180 add def r 4 t +sub d mul t 3 sub h mul add add AngleA PtoC } ifelse } ifelse } ifelse +y0 add /Y ED x0 add /X ED } def /HPutPos { LPutPos } def /VPutPos { +LPutPos } def } def +/Tfan { /AngleA yB yA sub xB xA sub Atan def GetEdgeA w xA1 xB sub yA1 yB +sub Pyth Pyth w Div CLW 2 div mul 2 div dup AngleA sin mul yA1 add /yA1 +ED AngleA cos mul xA1 add /xA1 ED /LPutVar [ xA1 yA1 m { xB w add yB xB +w sub yB } { xB yB w sub xB yB w add } ifelse xA1 yA1 ] cvx def /LPutPos +{ LPutLines } def /VPutPos@ { LPutVar flag { 8 4 roll pop pop pop pop } +{ pop pop pop pop 4 2 roll } ifelse } def /VPutPos { VPutPos@ VPutLine } +def /HPutPos { VPutPos@ HPutLine } def mark LPutVar tx@Dict begin +/ArrowA { moveto } def /ArrowB { } def false Line closepath end } def +/LPutCoor { NAngle tx@Dict begin /NAngle ED end gsave CM STV CP Y sub neg +exch X sub neg exch moveto setmatrix CP grestore } def +/LPut { tx@NodeDict /LPutPos known { LPutPos } { CP /Y ED /X ED /NAngle 0 +def } ifelse LPutCoor } def +/HPutAdjust { Sin Cos mul 0 eq { 0 } { d Cos mul Sin div flag not { neg } +if h Cos mul Sin div flag { neg } if 2 copy gt { pop } { exch pop } +ifelse } ifelse s add flag { r add neg } { l add } ifelse X add /X ED } +def +/VPutAdjust { Sin Cos mul 0 eq { 0 } { l Sin mul Cos div flag { neg } if +r Sin mul Cos div flag not { neg } if 2 copy gt { pop } { exch pop } +ifelse } ifelse s add flag { d add } { h add neg } ifelse Y add /Y ED } +def +end +% END pst-node.pro + +%%EndProcSet +%%BeginProcSet: 3D.pro 0 0 +%version 31 octobre 2003 +% +/tx@3DDict 100 dict def +tx@3DDict begin +/Cube{% + /XA M11 A mul M12 B mul add M13 C mul add CX add def + /YA M21 A mul M22 B mul add M23 C mul add CY add def + /ZA M31 A mul M32 B mul add M33 C mul add CZ add def + /XB M11 A mul neg M12 B mul add M13 C mul add CX add def + /YB M21 A mul neg M22 B mul add M23 C mul add CY add def + /ZB M31 A mul neg M32 B mul add M33 C mul add CZ add def + /XC M11 A mul neg M12 B mul neg add M13 C mul add CX add def + /YC M21 A mul neg M22 B mul neg add M23 C mul add CY add def + /ZC M31 A mul neg M32 B mul neg add M33 C mul add CZ add def + /XD M11 A mul M12 B mul neg add M13 C mul add CX add def + /YD M21 A mul M22 B mul neg add M23 C mul add CY add def + /ZD M31 A mul M32 B mul neg add M33 C mul add CZ add def + /XE M11 A mul M12 B mul add M13 C mul sub CX add def + /YE M21 A mul M22 B mul add M23 C mul sub CY add def + /ZE M31 A mul M32 B mul add M33 C mul sub CZ add def + /XF M11 A mul neg M12 B mul add M13 C mul sub CX add def + /YF M21 A mul neg M22 B mul add M23 C mul sub CY add def + /ZF M31 A mul neg M32 B mul add M33 C mul sub CZ add def + /XG M11 A mul neg M12 B mul sub M13 C mul sub CX add def + /YG M21 A mul neg M22 B mul sub M23 C mul sub CY add def + /ZG M31 A mul neg M32 B mul sub M33 C mul sub CZ add def + /XH M11 A mul M12 B mul sub M13 C mul sub CX add def + /YH M21 A mul M22 B mul sub M23 C mul sub CY add def + /ZH M31 A mul M32 B mul sub M33 C mul sub CZ add def +% Centres des faces : condition de visibilit +% FACE 1 +% OC1 + /XC1 M13 C mul CX add def + /YC1 M23 C mul CY add def + /ZC1 M33 C mul CZ add def +% Normale la face 1 + /NX1 M13 C mul def + /NY1 M23 C mul def + /NZ1 M33 C mul def +% rayon vers point de vue + /RXvue1 XC1 XpointVue sub def + /RYvue1 YC1 YpointVue sub def + /RZvue1 ZC1 ZpointVue sub def +% produit scalaire + /PS1 RXvue1 NX1 mul RYvue1 NY1 mul add RZvue1 NZ1 mul add def +% FACE 2 +% OC2 + /XC2 M11 A mul CX add def + /YC2 M21 A mul CY add def + /ZC2 M31 A mul CZ add def +% normale la face 2 + /NX2 M11 A mul def + /NY2 M21 A mul def + /NZ2 M31 A mul def +% rayon vers point de vue + /RXvue2 XC2 XpointVue sub def + /RYvue2 YC2 YpointVue sub def + /RZvue2 ZC2 ZpointVue sub def +% produit scalaire + /PS2 RXvue2 NX2 mul RYvue2 NY2 mul add RZvue2 NZ2 mul add def +% FACE 3 +% OC3 + /XC3 M13 C neg mul CX add def + /YC3 M23 C neg mul CY add def + /ZC3 M33 C neg mul CZ add def +% normale la face 3 + /NX3 M13 C neg mul def + /NY3 M23 C neg mul def + /NZ3 M33 C neg mul def +% rayon vers point de vue + /RXvue3 XC3 XpointVue sub def + /RYvue3 YC3 YpointVue sub def + /RZvue3 ZC3 ZpointVue sub def +% produit scalaire + /PS3 RXvue3 NX3 mul RYvue3 NY3 mul add RZvue3 NZ3 mul add def +% FACE 4 +% OC4 + /XC4 M11 A neg mul CX add def + /YC4 M21 A neg mul CY add def + /ZC4 M31 A neg mul CZ add def +% normale la face 4 + /NX4 M11 A neg mul def + /NY4 M21 A neg mul def + /NZ4 M31 A neg mul def +% rayon vers point de vue + /RXvue4 XC4 XpointVue sub def + /RYvue4 YC4 YpointVue sub def + /RZvue4 ZC4 ZpointVue sub def +% produit scalaire + /PS4 RXvue4 NX4 mul RYvue4 NY4 mul add RZvue4 NZ4 mul add def +% FACE 5 +% OC5 + /XC5 M12 B neg mul CX add def + /YC5 M22 B neg mul CY add def + /ZC5 M32 B neg mul CZ add def +% normale la face 5 + /NX5 M12 B neg mul def + /NY5 M22 B neg mul def + /NZ5 M32 B neg mul def +% rayon vers point de vue + /RXvue5 XC5 XpointVue sub def + /RYvue5 YC5 YpointVue sub def + /RZvue5 ZC5 ZpointVue sub def +% produit scalaire + /PS5 RXvue5 NX5 mul RYvue5 NY5 mul add RZvue5 NZ5 mul add def +% FACE 6 +% OC6 + /XC6 M12 B mul CX add def + /YC6 M22 B mul CY add def + /ZC6 M32 B mul CZ add def +% normale la face 6 + /NX6 M12 B mul def + /NY6 M22 B mul def + /NZ6 M32 B mul def +% rayon vers point de vue + /RXvue6 XC6 XpointVue sub def + /RYvue6 YC6 YpointVue sub def + /RZvue6 ZC6 ZpointVue sub def +% produit scalaire + /PS6 RXvue6 NX6 mul RYvue6 NY6 mul add RZvue6 NZ6 mul add def +% faceOne +PS1 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YA def + /Zcote ZA def + /Xabscisse XA def + CalcCoordinates + moveto + /Zcote ZB def + /Xabscisse XB def + /Yordonnee YB def + CalcCoordinates + lineto + /Zcote ZC def + /Xabscisse XC def + /Yordonnee YC def + CalcCoordinates + lineto + /Zcote ZD def + /Xabscisse XD def + /Yordonnee YD def + CalcCoordinates + lineto + /Zcote ZA def + /Xabscisse XA def + /Yordonnee YA def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceOne setrgbcolor +fill +grestore +stroke +} if +% faceTwo +PS2 0 Condition{ % +reduction reduction scale +1 setlinejoin +newpath + /Xabscisse XA def + /Yordonnee YA def + /Zcote ZA def + CalcCoordinates + moveto + /Zcote ZD def + /Xabscisse XD def + /Yordonnee YD def + CalcCoordinates + lineto + /Zcote ZH def + /Xabscisse XH def + /Yordonnee YH def + CalcCoordinates + lineto + /Zcote ZE def + /Xabscisse XE def + /Yordonnee YE def + CalcCoordinates + lineto + /Zcote ZA def + /Xabscisse XA def + /Yordonnee YA def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceTwo setrgbcolor +fill +grestore +stroke +} if +% face three +PS3 0 Condition{ % +reduction reduction scale +1 setlinejoin +newpath + /Xabscisse XE def + /Yordonnee YE def + /Zcote ZE def + CalcCoordinates + moveto + /Zcote ZF def + /Xabscisse XF def + /Yordonnee YF def + CalcCoordinates + lineto + /Zcote ZG def + /Xabscisse XG def + /Yordonnee YG def + CalcCoordinates + lineto + /Zcote ZH def + /Xabscisse XH def + /Yordonnee YH def + CalcCoordinates + lineto + /Zcote ZE def + /Xabscisse XE def + /Yordonnee YE def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceThree setrgbcolor +fill +grestore +stroke +} if +% face four +PS4 0 Condition{ % +reduction reduction scale +1 setlinejoin +newpath + /Xabscisse XB def + /Yordonnee YB def + /Zcote ZB def + CalcCoordinates + moveto + /Zcote ZF def + /Xabscisse XF def + /Yordonnee YF def + CalcCoordinates + lineto + /Zcote ZG def + /Xabscisse XG def + /Yordonnee YG def + CalcCoordinates + lineto + /Zcote ZC def + /Xabscisse XC def + /Yordonnee YC def + CalcCoordinates + lineto + /Zcote ZB def + /Xabscisse XB def + /Yordonnee YB def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceFour setrgbcolor +fill +grestore +stroke +} if +% face five +PS5 0 Condition{ % +reduction reduction scale +1 setlinejoin +newpath + /Xabscisse XC def + /Yordonnee YC def + /Zcote ZC def + CalcCoordinates + moveto + /Zcote ZD def + /Xabscisse XD def + /Yordonnee YD def + CalcCoordinates + lineto + /Zcote ZH def + /Xabscisse XH def + /Yordonnee YH def + CalcCoordinates + lineto + /Zcote ZG def + /Xabscisse XG def + /Yordonnee YG def + CalcCoordinates + lineto + /Zcote ZC def + /Xabscisse XC def + /Yordonnee YC def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceFive setrgbcolor +fill +grestore +stroke +} if +% face six +PS6 0 Condition{ % +reduction reduction scale +1 setlinejoin +newpath + /Xabscisse XB def + /Yordonnee YB def + /Zcote ZB def + CalcCoordinates + moveto + /Zcote ZA def + /Xabscisse XA def + /Yordonnee YA def + CalcCoordinates + lineto + /Zcote ZE def + /Xabscisse XE def + /Yordonnee YE def + CalcCoordinates + lineto + /Zcote ZF def + /Xabscisse XF def + /Yordonnee YF def + CalcCoordinates + lineto + /Zcote ZB def + /Xabscisse XB def + /Yordonnee YB def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceSix setrgbcolor +fill +grestore +stroke +} if +} +def +% +/PointsDie{% +PS6 0 Condition{ % +reduction reduction scale +A 2 div neg A A 2 div { + /XCpoint exch def +C 2 div neg C C 2 div { + /ZCpoint exch def +newpath + /Zpoint Rpoint ZCpoint add def + /Xpoint XCpoint def + /Ypoint B def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Zpoint Rpoint Angle cos mul ZCpoint add def + /Xpoint Rpoint Angle sin mul XCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill + } for + } for + } if +PS5 0 Condition{ % +reduction reduction scale +newpath + /Ypoint B neg def + /XCpoint A 2 div neg def + /ZCpoint C 2 div def + /Xpoint Rpoint XCpoint add def + /Zpoint ZCpoint def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint Rpoint Angle cos mul XCpoint add def + /Zpoint Rpoint Angle sin mul ZCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +% +newpath + /XCpoint A 2 div def + /ZCpoint C 2 div neg def + /Xpoint Rpoint XCpoint add def + /Zpoint ZCpoint def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint Rpoint Angle cos mul XCpoint add def + /Zpoint Rpoint Angle sin mul ZCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +% +newpath + /XCpoint 0 def + /ZCpoint 0 def + /Xpoint Rpoint XCpoint add def + /Zpoint ZCpoint def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint Rpoint Angle cos mul XCpoint add def + /Zpoint Rpoint Angle sin mul ZCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +} if +PS4 0 Condition{ % +reduction reduction scale +C 2 div neg C C 2 div { + /ZCpoint exch def +B 2 div neg B B 2 div { + /YCpoint exch def +newpath + /Zpoint Rpoint ZCpoint add def + /Ypoint YCpoint def + /Xpoint A neg def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Zpoint Rpoint Angle cos mul ZCpoint add def + /Ypoint Rpoint Angle sin mul YCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill + } for + } for +% le point du milieu +newpath + /Zpoint Rpoint def + /Ypoint 0 def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Zpoint Rpoint Angle cos mul def + /Ypoint Rpoint Angle sin mul def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +} if +PS3 0 Condition{ % +reduction reduction scale +A 2 div neg A A 2 div { + /XCpoint exch def +B 2 div neg B 2 div B 2 div { + /YCpoint exch def +newpath + /Xpoint Rpoint XCpoint add def + /Ypoint YCpoint def + /Zpoint C neg def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint Rpoint Angle cos mul XCpoint add def + /Ypoint Rpoint Angle sin mul YCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill + } for + } for +} if +PS2 0 Condition{ % +reduction reduction scale +newpath + /Xpoint A def + /Ypoint Rpoint B 2 div add def + /Zpoint C 2 div neg def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Ypoint Rpoint Angle cos mul B 2 div add def + /Zpoint Rpoint Angle sin mul C 2 div sub def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +newpath + /Xpoint A def + /Ypoint Rpoint B 2 div sub def + /Zpoint C 2 div def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint A def + /Ypoint Rpoint Angle cos mul B 2 div sub def + /Zpoint Rpoint Angle sin mul A 2 div add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +} if +PS1 0 Condition{ % +reduction reduction scale +newpath + /Xpoint Rpoint def + /Ypoint 0 def + /Zpoint C def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint Rpoint Angle cos mul def + /Ypoint Rpoint Angle sin mul def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +} if +} def +% +/CalcCoordinates{% + formulesTroisD + Xi 28.45 mul Yi 28.45 mul + } + def +% pour la 3D conventionnelle +/formulesTroisD{% + /xObservateur Xabscisse Sin1 mul neg Yordonnee Cos1 mul add def + /yObservateur Xabscisse Cos1Sin2 mul neg Yordonnee Sin1Sin2 mul sub Zcote Cos2 mul add def + /zObservateur Xabscisse neg Cos1Cos2 mul Yordonnee Sin1Cos2 mul sub Zcote Sin2 mul sub Dobs add def + /Xi DScreen xObservateur mul zObservateur div def + /Yi DScreen yObservateur mul zObservateur div def + } +def +% +/CalculsPointsAfterTransformations{% + /Xabscisse M11 Xpoint mul M12 Ypoint mul add M13 Zpoint mul add CX add def + /Yordonnee M21 Xpoint mul M22 Ypoint mul add M23 Zpoint mul add CY add def + /Zcote M31 Xpoint mul M32 Ypoint mul add M33 Zpoint mul add CZ add def + } +def +% +/SommetsTetraedre{% + /xA RayonBaseTetraedre neg def + /yA 0 def + /zA 0 def + /xB 0.5 RayonBaseTetraedre mul def + /yB RayonBaseTetraedre 0.866 mul neg def + /zB 0 def + /xC xB def + /yC yB neg def + /zC 0 def + /xD 0 def + /yD 0 def + /zD RayonBaseTetraedre 1.414 mul def +% coordonnes centre des faces + /xFaceA xA xB xC add add 3 div def + /yFaceA yA yB yC add add 3 div def + /zFaceA zA zB zC add add 3 div def + /xFaceB xD xA xB add add 3 div def + /yFaceB yD yA yB add add 3 div def + /zFaceB zD zA zB add add 3 div def + /xFaceC xA xD xC add add 3 div def + /yFaceC yA yD yC add add 3 div def + /zFaceC zA zD zC add add 3 div def + /xFaceD xD xB xC add add 3 div def + /yFaceD yD yB yC add add 3 div def + /zFaceD zD zB zC add add 3 div def +% sommets aprs rotation et translation + /XA M11 xA mul M12 yA mul add M13 zA mul add CX add def + /YA M21 xA mul M22 yA mul add M23 zA mul add CY add def + /ZA M31 xA mul M32 yA mul add M33 zA mul add CZ add def + /XB M11 xB mul M12 yB mul add M13 zB mul add CX add def + /YB M21 xB mul M22 yB mul add M23 zB mul add CY add def + /ZB M31 xB mul M32 yB mul add M33 zB mul add CZ add def + /XC M11 xC mul M12 yC mul add M13 zC mul add CX add def + /YC M21 xC mul M22 yC mul add M23 zC mul add CY add def + /ZC M31 xC mul M32 yC mul add M33 zC mul add CZ add def + /XD M11 xD mul M12 yD mul add M13 zD mul add CX add def + /YD M21 xD mul M22 yD mul add M23 zD mul add CY add def + /ZD M31 xD mul M32 yD mul add M33 zD mul add CZ add def +% centres de faces aprs transformations + /XFaceA M11 xFaceA mul M12 yFaceA mul add M13 zFaceA mul add CX add def + /YFaceA M21 xFaceA mul M22 yFaceA mul add M23 zFaceA mul add CY add def + /ZFaceA M31 xFaceA mul M32 yFaceA mul add M33 zFaceA mul add CZ add def + /XFaceB M11 xFaceB mul M12 yFaceB mul add M13 zFaceB mul add CX add def + /YFaceB M21 xFaceB mul M22 yFaceB mul add M23 zFaceB mul add CY add def + /ZFaceB M31 xFaceB mul M32 yFaceB mul add M33 zFaceB mul add CZ add def + /XFaceC M11 xFaceC mul M12 yFaceC mul add M13 zFaceC mul add CX add def + /YFaceC M21 xFaceC mul M22 yFaceC mul add M23 zFaceC mul add CY add def + /ZFaceC M31 xFaceC mul M32 yFaceC mul add M33 zFaceC mul add CZ add def + /XFaceD M11 xFaceD mul M12 yFaceD mul add M13 zFaceD mul add CX add def + /YFaceD M21 xFaceD mul M22 yFaceD mul add M23 zFaceD mul add CY add def + /ZFaceD M31 xFaceD mul M32 yFaceD mul add M33 zFaceD mul add CZ add def +% Normales aux faces + /NxA XFaceA XD sub def + /NyA YFaceA YD sub def + /NzA ZFaceA ZD sub def + /NxB XFaceB XC sub def + /NyB YFaceB YC sub def + /NzB ZFaceB ZC sub def + /NxC XFaceC XB sub def + /NyC YFaceC YB sub def + /NzC ZFaceC ZB sub def + /NxD XFaceD XA sub def + /NyD YFaceD YA sub def + /NzD ZFaceD ZA sub def +% Conditions de visibilit +% rayon vers point de vue + /RXvueA XFaceA XpointVue sub def + /RYvueA YFaceA YpointVue sub def + /RZvueA ZFaceA ZpointVue sub def + /RXvueB XFaceB XpointVue sub def + /RYvueB YFaceB YpointVue sub def + /RZvueB ZFaceB ZpointVue sub def + /RXvueC XFaceC XpointVue sub def + /RYvueC YFaceC YpointVue sub def + /RZvueC ZFaceC ZpointVue sub def + /RXvueD XFaceD XpointVue sub def + /RYvueD YFaceD YpointVue sub def + /RZvueD ZFaceD ZpointVue sub def +% produit scalaire + /PSA RXvueA NxA mul RYvueA NyA mul add RZvueA NzA mul add def + /PSB RXvueB NxB mul RYvueB NyB mul add RZvueB NzB mul add def + /PSC RXvueC NxC mul RYvueC NyC mul add RZvueC NzC mul add def + /PSD RXvueD NxD mul RYvueD NyD mul add RZvueD NzD mul add def + } + def +/Tetraedre{% +SommetsTetraedre +% face ABC + PSA 0 le { % +reduction reduction scale +1 setlinejoin + /Xabscisse XA def + /Yordonnee YA def + /Zcote ZA def + CalcCoordinates + moveto + /Xabscisse XB def + /Yordonnee YB def + /Zcote ZB def + CalcCoordinates + lineto + /Xabscisse XC def + /Yordonnee YC def + /Zcote ZC def + CalcCoordinates + lineto + /Xabscisse XA def + /Yordonnee YA def + /Zcote ZA def + CalcCoordinates + lineto +} if +% face DAB + PSB 0 le { % +reduction reduction scale +1 setlinejoin + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + moveto + /Xabscisse XA def + /Yordonnee YA def + /Zcote ZA def + CalcCoordinates + lineto + /Xabscisse XB def + /Yordonnee YB def + /Zcote ZB def + CalcCoordinates + lineto + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + lineto +} if +% face DAC +PSC 0 le { % +reduction reduction scale +1 setlinejoin + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + moveto + /Xabscisse XA def + /Yordonnee YA def + /Zcote ZA def + CalcCoordinates + lineto + /Xabscisse XC def + /Yordonnee YC def + /Zcote ZC def + CalcCoordinates + lineto + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + lineto +} if +% face DBC + PSD 0 le { % +reduction reduction scale +1 setlinejoin + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + moveto + /Xabscisse XB def + /Yordonnee YB def + /Zcote ZB def + CalcCoordinates + lineto + /Xabscisse XC def + /Yordonnee YC def + /Zcote ZC def + CalcCoordinates + lineto + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + lineto +} if +} +def +% +/SommetsPyramide{% + /xA A def + /yA A neg def + /zA 0 def + /xB A def + /yB A def + /zB 0 def + /xC A neg def + /yC A def + /zC 0 def + /xD A neg def + /yD A neg def + /zD 0 def + /xS 0 def + /yS 0 def + /zS Hpyramide def +% coordonnes centre des faces + /Alpha A Hpyramide atan def + /xFaceSAB Hpyramide Alpha dup sin exch cos mul mul def + /yFaceSAB 0 def + /zFaceSAB Hpyramide Alpha sin dup mul mul def + /xFaceSBC 0 def + /yFaceSBC xFaceSAB def + /zFaceSBC zFaceSAB fracHeight mul def + /xFaceSCD xFaceSAB neg def + /yFaceSCD 0 def + /zFaceSCD zFaceSAB fracHeight mul def + /xFaceSDA 0 def + /yFaceSDA xFaceSAB neg def + /zFaceSDA zFaceSAB fracHeight mul def +% sommets aprs rotation et translation + /XA M11 xA mul M12 yA mul add M13 zA mul add CX add def + /YA M21 xA mul M22 yA mul add M23 zA mul add CY add def + /ZA M31 xA mul M32 yA mul add M33 zA mul add CZ add def + /XB M11 xB mul M12 yB mul add M13 zB mul add CX add def + /YB M21 xB mul M22 yB mul add M23 zB mul add CY add def + /ZB M31 xB mul M32 yB mul add M33 zB mul add CZ add def + /XC M11 xC mul M12 yC mul add M13 zC mul add CX add def + /YC M21 xC mul M22 yC mul add M23 zC mul add CY add def + /ZC M31 xC mul M32 yC mul add M33 zC mul add CZ add def + /XD M11 xD mul M12 yD mul add M13 zD mul add CX add def + /YD M21 xD mul M22 yD mul add M23 zD mul add CY add def + /ZD M31 xD mul M32 yD mul add M33 zD mul add CZ add def + /XS M11 xS mul M12 yS mul add M13 zS mul add CX add def + /YS M21 xS mul M22 yS mul add M23 zS mul add CY add def + /ZS M31 xS mul M32 yS mul add M33 zS mul add CZ add def +% centres de faces aprs transformations + /XFaceSAB M11 xFaceSAB mul M12 yFaceSAB mul add M13 zFaceSAB mul add CX add def + /YFaceSAB M21 xFaceSAB mul M22 yFaceSAB mul add M23 zFaceSAB mul add CY add def + /ZFaceSAB M31 xFaceSAB mul M32 yFaceSAB mul add M33 zFaceSAB mul add CZ add def + /XFaceSBC M11 xFaceSBC mul M12 yFaceSBC mul add M13 zFaceSBC mul add CX add def + /YFaceSBC M21 xFaceSBC mul M22 yFaceSBC mul add M23 zFaceSBC mul add CY add def + /ZFaceSBC M31 xFaceSBC mul M32 yFaceSBC mul add M33 zFaceSBC mul add CZ add def + /XFaceSCD M11 xFaceSCD mul M12 yFaceSCD mul add M13 zFaceSCD mul add CX add def + /YFaceSCD M21 xFaceSCD mul M22 yFaceSCD mul add M23 zFaceSCD mul add CY add def + /ZFaceSCD M31 xFaceSCD mul M32 yFaceSCD mul add M33 zFaceSCD mul add CZ add def + /XFaceSDA M11 xFaceSDA mul M12 yFaceSDA mul add M13 zFaceSDA mul add CX add def + /YFaceSDA M21 xFaceSDA mul M22 yFaceSDA mul add M23 zFaceSDA mul add CY add def + /ZFaceSDA M31 xFaceSDA mul M32 yFaceSDA mul add M33 zFaceSDA mul add CZ add def +% Normales aux faces + /NxSAB XFaceSAB CX sub def + /NySAB YFaceSAB CY sub def + /NzSAB ZFaceSAB CZ sub def + /NxSBC XFaceSBC CX sub def + /NySBC YFaceSBC CY sub def + /NzSBC ZFaceSBC CZ sub def + /NxSCD XFaceSCD CX sub def + /NySCD YFaceSCD CY sub def + /NzSCD ZFaceSCD CZ sub def + /NxSDA XFaceSDA CX sub def + /NySDA YFaceSDA CY sub def + /NzSDA ZFaceSDA CZ sub def + /NxABCD CX XS sub def + /NyABCD CY YS sub def + /NzABCD CZ ZS sub def +% Conditions de visibilit +% rayon vers point de vue + /RXvueSAB XFaceSAB XpointVue sub def + /RYvueSAB YFaceSAB YpointVue sub def + /RZvueSAB ZFaceSAB ZpointVue sub def + /RXvueSBC XFaceSBC XpointVue sub def + /RYvueSBC YFaceSBC YpointVue sub def + /RZvueSBC ZFaceSBC ZpointVue sub def + /RXvueSCD XFaceSCD XpointVue sub def + /RYvueSCD YFaceSCD YpointVue sub def + /RZvueSCD ZFaceSCD ZpointVue sub def + /RXvueSDA XFaceSDA XpointVue sub def + /RYvueSDA YFaceSDA YpointVue sub def + /RZvueSDA ZFaceSDA ZpointVue sub def + /RXvueABCD CX XpointVue sub def + /RYvueABCD CY YpointVue sub def + /RZvueABCD CZ ZpointVue sub def + /PSAB RXvueSAB NxSAB mul RYvueSAB NySAB mul add RZvueSAB NzSAB mul add def + /PSBC RXvueSBC NxSBC mul RYvueSBC NySBC mul add RZvueSBC NzSBC mul add def + /PSCD RXvueSCD NxSCD mul RYvueSCD NySCD mul add RZvueSCD NzSCD mul add def + /PSDA RXvueSDA NxSDA mul RYvueSDA NySDA mul add RZvueSDA NzSDA mul add def + /PSABCD RXvueABCD NxABCD mul RYvueABCD NyABCD mul add RZvueABCD NzABCD mul add def + } + def +% +/MaillageSphere { +0 increment 360 increment sub {% + /theta exch def +departPhi increment 90 increment sub {% + /phi exch def +% newpath + /Xpoint Rsphere theta cos mul phi cos mul def + /Ypoint Rsphere theta sin mul phi cos mul def + /Zpoint Rsphere phi sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + moveto +% Centre de la facette + /Xpoint Rsphere theta increment 2 div add cos mul phi increment 2 div add cos mul def + /Ypoint Rsphere theta increment 2 div add sin mul phi increment 2 div add cos mul def + /Zpoint Rsphere phi increment 2 div add sin mul def +CalculsPointsAfterTransformations + /xCentreFacette Xabscisse def + /yCentreFacette Yordonnee def + /zCentreFacette Zcote def +% normale la facette + /nXfacette xCentreFacette CX sub def + /nYfacette yCentreFacette CY sub def + /nZfacette zCentreFacette CZ sub def +% rayon vers point de vue + /RXvue xCentreFacette XpointVue sub def + /RYvue yCentreFacette YpointVue sub def + /RZvue zCentreFacette ZpointVue sub def +% test de visibilit + /PSfacette RXvue nXfacette mul + RYvue nYfacette mul add + RZvue nZfacette mul add + def +condition { +theta 1 theta increment add {% + /theta1 exch def + /Xpoint Rsphere theta1 cos mul phi cos mul def + /Ypoint Rsphere theta1 sin mul phi cos mul def + /Zpoint Rsphere phi sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +phi 1 phi increment add { + /phi1 exch def + /Xpoint Rsphere theta increment add cos mul phi1 cos mul def + /Ypoint Rsphere theta increment add sin mul phi1 cos mul def + /Zpoint Rsphere phi1 sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +theta increment add -1 theta {% + /theta1 exch def + /Xpoint Rsphere theta1 cos mul phi increment add cos mul def + /Ypoint Rsphere theta1 sin mul phi increment add cos mul def + /Zpoint Rsphere phi increment add sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +phi increment add -1 phi { + /phi1 exch def + /Xpoint Rsphere theta cos mul phi1 cos mul def + /Ypoint Rsphere theta sin mul phi1 cos mul def + /Zpoint Rsphere phi1 sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +} if +} for +} for +} def +% +/CylinderThreeD{ +reduction reduction scale +1 setlinejoin +0 incrementANGLE 360 {% + /theta exch def + 0 incrementHAUTEUR Hcylindre incrementHAUTEUR sub {% + /H exch def +% newpath + /X1 Rcylindre theta cos mul def + /Y1 Rcylindre theta sin mul def + /Z1 H def + /Xpoint X1 def + /Ypoint Y1 def + /Zpoint Z1 def +CalculsPointsAfterTransformations + /Xfacette Xabscisse def + /Yfacette Yordonnee def + /Zfacette Zcote def + CalcCoordinates + moveto +% coordonnes du centre de la facette + /Xpoint Rcylindre theta incrementANGLE 2 div add cos mul def + /Ypoint Rcylindre theta incrementANGLE 2 div add sin mul def + /Zpoint H incrementHAUTEUR 2 div add def +CalculsPointsAfterTransformations +% Point sur l'axe du cylindre +% la mme hauteur que M1 + /Zpoint Z1 def + /Xpoint 0 def + /Ypoint 0 def +CalculsPointsAfterTransformations +% normale la facette + /nXfacette Xfacette Xabscisse sub def + /nYfacette Yfacette Yordonnee sub def + /nZfacette Zfacette Zcote sub def +% rayon vers point de vue + /RXvue Xfacette XpointVue sub def + /RYvue Yfacette YpointVue sub def + /RZvue Zfacette ZpointVue sub def +% test de visibilit + /PSfacette nXfacette RXvue mul + nYfacette RYvue mul add + nZfacette RZvue mul add + def +PSfacette 0 le { +theta 1 theta incrementANGLE add {% + /theta1 exch def + /Xpoint Rcylindre theta1 cos mul def + /Ypoint Rcylindre theta1 sin mul def + /Zpoint H def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +H 1 H incrementHAUTEUR add { + /H1 exch def + /Xpoint Rcylindre theta incrementANGLE add cos mul def + /Ypoint Rcylindre theta incrementANGLE add sin mul def + /Zpoint H1 def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +theta incrementANGLE add -1 theta {% + /theta1 exch def + /Xpoint Rcylindre theta1 cos mul def + /Ypoint Rcylindre theta1 sin mul def + /Zpoint H incrementHAUTEUR add def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +H incrementHAUTEUR add -1 H { + /H1 exch def + /Xpoint Rcylindre theta cos mul def + /Ypoint Rcylindre theta sin mul def + /Zpoint H1 def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +} if +} for +} for +% Face suprieure +% centre de la face suprieure + /Xpoint 0 def + /Zpoint Hcylindre def + /Ypoint 0 def +CalculsPointsAfterTransformations + /CxFaceSup Xabscisse def + /CyFaceSup Yordonnee def + /CzFaceSup Zcote def +% centre de la face infrieure + /CxFaceInf CX def + /CyFaceInf CY def + /CzFaceInf CZ def +% Normale la face suprieure + /nXFaceSup CxFaceSup CxFaceInf sub def + /nYFaceSup CyFaceSup CyFaceInf sub def + /nZFaceSup CzFaceSup CzFaceInf sub def +% rayon vers point de vue verd la face infrieure + /RXvueInf CxFaceInf XpointVue sub def + /RYvueInf CyFaceInf YpointVue sub def + /RZvueInf CzFaceInf ZpointVue sub def +% rayon vers point de vue verd la face suprieure + /RXvueSup CxFaceSup XpointVue sub def + /RYvueSup CyFaceSup YpointVue sub def + /RZvueSup CzFaceSup ZpointVue sub def +% Visibilit face suprieure + /PSfaceSup RXvueSup nXFaceSup mul + RYvueSup nYFaceSup mul add + RZvueSup nZFaceSup mul add def +% Visibilit face infrieure + /PSfaceInf RXvueInf nXFaceSup neg mul + RYvueInf nYFaceSup mul sub + RZvueInf nZFaceSup mul sub def +PSfaceSup 0 le { +/TableauxPoints [ +0 1 359 {% on dcrit le cercle + /theta exch def [ + /Xpoint Rcylindre theta cos mul def + /Ypoint Rcylindre theta sin mul def + /Zpoint Hcylindre def +CalculsPointsAfterTransformations + CalcCoordinates ] + } for + ] def +gsave +newpath + TableauxPoints 0 get aload pop moveto +0 1 359 { + /compteur exch def + TableauxPoints compteur get aload pop + lineto } for +0.7 setgray +closepath +fill +grestore + } if +% face infrieure +PSfaceInf 0 le { +/TableauxPoints [ +0 1 359 {% on dcrit le cercle + /theta exch def [ + /Xpoint Rcylindre theta cos mul def + /Ypoint Rcylindre theta sin mul def + /Zpoint 0 def +CalculsPointsAfterTransformations + CalcCoordinates ] + } for + ] def +gsave +newpath + TableauxPoints 0 get aload pop moveto + 0 1 359 { + /compteur exch def + TableauxPoints compteur get aload pop + lineto } for +0.7 setgray +closepath +fill +grestore + } if + } def +% + % +/ConeThreeD{ + /AngleCone Rcone Hcone atan def + /TanAngleCone AngleCone dup sin exch cos div def + /incrementANGLE 10 def + /incrementHAUTEUR Hcone fracHeight mul 5 div def +1 setlinejoin +newpath +0 incrementANGLE 360 {% + /theta exch def + 0 incrementHAUTEUR Hcone fracHeight mul incrementHAUTEUR sub {% + /H exch def + % normale la facette + /nXfacette Hcone AngleCone dup sin exch cos mul theta incrementANGLE 2 div add cos mul + mul def + /nYfacette Hcone AngleCone dup sin exch cos mul theta incrementANGLE 2 div add sin mul + mul def + /nZfacette Hcone AngleCone sin dup mul mul def + /Xpoint nXfacette def + /Ypoint nYfacette def + /Zpoint nZfacette def +CalculsPointsAfterTransformations + /nXfacette Xabscisse CX sub def + /nYfacette Yordonnee CY sub def + /nZfacette Zcote CZ sub def +% + /OK Hcone H sub TanAngleCone mul def + /Xpoint OK theta cos mul def + /Ypoint OK theta sin mul def + /Zpoint H def +CalculsPointsAfterTransformations + /Xfacette Xabscisse def + /Yfacette Yordonnee def + /Zfacette Zcote def + CalcCoordinates + moveto +% coordonnes du centre de la facette + /OK Hcone H incrementHAUTEUR 2 div add sub TanAngleCone mul def + /Xpoint OK theta incrementANGLE 2 div add cos mul def + /Ypoint OK theta incrementANGLE 2 div add sin mul def + /Zpoint H incrementHAUTEUR 2 div add def +CalculsPointsAfterTransformations + /XcentreFacette Xabscisse def + /YcentreFacette Yordonnee def + /ZcentreFacette Zcote def +% rayon vers point de vue + /RXvue XcentreFacette XpointVue sub def + /RYvue YcentreFacette YpointVue sub def + /RZvue ZcentreFacette ZpointVue sub def +% test de visibilit + /PSfacette nXfacette RXvue mul + nYfacette RYvue mul add + nZfacette RZvue mul add + def +PSfacette 0 le { +theta 1 theta incrementANGLE add {% + /theta1 exch def + /OK Hcone H sub TanAngleCone mul def + /Xpoint OK theta1 cos mul def + /Ypoint OK theta1 sin mul def + /Zpoint H def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +H 1 H incrementHAUTEUR add { + /H1 exch def + /OK Hcone H1 sub TanAngleCone mul def + /Xpoint OK theta incrementANGLE add cos mul def + /Ypoint OK theta incrementANGLE add sin mul def + /Zpoint H1 def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +theta incrementANGLE add -1 theta {% + /theta1 exch def + /OK Hcone H incrementHAUTEUR add sub TanAngleCone mul def + /Xpoint OK theta1 cos mul def + /Ypoint OK theta1 sin mul def + /Zpoint H incrementHAUTEUR add def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +H incrementHAUTEUR add -1 H { + /H1 exch def + /OK Hcone H1 sub TanAngleCone mul def + /Xpoint OK theta cos mul def + /Ypoint OK theta sin mul def + /Zpoint H1 def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +} if +} for +} for +% centre de la base infrieure aprs transformations + /CxFaceInf CX def + /CyFaceInf CY def + /CzFaceInf CZ def +% modification du 16/11/2002 +% /Xpoint CxFaceInf def +% /Ypoint CyFaceInf def +% /Zpoint CzFaceInf def + /Xpoint 0 def + /Ypoint 0 def + /Zpoint 0 def +% fin modification du 16/11/2002 +CalculsPointsAfterTransformations + /CxBaseInf Xabscisse def + /CyBaseInf Yordonnee def + /CzBaseInf Zcote def +% centre de la base suprieure avant transformations + /CxFaceSup 0 def + /CyFaceSup 0 def + /CzFaceSup Hcone fracHeight mul def +% Sommet du cone + /Xpoint 0 def + /Ypoint 0 def + /Zpoint Hcone def +CalculsPointsAfterTransformations + /XsommetCone Xabscisse def + /YsommetCone Yordonnee def + /ZsommetCone Zcote def +% Normale extrieure la base infrieure + /nXBaseInf CxFaceInf XsommetCone sub def + /nYBaseInf CyFaceInf YsommetCone sub def + /nZBaseInf CzFaceInf ZsommetCone sub def +% centre de la base suprieure + /Xpoint CxFaceSup def + /Ypoint CyFaceSup def + /Zpoint CzFaceSup def +CalculsPointsAfterTransformations + /CxBaseSup Xabscisse def + /CyBaseSup Yordonnee def + /CzBaseSup Zcote def +% Normale extrieure la base suprieure + /nXBaseSup XsommetCone CxFaceSup sub def + /nYBaseSup YsommetCone CyFaceSup sub def + /nZBaseSup ZsommetCone CzFaceSup sub def +% rayon vers point de vue + /RXvueSup CxBaseSup XpointVue sub def + /RYvueSup CyBaseSup YpointVue sub def + /RZvueSup CzBaseSup ZpointVue sub def + /RXvueInf CxBaseInf XpointVue sub def + /RYvueInf CyBaseInf YpointVue sub def + /RZvueInf CzBaseInf ZpointVue sub def +% Visibilit de la base infrieure + /PSbaseInfCone nXBaseInf RXvueInf mul + nYBaseInf RYvueInf mul add + nZBaseInf RZvueInf mul add def +% Visibilit de la base suprieure + /PSbaseSupCone nXBaseSup RXvueSup mul + nYBaseSup RYvueSup mul add + nZBaseSup RZvueSup mul add def +PSbaseInfCone 0 le { +/TableauxPoints [ +0 1 359 {% on dcrit le cercle + /theta exch def [ + /Xpoint Rcone theta cos mul def + /Ypoint Rcone theta sin mul def + /Zpoint 0 def +CalculsPointsAfterTransformations + CalcCoordinates ] + } for + ] def +gsave +newpath + TableauxPoints 0 get aload pop moveto +0 1 359 { + /compteur exch def + TableauxPoints compteur get aload pop + lineto } for +0.7 setgray +closepath +fill +grestore + } if +%% PSbaseSupCone 0 le { +%% modifi le 31/10/2003 +%PSbaseSupCone 0 ge { +PSbaseSupCone 0 le { +/TableauxPoints [ +0 1 359 {% on dcrit le cercle + /theta exch def [ + /OK Hcone 1 fracHeight sub mul TanAngleCone mul def + /Xpoint OK theta cos mul def + /Ypoint OK theta sin mul def + /Zpoint Hcone fracHeight mul def +CalculsPointsAfterTransformations + CalcCoordinates ] + } for + ] def +gsave +newpath + TableauxPoints 0 get aload pop moveto +0 1 359 { + /compteur exch def + TableauxPoints compteur get aload pop + lineto } for +0.7 setgray +closepath +fill +grestore + } if + } def +/PortionSphere{% + /Xpoint Rsphere psTHETA dTHETA neg add cos mul psPHI dPHI sub cos mul def + /Ypoint Rsphere psTHETA dTHETA neg add sin mul psPHI dPHI sub cos mul def + /Zpoint Rsphere psPHI dPHI sub sin mul def +CalculsPointsAfterTransformations + /xCentreFacette Xabscisse def + /yCentreFacette Yordonnee def + /zCentreFacette Zcote def +% normale la facette + /nXfacette xCentreFacette CX sub def + /nYfacette yCentreFacette CY sub def + /nZfacette zCentreFacette CZ sub def +% rayon vers point de vue + /RXvue xCentreFacette XpointVue sub def + /RYvue yCentreFacette YpointVue sub def + /RZvue zCentreFacette ZpointVue sub def +% test de visibilit + /PSfacette RXvue nXfacette mul + RYvue nYfacette mul add + RZvue nZfacette mul add + def +PSfacette 0 le { +CalcCoordinates +newpath + moveto +psTHETA dTHETA sub 1 psTHETA dTHETA add { + /Theta exch def + /Xpoint Rsphere Theta cos psPHI dPHI sub cos mul mul def + /Ypoint Rsphere Theta sin psPHI dPHI sub cos mul mul def + /Zpoint Rsphere psPHI dPHI sub sin mul def + CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +psPHI dPHI sub 1 psPHI dPHI add { + /Phi exch def + /Xpoint Rsphere psTHETA dTHETA add cos Phi cos mul mul def + /Ypoint Rsphere psTHETA dTHETA add sin Phi cos mul mul def + /Zpoint Rsphere Phi sin mul def + CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +psTHETA dTHETA add -1 psTHETA dTHETA sub { + /Theta exch def + /Xpoint Rsphere Theta cos psPHI dPHI add cos mul mul def + /Ypoint Rsphere Theta sin psPHI dPHI add cos mul mul def + /Zpoint Rsphere psPHI dPHI add sin mul def + CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +psPHI dPHI add -1 psPHI dPHI sub { + /Phi exch def + /Xpoint Rsphere psTHETA dTHETA sub cos Phi cos mul mul def + /Ypoint Rsphere psTHETA dTHETA sub sin Phi cos mul mul def + /Zpoint Rsphere Phi sin mul def + CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +closepath +} if +} def +end + +%%EndProcSet +%%BeginProcSet: pst-3dplot.pro 0 0 +%% +%% This is file `pst-3dplot.pro', +%% +%% IMPORTANT NOTICE: +%% +%% Package `pst-3dplot.tex' +%% +%% Herbert Voss +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +%% +%% DESCRIPTION: +%% `pst-3dplot' is a PSTricks package to draw 3d curves and graphical objects +%% +%% +%% version 0.11 / 2004-04-28 Herbert Voss +% +/tx@3DPlotDict 10 dict def +tx@3DPlotDict begin +% +/saveCoor { + /z exch def + /y exch def + /x exch def + /z z dzUnit mul def + /y y dyUnit mul def + /x x dxUnit mul def +} def +% +/ConvertTo2D { + /x2D x neg Alpha cos mul y Alpha sin mul add def + /y2D x Alpha sin mul y Alpha cos mul add neg Beta sin mul z Beta cos mul add def +} def +% +/ConvertToCartesian { + /latitude exch def + /longitude exch def + /Radius exch def + /z Radius latitude sin mul def + /x Radius longitude cos mul latitude cos mul def + /y Radius longitude sin mul latitude cos mul def +} def +% +/SphericalTo2D { + x y z ConvertToCartesian ConvertTo2D +} def +% +/convertStackTo2D { + counttomark + /n exch def /n3 n 3 div cvi def + n3 { + n -3 roll + SphericalCoor { ConvertToCartesian } { saveCoor } ifelse + ConvertTo2D + x2D xUnit y2D yUnit + /n n 1 sub def + } repeat +} def +end + +%%EndProcSet +%%BeginProcSet: pst-grad.pro 0 0 +%! +% PostScript prologue for pst-grad.tex. +% Version 1.04, 2004/06/23 (adding %GradientCircle style - D.G.) +% prepared by Herbert Voss +% For copying restrictions, see pstricks.tex. +% +% For the PSTricks gradient fillstyle.% +% Based on some EPS files by leeweyr!bill@nuchat.sccsi.com (W. R. Lee).% +% Syntax:% D.G. modification begin - Apr. 9, %1998 +%%%%%% R0 G0 B0 R1 G1 B1 NumLines MidPoint Angle GradientFill +% ifGradientCircle GradientScale %GradientPosX GradientPosY +% R0 G0 B0 R1 G1 B1 NumLines MidPoint %Angle GradientFill +% D.G. modification end +% +/tx@GradientDict 40 dict def +tx@GradientDict begin +/GradientFill { + rotate + /MidPoint ED + /NumLines ED + /LastBlue ED + /LastGreen ED + /LastRed ED + /FirstBlue ED + /FirstGreen ED +/FirstRed ED +% D.G. modification begin - Apr. 9, 1998 +/GradientPosY ED +/GradientPosX ED + /GradientScale ED + /ifGradientCircle ED +% D.G. modification end + % This avoids gaps due to rounding errors: + clip + pathbbox %leave llx,lly,urx,ury on stack +% D.G. modification begin - Apr. 10, 1998 + 4 copy /ury ED /urx ED /lly ED /llx ED +% D.G. modification end + /y ED /x ED +% D.G. modification begin - Apr. 10, 1998 +ifGradientCircle + {0 GradientPosX eq + {0 GradientPosX eq {2 copy translate} if} if} + {2 copy translate} ifelse +% D.G. modification end + y sub neg /y ED + x sub neg /x ED % This avoids gaps due to rounding errors: + LastRed FirstRed add 2 div + LastGreen FirstGreen add 2 div + LastBlue FirstBlue add 2 div + setrgbcolor +% D.G. modification begin - Jul. 23, 1997 / Apr. 9, 1998 + ifGradientCircle + {/YSizePerLine y NumLines div def + /CurrentY y 2 div def + /MidLine NumLines 2 div 1 MidPoint sub mul abs cvi def} + {fill + /YSizePerLine y NumLines div def + /CurrentY 0 def + /MidLine NumLines 1 MidPoint sub mul abs cvi def} ifelse +% DG modification end + MidLine NumLines 2 sub gt + { /MidLine NumLines def } + { MidLine 2 lt { /MidLine 0 def } if } + ifelse + MidLine 0 gt + { + /Red FirstRed def + /Green FirstGreen def + /Blue FirstBlue def + /RedIncrement LastRed FirstRed sub MidLine 1 sub div def + /GreenIncrement LastGreen FirstGreen sub MidLine 1 sub div def + /BlueIncrement LastBlue FirstBlue sub MidLine 1 sub div def + MidLine { GradientLoop } repeat + } if + MidLine NumLines lt + { + /Red LastRed def + /Green LastGreen def + /Blue LastBlue def + /RedIncrement FirstRed LastRed sub NumLines MidLine sub 1 sub div def + /GreenIncrement FirstGreen LastGreen sub NumLines MidLine sub 1 sub div def + /BlueIncrement FirstBlue LastBlue sub NumLines MidLine sub 1 sub div def + NumLines MidLine sub { GradientLoop } repeat } + if + } def/GradientLoop { +% D.G. modification begin - Jul. 23, 1997 / Apr. 9, 1998 + ifGradientCircle + {CurrentY 0 gt { +% The default center used is the center of the bounding box of the object + 0 GradientPosX eq {0 GradientPosX eq + {/GradientPosX urx llx sub 2 div def + /GradientPosY ury lly sub 2 div def} if} if + GradientPosX GradientPosY CurrentY GradientScale mul 0 360 arc + Red Green Blue setrgbcolor fill + /CurrentY CurrentY YSizePerLine sub def + /Blue Blue BlueIncrement add def + /Green Green GreenIncrement add def + /Red Red RedIncrement add def} if} {0 CurrentY moveto x 0 rlineto + 0 YSizePerLine rlineto x neg 0 rlineto closepath + Red Green Blue setrgbcolor fill /CurrentY CurrentY YSizePerLine add def + /Blue Blue BlueIncrement add def /Green Green GreenIncrement add def + /Red Red RedIncrement add def} ifelse% D.G. modification end + }def + end +% END pst-grad.pro + +%%EndProcSet +%%BeginProcSet: texps.pro 0 0 +%! +TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 +index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll +exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics +exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub +dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} +ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict +end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{ +dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 +roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def +dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def} +if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def} +def end + +%%EndProcSet +%%BeginProcSet: special.pro 0 0 +%! +TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N +/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N +/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N +/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ +/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho +X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B +/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ +/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known +{userdict/md get type/dicttype eq{userdict begin md length 10 add md +maxlength ge{/md md dup length 20 add dict copy def}if end md begin +/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S +atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ +itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll +transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll +curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf +pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} +if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 +-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 +get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip +yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub +neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ +noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop +90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get +neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr +1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr +2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 +-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S +TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ +Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale +}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState +save N userdict maxlength dict begin/magscale true def normalscale +currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts +/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x +psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx +psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub +TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{ +psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 +roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath +moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict +begin/SpecialSave save N gsave normalscale currentpoint TR +@SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{ +CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto +closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx +sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR +}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse +CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury +lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N +/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end} +repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N +/@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX +currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY +moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X +/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 +1 startangle endangle arc savematrix setmatrix}N end + +%%EndProcSet +%%BeginProcSet: color.pro 0 0 +%! +TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop +setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll +}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def +/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ +setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ +/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch +known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC +/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC +/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 +setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 +setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 +0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC +/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 +setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 +0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ +0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ +0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC +/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 +setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 +setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 +0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC +/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 +setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 +0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ +0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ +0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC +/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 +setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC +/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 +0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 +0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 +0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 +setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 +0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC +/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 +setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 +0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 +1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC +/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 +setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ +0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} +DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 +setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 +setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 +setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end + +%%EndProcSet +%%BeginFont: CMR7 +%!PS-AdobeFont-1.1: CMR7 1.0 +%%CreationDate: 1991 Aug 20 16:39:21 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR7) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR7 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 49 /one put +dup 50 /two put +dup 51 /three put +readonly def +/FontBBox{-27 -250 1122 750}readonly def +/UniqueID 5000790 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6CC3F1E9AE32F234EB60FE7D +E34995B1ACFF52428EA20C8ED4FD73E3935CEBD40E0EAD70C0887A451E1B1AC8 +47AEDE4191CCDB8B61345FD070FD30C4F375D8418DDD454729A251B3F61DAE7C +8882384282FDD6102AE8EEFEDE6447576AFA181F27A48216A9CAD730561469E4 +78B286F22328F2AE84EF183DE4119C402771A249AAC1FA5435690A28D1B47486 +1060C8000D3FE1BF45133CF847A24B4F8464A63CEA01EC84AA22FD005E74847E +01426B6890951A7DD1F50A5F3285E1F958F11FC7F00EE26FEE7C63998EA1328B +C9841C57C80946D2C2FC81346249A664ECFB08A2CE075036CEA7359FCA1E90C0 +F686C3BB27EEFA45D548F7BD074CE60E626A4F83C69FE93A5324133A78362F30 +8E8DCC80DD0C49E137CDC9AC08BAE39282E26A7A4D8C159B95F227BDA2A281AF +A9DAEBF31F504380B20812A211CF9FEB112EC29A3FB3BD3E81809FC6293487A7 +455EB3B879D2B4BD46942BB1243896264722CB59146C3F65BD59B96A74B12BB2 +9A1354AF174932210C6E19FE584B1B14C00E746089CBB17E68845D7B3EA05105 +EEE461E3697FCF835CBE6D46C75523478E766832751CF6D96EC338BDAD57D53B +52F5340FAC9FE0456AD13101824234B262AC0CABA43B62EBDA39795BAE6CFE97 +563A50AAE1F195888739F2676086A9811E5C9A4A7E0BF34F3E25568930ADF80F +0BDDAC3B634AD4BA6A59720EA4749236CF0F79ABA4716C340F98517F6F06D9AB +7ED8F46FC1868B5F3D3678DF71AA772CF1F7DD222C6BF19D8EF0CFB7A76FC6D1 +0AD323C176134907AB375F20CFCD667AB094E2C7CB2179C4283329C9E435E7A4 +1E042AD0BAA059B3F862236180B34D3FCED833472577BACD472A4B067A46F8EE +2AFACDE591ADF7304939394F221B5B9B316BC47DC7772711A35B466E1790D4F5 +C02C57DE57A0498128C6041CB7E702F4D8500433633B8358C438237BBA39C647 +F659FACF75574B1AAD3FE61FB97D6C5D0B19E4AC762321891092E73D192C4816 +2F14A6FFAA1B22AABB65E8F611F1E9AF66DF68DA1B2B64B4CA8870261F8663FA +28953254FA64F0AD6EFBFAB15830AF856A65835C803B70963595060F91F4079B +F8BF5396F04C070254AC5DCACB20C0B1FADD38825886322366927C97E3C5AA1B +EA858D5974EBC14D17D4ADDCB3C7EA74A8A2B75293747CFCE0B484713D631F95 +43BD5A359229F1276D2F652078ADA5000D1E060CE5CDF2E57401E487F3C10975 +09AACD27CEE8581EBADC25D0FC9CEA533B99DCEDC0F28E782F4FE22AE097CCF3 +F73338DA748C535291B4E8AF84546FE4B910107B6FFC5439C5B966DE6C905D86 +460A69D6031EC3F7261FCB6D932F722BC1F550574EBD6F676AC9770969657422 +4C8212F9FC9A49C9F0E813A2ACD16D1131A73D3001E698C63F76FE6D6143D310 +155256BE90530489736CF35CA2D7E4A1FAEAE2423ABB52E55DD7314097DF7C09 +F39C3E3A29F9BAA3AEBA89CC3E7B134E79A2DA39D449D98FE4ADE1A0ACDA79C4 +1E2C78CDCC5BDD192DAA27F17DC4368EBC54CC009802018E50519F69025DE7E8 +FB61694AEA672E59D00F6BA0CA9509FB8DC6544CB92B70BA0AE393A43959C90E +8857B0DA53A8D26426CAE0DCF2F3033BAC62502E08447B09CC18B2525AB65EC2 +C63074FF725168D115137ECDAB1EEB083711F647F757C9806056811466D59087 +B93D6B71594046B3B60A7D5789D6B99FC14764428A251F0A54ED +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR10 +%!PS-AdobeFont-1.1: CMR10 1.00B +%%CreationDate: 1992 Feb 19 19:54:52 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 40 /parenleft put +dup 41 /parenright put +dup 46 /period put +dup 51 /three put +dup 75 /K put +dup 80 /P put +dup 97 /a put +dup 100 /d put +dup 101 /e put +dup 105 /i put +dup 107 /k put +dup 110 /n put +dup 111 /o put +dup 114 /r put +dup 116 /t put +dup 117 /u put +readonly def +/FontBBox{-251 -250 1009 969}readonly def +/UniqueID 5000793 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 +87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F +D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 +92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C +295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 +409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C +4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF +2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E +0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E +B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 +24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B +43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF +D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 +5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC +96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 +7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65 +0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830 +B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D +AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007 +97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8 +FEF3D8C63B283796A9AD847424B4E6508546C36223A3B17EB82A56592F27FC27 +F1D49D5FF4BBC0E16231807AF7E195AA7D0D01C7566243448B222D57B811EAE6 +DE9370F84E207DC9BEC731AD6040FD9B804FA14CA264B73136F9AF34390319F6 +A543D5D4D7FDDDF2F76651E557683614521110DEC1CCAC426117DDA7D6CF1B8B +7879B21FDC78BAB3C944BCDCD6A65B67F3692F0A8D5E36FB783A63D4FBC9842E +2CBC2720A7206F42A99AEC79FBBA92A27965AF40A71E05E4BA8D7FC58C828226 +7A8B47241F73590CE626EDA930A1D18D758636250D9D6A09E133378CD725F586 +F40320EF186DDF87AF8C2F5470EADFF45B230623DD994111A1E8B4BFF9EAB5E6 +E856EC1242B2A36DB0E19710EC27BBEDDD25AFFDE220C5A24787DADB906D7B04 +6B3CDAECE9B693105C7086E5E5AF5A7A1EB68C7AAFD6A174B76EC9B4E80F6AAB +41B8E494B2014160CF85023E0F171856279D43F1DCCFC8A3A5A5A5C06132E3F9 +2F9A7DC0AE201544DC7A3A01A812E51B64E0D3B325C15577FB0CE39BEDB251F0 +3E9D057C364EB8747A414F55FB4FDEB79A695E89B5B3E5880522F4837C25D4A3 +3FD6693CDCA2BDBDBB7A3F34FF23F23A74A5B94006A962328555D68A5306996E +89AE39711B96F7131CD6931D8AF54191792FEEA9F5313C5A913F25E7911F063E +359C5864E46993F8269B3AFF7EF21613055ED580E6A5D4702FEA09DA0AFAF633 +DD7BC5B7C5A3A1EEFB478579F9F9259E4DDC2098FD5D96D213C1C066BFC94BF9 +2997A33A60D1DDCC2E72F93113BFB6EEB96AF85AAF5AF55443DB7A3928EB7B19 +D63911F4AC44FA5358837F7CC6ED863F0FCCE5F7906423FFEA63FB6897FD9423 +8091005E78F323348A66C4CDF5BFF06A54C1F98F12A9E59DF18D14A8495C2305 +C7DA7391F7F20453206FC27D3F8F03510174737903DE67E775663B85B3BEDF0A +D31AD80BC0DFFDCF10AB3BC4D6142A471C4065E78BAA75C39C6DEC1C977D2C07 +1309DE0BB4DCAE70FAAF216F5D3160BB73DB275843EF80302912AC11689D4E2F +6DD48446BBC06BFFE286C366E1F387AE1ADF7365415C74FFD0379253CC58F513 +80C5F0D80AAFBB5148730876143618CD33389BB0DEDC3299264CE02983116E19 +A103C3E9A071256151DA661686D68C30CAD2637EAAEF2D00EECEDD8199F58D88 +D941999E0E3C8D3840180526247F42A9BB30C67864C353B604598082B502CF04 +A6D31E72B5E5A9EF6A392C3BE5C3E4B25B2BA4BF5855B674E69A1E65844FD42C +AE25391FE6A534DE60A2A5E2F6AB3881AE1501FD000C9F8FE440047AFE9A5D09 +F38C1157B053BB2185D163336AEC11E7B9D1C9C3DA4F6D86F3CBFDD226C9BB0B +2F043559F15687F44CA8EA5E09B11C77EF963C907A424393F60DAF7FC83063E5 +B75B33A035FEC430582A6D056DBF6600637B5540AF3038E1CBFB0F0388DA440D +824436D21AA57240D49D98769F7DBFAA37A365445F5225D59546FA1C68880AFD +70197B7153B00EE8FA5D39A62592CA4885687A70B0BF7B62837BF1849885A95E +70BB651A0BE0E27BBB0CCFB118D8FBC29FC6F0D92D820C87ABD7453D6BF9B9D6 +DEC83F777A754593E5CD2F3D26D3A4B69D4619A61D2362B21549CA8E465B0F29 +3C3786FC81D362D823087C92DEF6B045B7F9BC1E6ACC9D3A66430F828A59C5C8 +77D3AE3C61E835510544FD983135CA1C3E38545FDA087A381C06A80453348C37 +5BB3B8D201E01F5E3FB4A5A4E1421E62614027475C15407D807D7B3C8051F285 +FA7C49E260D3F4C0C8EBEF1A81D900DBFDCD71FD0DACC8A08151FF82AF71C378 +B753F7EEA817001DE5B3B0664D0988BA548E638F917E2CB2EE5DBB402088F14B +1574CB16098F1D5FE11DBF5996A8E9B0B7B1E352E467899F069C4B729E0E3407 +B5B797F3DD42884C65371614F19D2A5FEE140FC33DD696BA08901B74CEED8481 +5AE191BA515AF6D11041B9B1CAF9E7B04DA294D9E6E1D08B79542E3FBF42E1AC +4B298BE258FA048B559DAB50CC11BFB51CB54F0055D292915D1A6E2A55B0F7A4 +582737F0F8D597AFD27AAA811A714D3E83D091BF89F85276EBBD5D7717D83668 +B501EE4FA256FDAF8023A921CE2FD501FB63AF561D67F51AFA8E02FBDC6AD510 +3DE6AAC9D4B5D2B47DB83ADAFA1E657850C3189895C8BBD0A7E37322D47F6146 +5EDF926B5E3CC90A824D17B6A335C15A0E443CEE1D13408E1DE89901C1D89AD6 +17C0C7584B788B3AD4CAE25870838BE6F8132BCFF0CDE1A452A73F7036355E98 +125E6BB52B7E93E906814FF67BD9A683AE3C3A7D6B06FEE421F3C0A142A99792 +851F483E38751E62361236D51A23FD5077D0514335E98476598662B0F967BAD0 +2876A6D7A39D06F4CE68D2989B764DCAE8D63724B5DC5C2FBD317D861E2E3503 +D8530972625920EDCBE1A313CFC8C7098A890E6A8F3BD4F550A1DBF9455AC0E0 +11FA73728018094405275F62138789093EB61A22332BA5EC4823C56098C547B7 +F41D303168B9726D1C39F935FAB2E97541FE26EF86D663528B313A7D6219C9FF +D3C2E10B2F2DEEDC3430DC990FA56A09D443B5A44F45C7EB0E24E9A422A8FEED +EFAED061744AE2E54C1EF2243EDCB2E1FC546AA0EC8DA3E67ECE536D68349BB3 +EA8786B49D53C239470666780C7A6CB86AA2E4B7C053020D04BA06E4BE4FB295 +BF4E9956B7F6D14FB90F0DA70379FE36C5457552E97EEA6EBFA25C60392B1B3E +A21A1110498BBB85408790F4F59F47FABC53FE0FCF34F932E1ADCB0B389CF1A1 +0A5AAF563DD008A33CC957A0ECBD1763500E4457EA68772D2B53271C5D490040 +F92097955E1035C4359B01016F62C15F6FB15F0AFBC12A7DE0FC5595EA3C71B1 +030127E0CD502F4E96E02A960B1DF232755933D0A52FA59544A6BA209C73CC2B +E2714631D9AB887E215FBAA2A34C10A301F1121DE2E683A5EE7AE0D9E005A2E0 +B39878D0EEDD047C7D6AC1DF33B78CFFC7CD11C836E3849F75D23A3BC539B09F +DB710FCB9AF84F72F0FEF4C2AD755A1619C0F9A45E49F3A237BD2F1755B0745E +9923C342F58379AB7BCC4F7DC9C54A2B16F7D6FB3D11518503C48A51674A4091 +10AD28B09611D633F3CC11B03815D2A8A9B4A48E6371098C129DA0456CB4156B +C369C69A950585D23EA0FA62B4038BFC6837D2520A958A446161D1A3D3C69BA7 +B40E44778CC890EECC4D6D7BA58B4710C86072C0AC1672FE00FAF9766F17077C +E3703145A82BD50B544BA9EAEAD4CD2F8DE0C7CCE202D0AE169372070C5BBD32 +B32E6A6169AE023DB906D3EF8ED6B64AC6F34F4D848C77529CC199905D4E15EE +0A59815A7F2EF909C16E2F908AD4515C5F8BB5C06CB6573275AEC07513FEAAEC +BEF660829AFECAEDAF8A15CC36CFB9254BD6F3FA4718D2941FC922C5A0C6000E +231C320D1F962FB5C1C069CA44A7A9E2B6AB4231BA61A27FA1B4EF5CD0D1F19A +763A9B2C2065C95D0752F73DE7B43EDCAA69CC9D5C2FCD1A5E77F81ADFA36572 +D44A1F21CD1D2BC6636E0F21D4B8817E5B8CFC67F01474F27A8D2DB5084F761C +85C582044743A85878F3A25418371C230924D0FB1DCEBDD8971C2D66DA946FB3 +13C01396D8289DB2FC6270E80E437B860555E58222B8391A6C1D89D701CA816D +5C868F01F2AC32D03DF8BDCF50461ED4A2287498DFF6D4084AC299A9FADFC8BC +89C359C1B0945B095CFE7B519FC50E0F17DA5B560A8FB23F3BAD2DA2E523F1FE +8DCC198C7E592075A8C06A263A3116E66326847F6236287A2E5E01355085144F +84BE5ABD0A10A8459D4F6D0063D32158FC26A492927909F250D01625A9DF1815 +98CBBC07520D8F4B9943EB741187EFAAD58F6AADC74CA1496CE54C51A80F09A1 +9383127588F81ADEF635EFE85D7B5F270FFD769E387E75F7979C9846A2929B1D +20FC6FE8928B94A998A6AE7EBFBD08752F6B487F9D28E973D659DD8481D998C2 +96A7FC01D84E894CB205996C49F26B898EE9C9489A561270EF2E34CB5753281A +06ADB5C737B0BFE850CEDBB03DEDEC5389D8B69AFAF941A3AD27BF6B5F8A651D +904271C74F714988DB57EB57F4CFEBFE79D0480CF913D04B2714EB042979761A +ACB24E2920F6629754F679A24AF44ADC79B8A08B198A610AC975005970D4EDA6 +6985F13C66497B74C281F9878D9DFA0E769B8352737A0A9BE68BCB0C29371191 +4049A9BF6E0D7C389B5F0272F1AD84985380B6E3C80AD882F08888308DFEBEF6 +C53AC8E04E17CB1B40E146731DD6C3D1A5D26DDAD52DA3BB55BEB221006DD906 +42E96E4B5E0A66061D4ED87C39F6DCCE42890D71304B66C6CA074F37B3B87366 +0A631EB58468CE30A443E3AB221865E6018EED5009E3C9318DDA75CE5F6BB5A1 +79925B1FBE0CFBF6F957B7D6E544EC9429AF2F97D10E5CDF646E05C4FE8AE97F +CF90BFB8B5E00181E4A32C3F4D8C4236291ED82553FEFEFA55B3C28577C369F3 +64EF57DB8DDD05C23F7540C313FE61060E4D2D75ADE218236AEBE7762843FF62 +4766F63C97292B05FE71CC754A97D879D2224988DCA575F1BC6103E459C86F2F +5169A68FAA906D7C1D2F2159D8E878DF36E3D85A7F7C132AA226AFFFC095E8B9 +7D75570BD329DE80278C2A4DDF595CEE122482A74350B1DE7789B902E507820A +A49A30F90398EE2291661D3F425162488D61CA2E6EEB3798CE685DFF36DD6CF2 +3EF1E281F4F49E223D06046288B54DBD80815BF2F74CE96228E2C4EE9D98FD0E +85336CEDDC9148D5E02562D11DBDF95868B6882F9DEBFFDA550EA452FD78E369 +99772289123BC8455D6FF07513C245E8B4B53BBF645248 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMSS8 +%!PS-AdobeFont-1.1: CMSS8 1.0 +%%CreationDate: 1991 Aug 20 17:34:12 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSS8) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMSS8 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 46 /period put +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 52 /four put +readonly def +/FontBBox{-65 -250 1062 761}readonly def +/UniqueID 5000801 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF4E9D2405B17498276F99362748F6E97327D +7CDA3F577075245561191667923D37830EEC37A0161B6A3EC8FDD63CDB8C8D4A +AD39C69A264813FA79C25E85AC95C71AB965F6C14A4A1ACF5BAE27A5F628B172 +47CF6A12008558438874199C237501B72BFEFE64B606A327623BD8B217E8349B +7BF5C2204F4DE2FB269845D5714A31151A66064419CCC46A63F8E54B92B5070F +F3D80801DBEC658CD3926B15BE3D4B7591FC36663D3C03926D0D3637B53BCC22 +73C8E0001B416A65FC67C53383458DC125FD14FFE391BBBA321B5AF5DEF85DBA +5A5FD759FD2AAB6AF31CDA6202EBB763E3CAC1FF91B1175EF818FD662B60C642 +738A3B4F27822A0560BB7C08AD42F976351FA5225A0E6D56C7FBE06A809CC468 +FB2E90C84FA56C62CB7BBFC80BD94F5C6BC0EED14433A4A356D2D15DC87B34B0 +99A100502F55A32D736757642F9F9719FD9E35A1430A72C254614B4000113705 +5474FCFCE47A6978F69FA467B818309E61598EC18089BB924C393B3FF1280D72 +E1969BF5AD3D1074FF13202D4CC324396BAFF2397DAB2C516C656B6B240F023D +0C28AEBB957C23012C971D444DD1C4C2BD7DCE178D46CF8EC20DCAB9A930907E +124F3B3B8D16DBF166BA40CD780DE2155BF21EC2C3E0073422E54A09DF4A9491 +63B55882122F6B40490D81533CB0E16967E32D4F5B5D5D14F578BAA0137704A3 +2386E6AA4E3D160559EB245625253380CE64C30B41B573D7249B0B6157B02EFE +0D82006B4CF4A294FDDAB5B87CAD0B2D3367F9138EE0922FBDD3D7BFE4C6B297 +762F95616A75D0FC2D2E22D79172DF1A3287C67BD27658A448FC61077B3033AA +5479ABBF5CD952B5E19E437CD642CDC43FBB26115DCC019FEB3195F267AAD478 +4BDB4D1AEFB4BB108438507C493B00002470B4711BA5B428B4A8129BE7179E4A +7521E8AF3D9160217C072A9928A84D7FE560D2C8C9FF175F5ACC4B756A4E5660 +FFD365DBFB074FEB45E9372F1B6F979E09D775319131E551A0A47FAFB5A2991B +BC0009392145EAA35927690D1D20FF5977DE7583F2BAC0D50B3AE23F60A776E9 +249C85364258E44F7E9E538D28BC1C50DF90F9FC563EB1B03CF353F760BF0CBF +C2CE4AB9BCAA0F835FB2F60FEA62A3E28C619182CFDA62420C77F502F70F2A2D +BBCB7B6C211402871C7862E06459E59E5EB1E9E1F2D8903D9ED1EDC9374BA744 +450DF79439BEA8CCB850890BD73CBEA39AD2E4852B64439407342A67B905D78D +9BE26CE238A767AD6EC10DACE58C13AE16332DD952DB84D6F96127EF94E77104 +CBFA4E6AD7E0B89BE542080241CB78D4D7EC8F01EB95724C34B5A2C69B062511 +B9254AD71D7F0F837A5D93D850FB7362252CCF91E6CB3B0576E25B475D24DB7D +A6F9CE199753BD33B8DFECE0E42BC1B15A99871203B6C630B1D213C2FE0BABBE +CF4F271EB4F939E0F4341DA58042278B252F8A1D9774C49C33CDD11143A143AC +8CD0CBD620BF3E5BE13F174DB04F885E1FE08E624DEFF55F5971BE8606FD2FA9 +BF974490F2B026B0C068146145C85F03A435776B2C63F6729E81125225432E29 +43AC6A7B26B33B0E3DA1A3F60584E66A36F05FDAB82F70F8FF1C40E300192DEB +A006CE31540785B22D7712CD35D4721884D13D24C352608D7D9A7DBC0A5D05FB +BA7880D469F267204F3570C88E9B2447EEE6A710CC5201B175192486FCBDE6C3 +167C9E4631569F84AB53A9DF0E4E19ECE690220BCE8634E5A61E195CFA9B841B +E2A1C1FF33EA42F04EE939F7043BB2683E1B1DE2E1D548528E4F1126B261D834 +A128348E1BA634341F52535656B89E82709F0B4767B2CF482B9D1198292D682E +477B35BF5BE26ADCA06268C8468F2CB7EAC12D847DBFC7A40E4C23AFF2C26EF9 +87A8EDFB77DA40BB17DE3800D98D10053CCF4EAF838795A471F6AA3EB9746C87 +8868EBF2192EB371299C1B7FCC06F8AEEAF6C5F324D997297590E7C9FDC7008B +D271005CC3A15AC10DB7643FD730F00C9B2749B3E9D82654E3FD164B8F0CF01C +EE2AEADAAC385AE78D +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMI10 +%!PS-AdobeFont-1.1: CMMI10 1.100 +%%CreationDate: 1996 Jul 23 07:53:57 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 59 /comma put +dup 97 /a put +dup 120 /x put +dup 121 /y put +dup 122 /z put +readonly def +/FontBBox{-32 -250 1048 750}readonly def +/UniqueID 5087385 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 +9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321 +990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E +6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB +DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721 +59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823 +D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF +8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808 +6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9 +1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE +03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909 +95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1 +74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2 +3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8 +47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19 +AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8 +42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8 +40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837 +B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53 +956017667271C1FD06DBA26AC7504FCD81979D968F25E82A94901AE49D6FD9A9 +F8C87DCC2B8605745A1F753F0EE14E390AC6514966CF8628EEC915E4AF6E9115 +51D4AE37C6E88C775F23C743B72D3C20158F94902981BCA25BC4E88A9A8F985F +CB07A70724C8BF3E576FF7E982BD4EC746713CFDBF76479596521FFA7D1D986D +A7BE0B23A415AC88723FAA18F624BFDF2A6BBC39C965A427CE690F4ACB3F3DA3 +04D2A12157468A7638808992F551B3356994B13DC708BF5A2891A873C6DD583F +29A961D4FF4934453BB1476EDBEF974C83C1D65829D967C54CFC1EDFAB2DF5A5 +A9C0AB95E7790888F45577E12779F5F620A342B929F3BA77F0FF237D8793E80E +BE86B8A2B16806A49C8E68901196901A5D8A487150AF9B3C3418945B14B9F78C +C9BFCAD92E0C90AD4B4743085AF412DBE54F3AB630A5234A0E3837ADDF3FDE52 +404911B59C397A2B499A6E8D9C3B93E9B99EC5E0999AC8E1BB78BD6B173F3875 +51D733E66E62900B40B094BF6DD51012454360EAA148D6457A45FC7F7570D3FD +B6A6C7F6958C6591F7824B9E7A6ED2A7A9D0FAD4FD9E4A571DA1010F118DB177 +F221C3C447CA13BD2093A725E2544B057B3A2AA4872B2508CE9DB5D70F8C4A24 +7BD611E9B790047146CBA5345698D278CF6A86B487423D01FA67A424D1C1CC24 +149423717766BCF746B83D37F55CA428870E8028C46B107988702F86795E554C +FF327A0F91B058FD04F3A56AE4B605DB6E540FE9954ECC1EA5591673CF61F526 +EC9D2CB56481594FD1E8B86FAE3488BCD34EE87A9D2E26D18D4E0014645116C0 +2B805664307E3BC34995C8325109B384419A7DD9B4679D135B5C85102C9B1CD9 +44ACE588B3F7C537833170FBC30AF997CF623C6C911B2A155F6398B1E3AC32D8 +F52232AD359DC2761BCC982BEC03585BD4985A954F4873C5A22CCB3A6EAEAB9E +A2DE3B275616EA2B17773D5DCF50F3D0CA6D616DD8AD8B6962012046EEA9F6DB +785CED5AE65258D2253B9298C2121ACF0DD399A693BD70B0B86619ED271D6357 +F3F6FBC41317307C1744CC593B3ED00E49793DD42FD13D8481707E86A1ED40B8 +C4BD24C20E61F1A6DDD9FA385DAD69455B4591E75A627B2D6BFB99B3BE48C184 +600B23CEF04C4E5FB0C170668F8D8A3F7585A2C4691A12F799A7CDC91EB00812 +B3196628392504B2A86BC0A140E5D8A7AFEEBEC4837745858352F5309688A16E +3CF55E0DA8F9B6579A97FEB3620D3EF9A4958F90CF36E3AF89EB79DD25E8F090 +ECCA8CD48CBE349120E5D6BDECA984E0A7C3962CA22B927AC2EB058CCF5472F4 +60E478E28588AFB1E50AE5075DF02E3AE37DA37C0801EB05E358FF7A44E2DDD2 +BC36F5B5730673B7D157E1D86B444AC641D0CB21BFB003FBE76A7EDBAC0C6F4A +300138DAF8D861B18FA2BBAC8B0A9BB40E6D06FCEBB26F299639E24A15A4351F +2A276C0AFE63835DC89611BDCE568FE4D6437E83809EB16FF0E2EF0B3D976311 +94A19FCDEBABE1529655803179E4CC00E03D79AA4B40B70A95302CBDEFA3B9FF +A79403CD9457084ABEE5794E02B7381A36D10731329535C3A39C42F9EA88BC0F +0BFAE6F7A74758FEAFB834B0D74936070B602AB571568EC37EBB77F4EFD33A50 +BF458E71F3C00B0385A432EB2E9D87C7305CF7C78FAC +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +TeXDict begin 40258437 52099154 1000 600 600 (3dgrafiken.dvi) +@start /Fa 204[33 33 33 49[{}3 58.1154 /CMR7 rf /Fb 138[46 +32 1[33 2[42 46 2[44 1[23 3[37 46 2[42 16[57 4[65 23[42 +4[23 4[32 32 40[{}16 83.022 /CMR10 rf /Fc 203[35 35 35 +35 35 1[20 46[{}6 66.4176 /CMSS8 rf /Fd 133[39 41 47 +22[44 37[23 59[{}5 83.022 /CMMI10 rf end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 600dpi +TeXDict begin + end +%%EndSetup +TeXDict begin 1 0 bop 0 TeXcolorgray 1 TeXcolorgray 0 +TeXcolorgray 1 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray +0 TeXcolorgray 1 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray +0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray +0 TeXcolorgray 0.25 TeXcolorgray 0 TeXcolorgray 0.5 TeXcolorgray +0 TeXcolorgray 0 1890 a + tx@Dict begin gsave CM STV CP newpath moveto 3.0 neg 0 rmoveto clip +setmatrix end + 0 1890 a 0 1890 1709 1890 v 1709 +1890 a + currentpoint grestore moveto + 1709 1890 a 1 0 0 TeXcolorrgb 0 TeXcolorgray 236 +1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0 1 mul def /z 0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@xMin 10 +{InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 5 1.0 mul def /y 0 1 mul def /z 0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@xMax 10 +{InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0 1 mul def /z 0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@yMin 10 +{InitPnode } NewNode end end + 236 +1417 a 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 5 1 mul def /z 0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@yMax 10 +{InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0 1 mul def /z 0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@zMin 10 +{InitPnode } NewNode end end + 236 1417 a 236 +1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0 1 mul def /z 5 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@zMax 10 +{InitPnode } NewNode end end + 236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. Arrow + EndArrow } def [ tx@NodeDict begin tx@NodeDict /N@xMax known { /N@xMax +load GetCenter } { 0 0 } ifelse end tx@NodeDict begin tx@NodeDict /N@xMin +known { /N@xMin load GetCenter } { 0 0 } ifelse end /Lineto /lineto +load def false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap +stroke grestore end + +@endspecial +@beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. Arrow + EndArrow } def [ tx@NodeDict begin tx@NodeDict /N@yMax known { /N@yMax +load GetCenter } { 0 0 } ifelse end tx@NodeDict begin tx@NodeDict /N@yMin +known { /N@yMin load GetCenter } { 0 0 } ifelse end /Lineto /lineto +load def false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap +stroke grestore end + +@endspecial @beginspecial +@setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. Arrow + EndArrow } def [ tx@NodeDict begin tx@NodeDict /N@zMax known { /N@zMax +load GetCenter } { 0 0 } ifelse end tx@NodeDict begin tx@NodeDict /N@zMin +known { /N@zMin load GetCenter } { 0 0 } ifelse end /Lineto /lineto +load def false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap +stroke grestore end + +@endspecial 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@xMax known { /N@xMax +load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin end + 236 1417 a 236 1417 +a + tx@Dict begin { 5.0 5.71527 4.30554 0.0 180. Uput UUput } PutCoor +PutBegin end + 236 1417 a 212 1435 a Fd(x)236 1417 y + tx@Dict begin PutEnd end + 236 1417 a 236 +1417 a + tx@Dict begin PutEnd end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@yMax known { /N@yMax +load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin end + 236 1417 a 236 1417 a + tx@Dict begin { 5.0 5.2616 4.30554 1.94444 30. Uput UUput } PutCoor +PutBegin end + 236 +1417 a 214 1427 a Fd(y)236 1417 y + tx@Dict begin PutEnd end + 236 1417 a 236 1417 +a + tx@Dict begin PutEnd end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@zMax known { /N@zMax +load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin end + 236 1417 a 236 1417 a + tx@Dict begin { 5.0 5.0903 4.30554 0.0 90. Uput UUput } PutCoor PutBegin + end + 236 1417 +a 215 1435 a Fd(z)236 1417 y + tx@Dict begin PutEnd end + 236 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 +1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 1.0 0.1 0 1.0 -0.1 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 1417 +a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 1.0 1.0 mul def /y -0.4 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def 270 Delta sub rotate /Rho 90 Gamma add Delta +add def Rho cos Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { +/TMatrix { } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx +def /cp [ currentpoint ] cvx def CM CP T STV CM matrix invertmatrix +matrix concatmatrix exch exec concat cp moveto end + 236 1417 +a Fc(1.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 a +@beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 2.0 0.1 0 2.0 -0.1 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 2.0 1.0 mul def /y -0.4 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 +1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def 270 Delta sub rotate /Rho 90 Gamma add Delta +add def Rho cos Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { +/TMatrix { } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx +def /cp [ currentpoint ] cvx def CM CP T STV CM matrix invertmatrix +matrix concatmatrix exch exec concat cp moveto end + 236 1417 a Fc(2.0)326 +1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 a @beginspecial +@setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 3.0 0.1 0 3.0 -0.1 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 3.0 1.0 mul def /y -0.4 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 1417 a 236 1417 +a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def 270 Delta sub rotate /Rho 90 Gamma add Delta +add def Rho cos Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { +/TMatrix { } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx +def /cp [ currentpoint ] cvx def CM CP T STV CM matrix invertmatrix +matrix concatmatrix exch exec concat cp moveto end + 236 1417 a Fc(3.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + +326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 4.0 0.1 0 4.0 -0.1 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 4.0 1.0 mul def /y -0.4 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 +a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def 270 Delta sub rotate /Rho 90 Gamma add Delta +add def Rho cos Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { +/TMatrix { } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx +def /cp [ currentpoint ] cvx def CM CP T STV CM matrix invertmatrix +matrix concatmatrix exch exec concat cp moveto end + 236 1417 a Fc(4.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a +236 1417 a + tx@Dict begin PutEnd end + 236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0.1 1.0 0 -0.1 1.0 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial +236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x -0.2 1.0 mul def /y 1.0 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 +a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 1417 a Fc(1.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + +236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0.1 2.0 0 -0.1 2.0 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 +1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x -0.2 1.0 mul def /y 2.0 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 +1417 a Fc(2.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 +a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0.1 3.0 0 -0.1 3.0 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x -0.2 1.0 mul def /y 3.0 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 +1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 1417 a Fc(3.0)326 +1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 a @beginspecial +@setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0.1 4.0 0 -0.1 4.0 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x -0.2 1.0 mul def /y 4.0 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 1417 a 236 1417 +a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 1417 a Fc(4.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + +326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0 0.1 1.0 0 -0.1 1.0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0.2 1 mul def /z 1.0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@temp@pstNode +10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 +a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 1417 a Fc(1.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a +236 1417 a + tx@Dict begin PutEnd end + 236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0 0.1 2.0 0 -0.1 2.0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial +236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0.2 1 mul def /z 2.0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@temp@pstNode +10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 +a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 1417 a Fc(2.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + +236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0 0.1 3.0 0 -0.1 3.0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 +1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0.2 1 mul def /z 3.0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@temp@pstNode +10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 +1417 a Fc(3.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 +a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0 0.1 4.0 0 -0.1 4.0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0.2 1 mul def /z 4.0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@temp@pstNode +10 {InitPnode } NewNode end end + 236 +1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 1417 a Fc(4.0)326 +1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 a 0 0 1 TeXcolorrgb +0 TeXcolorgray 0 0 1 TeXcolorrgb 0 TeXcolorgray 236 1417 +a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 3 1.0 mul def /y 3 1 mul def /z 4 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@A 10 {InitPnode +} NewNode end end + 236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 0 0 1 setrgbcolor [ tx@NodeDict +begin tx@NodeDict /N@A known { /N@A load GetCenter } { 0 0 } ifelse +end false NArray /DS 2.0 2. CLW mul add 2 div def /PSTricksDotFont +0. [1.0 0.0 0.0 1.0 0.0 0.0] FontDot /Dot { moveto gsave 1. 1. scale +(b) show grestore } bind def newpath n { transform floor .5 add exch +floor .5 add exch itransform Dot } repeat end + +@endspecial 236 +1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 3 1.0 mul def /y 3 1 mul def /z 0 def ConvertTo2D x2D +y2D end 28.45274 mul exch 28.45274 mul exch } false /N@B 10 {InitPnode +} NewNode end end + 236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 0 0 1 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ tx@NodeDict begin tx@NodeDict /N@B known { +/N@B load GetCenter } { 0 0 } ifelse end tx@NodeDict begin tx@NodeDict +/N@A known { /N@A load GetCenter } { 0 0 } ifelse end /Lineto /lineto +load def false Line gsave 0.1 SLW 0 0 1 setrgbcolor 5.0 3.0 0.0 0.0 +0 0 add DashLine grestore end + +@endspecial +236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /x 3 1.0 mul +def /y 0 def /z 0 def ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 +mul exch } false /N@A 10 {InitPnode } NewNode end end + 236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 0 0 1 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ tx@NodeDict begin tx@NodeDict /N@A known { +/N@A load GetCenter } { 0 0 } ifelse end tx@NodeDict begin tx@NodeDict +/N@B known { /N@B load GetCenter } { 0 0 } ifelse end /Lineto /lineto +load def false Line gsave 0.1 SLW 0 0 1 setrgbcolor 5.0 3.0 0.0 0.0 +0 0 add DashLine grestore end + +@endspecial +236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /x 0 def /y +3 1 mul def /z 0 def ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 +mul exch } false /N@A 10 {InitPnode } NewNode end end + 236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 0 0 1 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ tx@NodeDict begin tx@NodeDict /N@A known { +/N@A load GetCenter } { 0 0 } ifelse end tx@NodeDict begin tx@NodeDict +/N@B known { /N@B load GetCenter } { 0 0 } ifelse end /Lineto /lineto +load def false Line gsave 0.1 SLW 0 0 1 setrgbcolor 5.0 3.0 0.0 0.0 +0 0 add DashLine grestore end + +@endspecial +0 0 1 TeXcolorrgb 0 TeXcolorgray @beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 0 0 1 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 3 0 4 0 0 4 tx@3DPlotDict begin /dxUnit 1.0 +def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta 30 def /SphericalCoor +false def /xUnit { 28.45274 mul } def /yUnit { 28.45274 mul } def +convertStackTo2D end /Lineto /lineto load def false Line gsave 0.1 +SLW 0 0 1 setrgbcolor 5.0 3.0 0.0 0.0 0 0 add DashLine grestore end + + +@endspecial 0 0 1 TeXcolorrgb 0 TeXcolorgray @beginspecial +@setspecial + tx@Dict begin STP newpath 0.1 SLW 0 0 1 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 3 3 4 3 0 4 tx@3DPlotDict begin /dxUnit 1.0 +def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta 30 def /SphericalCoor +false def /xUnit { 28.45274 mul } def /yUnit { 28.45274 mul } def +convertStackTo2D end /Lineto /lineto load def false Line gsave 0.1 +SLW 0 0 1 setrgbcolor 5.0 3.0 0.0 0.0 0 0 add DashLine grestore end + +@endspecial 0 0 1 TeXcolorrgb 0 TeXcolorgray +@beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 0 0 1 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 3 0 4 3 0 0 tx@3DPlotDict begin /dxUnit 1.0 +def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta 30 def /SphericalCoor +false def /xUnit { 28.45274 mul } def /yUnit { 28.45274 mul } def +convertStackTo2D end /Lineto /lineto load def false Line gsave 0.1 +SLW 0 0 1 setrgbcolor 5.0 3.0 0.0 0.0 0 0 add DashLine grestore end + +@endspecial 0 0 1 TeXcolorrgb +0 TeXcolorgray @beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 0 0 1 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0 3 4 0 0 4 tx@3DPlotDict begin /dxUnit 1.0 +def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta 30 def /SphericalCoor +false def /xUnit { 28.45274 mul } def /yUnit { 28.45274 mul } def +convertStackTo2D end /Lineto /lineto load def false Line gsave 0.1 +SLW 0 0 1 setrgbcolor 5.0 3.0 0.0 0.0 0 0 add DashLine grestore end + +@endspecial +0 0 1 TeXcolorrgb 0 TeXcolorgray @beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 0 0 1 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0 3 4 0 3 0 tx@3DPlotDict begin /dxUnit 1.0 +def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta 30 def /SphericalCoor +false def /xUnit { 28.45274 mul } def /yUnit { 28.45274 mul } def +convertStackTo2D end /Lineto /lineto load def false Line gsave 0.1 +SLW 0 0 1 setrgbcolor 5.0 3.0 0.0 0.0 0 0 add DashLine grestore end + + +@endspecial 0 0 1 TeXcolorrgb 0 TeXcolorgray @beginspecial +@setspecial + tx@Dict begin STP newpath 0.1 SLW 0 0 1 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 3 3 4 0 3 4 tx@3DPlotDict begin /dxUnit 1.0 +def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta 30 def /SphericalCoor +false def /xUnit { 28.45274 mul } def /yUnit { 28.45274 mul } def +convertStackTo2D end /Lineto /lineto load def false Line gsave 0.1 +SLW 0 0 1 setrgbcolor 5.0 3.0 0.0 0.0 0 0 add DashLine grestore end + +@endspecial 1 0 0 TeXcolorrgb 0 TeXcolorgray +@beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 3 -0.4 0 3 0 0 tx@3DPlotDict begin /dxUnit +1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta 30 def /SphericalCoor +false def /xUnit { 28.45274 mul } def /yUnit { 28.45274 mul } def +convertStackTo2D end /Lineto /lineto load def false Line gsave 0.1 +SLW 1 0 0 setrgbcolor 5.0 3.0 0.0 0.0 0 0 add DashLine grestore end + +@endspecial 1 0 0 TeXcolorrgb +0 TeXcolorgray @beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ -0.4 3 0 0 3 0 tx@3DPlotDict begin /dxUnit +1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta 30 def /SphericalCoor +false def /xUnit { 28.45274 mul } def /yUnit { 28.45274 mul } def +convertStackTo2D end /Lineto /lineto load def false Line gsave 0.1 +SLW 1 0 0 setrgbcolor 5.0 3.0 0.0 0.0 0 0 add DashLine grestore end + +@endspecial +1 0 0 TeXcolorrgb 0 TeXcolorgray @beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0 -0.4 4 0 0 4 tx@3DPlotDict begin /dxUnit +1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta 30 def /SphericalCoor +false def /xUnit { 28.45274 mul } def /yUnit { 28.45274 mul } def +convertStackTo2D end /Lineto /lineto load def false Line gsave 0.1 +SLW 1 0 0 setrgbcolor 5.0 3.0 0.0 0.0 0 0 add DashLine grestore end + + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0.5 1 mul def /z 4.5 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 +a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def 270 Delta sub rotate /Rho 180 Delta add +def Rho cos Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix +{ } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp +[ currentpoint ] cvx def CM CP T STV CM matrix invertmatrix matrix +concatmatrix exch exec concat cp moveto end + 236 1417 a 1 0 0 TeXcolorrgb Fb(3.)37 b(Ko)r(ordinate)p +0 TeXcolorgray 774 1417 a + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 774 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 +a 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 3.3 1.0 mul def /y 3 1 mul def /z 4.3 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@temp@pstNode +10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 +a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def 270 Delta sub rotate /Rho 180 Delta add +def Rho cos Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix +{ } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp +[ currentpoint ] cvx def CM CP T STV CM matrix invertmatrix matrix +concatmatrix exch exec concat cp moveto end + 236 1417 a Fb(Punkt)461 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 461 1417 a 236 1417 +a + tx@Dict begin PutEnd end + 236 1417 a 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 3.3 1.0 mul def /y 3 1 mul def /z 3.9 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@temp@pstNode +10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 +a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def 270 Delta sub rotate /Rho 180 Delta add +def Rho cos Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix +{ } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp +[ currentpoint ] cvx def CM CP T STV CM matrix invertmatrix matrix +concatmatrix exch exec concat cp moveto end + 236 1417 a Fb(\()q Fd(a)313 1429 y Fa(1)350 +1417 y Fd(;)14 b(a)431 1429 y Fa(2)468 1417 y Fd(;)g(a)549 +1429 y Fa(3)586 1417 y Fb(\))618 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 618 1417 a 236 +1417 a + tx@Dict begin PutEnd end + 236 1417 a 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 3 1.0 mul def /y -0.8 1 mul def /z 0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@temp@pstNode +10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 +1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def 270 Delta sub rotate /Rho 180 Delta add +def Rho cos Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix +{ } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp +[ currentpoint ] cvx def CM CP T STV CM matrix invertmatrix matrix +concatmatrix exch exec concat cp moveto end + 236 1417 a 1 0 0 TeXcolorrgb Fd(a)280 +1429 y Fa(1)p 0 TeXcolorgray 317 1417 a + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 317 1417 a 236 +1417 a + tx@Dict begin PutEnd end + 236 1417 a 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x -0.6 1.0 mul def /y 3 1 mul def /z 0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@temp@pstNode +10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 +1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 1417 a 1 0 0 TeXcolorrgb Fd(a)280 +1429 y Fa(2)p 0 TeXcolorgray 317 1417 a + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 317 1417 a 236 +1417 a + tx@Dict begin PutEnd end + 236 1417 a 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y -1 1 mul def /z 4 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@temp@pstNode +10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 +1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 1417 a 1 0 0 TeXcolorrgb Fd(a)280 +1429 y Fa(3)p 0 TeXcolorgray 317 1417 a + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 317 1417 a 236 +1417 a + tx@Dict begin PutEnd end + 236 1417 a eop end +%%Trailer + +userdict /end-hook known{end-hook}if +%%EOF diff --git a/VeranschaulichungVonVektorenImRaum01.pdf b/VeranschaulichungVonVektorenImRaum01.pdf new file mode 100644 index 0000000..fc79610 Binary files /dev/null and b/VeranschaulichungVonVektorenImRaum01.pdf differ diff --git a/VeranschaulichungVonVektorenImRaum02.eps b/VeranschaulichungVonVektorenImRaum02.eps new file mode 100644 index 0000000..f27f152 --- /dev/null +++ b/VeranschaulichungVonVektorenImRaum02.eps @@ -0,0 +1,4028 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Creator: dvips(k) 5.94a Copyright 2003 Radical Eye Software +%%Title: 3dgrafiken.dvi +%%CreationDate: Mon Aug 23 11:29:32 2004 +%%BoundingBox: 71 492 278 721 +%%DocumentFonts: CMMI10 CMSS8 CMR10 CMR7 +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: dvips -E 3dgrafiken.dvi +%DVIPSParameters: dpi=600 +%DVIPSSource: TeX output 2004.08.23:1129 +%%BeginProcSet: tex.pro 0 0 +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 +mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 +0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ +landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize +mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ +matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round +exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ +statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] +N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin +/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array +/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N +df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S +/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy +setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask +restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put +}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ +bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A +mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ +SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ +userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X +1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N +/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ +/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) +(LaserWriter 16/600)]{A length product length le{A length product exch 0 +exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse +end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask +grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} +imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round +exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto +fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p +delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} +B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ +p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S +rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end + +%%EndProcSet +%%BeginProcSet: pstricks.pro 0 0 +%! +% PostScript prologue for pstricks.tex. +% Version 97 patch 4, 04/05/10 +% For distribution, see pstricks.tex. +% +/tx@Dict 200 dict def tx@Dict begin +/ADict 25 dict def +/CM { matrix currentmatrix } bind def +/SLW /setlinewidth load def +/CLW /currentlinewidth load def +/CP /currentpoint load def +/ED { exch def } bind def +/L /lineto load def +/T /translate load def +/TMatrix { } def +/RAngle { 0 } def +/Atan { /atan load stopped { pop pop 0 } if } def +/Div { dup 0 eq { pop } { div } ifelse } def +/NET { neg exch neg exch T } def +/Pyth { dup mul exch dup mul add sqrt } def +/PtoC { 2 copy cos mul 3 1 roll sin mul } def +/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def } +def +/PathLength { flattenpath /z 0 def { /y1 ED /x1 ED /y2 y1 def /x2 x1 def +} { /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ } +/pathforall load stopped { pop pop pop pop } if z } def +/STP { .996264 dup scale } def +/STV { SDict begin normalscale end STP } def +% +%%-------------- DG begin patch 15 ---------------%% +%/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def +%PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y +%mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul +%/y ED x mul /x ED x 0 gt y 0 gt and { [ y x ] 1 a sub y mul } { [ 1 0 ] +%0 } ifelse setdash stroke } def +/DashLine { + dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def PathLength } ifelse + /b ED /x1 ED /y1 ED /x ED /y ED + /z y x add y1 add x1 add def + /Coef b a .5 sub 2 mul y mul sub z Div round + z mul a .5 sub 2 mul y mul add b exch Div def + /y y Coef mul def /x x Coef mul def /y1 y1 Coef mul def /x1 x1 Coef mul def + x1 0 gt y1 0 gt x 0 gt y 0 gt and { [ y x y1 x1 ] 1 a sub y mul} + { [ 1 0] 0 } ifelse setdash stroke +} def +%%-------------- DG end patch 15 ---------------%% +/DotLine { /b PathLength def /a ED /z ED /y CLW def /z y z add def a 0 gt +{ /b b a div def } { a 0 eq { /b b y sub def } { a -3 eq { /b b y add +def } if } ifelse } ifelse [ 0 b b z Div round Div dup 0 le { pop 1 } if +] a 0 gt { 0 } { y 2 div a -2 gt { neg } if } ifelse setdash 1 +setlinecap stroke } def +/LineFill { gsave abs CLW add /a ED a 0 dtransform round exch round exch +2 copy idtransform exch Atan rotate idtransform pop /a ED .25 .25 +% DG/SR modification begin - Dec. 12, 1997 - Patch 2 +%itransform translate pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a +itransform pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a +% DG/SR modification end +Div cvi /x1 ED /y2 y2 y1 sub def clip newpath 2 setlinecap systemdict +/setstrokeadjust known { true setstrokeadjust } if x2 x1 sub 1 add { x1 +% DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis) +% a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore } +% def +a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore +pop pop } def +% DG/SR modification end +/BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg +exch 3 index sub exch Atan rotate newpath } def +/EndArrow { @mtrx setmatrix CP grestore end } def +/Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1 +scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill +grestore } def +/Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0 +CLW moveto } def +/Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2 +div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0 +CLW moveto } def +/RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW +2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0 +curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto } +def +/SD { 0 360 arc fill } def +/EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS +CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def +/Shadow { [ { /moveto load } { /lineto load } { /curveto load } { +/closepath load } /pathforall load stopped { pop pop pop pop CP /moveto +load } if ] cvx newpath 3 1 roll T exec } def +/NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch +cvi def } def +/NArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if +f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def +/Line { NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub +def n { Lineto } repeat CP 4 2 roll ArrowB L pop pop } if } def +/Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 } +ifelse { pop } repeat a } def +/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq +and { pop pop /n n 1 sub def } if } def +/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop } +repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1 +ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1 +moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto +Lineto pop pop closepath } ifelse } def +/Diamond { /mtrx CM def T rotate /h ED /w ED dup 0 eq { pop } { CLW mul +neg /d ED /a w h Atan def /h d a sin Div h add def /w d a cos Div w add +def } ifelse mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2 +div /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx +setmatrix } def +% DG modification begin - Jan. 15, 1997 +%/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup 0 eq { +%pop } { CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2 +%div dup cos exch sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d 0 +%d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx +%setmatrix } def +/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup +CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2 +div dup cos exch sin Div mul sub def mark 0 d w neg d 0 h w d 0 +d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx +% DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis) +% setmatrix } def +setmatrix pop } def +% DG/SR modification end +/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth +def } def +/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth +def } def +/CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1 +def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp +mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos +abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def +/y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul +m mul neg def } def +/IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if } +ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def } +def +/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def +/NC { CC x1 y1 x2 y2 x y curveto } def +/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def +/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def +/NAC { x2 y2 x y curveto CC x1 y1 } def +/EAC { x2 y2 x y ArrowB curveto pop pop } def +/OpenCurve { NArray n 3 lt { n { pop pop } repeat } { BOC /n n 3 sub def + n { NC } repeat EOC } ifelse } def +/AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload +/Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop +pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def +/ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt { +CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC } +repeat closepath pop pop } ifelse } def +/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def +/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def +/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore } +def +/FontDot { DS 2 mul dup matrix scale matrix concatmatrix exch matrix +rotate matrix concatmatrix exch findfont exch makefont setfont } def +/Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto +x1 y1 lineto closepath } def +/OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1 +y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div +exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse +/b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto +x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath } +ifelse } def +/Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add +/y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq { +pop pop Rect } { OvalFrame } ifelse } def +/BezierNArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop +} if n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat f { ] +aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def +/OpenBezier { BezierNArray n 1 eq { pop pop } { ArrowA n 4 sub 3 idiv { 6 +2 roll 4 2 roll curveto } repeat 6 2 roll 4 2 roll ArrowB curveto } +ifelse } def +/ClosedBezier { BezierNArray n 1 eq { pop pop } { moveto n 1 sub 3 idiv { +6 2 roll 4 2 roll curveto } repeat closepath } ifelse } def +/BezierShowPoints { gsave Points aload length 2 div cvi /n ED moveto n 1 +sub { lineto } repeat CLW 2 div SLW [ 4 4 ] 0 setdash stroke grestore } +def +/Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1 +sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA +x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0 +y0 x0 2 mul x1 sub y1 ] def } def +/Grid { newpath /a 4 string def /b ED /c ED /n ED cvi dup 1 lt { pop 1 } +if /s ED s div dup 0 eq { pop 1 } if /dy ED s div dup 0 eq { pop 1 } if +/dx ED dy div round dy mul /y0 ED dx div round dx mul /x0 ED dy div +round cvi /y2 ED dx div round cvi /x2 ED dy div round cvi /y1 ED dx div +round cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def /w x2 x1 sub +0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2 div add def +/Helvetica findfont b scalefont setfont /b b .95 mul CLW 2 div add def } +if systemdict /setstrokeadjust known { true setstrokeadjust /t { } def } +{ /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add +exch itransform } bind def } ifelse gsave n 0 gt { 1 setlinecap [ 0 dy n +div ] dy n div 2 div setdash } { 2 setlinecap } ifelse /i x1 def /f y1 +dy mul n 0 gt { dy n div 2 div h mul sub } if def /g y2 dy mul n 0 gt { +dy n div 2 div h mul add } if def x2 x1 sub w mul 1 add dup 1000 gt { +pop 1000 } if { i dx mul dup y0 moveto b 0 gt { gsave c i a cvs dup +stringwidth pop /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse h 0 gt {b neg} +{z1} ifelse rmoveto show grestore } if dup t f moveto g t L stroke /i i +w add def } repeat grestore gsave n 0 gt +% DG/SR modification begin - Nov. 7, 1997 - Patch 1 +%{ 1 setlinecap [ 0 dx n div ] dy n div 2 div setdash } +{ 1 setlinecap [ 0 dx n div ] dx n div 2 div setdash } +% DG/SR modification end +{ 2 setlinecap } ifelse /i y1 def /f x1 dx mul +n 0 gt { dx n div 2 div w mul sub } if def /g x2 dx mul n 0 gt { dx n +div 2 div w mul add } if def y2 y1 sub h mul 1 add dup 1000 gt { pop +1000 } if { newpath i dy mul dup x0 exch moveto b 0 gt { gsave c i a cvs +dup stringwidth pop /z2 ED w 0 gt {z1 z2 add neg} {z1} ifelse h 0 gt +{z1} {b neg} ifelse rmoveto show grestore } if dup f exch t moveto g +exch t L stroke /i i h add def } repeat grestore } def +/ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0 +1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add +exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c +mul neg d } def +/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def +/Rot { CP CP translate 3 -1 roll neg rotate NET } def +/RotBegin { tx@Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 } +def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot /RAngle [ RAngle +dup a add ] cvx def } def +/RotEnd { /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle pop ] +cvx def } def +/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def +/PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def +/PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def +/Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s +abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b +div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } { +h1 abs h sub dup s mul abs } ifelse } def +/UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s +mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q +{ x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add +exch } def +/BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { Visible +/IfVisible true def } if } { IfVisible { Invisible /IfVisible false def +} if } ifelse } def +/InitOL { /OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def +/Visible { CP OLUnit idtransform T moveto } def /Invisible { CP OLUnit +neg exch neg exch idtransform T moveto } def /BOL { BeginOL } def +/IfVisible true def } def +end +% END pstricks.pro + +%%EndProcSet +%%BeginProcSet: pst-dots.pro 0 0 +%!PS-Adobe-2.0 +%%Title: Dot Font for PSTricks +%%Creator: Timothy Van Zandt +%%Creation Date: May 7, 1993 +%% Version 97 patch 1, 99/12/16 +%% Modified by Etienne Riga - Dec. 16, 1999 +%% to add /Diamond, /SolidDiamond and /BoldDiamond +10 dict dup begin + /FontType 3 def + /FontMatrix [ .001 0 0 .001 0 0 ] def + /FontBBox [ 0 0 0 0 ] def + /Encoding 256 array def + 0 1 255 { Encoding exch /.notdef put } for + Encoding + dup (b) 0 get /Bullet put + dup (c) 0 get /Circle put + dup (C) 0 get /BoldCircle put + dup (u) 0 get /SolidTriangle put + dup (t) 0 get /Triangle put + dup (T) 0 get /BoldTriangle put + dup (r) 0 get /SolidSquare put + dup (s) 0 get /Square put + dup (S) 0 get /BoldSquare put + dup (q) 0 get /SolidPentagon put + dup (p) 0 get /Pentagon put + dup (P) 0 get /BoldPentagon put +% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga + dup (l) 0 get /SolidDiamond put + dup (d) 0 get /Diamond put + (D) 0 get /BoldDiamond put +% DG/SR modification end + /Metrics 13 dict def + Metrics begin + /Bullet 1000 def + /Circle 1000 def + /BoldCircle 1000 def + /SolidTriangle 1344 def + /Triangle 1344 def + /BoldTriangle 1344 def + /SolidSquare 886 def + /Square 886 def + /BoldSquare 886 def + /SolidPentagon 1093.2 def + /Pentagon 1093.2 def + /BoldPentagon 1093.2 def +% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga + /SolidDiamond 1008 def + /Diamond 1008 def + /BoldDiamond 1008 def +% DG/SR modification end + /.notdef 0 def + end + /BBoxes 13 dict def + BBoxes begin + /Circle { -550 -550 550 550 } def + /BoldCircle /Circle load def + /Bullet /Circle load def + /Triangle { -571.5 -330 571.5 660 } def + /BoldTriangle /Triangle load def + /SolidTriangle /Triangle load def + /Square { -450 -450 450 450 } def + /BoldSquare /Square load def + /SolidSquare /Square load def + /Pentagon { -546.6 -465 546.6 574.7 } def + /BoldPentagon /Pentagon load def + /SolidPentagon /Pentagon load def +% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga + /Diamond { -428.5 -742.5 428.5 742.5 } def + /BoldDiamond /Diamond load def + /SolidDiamond /Diamond load def +% DG/SR modification end + /.notdef { 0 0 0 0 } def + end + /CharProcs 20 dict def + CharProcs begin + /Adjust { + 2 copy dtransform floor .5 add exch floor .5 add exch idtransform + 3 -1 roll div 3 1 roll exch div exch scale + } def + /CirclePath { 0 0 500 0 360 arc closepath } def + /Bullet { 500 500 Adjust CirclePath fill } def + /Circle { 500 500 Adjust CirclePath .9 .9 scale CirclePath + eofill } def + /BoldCircle { 500 500 Adjust CirclePath .8 .8 scale CirclePath + eofill } def + /BoldCircle { CirclePath .8 .8 scale CirclePath eofill } def + /TrianglePath { 0 660 moveto -571.5 -330 lineto 571.5 -330 lineto + closepath } def + /SolidTriangle { TrianglePath fill } def + /Triangle { TrianglePath .85 .85 scale TrianglePath eofill } def + /BoldTriangle { TrianglePath .7 .7 scale TrianglePath eofill } def + /SquarePath { -450 450 moveto 450 450 lineto 450 -450 lineto + -450 -450 lineto closepath } def + /SolidSquare { SquarePath fill } def + /Square { SquarePath .89 .89 scale SquarePath eofill } def + /BoldSquare { SquarePath .78 .78 scale SquarePath eofill } def + /PentagonPath { + -337.8 -465 moveto + 337.8 -465 lineto + 546.6 177.6 lineto + 0 574.7 lineto + -546.6 177.6 lineto + closepath + } def + /SolidPentagon { PentagonPath fill } def + /Pentagon { PentagonPath .89 .89 scale PentagonPath eofill } def + /BoldPentagon { PentagonPath .78 .78 scale PentagonPath eofill } def +% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga + /DiamondPath { 0 742.5 moveto -428.5 0 lineto 0 -742.5 lineto + 428.5 0 lineto closepath } def + /SolidDiamond { DiamondPath fill } def + /Diamond { DiamondPath .85 .85 scale DiamondPath eofill } def + /BoldDiamond { DiamondPath .7 .7 scale DiamondPath eofill } def +% DG/SR modification end + /.notdef { } def + end + /BuildGlyph { + exch + begin + Metrics 1 index get exec 0 + BBoxes 3 index get exec + setcachedevice + CharProcs begin load exec end + end + } def + /BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec + } bind def +end +/PSTricksDotFont exch definefont pop +%END pst-dots.pro + +%%EndProcSet +%%BeginProcSet: pst-node.pro 0 0 +%! +% PostScript prologue for pst-node.tex. +% Version 97 patch 1, 97/05/09. +% For distribution, see pstricks.tex. +% +/tx@NodeDict 400 dict def tx@NodeDict begin +tx@Dict begin /T /translate load def end +/NewNode { gsave /next ED dict dup 3 1 roll def exch { dup 3 1 roll def } +if begin tx@Dict begin STV CP T exec end /NodeMtrx CM def next end +grestore } def +/InitPnode { /Y ED /X ED /NodePos { NodeSep Cos mul NodeSep Sin mul } def +} def +/InitCnode { /r ED /Y ED /X ED /NodePos { NodeSep r add dup Cos mul exch +Sin mul } def } def +/GetRnodePos { Cos 0 gt { /dx r NodeSep add def } { /dx l NodeSep sub def +} ifelse Sin 0 gt { /dy u NodeSep add def } { /dy d NodeSep sub def } +ifelse dx Sin mul abs dy Cos mul abs gt { dy Cos mul Sin div dy } { dx +dup Sin mul Cos Div } ifelse } def +/InitRnode { /Y ED /X ED X sub /r ED /l X neg def Y add neg /d ED Y sub +/u ED /NodePos { GetRnodePos } def } def +/DiaNodePos { w h mul w Sin mul abs h Cos mul abs add Div NodeSep add dup +Cos mul exch Sin mul } def +/TriNodePos { Sin s lt { d NodeSep sub dup Cos mul Sin Div exch } { w h +mul w Sin mul h Cos abs mul add Div NodeSep add dup Cos mul exch Sin mul +} ifelse } def +/InitTriNode { sub 2 div exch 2 div exch 2 copy T 2 copy 4 index index /d +ED pop pop pop pop -90 mul rotate /NodeMtrx CM def /X 0 def /Y 0 def d +sub abs neg /d ED d add /h ED 2 div h mul h d sub Div /w ED /s d w Atan +sin def /NodePos { TriNodePos } def } def +/OvalNodePos { /ww w NodeSep add def /hh h NodeSep add def Sin ww mul Cos +hh mul Atan dup cos ww mul exch sin hh mul } def +/GetCenter { begin X Y NodeMtrx transform CM itransform end } def +/XYPos { dup sin exch cos Do /Cos ED /Sin ED /Dist ED Cos 0 gt { Dist +Dist Sin mul Cos div } { Cos 0 lt { Dist neg Dist Sin mul Cos div neg } +{ 0 Dist Sin mul } ifelse } ifelse Do } def +/GetEdge { dup 0 eq { pop begin 1 0 NodeMtrx dtransform CM idtransform +exch atan sub dup sin /Sin ED cos /Cos ED /NodeSep ED NodePos NodeMtrx +dtransform CM idtransform end } { 1 eq {{exch}} {{}} ifelse /Do ED pop +XYPos } ifelse } def +/AddOffset { 1 index 0 eq { pop pop } { 2 copy 5 2 roll cos mul add 4 1 +roll sin mul sub exch } ifelse } def +/GetEdgeA { NodeSepA AngleA NodeA NodeSepTypeA GetEdge OffsetA AngleA +AddOffset yA add /yA1 ED xA add /xA1 ED } def +/GetEdgeB { NodeSepB AngleB NodeB NodeSepTypeB GetEdge OffsetB AngleB +AddOffset yB add /yB1 ED xB add /xB1 ED } def +/GetArmA { ArmTypeA 0 eq { /xA2 ArmA AngleA cos mul xA1 add def /yA2 ArmA +AngleA sin mul yA1 add def } { ArmTypeA 1 eq {{exch}} {{}} ifelse /Do ED +ArmA AngleA XYPos OffsetA AngleA AddOffset yA add /yA2 ED xA add /xA2 ED +} ifelse } def +/GetArmB { ArmTypeB 0 eq { /xB2 ArmB AngleB cos mul xB1 add def /yB2 ArmB +AngleB sin mul yB1 add def } { ArmTypeB 1 eq {{exch}} {{}} ifelse /Do ED +ArmB AngleB XYPos OffsetB AngleB AddOffset yB add /yB2 ED xB add /xB2 ED +} ifelse } def +/InitNC { /b ED /a ED /NodeSepTypeB ED /NodeSepTypeA ED /NodeSepB ED +/NodeSepA ED /OffsetB ED /OffsetA ED tx@NodeDict a known tx@NodeDict b +known and dup { /NodeA a load def /NodeB b load def NodeA GetCenter /yA +ED /xA ED NodeB GetCenter /yB ED /xB ED } if } def +/LPutLine { 4 copy 3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED 1 t sub +mul 3 1 roll 1 t sub mul 4 1 roll t mul add /Y ED t mul add /X ED } def +/LPutLines { mark LPutVar counttomark 2 div 1 sub /n ED t floor dup n gt +{ pop n 1 sub /t 1 def } { dup t sub neg /t ED } ifelse cvi 2 mul { pop +} repeat LPutLine cleartomark } def +/BezierMidpoint { /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED +/t ED /cx x1 x0 sub 3 mul def /cy y1 y0 sub 3 mul def /bx x2 x1 sub 3 +mul cx sub def /by y2 y1 sub 3 mul cy sub def /ax x3 x0 sub cx sub bx +sub def /ay y3 y0 sub cy sub by sub def ax t 3 exp mul bx t t mul mul +add cx t mul add x0 add ay t 3 exp mul by t t mul mul add cy t mul add +y0 add 3 ay t t mul mul mul 2 by t mul mul add cy add 3 ax t t mul mul +mul 2 bx t mul mul add cx add atan /NAngle ED /Y ED /X ED } def +/HPosBegin { yB yA ge { /t 1 t sub def } if /Y yB yA sub t mul yA add def +} def +/HPosEnd { /X Y yyA sub yyB yyA sub Div xxB xxA sub mul xxA add def +/NAngle yyB yyA sub xxB xxA sub Atan def } def +/HPutLine { HPosBegin /yyA ED /xxA ED /yyB ED /xxB ED HPosEnd } def +/HPutLines { HPosBegin yB yA ge { /check { le } def } { /check { ge } def +} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { dup Y check { exit +} { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark HPosEnd +} def +/VPosBegin { xB xA lt { /t 1 t sub def } if /X xB xA sub t mul xA add def +} def +/VPosEnd { /Y X xxA sub xxB xxA sub Div yyB yyA sub mul yyA add def +/NAngle yyB yyA sub xxB xxA sub Atan def } def +/VPutLine { VPosBegin /yyA ED /xxA ED /yyB ED /xxB ED VPosEnd } def +/VPutLines { VPosBegin xB xA ge { /check { le } def } { /check { ge } def +} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { 1 index X check { +exit } { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark +VPosEnd } def +/HPutCurve { gsave newpath /SaveLPutVar /LPutVar load def LPutVar 8 -2 +roll moveto curveto flattenpath /LPutVar [ {} {} {} {} pathforall ] cvx +def grestore exec /LPutVar /SaveLPutVar load def } def +/NCCoor { /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def +GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 xA1 yA1 ] cvx def /LPutPos { +LPutVar LPutLine } def /HPutPos { LPutVar HPutLine } def /VPutPos { +LPutVar VPutLine } def LPutVar } def +/NCLine { NCCoor tx@Dict begin ArrowA CP 4 2 roll ArrowB lineto pop pop +end } def +/NCLines { false NArray n 0 eq { NCLine } { 2 copy yA sub exch xA sub +Atan /AngleA ED n 2 mul dup index exch index yB sub exch xB sub Atan +/AngleB ED GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 n 2 mul 4 add 4 roll xA1 +yA1 ] cvx def mark LPutVar tx@Dict begin false Line end /LPutPos { +LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } +ifelse } def +/NCCurve { GetEdgeA GetEdgeB xA1 xB1 sub yA1 yB1 sub Pyth 2 div dup 3 -1 +roll mul /ArmA ED mul /ArmB ED /ArmTypeA 0 def /ArmTypeB 0 def GetArmA +GetArmB xA2 yA2 xA1 yA1 tx@Dict begin ArrowA end xB2 yB2 xB1 yB1 tx@Dict +begin ArrowB end curveto /LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ] +cvx def /LPutPos { t LPutVar BezierMidpoint } def /HPutPos { { HPutLines +} HPutCurve } def /VPutPos { { VPutLines } HPutCurve } def } def +/NCAngles { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate +def xA2 yA2 mtrx transform pop xB2 yB2 mtrx transform exch pop mtrx +itransform /y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA2 +yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false Line end /LPutVar [ xB1 +yB1 xB2 yB2 x0 y0 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { LPutLines } def +/HPutPos { HPutLines } def /VPutPos { VPutLines } def } def +/NCAngle { GetEdgeA GetEdgeB GetArmB /mtrx AngleA matrix rotate def xB2 +yB2 mtrx itransform pop xA1 yA1 mtrx itransform exch pop mtrx transform +/y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA1 yA1 +tx@Dict begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA1 yA1 ] +cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos { +VPutLines } def } def +/NCBar { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate def +xA2 yA2 mtrx itransform pop xB2 yB2 mtrx itransform pop sub dup 0 mtrx +transform 3 -1 roll 0 gt { /yB2 exch yB2 add def /xB2 exch xB2 add def } +{ /yA2 exch neg yA2 add def /xA2 exch neg xA2 add def } ifelse mark ArmB +0 ne { xB1 yB1 } if xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict +begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx +def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos { +VPutLines } def } def +/NCDiag { GetEdgeA GetEdgeB GetArmA GetArmB mark ArmB 0 ne { xB1 yB1 } if +xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false Line end +/LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { +LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } +def +/NCDiagg { GetEdgeA GetArmA yB yA2 sub xB xA2 sub Atan 180 add /AngleB ED +GetEdgeB mark xB1 yB1 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin +false Line end /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { +LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } +def +/NCLoop { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate +def xA2 yA2 mtrx transform loopsize add /yA3 ED /xA3 ED /xB3 xB2 yB2 +mtrx transform pop def xB3 yA3 mtrx itransform /yB3 ED /xB3 ED xA3 yA3 +mtrx itransform /yA3 ED /xA3 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 +xB3 yB3 xA3 yA3 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false +Line end /LPutVar [ xB1 yB1 xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 xA1 yA1 ] +cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos { +VPutLines } def } def +% DG/SR modification begin - May 9, 1997 - Patch 1 +%/NCCircle { 0 0 NodesepA nodeA \tx@GetEdge pop xA sub 2 div dup 2 exp r +%r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add +%exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360 +%mul add dup 5 1 roll 90 sub \tx@PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED +/NCCircle { NodeSepA 0 NodeA 0 GetEdge pop 2 div dup 2 exp r +r mul sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add +exch 2 copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360 +mul add dup 5 1 roll 90 sub PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED +% DG/SR modification end +} def /HPutPos { LPutPos } def /VPutPos { LPutPos } def r AngleA 90 sub a add +AngleA 270 add a sub tx@Dict begin /angleB ED /angleA ED /r ED /c 57.2957 r +Div def /y ED /x ED } def +/NCBox { /d ED /h ED /AngleB yB yA sub xB xA sub Atan def /AngleA AngleB +180 add def GetEdgeA GetEdgeB /dx d AngleB sin mul def /dy d AngleB cos +mul neg def /hx h AngleB sin mul neg def /hy h AngleB cos mul def +/LPutVar [ xA1 hx add yA1 hy add xB1 hx add yB1 hy add xB1 dx add yB1 dy +add xA1 dx add yA1 dy add ] cvx def /LPutPos { LPutLines } def /HPutPos +{ xB yB xA yA LPutLine } def /VPutPos { HPutPos } def mark LPutVar +tx@Dict begin false Polygon end } def +/NCArcBox { /l ED neg /d ED /h ED /a ED /AngleA yB yA sub xB xA sub Atan +def /AngleB AngleA 180 add def /tA AngleA a sub 90 add def /tB tA a 2 +mul add def /r xB xA sub tA cos tB cos sub Div dup 0 eq { pop 1 } if def +/x0 xA r tA cos mul add def /y0 yA r tA sin mul add def /c 57.2958 r div +def /AngleA AngleA a sub 180 add def /AngleB AngleB a add 180 add def +GetEdgeA GetEdgeB /AngleA tA 180 add yA yA1 sub xA xA1 sub Pyth c mul +sub def /AngleB tB 180 add yB yB1 sub xB xB1 sub Pyth c mul add def l 0 +eq { x0 y0 r h add AngleA AngleB arc x0 y0 r d add AngleB AngleA arcn } +{ x0 y0 translate /tA AngleA l c mul add def /tB AngleB l c mul sub def +0 0 r h add tA tB arc r h add AngleB PtoC r d add AngleB PtoC 2 copy 6 2 +roll l arcto 4 { pop } repeat r d add tB PtoC l arcto 4 { pop } repeat 0 +0 r d add tB tA arcn r d add AngleA PtoC r h add AngleA PtoC 2 copy 6 2 +roll l arcto 4 { pop } repeat r h add tA PtoC l arcto 4 { pop } repeat } +ifelse closepath /LPutVar [ x0 y0 r AngleA AngleB h d ] cvx def /LPutPos +{ LPutVar /d ED /h ED /AngleB ED /AngleA ED /r ED /y0 ED /x0 ED t 1 le { +r h add AngleA 1 t sub mul AngleB t mul add dup 90 add /NAngle ED PtoC } +{ t 2 lt { /NAngle AngleB 180 add def r 2 t sub h mul t 1 sub d mul add +add AngleB PtoC } { t 3 lt { r d add AngleB 3 t sub mul AngleA 2 t sub +mul add dup 90 sub /NAngle ED PtoC } { /NAngle AngleA 180 add def r 4 t +sub d mul t 3 sub h mul add add AngleA PtoC } ifelse } ifelse } ifelse +y0 add /Y ED x0 add /X ED } def /HPutPos { LPutPos } def /VPutPos { +LPutPos } def } def +/Tfan { /AngleA yB yA sub xB xA sub Atan def GetEdgeA w xA1 xB sub yA1 yB +sub Pyth Pyth w Div CLW 2 div mul 2 div dup AngleA sin mul yA1 add /yA1 +ED AngleA cos mul xA1 add /xA1 ED /LPutVar [ xA1 yA1 m { xB w add yB xB +w sub yB } { xB yB w sub xB yB w add } ifelse xA1 yA1 ] cvx def /LPutPos +{ LPutLines } def /VPutPos@ { LPutVar flag { 8 4 roll pop pop pop pop } +{ pop pop pop pop 4 2 roll } ifelse } def /VPutPos { VPutPos@ VPutLine } +def /HPutPos { VPutPos@ HPutLine } def mark LPutVar tx@Dict begin +/ArrowA { moveto } def /ArrowB { } def false Line closepath end } def +/LPutCoor { NAngle tx@Dict begin /NAngle ED end gsave CM STV CP Y sub neg +exch X sub neg exch moveto setmatrix CP grestore } def +/LPut { tx@NodeDict /LPutPos known { LPutPos } { CP /Y ED /X ED /NAngle 0 +def } ifelse LPutCoor } def +/HPutAdjust { Sin Cos mul 0 eq { 0 } { d Cos mul Sin div flag not { neg } +if h Cos mul Sin div flag { neg } if 2 copy gt { pop } { exch pop } +ifelse } ifelse s add flag { r add neg } { l add } ifelse X add /X ED } +def +/VPutAdjust { Sin Cos mul 0 eq { 0 } { l Sin mul Cos div flag { neg } if +r Sin mul Cos div flag not { neg } if 2 copy gt { pop } { exch pop } +ifelse } ifelse s add flag { d add } { h add neg } ifelse Y add /Y ED } +def +end +% END pst-node.pro + +%%EndProcSet +%%BeginProcSet: 3D.pro 0 0 +%version 31 octobre 2003 +% +/tx@3DDict 100 dict def +tx@3DDict begin +/Cube{% + /XA M11 A mul M12 B mul add M13 C mul add CX add def + /YA M21 A mul M22 B mul add M23 C mul add CY add def + /ZA M31 A mul M32 B mul add M33 C mul add CZ add def + /XB M11 A mul neg M12 B mul add M13 C mul add CX add def + /YB M21 A mul neg M22 B mul add M23 C mul add CY add def + /ZB M31 A mul neg M32 B mul add M33 C mul add CZ add def + /XC M11 A mul neg M12 B mul neg add M13 C mul add CX add def + /YC M21 A mul neg M22 B mul neg add M23 C mul add CY add def + /ZC M31 A mul neg M32 B mul neg add M33 C mul add CZ add def + /XD M11 A mul M12 B mul neg add M13 C mul add CX add def + /YD M21 A mul M22 B mul neg add M23 C mul add CY add def + /ZD M31 A mul M32 B mul neg add M33 C mul add CZ add def + /XE M11 A mul M12 B mul add M13 C mul sub CX add def + /YE M21 A mul M22 B mul add M23 C mul sub CY add def + /ZE M31 A mul M32 B mul add M33 C mul sub CZ add def + /XF M11 A mul neg M12 B mul add M13 C mul sub CX add def + /YF M21 A mul neg M22 B mul add M23 C mul sub CY add def + /ZF M31 A mul neg M32 B mul add M33 C mul sub CZ add def + /XG M11 A mul neg M12 B mul sub M13 C mul sub CX add def + /YG M21 A mul neg M22 B mul sub M23 C mul sub CY add def + /ZG M31 A mul neg M32 B mul sub M33 C mul sub CZ add def + /XH M11 A mul M12 B mul sub M13 C mul sub CX add def + /YH M21 A mul M22 B mul sub M23 C mul sub CY add def + /ZH M31 A mul M32 B mul sub M33 C mul sub CZ add def +% Centres des faces : condition de visibilit +% FACE 1 +% OC1 + /XC1 M13 C mul CX add def + /YC1 M23 C mul CY add def + /ZC1 M33 C mul CZ add def +% Normale la face 1 + /NX1 M13 C mul def + /NY1 M23 C mul def + /NZ1 M33 C mul def +% rayon vers point de vue + /RXvue1 XC1 XpointVue sub def + /RYvue1 YC1 YpointVue sub def + /RZvue1 ZC1 ZpointVue sub def +% produit scalaire + /PS1 RXvue1 NX1 mul RYvue1 NY1 mul add RZvue1 NZ1 mul add def +% FACE 2 +% OC2 + /XC2 M11 A mul CX add def + /YC2 M21 A mul CY add def + /ZC2 M31 A mul CZ add def +% normale la face 2 + /NX2 M11 A mul def + /NY2 M21 A mul def + /NZ2 M31 A mul def +% rayon vers point de vue + /RXvue2 XC2 XpointVue sub def + /RYvue2 YC2 YpointVue sub def + /RZvue2 ZC2 ZpointVue sub def +% produit scalaire + /PS2 RXvue2 NX2 mul RYvue2 NY2 mul add RZvue2 NZ2 mul add def +% FACE 3 +% OC3 + /XC3 M13 C neg mul CX add def + /YC3 M23 C neg mul CY add def + /ZC3 M33 C neg mul CZ add def +% normale la face 3 + /NX3 M13 C neg mul def + /NY3 M23 C neg mul def + /NZ3 M33 C neg mul def +% rayon vers point de vue + /RXvue3 XC3 XpointVue sub def + /RYvue3 YC3 YpointVue sub def + /RZvue3 ZC3 ZpointVue sub def +% produit scalaire + /PS3 RXvue3 NX3 mul RYvue3 NY3 mul add RZvue3 NZ3 mul add def +% FACE 4 +% OC4 + /XC4 M11 A neg mul CX add def + /YC4 M21 A neg mul CY add def + /ZC4 M31 A neg mul CZ add def +% normale la face 4 + /NX4 M11 A neg mul def + /NY4 M21 A neg mul def + /NZ4 M31 A neg mul def +% rayon vers point de vue + /RXvue4 XC4 XpointVue sub def + /RYvue4 YC4 YpointVue sub def + /RZvue4 ZC4 ZpointVue sub def +% produit scalaire + /PS4 RXvue4 NX4 mul RYvue4 NY4 mul add RZvue4 NZ4 mul add def +% FACE 5 +% OC5 + /XC5 M12 B neg mul CX add def + /YC5 M22 B neg mul CY add def + /ZC5 M32 B neg mul CZ add def +% normale la face 5 + /NX5 M12 B neg mul def + /NY5 M22 B neg mul def + /NZ5 M32 B neg mul def +% rayon vers point de vue + /RXvue5 XC5 XpointVue sub def + /RYvue5 YC5 YpointVue sub def + /RZvue5 ZC5 ZpointVue sub def +% produit scalaire + /PS5 RXvue5 NX5 mul RYvue5 NY5 mul add RZvue5 NZ5 mul add def +% FACE 6 +% OC6 + /XC6 M12 B mul CX add def + /YC6 M22 B mul CY add def + /ZC6 M32 B mul CZ add def +% normale la face 6 + /NX6 M12 B mul def + /NY6 M22 B mul def + /NZ6 M32 B mul def +% rayon vers point de vue + /RXvue6 XC6 XpointVue sub def + /RYvue6 YC6 YpointVue sub def + /RZvue6 ZC6 ZpointVue sub def +% produit scalaire + /PS6 RXvue6 NX6 mul RYvue6 NY6 mul add RZvue6 NZ6 mul add def +% faceOne +PS1 0 Condition { % +reduction reduction scale +1 setlinejoin +newpath + /Yordonnee YA def + /Zcote ZA def + /Xabscisse XA def + CalcCoordinates + moveto + /Zcote ZB def + /Xabscisse XB def + /Yordonnee YB def + CalcCoordinates + lineto + /Zcote ZC def + /Xabscisse XC def + /Yordonnee YC def + CalcCoordinates + lineto + /Zcote ZD def + /Xabscisse XD def + /Yordonnee YD def + CalcCoordinates + lineto + /Zcote ZA def + /Xabscisse XA def + /Yordonnee YA def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceOne setrgbcolor +fill +grestore +stroke +} if +% faceTwo +PS2 0 Condition{ % +reduction reduction scale +1 setlinejoin +newpath + /Xabscisse XA def + /Yordonnee YA def + /Zcote ZA def + CalcCoordinates + moveto + /Zcote ZD def + /Xabscisse XD def + /Yordonnee YD def + CalcCoordinates + lineto + /Zcote ZH def + /Xabscisse XH def + /Yordonnee YH def + CalcCoordinates + lineto + /Zcote ZE def + /Xabscisse XE def + /Yordonnee YE def + CalcCoordinates + lineto + /Zcote ZA def + /Xabscisse XA def + /Yordonnee YA def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceTwo setrgbcolor +fill +grestore +stroke +} if +% face three +PS3 0 Condition{ % +reduction reduction scale +1 setlinejoin +newpath + /Xabscisse XE def + /Yordonnee YE def + /Zcote ZE def + CalcCoordinates + moveto + /Zcote ZF def + /Xabscisse XF def + /Yordonnee YF def + CalcCoordinates + lineto + /Zcote ZG def + /Xabscisse XG def + /Yordonnee YG def + CalcCoordinates + lineto + /Zcote ZH def + /Xabscisse XH def + /Yordonnee YH def + CalcCoordinates + lineto + /Zcote ZE def + /Xabscisse XE def + /Yordonnee YE def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceThree setrgbcolor +fill +grestore +stroke +} if +% face four +PS4 0 Condition{ % +reduction reduction scale +1 setlinejoin +newpath + /Xabscisse XB def + /Yordonnee YB def + /Zcote ZB def + CalcCoordinates + moveto + /Zcote ZF def + /Xabscisse XF def + /Yordonnee YF def + CalcCoordinates + lineto + /Zcote ZG def + /Xabscisse XG def + /Yordonnee YG def + CalcCoordinates + lineto + /Zcote ZC def + /Xabscisse XC def + /Yordonnee YC def + CalcCoordinates + lineto + /Zcote ZB def + /Xabscisse XB def + /Yordonnee YB def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceFour setrgbcolor +fill +grestore +stroke +} if +% face five +PS5 0 Condition{ % +reduction reduction scale +1 setlinejoin +newpath + /Xabscisse XC def + /Yordonnee YC def + /Zcote ZC def + CalcCoordinates + moveto + /Zcote ZD def + /Xabscisse XD def + /Yordonnee YD def + CalcCoordinates + lineto + /Zcote ZH def + /Xabscisse XH def + /Yordonnee YH def + CalcCoordinates + lineto + /Zcote ZG def + /Xabscisse XG def + /Yordonnee YG def + CalcCoordinates + lineto + /Zcote ZC def + /Xabscisse XC def + /Yordonnee YC def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceFive setrgbcolor +fill +grestore +stroke +} if +% face six +PS6 0 Condition{ % +reduction reduction scale +1 setlinejoin +newpath + /Xabscisse XB def + /Yordonnee YB def + /Zcote ZB def + CalcCoordinates + moveto + /Zcote ZA def + /Xabscisse XA def + /Yordonnee YA def + CalcCoordinates + lineto + /Zcote ZE def + /Xabscisse XE def + /Yordonnee YE def + CalcCoordinates + lineto + /Zcote ZF def + /Xabscisse XF def + /Yordonnee YF def + CalcCoordinates + lineto + /Zcote ZB def + /Xabscisse XB def + /Yordonnee YB def + CalcCoordinates + lineto +closepath +gsave +CubeColorFaceSix setrgbcolor +fill +grestore +stroke +} if +} +def +% +/PointsDie{% +PS6 0 Condition{ % +reduction reduction scale +A 2 div neg A A 2 div { + /XCpoint exch def +C 2 div neg C C 2 div { + /ZCpoint exch def +newpath + /Zpoint Rpoint ZCpoint add def + /Xpoint XCpoint def + /Ypoint B def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Zpoint Rpoint Angle cos mul ZCpoint add def + /Xpoint Rpoint Angle sin mul XCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill + } for + } for + } if +PS5 0 Condition{ % +reduction reduction scale +newpath + /Ypoint B neg def + /XCpoint A 2 div neg def + /ZCpoint C 2 div def + /Xpoint Rpoint XCpoint add def + /Zpoint ZCpoint def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint Rpoint Angle cos mul XCpoint add def + /Zpoint Rpoint Angle sin mul ZCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +% +newpath + /XCpoint A 2 div def + /ZCpoint C 2 div neg def + /Xpoint Rpoint XCpoint add def + /Zpoint ZCpoint def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint Rpoint Angle cos mul XCpoint add def + /Zpoint Rpoint Angle sin mul ZCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +% +newpath + /XCpoint 0 def + /ZCpoint 0 def + /Xpoint Rpoint XCpoint add def + /Zpoint ZCpoint def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint Rpoint Angle cos mul XCpoint add def + /Zpoint Rpoint Angle sin mul ZCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +} if +PS4 0 Condition{ % +reduction reduction scale +C 2 div neg C C 2 div { + /ZCpoint exch def +B 2 div neg B B 2 div { + /YCpoint exch def +newpath + /Zpoint Rpoint ZCpoint add def + /Ypoint YCpoint def + /Xpoint A neg def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Zpoint Rpoint Angle cos mul ZCpoint add def + /Ypoint Rpoint Angle sin mul YCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill + } for + } for +% le point du milieu +newpath + /Zpoint Rpoint def + /Ypoint 0 def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Zpoint Rpoint Angle cos mul def + /Ypoint Rpoint Angle sin mul def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +} if +PS3 0 Condition{ % +reduction reduction scale +A 2 div neg A A 2 div { + /XCpoint exch def +B 2 div neg B 2 div B 2 div { + /YCpoint exch def +newpath + /Xpoint Rpoint XCpoint add def + /Ypoint YCpoint def + /Zpoint C neg def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint Rpoint Angle cos mul XCpoint add def + /Ypoint Rpoint Angle sin mul YCpoint add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill + } for + } for +} if +PS2 0 Condition{ % +reduction reduction scale +newpath + /Xpoint A def + /Ypoint Rpoint B 2 div add def + /Zpoint C 2 div neg def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Ypoint Rpoint Angle cos mul B 2 div add def + /Zpoint Rpoint Angle sin mul C 2 div sub def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +newpath + /Xpoint A def + /Ypoint Rpoint B 2 div sub def + /Zpoint C 2 div def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint A def + /Ypoint Rpoint Angle cos mul B 2 div sub def + /Zpoint Rpoint Angle sin mul A 2 div add def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +} if +PS1 0 Condition{ % +reduction reduction scale +newpath + /Xpoint Rpoint def + /Ypoint 0 def + /Zpoint C def +CalculsPointsAfterTransformations +CalcCoordinates + moveto +0 1 359 {% + /Angle exch def + /Xpoint Rpoint Angle cos mul def + /Ypoint Rpoint Angle sin mul def +CalculsPointsAfterTransformations +CalcCoordinates + lineto + } for +closepath +0 setgray +fill +} if +} def +% +/CalcCoordinates{% + formulesTroisD + Xi 28.45 mul Yi 28.45 mul + } + def +% pour la 3D conventionnelle +/formulesTroisD{% + /xObservateur Xabscisse Sin1 mul neg Yordonnee Cos1 mul add def + /yObservateur Xabscisse Cos1Sin2 mul neg Yordonnee Sin1Sin2 mul sub Zcote Cos2 mul add def + /zObservateur Xabscisse neg Cos1Cos2 mul Yordonnee Sin1Cos2 mul sub Zcote Sin2 mul sub Dobs add def + /Xi DScreen xObservateur mul zObservateur div def + /Yi DScreen yObservateur mul zObservateur div def + } +def +% +/CalculsPointsAfterTransformations{% + /Xabscisse M11 Xpoint mul M12 Ypoint mul add M13 Zpoint mul add CX add def + /Yordonnee M21 Xpoint mul M22 Ypoint mul add M23 Zpoint mul add CY add def + /Zcote M31 Xpoint mul M32 Ypoint mul add M33 Zpoint mul add CZ add def + } +def +% +/SommetsTetraedre{% + /xA RayonBaseTetraedre neg def + /yA 0 def + /zA 0 def + /xB 0.5 RayonBaseTetraedre mul def + /yB RayonBaseTetraedre 0.866 mul neg def + /zB 0 def + /xC xB def + /yC yB neg def + /zC 0 def + /xD 0 def + /yD 0 def + /zD RayonBaseTetraedre 1.414 mul def +% coordonnes centre des faces + /xFaceA xA xB xC add add 3 div def + /yFaceA yA yB yC add add 3 div def + /zFaceA zA zB zC add add 3 div def + /xFaceB xD xA xB add add 3 div def + /yFaceB yD yA yB add add 3 div def + /zFaceB zD zA zB add add 3 div def + /xFaceC xA xD xC add add 3 div def + /yFaceC yA yD yC add add 3 div def + /zFaceC zA zD zC add add 3 div def + /xFaceD xD xB xC add add 3 div def + /yFaceD yD yB yC add add 3 div def + /zFaceD zD zB zC add add 3 div def +% sommets aprs rotation et translation + /XA M11 xA mul M12 yA mul add M13 zA mul add CX add def + /YA M21 xA mul M22 yA mul add M23 zA mul add CY add def + /ZA M31 xA mul M32 yA mul add M33 zA mul add CZ add def + /XB M11 xB mul M12 yB mul add M13 zB mul add CX add def + /YB M21 xB mul M22 yB mul add M23 zB mul add CY add def + /ZB M31 xB mul M32 yB mul add M33 zB mul add CZ add def + /XC M11 xC mul M12 yC mul add M13 zC mul add CX add def + /YC M21 xC mul M22 yC mul add M23 zC mul add CY add def + /ZC M31 xC mul M32 yC mul add M33 zC mul add CZ add def + /XD M11 xD mul M12 yD mul add M13 zD mul add CX add def + /YD M21 xD mul M22 yD mul add M23 zD mul add CY add def + /ZD M31 xD mul M32 yD mul add M33 zD mul add CZ add def +% centres de faces aprs transformations + /XFaceA M11 xFaceA mul M12 yFaceA mul add M13 zFaceA mul add CX add def + /YFaceA M21 xFaceA mul M22 yFaceA mul add M23 zFaceA mul add CY add def + /ZFaceA M31 xFaceA mul M32 yFaceA mul add M33 zFaceA mul add CZ add def + /XFaceB M11 xFaceB mul M12 yFaceB mul add M13 zFaceB mul add CX add def + /YFaceB M21 xFaceB mul M22 yFaceB mul add M23 zFaceB mul add CY add def + /ZFaceB M31 xFaceB mul M32 yFaceB mul add M33 zFaceB mul add CZ add def + /XFaceC M11 xFaceC mul M12 yFaceC mul add M13 zFaceC mul add CX add def + /YFaceC M21 xFaceC mul M22 yFaceC mul add M23 zFaceC mul add CY add def + /ZFaceC M31 xFaceC mul M32 yFaceC mul add M33 zFaceC mul add CZ add def + /XFaceD M11 xFaceD mul M12 yFaceD mul add M13 zFaceD mul add CX add def + /YFaceD M21 xFaceD mul M22 yFaceD mul add M23 zFaceD mul add CY add def + /ZFaceD M31 xFaceD mul M32 yFaceD mul add M33 zFaceD mul add CZ add def +% Normales aux faces + /NxA XFaceA XD sub def + /NyA YFaceA YD sub def + /NzA ZFaceA ZD sub def + /NxB XFaceB XC sub def + /NyB YFaceB YC sub def + /NzB ZFaceB ZC sub def + /NxC XFaceC XB sub def + /NyC YFaceC YB sub def + /NzC ZFaceC ZB sub def + /NxD XFaceD XA sub def + /NyD YFaceD YA sub def + /NzD ZFaceD ZA sub def +% Conditions de visibilit +% rayon vers point de vue + /RXvueA XFaceA XpointVue sub def + /RYvueA YFaceA YpointVue sub def + /RZvueA ZFaceA ZpointVue sub def + /RXvueB XFaceB XpointVue sub def + /RYvueB YFaceB YpointVue sub def + /RZvueB ZFaceB ZpointVue sub def + /RXvueC XFaceC XpointVue sub def + /RYvueC YFaceC YpointVue sub def + /RZvueC ZFaceC ZpointVue sub def + /RXvueD XFaceD XpointVue sub def + /RYvueD YFaceD YpointVue sub def + /RZvueD ZFaceD ZpointVue sub def +% produit scalaire + /PSA RXvueA NxA mul RYvueA NyA mul add RZvueA NzA mul add def + /PSB RXvueB NxB mul RYvueB NyB mul add RZvueB NzB mul add def + /PSC RXvueC NxC mul RYvueC NyC mul add RZvueC NzC mul add def + /PSD RXvueD NxD mul RYvueD NyD mul add RZvueD NzD mul add def + } + def +/Tetraedre{% +SommetsTetraedre +% face ABC + PSA 0 le { % +reduction reduction scale +1 setlinejoin + /Xabscisse XA def + /Yordonnee YA def + /Zcote ZA def + CalcCoordinates + moveto + /Xabscisse XB def + /Yordonnee YB def + /Zcote ZB def + CalcCoordinates + lineto + /Xabscisse XC def + /Yordonnee YC def + /Zcote ZC def + CalcCoordinates + lineto + /Xabscisse XA def + /Yordonnee YA def + /Zcote ZA def + CalcCoordinates + lineto +} if +% face DAB + PSB 0 le { % +reduction reduction scale +1 setlinejoin + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + moveto + /Xabscisse XA def + /Yordonnee YA def + /Zcote ZA def + CalcCoordinates + lineto + /Xabscisse XB def + /Yordonnee YB def + /Zcote ZB def + CalcCoordinates + lineto + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + lineto +} if +% face DAC +PSC 0 le { % +reduction reduction scale +1 setlinejoin + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + moveto + /Xabscisse XA def + /Yordonnee YA def + /Zcote ZA def + CalcCoordinates + lineto + /Xabscisse XC def + /Yordonnee YC def + /Zcote ZC def + CalcCoordinates + lineto + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + lineto +} if +% face DBC + PSD 0 le { % +reduction reduction scale +1 setlinejoin + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + moveto + /Xabscisse XB def + /Yordonnee YB def + /Zcote ZB def + CalcCoordinates + lineto + /Xabscisse XC def + /Yordonnee YC def + /Zcote ZC def + CalcCoordinates + lineto + /Xabscisse XD def + /Yordonnee YD def + /Zcote ZD def + CalcCoordinates + lineto +} if +} +def +% +/SommetsPyramide{% + /xA A def + /yA A neg def + /zA 0 def + /xB A def + /yB A def + /zB 0 def + /xC A neg def + /yC A def + /zC 0 def + /xD A neg def + /yD A neg def + /zD 0 def + /xS 0 def + /yS 0 def + /zS Hpyramide def +% coordonnes centre des faces + /Alpha A Hpyramide atan def + /xFaceSAB Hpyramide Alpha dup sin exch cos mul mul def + /yFaceSAB 0 def + /zFaceSAB Hpyramide Alpha sin dup mul mul def + /xFaceSBC 0 def + /yFaceSBC xFaceSAB def + /zFaceSBC zFaceSAB fracHeight mul def + /xFaceSCD xFaceSAB neg def + /yFaceSCD 0 def + /zFaceSCD zFaceSAB fracHeight mul def + /xFaceSDA 0 def + /yFaceSDA xFaceSAB neg def + /zFaceSDA zFaceSAB fracHeight mul def +% sommets aprs rotation et translation + /XA M11 xA mul M12 yA mul add M13 zA mul add CX add def + /YA M21 xA mul M22 yA mul add M23 zA mul add CY add def + /ZA M31 xA mul M32 yA mul add M33 zA mul add CZ add def + /XB M11 xB mul M12 yB mul add M13 zB mul add CX add def + /YB M21 xB mul M22 yB mul add M23 zB mul add CY add def + /ZB M31 xB mul M32 yB mul add M33 zB mul add CZ add def + /XC M11 xC mul M12 yC mul add M13 zC mul add CX add def + /YC M21 xC mul M22 yC mul add M23 zC mul add CY add def + /ZC M31 xC mul M32 yC mul add M33 zC mul add CZ add def + /XD M11 xD mul M12 yD mul add M13 zD mul add CX add def + /YD M21 xD mul M22 yD mul add M23 zD mul add CY add def + /ZD M31 xD mul M32 yD mul add M33 zD mul add CZ add def + /XS M11 xS mul M12 yS mul add M13 zS mul add CX add def + /YS M21 xS mul M22 yS mul add M23 zS mul add CY add def + /ZS M31 xS mul M32 yS mul add M33 zS mul add CZ add def +% centres de faces aprs transformations + /XFaceSAB M11 xFaceSAB mul M12 yFaceSAB mul add M13 zFaceSAB mul add CX add def + /YFaceSAB M21 xFaceSAB mul M22 yFaceSAB mul add M23 zFaceSAB mul add CY add def + /ZFaceSAB M31 xFaceSAB mul M32 yFaceSAB mul add M33 zFaceSAB mul add CZ add def + /XFaceSBC M11 xFaceSBC mul M12 yFaceSBC mul add M13 zFaceSBC mul add CX add def + /YFaceSBC M21 xFaceSBC mul M22 yFaceSBC mul add M23 zFaceSBC mul add CY add def + /ZFaceSBC M31 xFaceSBC mul M32 yFaceSBC mul add M33 zFaceSBC mul add CZ add def + /XFaceSCD M11 xFaceSCD mul M12 yFaceSCD mul add M13 zFaceSCD mul add CX add def + /YFaceSCD M21 xFaceSCD mul M22 yFaceSCD mul add M23 zFaceSCD mul add CY add def + /ZFaceSCD M31 xFaceSCD mul M32 yFaceSCD mul add M33 zFaceSCD mul add CZ add def + /XFaceSDA M11 xFaceSDA mul M12 yFaceSDA mul add M13 zFaceSDA mul add CX add def + /YFaceSDA M21 xFaceSDA mul M22 yFaceSDA mul add M23 zFaceSDA mul add CY add def + /ZFaceSDA M31 xFaceSDA mul M32 yFaceSDA mul add M33 zFaceSDA mul add CZ add def +% Normales aux faces + /NxSAB XFaceSAB CX sub def + /NySAB YFaceSAB CY sub def + /NzSAB ZFaceSAB CZ sub def + /NxSBC XFaceSBC CX sub def + /NySBC YFaceSBC CY sub def + /NzSBC ZFaceSBC CZ sub def + /NxSCD XFaceSCD CX sub def + /NySCD YFaceSCD CY sub def + /NzSCD ZFaceSCD CZ sub def + /NxSDA XFaceSDA CX sub def + /NySDA YFaceSDA CY sub def + /NzSDA ZFaceSDA CZ sub def + /NxABCD CX XS sub def + /NyABCD CY YS sub def + /NzABCD CZ ZS sub def +% Conditions de visibilit +% rayon vers point de vue + /RXvueSAB XFaceSAB XpointVue sub def + /RYvueSAB YFaceSAB YpointVue sub def + /RZvueSAB ZFaceSAB ZpointVue sub def + /RXvueSBC XFaceSBC XpointVue sub def + /RYvueSBC YFaceSBC YpointVue sub def + /RZvueSBC ZFaceSBC ZpointVue sub def + /RXvueSCD XFaceSCD XpointVue sub def + /RYvueSCD YFaceSCD YpointVue sub def + /RZvueSCD ZFaceSCD ZpointVue sub def + /RXvueSDA XFaceSDA XpointVue sub def + /RYvueSDA YFaceSDA YpointVue sub def + /RZvueSDA ZFaceSDA ZpointVue sub def + /RXvueABCD CX XpointVue sub def + /RYvueABCD CY YpointVue sub def + /RZvueABCD CZ ZpointVue sub def + /PSAB RXvueSAB NxSAB mul RYvueSAB NySAB mul add RZvueSAB NzSAB mul add def + /PSBC RXvueSBC NxSBC mul RYvueSBC NySBC mul add RZvueSBC NzSBC mul add def + /PSCD RXvueSCD NxSCD mul RYvueSCD NySCD mul add RZvueSCD NzSCD mul add def + /PSDA RXvueSDA NxSDA mul RYvueSDA NySDA mul add RZvueSDA NzSDA mul add def + /PSABCD RXvueABCD NxABCD mul RYvueABCD NyABCD mul add RZvueABCD NzABCD mul add def + } + def +% +/MaillageSphere { +0 increment 360 increment sub {% + /theta exch def +departPhi increment 90 increment sub {% + /phi exch def +% newpath + /Xpoint Rsphere theta cos mul phi cos mul def + /Ypoint Rsphere theta sin mul phi cos mul def + /Zpoint Rsphere phi sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + moveto +% Centre de la facette + /Xpoint Rsphere theta increment 2 div add cos mul phi increment 2 div add cos mul def + /Ypoint Rsphere theta increment 2 div add sin mul phi increment 2 div add cos mul def + /Zpoint Rsphere phi increment 2 div add sin mul def +CalculsPointsAfterTransformations + /xCentreFacette Xabscisse def + /yCentreFacette Yordonnee def + /zCentreFacette Zcote def +% normale la facette + /nXfacette xCentreFacette CX sub def + /nYfacette yCentreFacette CY sub def + /nZfacette zCentreFacette CZ sub def +% rayon vers point de vue + /RXvue xCentreFacette XpointVue sub def + /RYvue yCentreFacette YpointVue sub def + /RZvue zCentreFacette ZpointVue sub def +% test de visibilit + /PSfacette RXvue nXfacette mul + RYvue nYfacette mul add + RZvue nZfacette mul add + def +condition { +theta 1 theta increment add {% + /theta1 exch def + /Xpoint Rsphere theta1 cos mul phi cos mul def + /Ypoint Rsphere theta1 sin mul phi cos mul def + /Zpoint Rsphere phi sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +phi 1 phi increment add { + /phi1 exch def + /Xpoint Rsphere theta increment add cos mul phi1 cos mul def + /Ypoint Rsphere theta increment add sin mul phi1 cos mul def + /Zpoint Rsphere phi1 sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +theta increment add -1 theta {% + /theta1 exch def + /Xpoint Rsphere theta1 cos mul phi increment add cos mul def + /Ypoint Rsphere theta1 sin mul phi increment add cos mul def + /Zpoint Rsphere phi increment add sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +phi increment add -1 phi { + /phi1 exch def + /Xpoint Rsphere theta cos mul phi1 cos mul def + /Ypoint Rsphere theta sin mul phi1 cos mul def + /Zpoint Rsphere phi1 sin mul def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +} if +} for +} for +} def +% +/CylinderThreeD{ +reduction reduction scale +1 setlinejoin +0 incrementANGLE 360 {% + /theta exch def + 0 incrementHAUTEUR Hcylindre incrementHAUTEUR sub {% + /H exch def +% newpath + /X1 Rcylindre theta cos mul def + /Y1 Rcylindre theta sin mul def + /Z1 H def + /Xpoint X1 def + /Ypoint Y1 def + /Zpoint Z1 def +CalculsPointsAfterTransformations + /Xfacette Xabscisse def + /Yfacette Yordonnee def + /Zfacette Zcote def + CalcCoordinates + moveto +% coordonnes du centre de la facette + /Xpoint Rcylindre theta incrementANGLE 2 div add cos mul def + /Ypoint Rcylindre theta incrementANGLE 2 div add sin mul def + /Zpoint H incrementHAUTEUR 2 div add def +CalculsPointsAfterTransformations +% Point sur l'axe du cylindre +% la mme hauteur que M1 + /Zpoint Z1 def + /Xpoint 0 def + /Ypoint 0 def +CalculsPointsAfterTransformations +% normale la facette + /nXfacette Xfacette Xabscisse sub def + /nYfacette Yfacette Yordonnee sub def + /nZfacette Zfacette Zcote sub def +% rayon vers point de vue + /RXvue Xfacette XpointVue sub def + /RYvue Yfacette YpointVue sub def + /RZvue Zfacette ZpointVue sub def +% test de visibilit + /PSfacette nXfacette RXvue mul + nYfacette RYvue mul add + nZfacette RZvue mul add + def +PSfacette 0 le { +theta 1 theta incrementANGLE add {% + /theta1 exch def + /Xpoint Rcylindre theta1 cos mul def + /Ypoint Rcylindre theta1 sin mul def + /Zpoint H def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +H 1 H incrementHAUTEUR add { + /H1 exch def + /Xpoint Rcylindre theta incrementANGLE add cos mul def + /Ypoint Rcylindre theta incrementANGLE add sin mul def + /Zpoint H1 def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +theta incrementANGLE add -1 theta {% + /theta1 exch def + /Xpoint Rcylindre theta1 cos mul def + /Ypoint Rcylindre theta1 sin mul def + /Zpoint H incrementHAUTEUR add def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +H incrementHAUTEUR add -1 H { + /H1 exch def + /Xpoint Rcylindre theta cos mul def + /Ypoint Rcylindre theta sin mul def + /Zpoint H1 def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +} if +} for +} for +% Face suprieure +% centre de la face suprieure + /Xpoint 0 def + /Zpoint Hcylindre def + /Ypoint 0 def +CalculsPointsAfterTransformations + /CxFaceSup Xabscisse def + /CyFaceSup Yordonnee def + /CzFaceSup Zcote def +% centre de la face infrieure + /CxFaceInf CX def + /CyFaceInf CY def + /CzFaceInf CZ def +% Normale la face suprieure + /nXFaceSup CxFaceSup CxFaceInf sub def + /nYFaceSup CyFaceSup CyFaceInf sub def + /nZFaceSup CzFaceSup CzFaceInf sub def +% rayon vers point de vue verd la face infrieure + /RXvueInf CxFaceInf XpointVue sub def + /RYvueInf CyFaceInf YpointVue sub def + /RZvueInf CzFaceInf ZpointVue sub def +% rayon vers point de vue verd la face suprieure + /RXvueSup CxFaceSup XpointVue sub def + /RYvueSup CyFaceSup YpointVue sub def + /RZvueSup CzFaceSup ZpointVue sub def +% Visibilit face suprieure + /PSfaceSup RXvueSup nXFaceSup mul + RYvueSup nYFaceSup mul add + RZvueSup nZFaceSup mul add def +% Visibilit face infrieure + /PSfaceInf RXvueInf nXFaceSup neg mul + RYvueInf nYFaceSup mul sub + RZvueInf nZFaceSup mul sub def +PSfaceSup 0 le { +/TableauxPoints [ +0 1 359 {% on dcrit le cercle + /theta exch def [ + /Xpoint Rcylindre theta cos mul def + /Ypoint Rcylindre theta sin mul def + /Zpoint Hcylindre def +CalculsPointsAfterTransformations + CalcCoordinates ] + } for + ] def +gsave +newpath + TableauxPoints 0 get aload pop moveto +0 1 359 { + /compteur exch def + TableauxPoints compteur get aload pop + lineto } for +0.7 setgray +closepath +fill +grestore + } if +% face infrieure +PSfaceInf 0 le { +/TableauxPoints [ +0 1 359 {% on dcrit le cercle + /theta exch def [ + /Xpoint Rcylindre theta cos mul def + /Ypoint Rcylindre theta sin mul def + /Zpoint 0 def +CalculsPointsAfterTransformations + CalcCoordinates ] + } for + ] def +gsave +newpath + TableauxPoints 0 get aload pop moveto + 0 1 359 { + /compteur exch def + TableauxPoints compteur get aload pop + lineto } for +0.7 setgray +closepath +fill +grestore + } if + } def +% + % +/ConeThreeD{ + /AngleCone Rcone Hcone atan def + /TanAngleCone AngleCone dup sin exch cos div def + /incrementANGLE 10 def + /incrementHAUTEUR Hcone fracHeight mul 5 div def +1 setlinejoin +newpath +0 incrementANGLE 360 {% + /theta exch def + 0 incrementHAUTEUR Hcone fracHeight mul incrementHAUTEUR sub {% + /H exch def + % normale la facette + /nXfacette Hcone AngleCone dup sin exch cos mul theta incrementANGLE 2 div add cos mul + mul def + /nYfacette Hcone AngleCone dup sin exch cos mul theta incrementANGLE 2 div add sin mul + mul def + /nZfacette Hcone AngleCone sin dup mul mul def + /Xpoint nXfacette def + /Ypoint nYfacette def + /Zpoint nZfacette def +CalculsPointsAfterTransformations + /nXfacette Xabscisse CX sub def + /nYfacette Yordonnee CY sub def + /nZfacette Zcote CZ sub def +% + /OK Hcone H sub TanAngleCone mul def + /Xpoint OK theta cos mul def + /Ypoint OK theta sin mul def + /Zpoint H def +CalculsPointsAfterTransformations + /Xfacette Xabscisse def + /Yfacette Yordonnee def + /Zfacette Zcote def + CalcCoordinates + moveto +% coordonnes du centre de la facette + /OK Hcone H incrementHAUTEUR 2 div add sub TanAngleCone mul def + /Xpoint OK theta incrementANGLE 2 div add cos mul def + /Ypoint OK theta incrementANGLE 2 div add sin mul def + /Zpoint H incrementHAUTEUR 2 div add def +CalculsPointsAfterTransformations + /XcentreFacette Xabscisse def + /YcentreFacette Yordonnee def + /ZcentreFacette Zcote def +% rayon vers point de vue + /RXvue XcentreFacette XpointVue sub def + /RYvue YcentreFacette YpointVue sub def + /RZvue ZcentreFacette ZpointVue sub def +% test de visibilit + /PSfacette nXfacette RXvue mul + nYfacette RYvue mul add + nZfacette RZvue mul add + def +PSfacette 0 le { +theta 1 theta incrementANGLE add {% + /theta1 exch def + /OK Hcone H sub TanAngleCone mul def + /Xpoint OK theta1 cos mul def + /Ypoint OK theta1 sin mul def + /Zpoint H def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +H 1 H incrementHAUTEUR add { + /H1 exch def + /OK Hcone H1 sub TanAngleCone mul def + /Xpoint OK theta incrementANGLE add cos mul def + /Ypoint OK theta incrementANGLE add sin mul def + /Zpoint H1 def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +theta incrementANGLE add -1 theta {% + /theta1 exch def + /OK Hcone H incrementHAUTEUR add sub TanAngleCone mul def + /Xpoint OK theta1 cos mul def + /Ypoint OK theta1 sin mul def + /Zpoint H incrementHAUTEUR add def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +H incrementHAUTEUR add -1 H { + /H1 exch def + /OK Hcone H1 sub TanAngleCone mul def + /Xpoint OK theta cos mul def + /Ypoint OK theta sin mul def + /Zpoint H1 def +CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +} if +} for +} for +% centre de la base infrieure aprs transformations + /CxFaceInf CX def + /CyFaceInf CY def + /CzFaceInf CZ def +% modification du 16/11/2002 +% /Xpoint CxFaceInf def +% /Ypoint CyFaceInf def +% /Zpoint CzFaceInf def + /Xpoint 0 def + /Ypoint 0 def + /Zpoint 0 def +% fin modification du 16/11/2002 +CalculsPointsAfterTransformations + /CxBaseInf Xabscisse def + /CyBaseInf Yordonnee def + /CzBaseInf Zcote def +% centre de la base suprieure avant transformations + /CxFaceSup 0 def + /CyFaceSup 0 def + /CzFaceSup Hcone fracHeight mul def +% Sommet du cone + /Xpoint 0 def + /Ypoint 0 def + /Zpoint Hcone def +CalculsPointsAfterTransformations + /XsommetCone Xabscisse def + /YsommetCone Yordonnee def + /ZsommetCone Zcote def +% Normale extrieure la base infrieure + /nXBaseInf CxFaceInf XsommetCone sub def + /nYBaseInf CyFaceInf YsommetCone sub def + /nZBaseInf CzFaceInf ZsommetCone sub def +% centre de la base suprieure + /Xpoint CxFaceSup def + /Ypoint CyFaceSup def + /Zpoint CzFaceSup def +CalculsPointsAfterTransformations + /CxBaseSup Xabscisse def + /CyBaseSup Yordonnee def + /CzBaseSup Zcote def +% Normale extrieure la base suprieure + /nXBaseSup XsommetCone CxFaceSup sub def + /nYBaseSup YsommetCone CyFaceSup sub def + /nZBaseSup ZsommetCone CzFaceSup sub def +% rayon vers point de vue + /RXvueSup CxBaseSup XpointVue sub def + /RYvueSup CyBaseSup YpointVue sub def + /RZvueSup CzBaseSup ZpointVue sub def + /RXvueInf CxBaseInf XpointVue sub def + /RYvueInf CyBaseInf YpointVue sub def + /RZvueInf CzBaseInf ZpointVue sub def +% Visibilit de la base infrieure + /PSbaseInfCone nXBaseInf RXvueInf mul + nYBaseInf RYvueInf mul add + nZBaseInf RZvueInf mul add def +% Visibilit de la base suprieure + /PSbaseSupCone nXBaseSup RXvueSup mul + nYBaseSup RYvueSup mul add + nZBaseSup RZvueSup mul add def +PSbaseInfCone 0 le { +/TableauxPoints [ +0 1 359 {% on dcrit le cercle + /theta exch def [ + /Xpoint Rcone theta cos mul def + /Ypoint Rcone theta sin mul def + /Zpoint 0 def +CalculsPointsAfterTransformations + CalcCoordinates ] + } for + ] def +gsave +newpath + TableauxPoints 0 get aload pop moveto +0 1 359 { + /compteur exch def + TableauxPoints compteur get aload pop + lineto } for +0.7 setgray +closepath +fill +grestore + } if +%% PSbaseSupCone 0 le { +%% modifi le 31/10/2003 +%PSbaseSupCone 0 ge { +PSbaseSupCone 0 le { +/TableauxPoints [ +0 1 359 {% on dcrit le cercle + /theta exch def [ + /OK Hcone 1 fracHeight sub mul TanAngleCone mul def + /Xpoint OK theta cos mul def + /Ypoint OK theta sin mul def + /Zpoint Hcone fracHeight mul def +CalculsPointsAfterTransformations + CalcCoordinates ] + } for + ] def +gsave +newpath + TableauxPoints 0 get aload pop moveto +0 1 359 { + /compteur exch def + TableauxPoints compteur get aload pop + lineto } for +0.7 setgray +closepath +fill +grestore + } if + } def +/PortionSphere{% + /Xpoint Rsphere psTHETA dTHETA neg add cos mul psPHI dPHI sub cos mul def + /Ypoint Rsphere psTHETA dTHETA neg add sin mul psPHI dPHI sub cos mul def + /Zpoint Rsphere psPHI dPHI sub sin mul def +CalculsPointsAfterTransformations + /xCentreFacette Xabscisse def + /yCentreFacette Yordonnee def + /zCentreFacette Zcote def +% normale la facette + /nXfacette xCentreFacette CX sub def + /nYfacette yCentreFacette CY sub def + /nZfacette zCentreFacette CZ sub def +% rayon vers point de vue + /RXvue xCentreFacette XpointVue sub def + /RYvue yCentreFacette YpointVue sub def + /RZvue zCentreFacette ZpointVue sub def +% test de visibilit + /PSfacette RXvue nXfacette mul + RYvue nYfacette mul add + RZvue nZfacette mul add + def +PSfacette 0 le { +CalcCoordinates +newpath + moveto +psTHETA dTHETA sub 1 psTHETA dTHETA add { + /Theta exch def + /Xpoint Rsphere Theta cos psPHI dPHI sub cos mul mul def + /Ypoint Rsphere Theta sin psPHI dPHI sub cos mul mul def + /Zpoint Rsphere psPHI dPHI sub sin mul def + CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +psPHI dPHI sub 1 psPHI dPHI add { + /Phi exch def + /Xpoint Rsphere psTHETA dTHETA add cos Phi cos mul mul def + /Ypoint Rsphere psTHETA dTHETA add sin Phi cos mul mul def + /Zpoint Rsphere Phi sin mul def + CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +psTHETA dTHETA add -1 psTHETA dTHETA sub { + /Theta exch def + /Xpoint Rsphere Theta cos psPHI dPHI add cos mul mul def + /Ypoint Rsphere Theta sin psPHI dPHI add cos mul mul def + /Zpoint Rsphere psPHI dPHI add sin mul def + CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +psPHI dPHI add -1 psPHI dPHI sub { + /Phi exch def + /Xpoint Rsphere psTHETA dTHETA sub cos Phi cos mul mul def + /Ypoint Rsphere psTHETA dTHETA sub sin Phi cos mul mul def + /Zpoint Rsphere Phi sin mul def + CalculsPointsAfterTransformations + CalcCoordinates + lineto + } for +closepath +} if +} def +end + +%%EndProcSet +%%BeginProcSet: pst-3dplot.pro 0 0 +%% +%% This is file `pst-3dplot.pro', +%% +%% IMPORTANT NOTICE: +%% +%% Package `pst-3dplot.tex' +%% +%% Herbert Voss +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +%% +%% DESCRIPTION: +%% `pst-3dplot' is a PSTricks package to draw 3d curves and graphical objects +%% +%% +%% version 0.11 / 2004-04-28 Herbert Voss +% +/tx@3DPlotDict 10 dict def +tx@3DPlotDict begin +% +/saveCoor { + /z exch def + /y exch def + /x exch def + /z z dzUnit mul def + /y y dyUnit mul def + /x x dxUnit mul def +} def +% +/ConvertTo2D { + /x2D x neg Alpha cos mul y Alpha sin mul add def + /y2D x Alpha sin mul y Alpha cos mul add neg Beta sin mul z Beta cos mul add def +} def +% +/ConvertToCartesian { + /latitude exch def + /longitude exch def + /Radius exch def + /z Radius latitude sin mul def + /x Radius longitude cos mul latitude cos mul def + /y Radius longitude sin mul latitude cos mul def +} def +% +/SphericalTo2D { + x y z ConvertToCartesian ConvertTo2D +} def +% +/convertStackTo2D { + counttomark + /n exch def /n3 n 3 div cvi def + n3 { + n -3 roll + SphericalCoor { ConvertToCartesian } { saveCoor } ifelse + ConvertTo2D + x2D xUnit y2D yUnit + /n n 1 sub def + } repeat +} def +end + +%%EndProcSet +%%BeginProcSet: pst-grad.pro 0 0 +%! +% PostScript prologue for pst-grad.tex. +% Version 1.04, 2004/06/23 (adding %GradientCircle style - D.G.) +% prepared by Herbert Voss +% For copying restrictions, see pstricks.tex. +% +% For the PSTricks gradient fillstyle.% +% Based on some EPS files by leeweyr!bill@nuchat.sccsi.com (W. R. Lee).% +% Syntax:% D.G. modification begin - Apr. 9, %1998 +%%%%%% R0 G0 B0 R1 G1 B1 NumLines MidPoint Angle GradientFill +% ifGradientCircle GradientScale %GradientPosX GradientPosY +% R0 G0 B0 R1 G1 B1 NumLines MidPoint %Angle GradientFill +% D.G. modification end +% +/tx@GradientDict 40 dict def +tx@GradientDict begin +/GradientFill { + rotate + /MidPoint ED + /NumLines ED + /LastBlue ED + /LastGreen ED + /LastRed ED + /FirstBlue ED + /FirstGreen ED +/FirstRed ED +% D.G. modification begin - Apr. 9, 1998 +/GradientPosY ED +/GradientPosX ED + /GradientScale ED + /ifGradientCircle ED +% D.G. modification end + % This avoids gaps due to rounding errors: + clip + pathbbox %leave llx,lly,urx,ury on stack +% D.G. modification begin - Apr. 10, 1998 + 4 copy /ury ED /urx ED /lly ED /llx ED +% D.G. modification end + /y ED /x ED +% D.G. modification begin - Apr. 10, 1998 +ifGradientCircle + {0 GradientPosX eq + {0 GradientPosX eq {2 copy translate} if} if} + {2 copy translate} ifelse +% D.G. modification end + y sub neg /y ED + x sub neg /x ED % This avoids gaps due to rounding errors: + LastRed FirstRed add 2 div + LastGreen FirstGreen add 2 div + LastBlue FirstBlue add 2 div + setrgbcolor +% D.G. modification begin - Jul. 23, 1997 / Apr. 9, 1998 + ifGradientCircle + {/YSizePerLine y NumLines div def + /CurrentY y 2 div def + /MidLine NumLines 2 div 1 MidPoint sub mul abs cvi def} + {fill + /YSizePerLine y NumLines div def + /CurrentY 0 def + /MidLine NumLines 1 MidPoint sub mul abs cvi def} ifelse +% DG modification end + MidLine NumLines 2 sub gt + { /MidLine NumLines def } + { MidLine 2 lt { /MidLine 0 def } if } + ifelse + MidLine 0 gt + { + /Red FirstRed def + /Green FirstGreen def + /Blue FirstBlue def + /RedIncrement LastRed FirstRed sub MidLine 1 sub div def + /GreenIncrement LastGreen FirstGreen sub MidLine 1 sub div def + /BlueIncrement LastBlue FirstBlue sub MidLine 1 sub div def + MidLine { GradientLoop } repeat + } if + MidLine NumLines lt + { + /Red LastRed def + /Green LastGreen def + /Blue LastBlue def + /RedIncrement FirstRed LastRed sub NumLines MidLine sub 1 sub div def + /GreenIncrement FirstGreen LastGreen sub NumLines MidLine sub 1 sub div def + /BlueIncrement FirstBlue LastBlue sub NumLines MidLine sub 1 sub div def + NumLines MidLine sub { GradientLoop } repeat } + if + } def/GradientLoop { +% D.G. modification begin - Jul. 23, 1997 / Apr. 9, 1998 + ifGradientCircle + {CurrentY 0 gt { +% The default center used is the center of the bounding box of the object + 0 GradientPosX eq {0 GradientPosX eq + {/GradientPosX urx llx sub 2 div def + /GradientPosY ury lly sub 2 div def} if} if + GradientPosX GradientPosY CurrentY GradientScale mul 0 360 arc + Red Green Blue setrgbcolor fill + /CurrentY CurrentY YSizePerLine sub def + /Blue Blue BlueIncrement add def + /Green Green GreenIncrement add def + /Red Red RedIncrement add def} if} {0 CurrentY moveto x 0 rlineto + 0 YSizePerLine rlineto x neg 0 rlineto closepath + Red Green Blue setrgbcolor fill /CurrentY CurrentY YSizePerLine add def + /Blue Blue BlueIncrement add def /Green Green GreenIncrement add def + /Red Red RedIncrement add def} ifelse% D.G. modification end + }def + end +% END pst-grad.pro + +%%EndProcSet +%%BeginProcSet: texps.pro 0 0 +%! +TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 +index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll +exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics +exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub +dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} +ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict +end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{ +dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 +roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def +dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def} +if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def} +def end + +%%EndProcSet +%%BeginProcSet: special.pro 0 0 +%! +TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N +/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N +/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N +/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ +/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho +X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B +/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ +/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known +{userdict/md get type/dicttype eq{userdict begin md length 10 add md +maxlength ge{/md md dup length 20 add dict copy def}if end md begin +/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S +atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ +itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll +transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll +curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf +pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} +if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 +-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 +get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip +yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub +neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ +noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop +90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get +neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr +1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr +2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 +-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S +TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ +Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale +}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState +save N userdict maxlength dict begin/magscale true def normalscale +currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts +/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x +psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx +psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub +TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{ +psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 +roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath +moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict +begin/SpecialSave save N gsave normalscale currentpoint TR +@SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{ +CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto +closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx +sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR +}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse +CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury +lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N +/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end} +repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N +/@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX +currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY +moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X +/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 +1 startangle endangle arc savematrix setmatrix}N end + +%%EndProcSet +%%BeginProcSet: color.pro 0 0 +%! +TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop +setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll +}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def +/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{ +setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{ +/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch +known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC +/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC +/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0 +setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0 +setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61 +0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC +/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0 +setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87 +0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{ +0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{ +0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC +/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0 +setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0 +setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90 +0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC +/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0 +setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0 +0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{ +0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{ +0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC +/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0 +setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC +/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0 +0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1 +0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11 +0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0 +setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0 +0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC +/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0 +setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0 +0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0 +1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC +/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0 +setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{ +0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor} +DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70 +setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0 +setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1 +setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end + +%%EndProcSet +%%BeginFont: CMR7 +%!PS-AdobeFont-1.1: CMR7 1.0 +%%CreationDate: 1991 Aug 20 16:39:21 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR7) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR7 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 49 /one put +dup 50 /two put +dup 51 /three put +readonly def +/FontBBox{-27 -250 1122 750}readonly def +/UniqueID 5000790 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6CC3F1E9AE32F234EB60FE7D +E34995B1ACFF52428EA20C8ED4FD73E3935CEBD40E0EAD70C0887A451E1B1AC8 +47AEDE4191CCDB8B61345FD070FD30C4F375D8418DDD454729A251B3F61DAE7C +8882384282FDD6102AE8EEFEDE6447576AFA181F27A48216A9CAD730561469E4 +78B286F22328F2AE84EF183DE4119C402771A249AAC1FA5435690A28D1B47486 +1060C8000D3FE1BF45133CF847A24B4F8464A63CEA01EC84AA22FD005E74847E +01426B6890951A7DD1F50A5F3285E1F958F11FC7F00EE26FEE7C63998EA1328B +C9841C57C80946D2C2FC81346249A664ECFB08A2CE075036CEA7359FCA1E90C0 +F686C3BB27EEFA45D548F7BD074CE60E626A4F83C69FE93A5324133A78362F30 +8E8DCC80DD0C49E137CDC9AC08BAE39282E26A7A4D8C159B95F227BDA2A281AF +A9DAEBF31F504380B20812A211CF9FEB112EC29A3FB3BD3E81809FC6293487A7 +455EB3B879D2B4BD46942BB1243896264722CB59146C3F65BD59B96A74B12BB2 +9A1354AF174932210C6E19FE584B1B14C00E746089CBB17E68845D7B3EA05105 +EEE461E3697FCF835CBE6D46C75523478E766832751CF6D96EC338BDAD57D53B +52F5340FAC9FE0456AD13101824234B262AC0CABA43B62EBDA39795BAE6CFE97 +563A50AAE1F195888739F2676086A9811E5C9A4A7E0BF34F3E25568930ADF80F +0BDDAC3B634AD4BA6A59720EA4749236CF0F79ABA4716C340F98517F6F06D9AB +7ED8F46FC1868B5F3D3678DF71AA772CF1F7DD222C6BF19D8EF0CFB7A76FC6D1 +0AD323C176134907AB375F20CFCD667AB094E2C7CB2179C4283329C9E435E7A4 +1E042AD0BAA059B3F862236180B34D3FCED833472577BACD472A4B067A46F8EE +2AFACDE591ADF7304939394F221B5B9B316BC47DC7772711A35B466E1790D4F5 +C02C57DE57A0498128C6041CB7E702F4D8500433633B8358C438237BBA39C647 +F659FACF75574B1AAD3FE61FB97D6C5D0B19E4AC762321891092E73D192C4816 +2F14A6FFAA1B22AABB65E8F611F1E9AF66DF68DA1B2B64B4CA8870261F8663FA +28953254FA64F0AD6EFBFAB15830AF856A65835C803B70963595060F91F4079B +F8BF5396F04C070254AC5DCACB20C0B1FADD38825886322366927C97E3C5AA1B +EA858D5974EBC14D17D4ADDCB3C7EA74A8A2B75293747CFCE0B484713D631F95 +43BD5A359229F1276D2F652078ADA5000D1E060CE5CDF2E57401E487F3C10975 +09AACD27CEE8581EBADC25D0FC9CEA533B99DCEDC0F28E782F4FE22AE097CCF3 +F73338DA748C535291B4E8AF84546FE4B910107B6FFC5439C5B966DE6C905D86 +460A69D6031EC3F7261FCB6D932F722BC1F550574EBD6F676AC9770969657422 +4C8212F9FC9A49C9F0E813A2ACD16D1131A73D3001E698C63F76FE6D6143D310 +155256BE90530489736CF35CA2D7E4A1FAEAE2423ABB52E55DD7314097DF7C09 +F39C3E3A29F9BAA3AEBA89CC3E7B134E79A2DA39D449D98FE4ADE1A0ACDA79C4 +1E2C78CDCC5BDD192DAA27F17DC4368EBC54CC009802018E50519F69025DE7E8 +FB61694AEA672E59D00F6BA0CA9509FB8DC6544CB92B70BA0AE393A43959C90E +8857B0DA53A8D26426CAE0DCF2F3033BAC62502E08447B09CC18B2525AB65EC2 +C63074FF725168D115137ECDAB1EEB083711F647F757C9806056811466D59087 +B93D6B71594046B3B60A7D5789D6B99FC14764428A251F0A54ED +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR10 +%!PS-AdobeFont-1.1: CMR10 1.00B +%%CreationDate: 1992 Feb 19 19:54:52 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 34 /quotedblright put +dup 40 /parenleft put +dup 41 /parenright put +dup 80 /P put +dup 86 /V put +dup 101 /e put +dup 102 /f put +dup 105 /i put +dup 107 /k put +dup 108 /l put +dup 111 /o put +dup 114 /r put +dup 116 /t put +readonly def +/FontBBox{-251 -250 1009 969}readonly def +/UniqueID 5000793 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 +87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F +D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 +92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C +295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 +409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C +4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF +2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E +0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E +B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 +24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B +43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF +D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 +5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC +96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 +7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BE18EFA2C389E5E30 +A01122D4441EBDC07E8FF810DAC4B013B1B89F5E18548EFFA31C3777BB187362 +FBBE6623184ECD991A057D130019D498D2ED4D2564124D648B1E0956E861DE83 +22DE4B89AD33CEC6DD6BC2744D542521314697AC87F8582E18ACD9233CB483DE +3038D43DEE9C4101EC3001E16A8AB4DBF57849C544A743267A6C9B510BA2D4BA +A94F5957E3FA951B817B69BEDF51BE484A6FA1B22079BB32D468F393A6187502 +C4D904A26BA22D3EA5867045C5621797FB5B6216077AF948D21F19461C01EB6D +54A084D3DCC5ABC5DF3CADC870236751D9EF221AC1E7BD29FDC20E11094E2852 +779FC5C0D5DB9D3C8E4443F64E4037AC19B46A1050451ECEB053DC8EB7B1FC8E +4B8175703FEC53549A80FA0B8B14AD07A99A7BEF99111BABBBEDB83B50CB2D6E +44036DA3DE4A6BB700EFA22290B3DC8113DB1B383EC98F8367ECA284490AEE8D +2E2DBB374BA8B0C30D5E782C9B7DB4551E2BFB4BE67A1833D36D09829FA03EE7 +D559D5AA9876BCCBAA3972BCABAB06157DBFB18A3A746FA3102EAD32D37460CE +2099273F1622C089AB3CB216A5C27D66D2C8170187CDF780CAF45A8E0C2D394A +26B50F8BE2ED926D812092E92DA4D04D0895B07B66D5344986A0FC7A8B2F7B9B +62EE1105F37A99A308E7DA80A3018D0ABC05D3F178B531BA4517B18300254453 +0CED9C755ED7FB6640DEBDACC45D477D8788EFC79A0297F6D5CBB83FAEE7B897 +F107662E8467FAC8D9E2AA0F906F3B47E80DCC1112B17D53D40A2B6069113FFA +623E46BE165E6F804BE8F048CBABB1F17C135472030108CBA8AC573D7380FC35 +63D88AEDC9A339CF931828B48D80B932FDFEBB8A80ABD3372BF7B61D458BBC8C +B555C4BB928EDBF84BC2F29B7ECECE6266769BB9A4F91C3F1DC4203744C86A1F +E55F5369B12A05851331961CDC0F00558B2B5C7AA82C448D569112EF87B9D599 +147B87ED398435F96B3863A922E378FB7D2BC4D01A23B40B4706EF716D48661D +B17D104C489A9966FBDE2B55A8B0031DE455BEB83DF8971CCC3745707987E8E6 +72F486552480FFE3D56EF1EC01FC6CD8269C08EA3961649C0309CF1E532885A4 +95990A9A0AE68E33B5A3213250E4B49D16F7F31113D7BF4D50388ADD1F348334 +4E39D042337837719451BAD268F7ABD25738E9325B93FEEDA00988C418D7CC3C +A6DDD29BC49FCC70369788A0A8250A7F2C8EAA800676CA52494432E4850CAA4C +62EF4C71460AB254330B114AFEFC99B16DF06DCE7073905D33DD417DCAE19030 +8701316D6FC19B49C3D62B051BAEE127D446C46E96C097D8932AD2D1DFC5B878 +3282FA801783E252E00053E60154B5F7E4A91A8A3BE31327A388B97DA5C742BE +5BCEF5261054329A4BC6276C559801CD1A1CF79F7A79703D3BA1CBC1F90A02D0 +1553A028DE95BB49E8053F8A4EFD61BD63F96015CE19DD72755E7334D292DA68 +516BA8AEDC0CB061A001A7EE97454562D3B415565A164D01CC99E77871FDD7B7 +AB9E0B04C3255DBCD6058665551F21BC90C0CA9DC55FCE004DCB491284B2FAFA +D02EEB197997A197951E51698F4DB020102F209894E684A894B681F4241C059A +A777ECE82C82C7E8DF34D84B5711B05771704CBC4B9113F5ACBC97546F8A9EE0 +13765C9FF5F8E20CC3AF574A06FCD0697B1A79A972DD6D0358841ECF7DE19BE9 +4158399E5A2AE172B895B2E4A04ABA4F15D620A72B8B0A06B994B1F469B51368 +8480C32AB2BF35C25ACA1492D7F0ECEAFEED1EBFE365ABDC8CF8977BCB4A15C1 +56DE9E609FF88CF503DE24EBBD86E3295805314837F72301937B47AF909C3242 +D2620462D16157523AB42971BB9CB090A80A45591A2205BB2D5B9231C0D70901 +EA1B2860008B56B987067F0DFC2C3F5497A00DE56F6EE86595FED526F00808E4 +1F587329BFFE6D0A2EEDCE22E3AB2F96E66C74FD283AF64EECB2E043BB2A2BAA +A5669E0F3FA90C017E20D4F8CE3F58F339A6C7C3D67E93EAA35B23184575E851 +FDFAAB5E32E0A3EE3D6FF9E947ECB35FF693A9028EBC347FF0219A55083D9D59 +6D1A41370E4C889BB3EF7BEF002716FD44BD7101674060FFCD52621944864E0D +AAC6CAA3E7B29C764AF611A8C534445AEA9C936561FA1B00368DBBAC3E22EB43 +FA8853641F3235446E7F862FFBF797BEBD5EF0AF3D49E7CCCFADF34D3CEA5EA0 +6FE0CF3A347E9C60FE19671730853695A4DD9E9127ED0F35845838044B3C6E47 +0C01758326A6C061B13682D85CAB44E789D6A99DE7D86F1A9B748B10785DCFBE +EEC209D806AC06D58A8335B8B23B9094A783566340D9BD921CF1006EE1F991E0 +09B188F9813D1BD570DC49895A00A001D4BCFAE55BDED50F6C6BF444B7926762 +D2579438C652ADA21CE55213A4B483F0251EFFD6DE895509ED07AB3D1CD2DAA3 +5F4C837D4CB0A422AFB4F33A94C44116D6E57957DFF48C348D2BFDA687C15875 +BB5737882B6D700231CCC74848F1E0084B6F595CA052B60CD7EA3856F2304256 +493BA21A7D1BC532C943E41B00EA4F6C9E5D0EAA729DBFD0371C4C38DED87010 +2D4FCD7ADF2DCC733AB067461377944025CD35DB8516A149494C968F56636E32 +3AFFA635FDD31640309C507077F20481F9D9A9711827992CBE88E2B853DC11F4 +D78C46C584B4124FCBA7F2705BB9E8326C92AFF868122098750B1493D78A3C02 +99D5689CCEA510AB6D24B1A73D94B0E5CFE07275E51631F5C70D4E416168B3D0 +740DF0C63B5F23B9B3A4A1702184A852B6A97AD7C5D4E7B520C7780BA76E2E87 +B626123F3625F72382D62C14F27ED7A21447A38D1F18FD7F47804CA8C6144124 +6BC33C4D206CD4D94953BC1D25D2D4B8906A22D054F2FB72E6233A7D485FA904 +E34857906F54DA49A0FC39B38951D1D5F7F6F7E56526AC1132B28BFE7901EB25 +CA52B54813FB66BA2664B9B9FD764FC8AB0DF3164C3FD1CC084B483DBFE7B034 +0454599BA578AFEB2A57DADA3124037FD1BF1329D3F8ADBD39FCF2C0F02757CD +35D372176B437C1A8EBBD86FD5308CD75F335C8382E7F6B14B6F590746E83615 +E38DBDA4866AD3B755785D33EFDE52DC14495642435D35E9ADBB779495EB013A +E904856635F3EFFC31FCAC89105C1AC490E3C4DB561F1A4940D756E375B67C26 +A3453FECA2176132F3C006D4DE63C4E102DBC39838DF1D4B83D8D1E47A74536A +ACAC1B5527913E368AE45136624DC4AA81B94256D82758085643ADA0F8B91E00 +995F69025EDFD5C21E83066B2B205D20E050D10612F4B283BD596634A3C44BF9 +B4E5EB79B9818DB3CFAAFC48D0BD4A6D8B30B0D0C14608BE40F21ED5950FD9E3 +550EAE90518787CEAAB1EE5E84C349F94DF178D5A5AEB03911664135134F2B9B +E9DB2DB463CEBCFAFA2BED53379130F020B98C289834419AFF020D092E70E078 +CEF094C4677FBF09ADD7C13D3372DF24E8CEEA4AE9AF3587F86F1BE23DB37A96 +E2AFD3F95F8C555229233177565ECA65910161D058AC21970D5D66D88F5E4C4F +F94DF4373FCF3A32ED93E654D41ECE178E07092C998D5C54921CB42D538453D3 +59978464E34D6AC0B7440C7A4B1465EC83132A81D632BC44BAA116DE1760AAED +1854A067B1ACE6D977C731113D113006AD3D90ADCB5F168A1124D6DC7F13D8BE +360FAD90E8F6986D0096806AFCC7B374F857B23C34FCEE2BB5CABE5B032DC452 +9C5F81296D2119F0B9BE22E7E4D125FBD98A9EB3EE53835D26624276CD64BA83 +DCCA5CBDB8F16C4C93EF2F8A9FF2274AE0202F1B58C2B9525E140A7AD4514CFA +6704F8A9CD026AB498273127D2684F840CBA3433756CD325FC11FE9F85C95CA1 +EC17C87915975A33E56AB42D7D40DADB04A1E95367F8B868837307E48E675220 +6C0C41FB80643B76D10AAFD73C77EE230A1EB00832A5FAD912722E7AA2EB13A6 +38ADD55159C0770A072066FBB344C16EA50DD854D1225869F52AF841F83363F3 +629A9FB64CCB53CD39CE7D0600208EBF +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMSS8 +%!PS-AdobeFont-1.1: CMSS8 1.0 +%%CreationDate: 1991 Aug 20 17:34:12 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSS8) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMSS8 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 46 /period put +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 52 /four put +readonly def +/FontBBox{-65 -250 1062 761}readonly def +/UniqueID 5000801 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF4E9D2405B17498276F99362748F6E97327D +7CDA3F577075245561191667923D37830EEC37A0161B6A3EC8FDD63CDB8C8D4A +AD39C69A264813FA79C25E85AC95C71AB965F6C14A4A1ACF5BAE27A5F628B172 +47CF6A12008558438874199C237501B72BFEFE64B606A327623BD8B217E8349B +7BF5C2204F4DE2FB269845D5714A31151A66064419CCC46A63F8E54B92B5070F +F3D80801DBEC658CD3926B15BE3D4B7591FC36663D3C03926D0D3637B53BCC22 +73C8E0001B416A65FC67C53383458DC125FD14FFE391BBBA321B5AF5DEF85DBA +5A5FD759FD2AAB6AF31CDA6202EBB763E3CAC1FF91B1175EF818FD662B60C642 +738A3B4F27822A0560BB7C08AD42F976351FA5225A0E6D56C7FBE06A809CC468 +FB2E90C84FA56C62CB7BBFC80BD94F5C6BC0EED14433A4A356D2D15DC87B34B0 +99A100502F55A32D736757642F9F9719FD9E35A1430A72C254614B4000113705 +5474FCFCE47A6978F69FA467B818309E61598EC18089BB924C393B3FF1280D72 +E1969BF5AD3D1074FF13202D4CC324396BAFF2397DAB2C516C656B6B240F023D +0C28AEBB957C23012C971D444DD1C4C2BD7DCE178D46CF8EC20DCAB9A930907E +124F3B3B8D16DBF166BA40CD780DE2155BF21EC2C3E0073422E54A09DF4A9491 +63B55882122F6B40490D81533CB0E16967E32D4F5B5D5D14F578BAA0137704A3 +2386E6AA4E3D160559EB245625253380CE64C30B41B573D7249B0B6157B02EFE +0D82006B4CF4A294FDDAB5B87CAD0B2D3367F9138EE0922FBDD3D7BFE4C6B297 +762F95616A75D0FC2D2E22D79172DF1A3287C67BD27658A448FC61077B3033AA +5479ABBF5CD952B5E19E437CD642CDC43FBB26115DCC019FEB3195F267AAD478 +4BDB4D1AEFB4BB108438507C493B00002470B4711BA5B428B4A8129BE7179E4A +7521E8AF3D9160217C072A9928A84D7FE560D2C8C9FF175F5ACC4B756A4E5660 +FFD365DBFB074FEB45E9372F1B6F979E09D775319131E551A0A47FAFB5A2991B +BC0009392145EAA35927690D1D20FF5977DE7583F2BAC0D50B3AE23F60A776E9 +249C85364258E44F7E9E538D28BC1C50DF90F9FC563EB1B03CF353F760BF0CBF +C2CE4AB9BCAA0F835FB2F60FEA62A3E28C619182CFDA62420C77F502F70F2A2D +BBCB7B6C211402871C7862E06459E59E5EB1E9E1F2D8903D9ED1EDC9374BA744 +450DF79439BEA8CCB850890BD73CBEA39AD2E4852B64439407342A67B905D78D +9BE26CE238A767AD6EC10DACE58C13AE16332DD952DB84D6F96127EF94E77104 +CBFA4E6AD7E0B89BE542080241CB78D4D7EC8F01EB95724C34B5A2C69B062511 +B9254AD71D7F0F837A5D93D850FB7362252CCF91E6CB3B0576E25B475D24DB7D +A6F9CE199753BD33B8DFECE0E42BC1B15A99871203B6C630B1D213C2FE0BABBE +CF4F271EB4F939E0F4341DA58042278B252F8A1D9774C49C33CDD11143A143AC +8CD0CBD620BF3E5BE13F174DB04F885E1FE08E624DEFF55F5971BE8606FD2FA9 +BF974490F2B026B0C068146145C85F03A435776B2C63F6729E81125225432E29 +43AC6A7B26B33B0E3DA1A3F60584E66A36F05FDAB82F70F8FF1C40E300192DEB +A006CE31540785B22D7712CD35D4721884D13D24C352608D7D9A7DBC0A5D05FB +BA7880D469F267204F3570C88E9B2447EEE6A710CC5201B175192486FCBDE6C3 +167C9E4631569F84AB53A9DF0E4E19ECE690220BCE8634E5A61E195CFA9B841B +E2A1C1FF33EA42F04EE939F7043BB2683E1B1DE2E1D548528E4F1126B261D834 +A128348E1BA634341F52535656B89E82709F0B4767B2CF482B9D1198292D682E +477B35BF5BE26ADCA06268C8468F2CB7EAC12D847DBFC7A40E4C23AFF2C26EF9 +87A8EDFB77DA40BB17DE3800D98D10053CCF4EAF838795A471F6AA3EB9746C87 +8868EBF2192EB371299C1B7FCC06F8AEEAF6C5F324D997297590E7C9FDC7008B +D271005CC3A15AC10DB7643FD730F00C9B2749B3E9D82654E3FD164B8F0CF01C +EE2AEADAAC385AE78D +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMI10 +%!PS-AdobeFont-1.1: CMMI10 1.100 +%%CreationDate: 1996 Jul 23 07:53:57 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 97 /a put +dup 120 /x put +dup 121 /y put +dup 122 /z put +dup 126 /vector put +readonly def +/FontBBox{-32 -250 1048 750}readonly def +/UniqueID 5087385 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 +9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321 +990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E +6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB +DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721 +59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823 +D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF +8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808 +6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9 +1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE +03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909 +95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1 +74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2 +3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8 +47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19 +AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8 +42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8 +40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837 +B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53 +956017667271C1FD06DBA26AC7504FCD81979D968F25EAC28F245E67080D282B +AAF95C9C72D34DB0A55DD7F78C87363B0B1DEC5C2AFC43C104658A3534C4BD76 +281C117E0FCB6167E2E19DF9D7172700085666D98348A3428BFF586A1A380823 +3421458F96B6E7EEA81AD0DA8478B1BE1378460411802D9DBCCDF22C4B910DEC +B270420E3EADA3BF7F2AD72E5ECCF558598414310E5876BF0866CCABC660576D +B70DA214F598FA4CE721F8DEF96E180C43F37268DDEE07716D3676A2C9FDF2AB +B573ACD8A0CA6DF494A08FB89802107CAB0335B6A711CD84471FCA71B2EB08FC +7F1AAD334D8E65D52AC519B477009B8634152DDF92F591E6CAADE1F22636BF83 +53A42E7D2C6AB4AF4B9EBF50FEE77ADA0D9A60DEC00A5F1C7BBC3594A82C33FF +5E9AAB5A80476DA5663AF48A4859966317CA3D3EEA06BA7394AF1264D8660AFC +237CF5C127F81F4817E2CA421359080F3E51F549C33151F40FD3D6B28804DFEF +493D755DCCCDD2EE193FE1F8C7F57B8BBD23C1936DDD2A9D0DBA38AD2893B464 +FE4171482337D6E183B14B8E72FE063537B104D52FB2D3A8FA15FAA63F11C94D +003BB811916748797D367ACD336E5D34B354DC679FD0D2B9EBA3E2DDE964C275 +0AD4621A61D191BCC5E21BEC79BA90F097EF754ADCB4B3B5231B1CDF7289D229 +4C323AA97CDF7448CAC6982FD01A069F2E568E03F14C3B73D9EE77F3A66C3CF7 +D533BD02A735F162E19FF47802D4618C3B43BC2A9DEA65FE1A757B386A078199 +59010175DA5384834981489EAD124A421F3315116415D73CEB0847F87F2AA967 +DCA407F5B1A318406BD2F6709D52043CABACADE96907A445F4555F4AF87CED3B +6B7EC52886C3B65E045B21F871DE434A05EE6B8549DBA101575577FD313B50C0 +2C45EF12A620DF22187BC4B639F482D7B024987CF875516DA637601242B865D0 +B13225DA31B229224F0C0091BF0059EC2CA620C1076717ADC8438089A4E1A1A8 +A3757242BE47814C43372967D4653BF6986F34EF11F7B71A5FB2EA4ED5155077 +DF86D19240A14756C273A4BA906DD14C1CF09E954A79DBC32A397DC46728DA6A +1F0F0886C74245FC82A6371A9782668F11EBED37A8EEE06003C46F24123473C8 +66DAB7CA762F3354138342D47C9ECEE883BBD05E048DD82F9578A0BB61554138 +A6DED6631CE53327A302464B4785CA62A8DB456F3430EE1BC45929FFBEC1ED80 +84721906A08C98FDE29E23256FB39EE441E6010AD5E293412EB81635D66DB79F +1FCC4A3C3A7163B0AA0543FB38B2C41C9F30BC6A15E4BE0F9C72E4736BC142F1 +7868E17DB55D930CAB0048F57814CA2F45CBEA62CC81F68416E4F9F1AE46FFBC +062120B9B5D565BFE81888F4A291064D2B583AE9DECACDAAF87E3A8B24AAB9F7 +AF0DFAE6284581A084D6BFF612754E4C8621CA994543C708AD8D8E4DB0DEEC71 +2502DA02E4A255119CC5B7BCEE7BF70B6A9F91054264CF6D20DC8F7563F37C46 +9BFFD996BB10760C3DEFCB2D51EFD0E54CE4EFA389FA703BFC655E70A9C55491 +90854F4CA50B0F3F16FD6C4A457AF0BC39B81373850A7E291842E8ED950A96FF +D080E0703D35EEC268FDCEC2B61E8A91586BF1BE32BD247EF2438CE203DD8C0B +AC5D673265741808B221A6260A5DFFD7D479CED48F2F3A76D3CDB2F9735E1F60 +382340A6570D26C45359 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +TeXDict begin 40258437 52099154 1000 600 600 (3dgrafiken.dvi) +@start /Fa 204[33 33 33 49[{}3 58.1154 /CMR7 rf /Fb 139[32 +1[33 2[42 2[23 44 1[23 2[25 37 14[62 5[57 38[32 32 5[42 +34[{}13 83.022 /CMR10 rf /Fc 203[35 35 35 35 35 1[20 +46[{}6 66.4176 /CMSS8 rf /Fd 129[42 3[39 41 47 22[44 +97[{}5 83.022 /CMMI10 rf end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 600dpi +TeXDict begin + end +%%EndSetup +TeXDict begin 1 0 bop 0 TeXcolorgray 1 TeXcolorgray 0 +TeXcolorgray 1 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray +0 TeXcolorgray 1 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray +0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray 0 TeXcolorgray +0 TeXcolorgray 0.25 TeXcolorgray 0 TeXcolorgray 0.5 TeXcolorgray +0 TeXcolorgray 0 1890 a + tx@Dict begin gsave CM STV CP newpath moveto 3.0 neg 0 rmoveto clip +setmatrix end + 0 1890 a 0 1890 1709 1890 v 1709 +1890 a + currentpoint grestore moveto + 1709 1890 a 1 0 0 TeXcolorrgb 0 TeXcolorgray 236 +1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0 1 mul def /z 0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@xMin 10 +{InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 5 1.0 mul def /y 0 1 mul def /z 0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@xMax 10 +{InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0 1 mul def /z 0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@yMin 10 +{InitPnode } NewNode end end + 236 +1417 a 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 5 1 mul def /z 0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@yMax 10 +{InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0 1 mul def /z 0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@zMin 10 +{InitPnode } NewNode end end + 236 1417 a 236 +1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0 1 mul def /z 5 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@zMax 10 +{InitPnode } NewNode end end + 236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. Arrow + EndArrow } def [ tx@NodeDict begin tx@NodeDict /N@xMax known { /N@xMax +load GetCenter } { 0 0 } ifelse end tx@NodeDict begin tx@NodeDict /N@xMin +known { /N@xMin load GetCenter } { 0 0 } ifelse end /Lineto /lineto +load def false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap +stroke grestore end + +@endspecial +@beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. Arrow + EndArrow } def [ tx@NodeDict begin tx@NodeDict /N@yMax known { /N@yMax +load GetCenter } { 0 0 } ifelse end tx@NodeDict begin tx@NodeDict /N@yMin +known { /N@yMin load GetCenter } { 0 0 } ifelse end /Lineto /lineto +load def false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap +stroke grestore end + +@endspecial @beginspecial +@setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. Arrow + EndArrow } def [ tx@NodeDict begin tx@NodeDict /N@zMax known { /N@zMax +load GetCenter } { 0 0 } ifelse end tx@NodeDict begin tx@NodeDict /N@zMin +known { /N@zMin load GetCenter } { 0 0 } ifelse end /Lineto /lineto +load def false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap +stroke grestore end + +@endspecial 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@xMax known { /N@xMax +load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin end + 236 1417 a 236 1417 +a + tx@Dict begin { 5.0 5.71527 4.30554 0.0 180. Uput UUput } PutCoor +PutBegin end + 236 1417 a 212 1435 a Fd(x)236 1417 y + tx@Dict begin PutEnd end + 236 1417 a 236 +1417 a + tx@Dict begin PutEnd end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@yMax known { /N@yMax +load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin end + 236 1417 a 236 1417 a + tx@Dict begin { 5.0 5.2616 4.30554 1.94444 30. Uput UUput } PutCoor +PutBegin end + 236 +1417 a 214 1427 a Fd(y)236 1417 y + tx@Dict begin PutEnd end + 236 1417 a 236 1417 +a + tx@Dict begin PutEnd end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@zMax known { /N@zMax +load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin end + 236 1417 a 236 1417 a + tx@Dict begin { 5.0 5.0903 4.30554 0.0 90. Uput UUput } PutCoor PutBegin + end + 236 1417 +a 215 1435 a Fd(z)236 1417 y + tx@Dict begin PutEnd end + 236 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 +1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 1.0 0.1 0 1.0 -0.1 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 1417 +a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 1.0 1.0 mul def /y -0.4 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def 270 Delta sub rotate /Rho 90 Gamma add Delta +add def Rho cos Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { +/TMatrix { } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx +def /cp [ currentpoint ] cvx def CM CP T STV CM matrix invertmatrix +matrix concatmatrix exch exec concat cp moveto end + 236 1417 +a Fc(1.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 a +@beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 2.0 0.1 0 2.0 -0.1 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 2.0 1.0 mul def /y -0.4 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 +1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def 270 Delta sub rotate /Rho 90 Gamma add Delta +add def Rho cos Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { +/TMatrix { } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx +def /cp [ currentpoint ] cvx def CM CP T STV CM matrix invertmatrix +matrix concatmatrix exch exec concat cp moveto end + 236 1417 a Fc(2.0)326 +1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 a @beginspecial +@setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 3.0 0.1 0 3.0 -0.1 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 3.0 1.0 mul def /y -0.4 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 1417 a 236 1417 +a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def 270 Delta sub rotate /Rho 90 Gamma add Delta +add def Rho cos Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { +/TMatrix { } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx +def /cp [ currentpoint ] cvx def CM CP T STV CM matrix invertmatrix +matrix concatmatrix exch exec concat cp moveto end + 236 1417 a Fc(3.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + +326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 4.0 0.1 0 4.0 -0.1 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 4.0 1.0 mul def /y -0.4 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 +a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def 270 Delta sub rotate /Rho 90 Gamma add Delta +add def Rho cos Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { +/TMatrix { } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx +def /cp [ currentpoint ] cvx def CM CP T STV CM matrix invertmatrix +matrix concatmatrix exch exec concat cp moveto end + 236 1417 a Fc(4.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a +236 1417 a + tx@Dict begin PutEnd end + 236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0.1 1.0 0 -0.1 1.0 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial +236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x -0.2 1.0 mul def /y 1.0 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 +a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 1417 a Fc(1.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + +236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0.1 2.0 0 -0.1 2.0 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 +1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x -0.2 1.0 mul def /y 2.0 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 +1417 a Fc(2.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 +a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0.1 3.0 0 -0.1 3.0 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x -0.2 1.0 mul def /y 3.0 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 +1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 1417 a Fc(3.0)326 +1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 a @beginspecial +@setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0.1 4.0 0 -0.1 4.0 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x -0.2 1.0 mul def /y 4.0 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 1417 a 236 1417 +a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 1417 a Fc(4.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + +326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0 0.1 1.0 0 -0.1 1.0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0.2 1 mul def /z 1.0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@temp@pstNode +10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 +a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 1417 a Fc(1.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a +236 1417 a + tx@Dict begin PutEnd end + 236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0 0.1 2.0 0 -0.1 2.0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial +236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0.2 1 mul def /z 2.0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@temp@pstNode +10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 +a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 1417 a Fc(2.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + +236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0 0.1 3.0 0 -0.1 3.0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 +1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0.2 1 mul def /z 3.0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@temp@pstNode +10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 +1417 a Fc(3.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 +a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0 0.1 4.0 0 -0.1 4.0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0.2 1 mul def /z 4.0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@temp@pstNode +10 {InitPnode } NewNode end end + 236 +1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 1417 a Fc(4.0)326 +1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 a 1 0 0 TeXcolorrgb +0 TeXcolorgray 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0 1 mul def /z 0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@xMin 10 +{InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 5 1.0 mul def /y 0 1 mul def /z 0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@xMax 10 +{InitPnode } NewNode end end + 236 1417 +a 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0 1 mul def /z 0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@yMin 10 +{InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 5 1 mul def /z 0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@yMax 10 +{InitPnode } NewNode end end + 236 1417 a 236 1417 +a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0 1 mul def /z 0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@zMin 10 +{InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0 1 mul def /z 5 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@zMax 10 +{InitPnode } NewNode end end + 236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. Arrow + EndArrow } def [ tx@NodeDict begin tx@NodeDict /N@xMax known { /N@xMax +load GetCenter } { 0 0 } ifelse end tx@NodeDict begin tx@NodeDict /N@xMin +known { /N@xMin load GetCenter } { 0 0 } ifelse end /Lineto /lineto +load def false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap +stroke grestore end + + +@endspecial @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. Arrow + EndArrow } def [ tx@NodeDict begin tx@NodeDict /N@yMax known { /N@yMax +load GetCenter } { 0 0 } ifelse end tx@NodeDict begin tx@NodeDict /N@yMin +known { /N@yMin load GetCenter } { 0 0 } ifelse end /Lineto /lineto +load def false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap +stroke grestore end + +@endspecial @beginspecial +@setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 1.5 2. Arrow + EndArrow } def [ tx@NodeDict begin tx@NodeDict /N@zMax known { /N@zMax +load GetCenter } { 0 0 } ifelse end tx@NodeDict begin tx@NodeDict /N@zMin +known { /N@zMin load GetCenter } { 0 0 } ifelse end /Lineto /lineto +load def false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap +stroke grestore end + +@endspecial 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@xMax known { /N@xMax +load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin end + 236 1417 a 236 1417 +a + tx@Dict begin { 5.0 5.71527 4.30554 0.0 180. Uput UUput } PutCoor +PutBegin end + 236 1417 a 212 1435 a Fd(x)236 1417 y + tx@Dict begin PutEnd end + 236 1417 a 236 +1417 a + tx@Dict begin PutEnd end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@yMax known { /N@yMax +load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin end + 236 1417 a 236 1417 a + tx@Dict begin { 5.0 5.2616 4.30554 1.94444 30. Uput UUput } PutCoor +PutBegin end + 236 +1417 a 214 1427 a Fd(y)236 1417 y + tx@Dict begin PutEnd end + 236 1417 a 236 1417 +a + tx@Dict begin PutEnd end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@zMax known { /N@zMax +load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin end + 236 1417 a 236 1417 a + tx@Dict begin { 5.0 5.0903 4.30554 0.0 90. Uput UUput } PutCoor PutBegin + end + 236 1417 +a 215 1435 a Fd(z)236 1417 y + tx@Dict begin PutEnd end + 236 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 +1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 1.0 0.1 0 1.0 -0.1 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 1417 +a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 1.0 1.0 mul def /y -0.4 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def 270 Delta sub rotate /Rho 90 Gamma add Delta +add def Rho cos Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { +/TMatrix { } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx +def /cp [ currentpoint ] cvx def CM CP T STV CM matrix invertmatrix +matrix concatmatrix exch exec concat cp moveto end + 236 1417 +a Fc(1.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 a +@beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 2.0 0.1 0 2.0 -0.1 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 2.0 1.0 mul def /y -0.4 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 +1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def 270 Delta sub rotate /Rho 90 Gamma add Delta +add def Rho cos Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { +/TMatrix { } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx +def /cp [ currentpoint ] cvx def CM CP T STV CM matrix invertmatrix +matrix concatmatrix exch exec concat cp moveto end + 236 1417 a Fc(2.0)326 +1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 a @beginspecial +@setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 3.0 0.1 0 3.0 -0.1 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 3.0 1.0 mul def /y -0.4 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 1417 a 236 1417 +a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def 270 Delta sub rotate /Rho 90 Gamma add Delta +add def Rho cos Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { +/TMatrix { } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx +def /cp [ currentpoint ] cvx def CM CP T STV CM matrix invertmatrix +matrix concatmatrix exch exec concat cp moveto end + 236 1417 a Fc(3.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + +326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 4.0 0.1 0 4.0 -0.1 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 4.0 1.0 mul def /y -0.4 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 +a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def 270 Delta sub rotate /Rho 90 Gamma add Delta +add def Rho cos Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { +/TMatrix { } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx +def /cp [ currentpoint ] cvx def CM CP T STV CM matrix invertmatrix +matrix concatmatrix exch exec concat cp moveto end + 236 1417 a Fc(4.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a +236 1417 a + tx@Dict begin PutEnd end + 236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0.1 1.0 0 -0.1 1.0 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial +236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x -0.2 1.0 mul def /y 1.0 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 +a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 1417 a Fc(1.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + +236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0.1 2.0 0 -0.1 2.0 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 +1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x -0.2 1.0 mul def /y 2.0 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 +1417 a Fc(2.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 +a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0.1 3.0 0 -0.1 3.0 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x -0.2 1.0 mul def /y 3.0 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 +1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 1417 a Fc(3.0)326 +1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 a @beginspecial +@setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0.1 4.0 0 -0.1 4.0 0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x -0.2 1.0 mul def /y 4.0 1 mul def /z 0 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 1417 a 236 1417 +a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 1417 a Fc(4.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + +326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0 0.1 1.0 0 -0.1 1.0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0.2 1 mul def /z 1.0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@temp@pstNode +10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 +a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 1417 a Fc(1.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a +236 1417 a + tx@Dict begin PutEnd end + 236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0 0.1 2.0 0 -0.1 2.0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial +236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0.2 1 mul def /z 2.0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@temp@pstNode +10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 +a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 1417 a Fc(2.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + +236 1417 a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0 0.1 3.0 0 -0.1 3.0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 +1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0.2 1 mul def /z 3.0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@temp@pstNode +10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 +1417 a Fc(3.0)326 1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 +a @beginspecial @setspecial + tx@Dict begin STP newpath 0.5 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0 0.1 4.0 0 -0.1 4.0 tx@3DPlotDict begin +/dxUnit 1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta +30 def /SphericalCoor false def /xUnit { 28.45274 mul } def /yUnit +{ 28.45274 mul } def convertStackTo2D end /Lineto /lineto load def +false Line gsave 0.5 SLW 1 0 0 setrgbcolor 0 setlinecap stroke +grestore end + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y 0.2 1 mul def /z 4.0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@temp@pstNode +10 {InitPnode } NewNode end end + 236 +1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 1417 a Fc(4.0)326 +1417 y + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 326 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 a 0 0 1 TeXcolorrgb +0 TeXcolorgray @beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 0 0 1 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 3 0 4 0 0 4 tx@3DPlotDict begin /dxUnit 1.0 +def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta 30 def /SphericalCoor +false def /xUnit { 28.45274 mul } def /yUnit { 28.45274 mul } def +convertStackTo2D end /Lineto /lineto load def false Line gsave 0.1 +SLW 0 0 1 setrgbcolor 5.0 3.0 0.0 0.0 0 0 add DashLine grestore end + +@endspecial +0 0 1 TeXcolorrgb 0 TeXcolorgray @beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 0 0 1 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 3 3 4 3 0 4 tx@3DPlotDict begin /dxUnit 1.0 +def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta 30 def /SphericalCoor +false def /xUnit { 28.45274 mul } def /yUnit { 28.45274 mul } def +convertStackTo2D end /Lineto /lineto load def false Line gsave 0.1 +SLW 0 0 1 setrgbcolor 5.0 3.0 0.0 0.0 0 0 add DashLine grestore end + + +@endspecial 0 0 1 TeXcolorrgb 0 TeXcolorgray @beginspecial +@setspecial + tx@Dict begin STP newpath 0.1 SLW 0 0 1 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 3 0 4 3 0 0 tx@3DPlotDict begin /dxUnit 1.0 +def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta 30 def /SphericalCoor +false def /xUnit { 28.45274 mul } def /yUnit { 28.45274 mul } def +convertStackTo2D end /Lineto /lineto load def false Line gsave 0.1 +SLW 0 0 1 setrgbcolor 5.0 3.0 0.0 0.0 0 0 add DashLine grestore end + +@endspecial 0 0 1 TeXcolorrgb 0 TeXcolorgray +@beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 0 0 1 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0 3 4 0 0 4 tx@3DPlotDict begin /dxUnit 1.0 +def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta 30 def /SphericalCoor +false def /xUnit { 28.45274 mul } def /yUnit { 28.45274 mul } def +convertStackTo2D end /Lineto /lineto load def false Line gsave 0.1 +SLW 0 0 1 setrgbcolor 5.0 3.0 0.0 0.0 0 0 add DashLine grestore end + +@endspecial 0 0 1 TeXcolorrgb +0 TeXcolorgray @beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 0 0 1 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0 3 4 0 3 0 tx@3DPlotDict begin /dxUnit 1.0 +def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta 30 def /SphericalCoor +false def /xUnit { 28.45274 mul } def /yUnit { 28.45274 mul } def +convertStackTo2D end /Lineto /lineto load def false Line gsave 0.1 +SLW 0 0 1 setrgbcolor 5.0 3.0 0.0 0.0 0 0 add DashLine grestore end + +@endspecial +0 0 1 TeXcolorrgb 0 TeXcolorgray @beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 0 0 1 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 3 3 4 0 3 4 tx@3DPlotDict begin /dxUnit 1.0 +def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta 30 def /SphericalCoor +false def /xUnit { 28.45274 mul } def /yUnit { 28.45274 mul } def +convertStackTo2D end /Lineto /lineto load def false Line gsave 0.1 +SLW 0 0 1 setrgbcolor 5.0 3.0 0.0 0.0 0 0 add DashLine grestore end + + +@endspecial 0 0 1 TeXcolorrgb 0 TeXcolorgray @beginspecial +@setspecial + tx@Dict begin STP newpath 0.1 SLW 0 0 1 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 3 3 0 3 0 0 tx@3DPlotDict begin /dxUnit 1.0 +def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta 30 def /SphericalCoor +false def /xUnit { 28.45274 mul } def /yUnit { 28.45274 mul } def +convertStackTo2D end /Lineto /lineto load def false Line gsave 0.1 +SLW 0 0 1 setrgbcolor 5.0 3.0 0.0 0.0 0 0 add DashLine grestore end + +@endspecial 0 0 1 TeXcolorrgb 0 TeXcolorgray +@beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 0 0 1 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0 3 0 3 3 0 tx@3DPlotDict begin /dxUnit 1.0 +def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta 30 def /SphericalCoor +false def /xUnit { 28.45274 mul } def /yUnit { 28.45274 mul } def +convertStackTo2D end /Lineto /lineto load def false Line gsave 0.1 +SLW 0 0 1 setrgbcolor 5.0 3.0 0.0 0.0 0 0 add DashLine grestore end + +@endspecial 0 0 1 TeXcolorrgb +0 TeXcolorgray @beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 0 0 1 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 3 3 4 3 3 0 tx@3DPlotDict begin /dxUnit 1.0 +def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta 30 def /SphericalCoor +false def /xUnit { 28.45274 mul } def /yUnit { 28.45274 mul } def +convertStackTo2D end /Lineto /lineto load def false Line gsave 0.1 +SLW 0 0 1 setrgbcolor 5.0 3.0 0.0 0.0 0 0 add DashLine grestore end + +@endspecial +1 0 0 TeXcolorrgb 0 TeXcolorgray @beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 3 -0.4 0 3 0 0 tx@3DPlotDict begin /dxUnit +1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta 30 def /SphericalCoor +false def /xUnit { 28.45274 mul } def /yUnit { 28.45274 mul } def +convertStackTo2D end /Lineto /lineto load def false Line gsave 0.1 +SLW 1 0 0 setrgbcolor 5.0 3.0 0.0 0.0 0 0 add DashLine grestore end + + +@endspecial 1 0 0 TeXcolorrgb 0 TeXcolorgray @beginspecial +@setspecial + tx@Dict begin STP newpath 0.1 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ -0.4 3 0 0 3 0 tx@3DPlotDict begin /dxUnit +1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta 30 def /SphericalCoor +false def /xUnit { 28.45274 mul } def /yUnit { 28.45274 mul } def +convertStackTo2D end /Lineto /lineto load def false Line gsave 0.1 +SLW 1 0 0 setrgbcolor 5.0 3.0 0.0 0.0 0 0 add DashLine grestore end + +@endspecial 1 0 0 TeXcolorrgb 0 TeXcolorgray +@beginspecial @setspecial + tx@Dict begin STP newpath 0.1 SLW 1 0 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { } def [ 0 -0.4 4 0 0 4 tx@3DPlotDict begin /dxUnit +1.0 def /dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta 30 def /SphericalCoor +false def /xUnit { 28.45274 mul } def /yUnit { 28.45274 mul } def +convertStackTo2D end /Lineto /lineto load def false Line gsave 0.1 +SLW 1 0 0 setrgbcolor 5.0 3.0 0.0 0.0 0 0 add DashLine grestore end + +@endspecial 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 3.1 1.0 mul def /y 3.1 1 mul def /z 4.1 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 +1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def 270 Delta sub rotate /Rho 180 Delta add +def Rho cos Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix +{ } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp +[ currentpoint ] cvx def CM CP T STV CM matrix invertmatrix matrix +concatmatrix exch exec concat cp moveto end + 236 1417 a 0 1 0 +TeXcolorrgb Fb(V)-7 b(ektor)p 0 TeXcolorgray 479 1417 +a + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 479 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 a 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 3.3 1.0 mul def /y 2.6 1 mul def /z 4.1 1.0 mul def +ConvertTo2D x2D y2D end 28.45274 mul exch 28.45274 mul exch } false +/N@temp@pstNode 10 {InitPnode } NewNode end end + 236 1417 +a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def 270 Delta sub rotate /Rho 180 Delta add +def Rho cos Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix +{ } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp +[ currentpoint ] cvx def CM CP T STV CM matrix invertmatrix matrix +concatmatrix exch exec concat cp moveto end + 236 1417 a 0 1 0 TeXcolorrgb +Fb(\("Pfeil"\))22 b Fd(~)-37 b(a)p 0 TeXcolorgray 620 +1417 a + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 620 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 a 0 1 0 TeXcolorrgb +0 TeXcolorgray @beginspecial @setspecial + tx@Dict begin STP newpath 0.8 SLW 0 1 0 setrgbcolor /ArrowA { moveto +} def /ArrowB { BeginArrow 1. 1. scale false 0.4 1.4 5.69046 0. Arrow + EndArrow } def [ 3 3 4 0 0 0 tx@3DPlotDict begin /dxUnit 1.0 def +/dyUnit 1 def /dzUnit 1.0 def /Alpha 150 def /Beta 30 def /SphericalCoor +false def /xUnit { 28.45274 mul } def /yUnit { 28.45274 mul } def +convertStackTo2D end /Lineto /lineto load def false Line gsave 0.8 +SLW 0 1 0 setrgbcolor 0 setlinecap stroke grestore end + +@endspecial +236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 3 1.0 mul def /y -0.8 1 mul def /z 0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@temp@pstNode +10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 +a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def 270 Delta sub rotate /Rho 180 Delta add +def Rho cos Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix +{ } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp +[ currentpoint ] cvx def CM CP T STV CM matrix invertmatrix matrix +concatmatrix exch exec concat cp moveto end + 236 1417 a 1 0 0 TeXcolorrgb Fd(a)280 1429 y Fa(1)p +0 TeXcolorgray 317 1417 a + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 317 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 +a 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x -0.6 1.0 mul def /y 3 1 mul def /z 0 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@temp@pstNode +10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 +a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 1417 a 1 0 0 TeXcolorrgb Fd(a)280 1429 y Fa(2)p +0 TeXcolorgray 317 1417 a + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 317 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 +a 236 1417 a + tx@Dict begin tx@NodeDict begin {tx@3DPlotDict begin /Alpha 150 def +/Beta 30 def /x 0 1.0 mul def /y -1 1 mul def /z 4 1.0 mul def ConvertTo2D +x2D y2D end 28.45274 mul exch 28.45274 mul exch } false /N@temp@pstNode +10 {InitPnode } NewNode end end + 236 1417 a 236 1417 a + tx@Dict begin { tx@NodeDict begin tx@NodeDict /N@temp@pstNode known +{ /N@temp@pstNode load GetCenter } { 0 0 } ifelse end } PutCoor PutBegin + end + 236 1417 a 236 1417 +a + tx@Dict begin { [ 1 0 /Alpha 150 def /Beta 30 def /Delta Beta sin +Alpha sin mul Alpha cos atan neg 90 add def /Gamma Beta sin Alpha cos +mul neg Alpha sin atan def Gamma rotate /Rho 90 Gamma sub def Rho cos +Rho sin 0 0 ] concat} tx@Dict /TMatrix known not { /TMatrix { } def +/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /cp [ currentpoint +] cvx def CM CP T STV CM matrix invertmatrix matrix concatmatrix exch +exec concat cp moveto end + 236 1417 a 1 0 0 TeXcolorrgb Fd(a)280 1429 y Fa(3)p +0 TeXcolorgray 317 1417 a + tx@Dict begin CP /TMatrix [ TMatrix setmatrix ] cvx def moveto end + 317 1417 a 236 1417 a + tx@Dict begin PutEnd end + 236 1417 +a eop end +%%Trailer + +userdict /end-hook known{end-hook}if +%%EOF diff --git a/VeranschaulichungVonVektorenImRaum02.pdf b/VeranschaulichungVonVektorenImRaum02.pdf new file mode 100644 index 0000000..db17cfc Binary files /dev/null and b/VeranschaulichungVonVektorenImRaum02.pdf differ diff --git a/definitions.tex b/definitions.tex new file mode 100644 index 0000000..c0e0948 --- /dev/null +++ b/definitions.tex @@ -0,0 +1,342 @@ + +%!TEX root=main.tex +\usepackage{geometry} +\geometry{ + %a4paper, + %total={170mm,257mm}, + left=20mm, + top=20mm, + right=40mm, + marginparwidth=30mm +} + +%\usepackage[top=2cm, bottom=1.3cm, left=10mm, right=0.5cm, heightrounded, +%marginparwidth=30mm, marginparsep=3mm]{geometry} + +%\usepackage{pythontex} + +\usepackage[ngerman]{babel} +\usepackage[utf8]{inputenc} +%\usepackage{microtype} +%\usepackage[sfmath,slantedGreeks]{kpfonts} +%% +% Just some sample text +\usepackage{lipsum} +\usepackage{wrapfig} +%% +% For nicely typeset tabular material +\usepackage{booktabs} +%\usepackage[utf8]{inputenc} + +%% +% For graphics / images +\usepackage{graphicx} +%\setkeys{Gin}{width=\linewidth,totalheight=\textheight,keepaspectratio} +%\graphicspath{{graphics/}} + +\usepackage{mathtools} + +%\usepackage[inline]{asymptote} + +% The fancyvrb package lets us customize the formatting of verbatim +% environments. We use a slightly smaller font. +%\usepackage{fancyvrb} +%\fvset{fontsize=\normalsize} +\usepackage{cmbright} +%% +% Prints argument within hanging parentheses (i.e., parentheses that take +% up no horizontal space). Useful in tabular environments. +\newcommand{\hangp}[1]{\makebox[0pt][r]{(}#1\makebox[0pt][l]{)}} + +%% +% Prints an asterisk that takes up no horizontal space. +% Useful in tabular environments. +\newcommand{\hangstar}{\makebox[0pt][l]{*}} + +%% +% Prints a trailing space in a smart way. +\usepackage{xspace} +%\usepackage[makeroom]{cancel} +%% +% Some shortcuts for Tufte's book titles. The lowercase commands will +% produce the initials of the book title in italics. The all-caps commands +% will print out the full title of the book in italics. +%\newcommand{\vdqi}{\textit{VDQI}\xspace} +%\newcommand{\ei}{\textit{EI}\xspace} +%\newcommand{\ve}{\textit{VE}\xspace} +%\newcommand{\be}{\textit{BE}\xspace} +%\newcommand{\VDQI}{\textit{The Visual Display of Quantitative Information}\xspace} +%\newcommand{\EI}{\textit{Envisioning Information}\xspace} +%\newcommand{\VE}{\textit{Visual Explanations}\xspace} +%\newcommand{\BE}{\textit{Beautiful Evidence}\xspace} + +%\newcommand{\TL}{Tufte-\LaTeX\xspace} +%20180930 Fonts LX +%\usepackage{lxfonts} +%\usepackage[sfdefault,scaled=1.5]{FiraSans} + +%\usepackage[sfdefault,lining,scaled=1.5]{FiraSans} %% option 'sfdefault' activates Fira Sans as the default text font +%\usepackage[fakebold, scaled=1.5]{firamath-otf} +%\renewcommand*\oldstylenums[1]{{\firaoldstyle #1}} + +\usepackage[defaultfam,tabular,lining]{montserrat} %% Option 'defaultfam' +%% only if the base font of the document is to be sans serif +\usepackage[T1]{fontenc} +\renewcommand*\oldstylenums[1]{{\fontfamily{Montserrat-TOsF}\selectfont #1}} + + +%\usepackage{newtxsf} +%\setkomafont{subsection}{\usefont{T1}{fvm}{m}{n}} +\setkomafont{section}{\usefont{T1}{fvs}{b}{n}\Large} +\setkomafont{subsection}{\usefont{T1}{fvs}{b}{n}} +\setkomafont{subsubsection}{\usefont{T1}{fvs}{b}{n}} +\setcounter{secnumdepth}{3} +%20180930 Fonts LX + +% Prints the month name (e.g., January) and the year (e.g., 2008) +%\newcommand{\monthyear}{% +% \ifcase\month\or January\or February\or March\or April\or May\or June\or +% July\or August\or September\or October\or November\or +% December\fi\space\number\year +%} + +%wenn eps --> aus gnuplot +%\usepackage{graphicx} +%\usepackage{epstopdf} +%\epstopdfsetup{update} % only regenerate pdf files when eps file is newer + +% lua aus gnuplot +%\usepackage{gnuplot-lua-tikz} + +% Prints an epigraph and speaker in sans serif, all-caps type. +%\newcommand{\openepigraph}[2]{% +% %\sffamily\fontsize{14}{16}\selectfont +% \begin{fullwidth} +% \sffamily\large +% \begin{doublespace} +% \noindent\allcaps{#1}\\% epigraph +% \noindent\allcaps{#2}% author +% \end{doublespace} +% \end{fullwidth} +%} + +% Inserts a blank page +\newcommand{\blankpage}{\newpage\hbox{}\thispagestyle{empty}\newpage} + +\usepackage{units} + +% Typesets the font size, leading, and measure in the form of 10/12x26 pc. +%\newcommand{\measure}[3]{#1/#2$\times$\unit[#3]{pc}} +% +%% Macros for typesetting the documentation +%\newcommand{\hlred}[1]{\textcolor{Maroon}{#1}}% prints in red +%\newcommand{\hangleft}[1]{\makebox[0pt][r]{#1}} +%\newcommand{\hairsp}{\hspace{1pt}}% hair space +%\newcommand{\hquad}{\hskip0.5em\relax}% half quad space +%\newcommand{\TODO}{\textcolor{red}{\bf TODO!}\xspace} +%\newcommand{\ie}{\textit{i.\hairsp{}e.}\xspace} +%\newcommand{\eg}{\textit{e.\hairsp{}g.}\xspace} +%\newcommand{\na}{\quad--}% used in tables for N/A cells +%\providecommand{\XeLaTeX}{X\lower.5ex\hbox{\kern-0.15em\reflectbox{E}}\kern-0.1em\LaTeX} +%\newcommand{\tXeLaTeX}{\XeLaTeX\index{XeLaTeX@\protect\XeLaTeX}} +%% \index{\texttt{\textbackslash xyz}@\hangleft{\texttt{\textbackslash}}\texttt{xyz}} +%\newcommand{\tuftebs}{\symbol{'134}}% a backslash in tt type in OT1/T1 +%\newcommand{\doccmdnoindex}[2][]{\texttt{\tuftebs#2}}% command name -- adds backslash automatically (and doesn't add cmd to the index) +%\newcommand{\doccmddef}[2][]{% +% \hlred{\texttt{\tuftebs#2}}\label{cmd:#2}% +% \ifthenelse{\isempty{#1}}% +% {% add the command to the index +% \index{#2 command@\protect\hangleft{\texttt{\tuftebs}}\texttt{#2}}% command name +% }% +% {% add the command and package to the index +% \index{#2 command@\protect\hangleft{\texttt{\tuftebs}}\texttt{#2} (\texttt{#1} package)}% command name +% \index{#1 package@\texttt{#1} package}\index{packages!#1@\texttt{#1}}% package name +% }% +%}% command name -- adds backslash automatically +%\newcommand{\doccmd}[2][]{% +% \texttt{\tuftebs#2}% +% \ifthenelse{\isempty{#1}}% +% {% add the command to the index +% \index{#2 command@\protect\hangleft{\texttt{\tuftebs}}\texttt{#2}}% command name +% }% +% {% add the command and package to the index +% \index{#2 command@\protect\hangleft{\texttt{\tuftebs}}\texttt{#2} (\texttt{#1} package)}% command name +% \index{#1 package@\texttt{#1} package}\index{packages!#1@\texttt{#1}}% package name +% }% +%}% command name -- adds backslash automatically +%\newcommand{\docopt}[1]{\ensuremath{\langle}\textrm{\textit{#1}}\ensuremath{\rangle}}% optional command argument +%\newcommand{\docarg}[1]{\textrm{\textit{#1}}}% (required) command argument +%\newenvironment{docspec}{\begin{quotation}\ttfamily\parskip0pt\parindent0pt\ignorespaces}{\end{quotation}}% command specification environment +%\newcommand{\docenv}[1]{\texttt{#1}\index{#1 environment@\texttt{#1} environment}\index{environments!#1@\texttt{#1}}}% environment name +%\newcommand{\docenvdef}[1]{\hlred{\texttt{#1}}\label{env:#1}\index{#1 environment@\texttt{#1} environment}\index{environments!#1@\texttt{#1}}}% environment name +%\newcommand{\docpkg}[1]{\texttt{#1}\index{#1 package@\texttt{#1} package}\index{packages!#1@\texttt{#1}}}% package name +%\newcommand{\doccls}[1]{\texttt{#1}}% document class name +%\newcommand{\docclsopt}[1]{\texttt{#1}\index{#1 class option@\texttt{#1} class option}\index{class options!#1@\texttt{#1}}}% document class option name +%\newcommand{\docclsoptdef}[1]{\hlred{\texttt{#1}}\label{clsopt:#1}\index{#1 class option@\texttt{#1} class option}\index{class options!#1@\texttt{#1}}}% document class option name defined +%\newcommand{\docmsg}[2]{\bigskip\begin{fullwidth}\noindent\ttfamily#1\end{fullwidth}\medskip\par\noindent#2} +%\newcommand{\docfilehook}[2]{\texttt{#1}\index{file hooks!#2}\index{#1@\texttt{#1}}} +%\newcommand{\doccounter}[1]{\texttt{#1}\index{#1 counter@\texttt{#1} counter}} +%\usepackage{gnuplottex} +\usepackage{cancel} +\usepackage{pgf,tikz,pgfplots} +\usetikzlibrary{fadings,shapes.arrows,shadows} +\usetikzlibrary{arrows.meta} +\usetikzlibrary{matrix} +\usetikzlibrary{positioning} +%\usepackage{mathrsfs} + +\usepackage{tabu} + +\usepackage{textcomp} +\usetikzlibrary{arrows,shapes,calc,decorations.pathreplacing,fit} + + +\usepackage{subfigure} + +\newcommand{\tikztab}[1]{\tikz[na]{ + \node[anchor=base] () + {$#1$};}} + + +\newcommand{\tikztaboverlay}[2]{\tikz[na]{ + \node[anchor=base] (#2) + {$#1$};}} + +\newcommand{\tikztabtext}[1]{\tikz[na]{ + \node[anchor=base] () + {#1};}} + + +%Tables +\usepackage{booktabs} +\usepackage{xcolor,colortbl} + +% Generates the index +\usepackage{makeidx} + +\usepackage{caption} % GLEITUMGEBUNG UND TIKZPICTURE +\makeindex + +%\usepackage{gnuplottex} + +\usepackage{longtable} +\usepackage{amssymb} +\usepackage{amsmath} + + +\newcommand{\bracemark}[1]{\tikz[remember picture] \node[inner sep=0pt] (#1) {\vphantom{X}};} + + +%%Defintion bcancelto +%% #1, #2 offset of label #6 extra width to clear arrowhead +%% #3, #4 vector direction #7 superscript label style +%% #5 vector width #8 superscript label +%\def\cantox@vector#1#2#3#4#5#6#7#8{% +% \dimen@.5\p@ +% \setbox\z@\vbox{\boxmaxdepth.5\p@ +% \hbox{\kern-1.2\p@\kern#1\dimen@$#7{#8}\m@th$}}% +% \ifx\canto@fil\hidewidth \wd\z@\z@ \else \kern-#6\unitlength \fi +% \ooalign{% +% \canto@fil$\m@th \CancelColor +% \vcenter{\hbox{\dimen@#6\unitlength \kern\dimen@ +% \multiply\dimen@#4\divide\dimen@#3 \vrule\@depth\dimen@\@width\z@ +% \vector(#3,-#4){#5}% +% }}_{\raise-#2\dimen@\copy\z@\kern-\scriptspace}$% +% \canto@fil \cr +% \hfil \box\@tempboxa \kern\wd\z@ \hfil \cr}} +%\def\bcancelto#1#2{\let\canto@vector\cantox@vector\cancelto{#1}{#2}} +%\makeatother +%%Defintion bcancelto + +\tikzset{ +main node/.style={inner sep=0,outer sep=0}, +label node/.style={inner sep=0,outer ysep=.2em,outer xsep=.4em,font=\scriptsize,overlay}, +strike out/.style={shorten <=-.2em,shorten >=-.5em,overlay} +} +\newcommand{\cccancelto}[3][]{\tikz[baseline=(N.base)]{ + \node[main node](N){$#2$}; + \node[label node,#1, anchor=south west] at (N.north east){$#3$}; + \draw[strike out,#1] (N.south west) -- (N.north east); +}} +\newcommand{\ccancelto}[3][]{\tikz[baseline=(N.base)]{ + \node[main node](N){$#2$}; + \node[label node,#1, anchor=south west] at (N.north east){$#3$}; + \draw[strike out,-latex,#1] (N.south west) -- (N.north east); +}} +\newcommand{\bcancelto}[3][]{\tikz[baseline=(N.base)]{ + \node[main node](N){$#2$}; + \node[label node,#1, anchor=north west] at (N.south east){$#3$}; + \draw[strike out,-latex,#1] (N.north west) -- (N.south east); +}} +\newcommand{\bccancelto}[3][]{\tikz[baseline=(N.base)]{ + \node[main node](N){$#2$}; + \node[label node,#1, anchor=north west] at (N.south east){$#3$}; + \draw[strike out,#1] (N.north west) -- (N.south east); +}} + + +\newcommand{\inlineFormel}[1] +{\(\displaystyle #1\)} + +\newcommand{\outlineFormel}[1]{ +\begin{equation*} +\displaystyle #1 +\end{equation*}} + +% Zeichnet einen gelben Kasten mit rotem Rahmen +%\usepackage{framed} +\usepackage[framemethod=tikz]{mdframed} + +\usetikzlibrary{shadows} + +\newmdenv[tikzsetting={fill=yellow!20,drop shadow},roundcorner=10pt ]{myshadowbox} + +\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}} + +\usepackage{minitoc} + +\dominitoc +\setcounter{minitocdepth}{4} +\mtcsettitle{minitoc}{Inhalt des Kapitels} % minitoc-title + + +\newcommand*{\changefont}[3]{% +\fontfamily{#1}\fontseries{#2}\fontshape{#3}\selectfont} + + +\usepackage{url} % Setzen von URLs. In Verbindung mit hyperref sind diese auch aktive Links. + + +\everymath{\displaystyle} + +\setlength{\mathindent}{0pt} %Einrücken in Mathe verhindern (nur mit Dokumentenklasse fleqn) b + +\setlength{\parindent}{0em} %Einrücken verhindern +\tikzstyle{na} = [baseline=-3pt] + +\tikzstyle{myboxblue} = [draw=blue, fill=blue!20, very thick, +rectangle, rounded corners, inner sep=10pt, inner ysep=20pt] +\tikzstyle{fancytitle} =[fill=blue!80, text=white] + +\newcommand{\fancybox}[2][Title of the box]{% + \begin{tikzpicture} + \node [myboxblue] (box){% + \begin{minipage}{0.9\textwidth} + #2 + \end{minipage} + }; + \node[fancytitle, right=10pt] at (box.north west) {#1}; + %\node[fancytitle, rounded corners] at (box.east) {$\clubsuit$}; + \end{tikzpicture}% +} + + + +%\usepackage{tabularx} + +%\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}} +%\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}} +%\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}} +\usepackage{enumerate} + +\usepackage[thinlines]{easytable} diff --git a/folgen01.tex b/folgen01.tex new file mode 100644 index 0000000..ee77aa2 --- /dev/null +++ b/folgen01.tex @@ -0,0 +1,124 @@ +%!TEX root=main.tex +\section{Folgen} + +\paragraph*{Beispiel 1:} + +Monatlicher Umsatz eines Shops: \\ +\begin{center} + \begin{tabular}{|l|cccccc|} + \hline + \rule{0pt}{12pt}{\cellcolor[rgb]{1,0.647,0}}Monat &1 & 2 & 3 & 4 & 5 & 6 \\ + \hline + \rule{0pt}{12pt}{\cellcolor[rgb]{1,0.647,0}}Umsatz in T\texteuro& 1 & 2 & 3 & 4 & 5 & 6 \\ + \hline + \end{tabular} + +\end{center} + + +\begin{center} +\begin{tikzpicture}[scale=1.25] +\definecolor{orange1}{rgb}{1,0.647,0} +\begin{axis}[% +xlabel={Monat}, +ylabel={Umsatz [T\texteuro]}, +%clickable coords={(xy): \thisrow{label}},% +scatter/classes={% + a={mark=square*,orange1}}] +\addplot[scatter,only marks,% +scatter src=explicit symbolic]% +table[meta=label] { + x y label + 1 1 a + 2 2 a + 3 3 a + 4 4 a + 5 5 a + 6 6 a +}; +\end{axis} +\end{tikzpicture} +\end{center} + +\paragraph*{Beispiel 2:} + +Rückzahlung eines Kredites (monatlich 200 \texteuro): \\ +\begin{center} + \begin{tabular}{|l|cccccc|} + \hline + \rule{0pt}{12pt}{\cellcolor[rgb]{0.98,0.1,0}}Monat &1 & 2 & 3 & 4 & 5 & 6 \\ + \hline + \rule{0pt}{12pt}{\cellcolor[rgb]{0.98,0.1,0}}Schuld in T\texteuro& 7,0 & 6,8 & 6,6 & 6,4 & 6,2 & 6,0 \\ + \hline + \end{tabular} + +\end{center} + + +\begin{center} + \begin{tikzpicture}[scale=1.25] + \definecolor{red1}{rgb}{0.98,0.1,0} + \begin{axis}[% + xlabel={Monat}, + ylabel={Schuld [T\texteuro]}, + %clickable coords={(xy): \thisrow{label}},% + scatter/classes={% + a={mark=square*,red1}}] + \addplot[scatter,only marks,% + scatter src=explicit symbolic]% + table[meta=label] { + x y label + 1 7.0 a + 2 6.8 a + 3 6.6 a + 4 6.4 a + 5 6.2 a + 6 6.0 a + }; + \end{axis} + \end{tikzpicture} +\end{center} + +\fancybox[Definition \glqq undendliche Folge\grqq]{Eine unendliche Folge is eine Abbildung, die jeder natürlichen Zahl $n$ (also $n \in \mathbb{ N}$ bzw. $n \in \mathbb{N}_0$) eine reelle Zahl $a_n$ zuordnet. + + 1 - 4:52 weiter +} + + + +\vfill + + + +x-Achse = Abzisse +y-Achse = Ordinate + + + + +%\def\hcenter#1{\hfil#1\hfil} +%\begin{table}[] +% \begin{tabu}{ +% >{\columncolor[HTML]{9A0000}}X[l]|X[c]|X[c]|X[c]|X[c]|X[c]|X[c]|} +% {\color[HTML]{FFFFFF} \textbf{Monat}} & {\color[HTML]{9A0000} \textbf{1}} & {\color[HTML]{9A0000} \textbf{2}} & {\color[HTML]{9A0000} \textbf{3}} & {\color[HTML]{9A0000} \textbf{4}} & {\color[HTML]{9A0000} \textbf{5}} & {\color[HTML]{9A0000} \textbf{6}}\\ +% \rule{10pt}{20pt}{\color[HTML]{FFFFFF} \textbf{Umsatz in T\texteuro}} & \textbf{1} & \textbf{2} & \textbf{3} & \textbf{4} & \textbf{5} & \textbf{6} +% \end{tabu} +%\end{table} + + +% Muster +%\begin{tabular}{|>{\columncolor{blue!40}}r|rrrrr|} +% \hline +% \rowcolor[gray]{.8} \textbf{No.} & {\bf 134} & {\bf 135} & {\bf 136} & {\bf 137} & {\bf 138} \\ +% \hline +% \textbf{Milch } & 0.00 & 0.05 & 0.00 & 0.04 & 0.00 \\ +% \textbf{Käse } & 49.57 & 49.15 & 49.80 & 49.68 & 50.18 \\ +% \textbf{Zucker } & 0.01 & 0.00 & 0.00 & 0.00 & 0.00 \\ +% {\bf Apfel } & 0.00 & 0.06 & 0.00 & 0.01 & 0.01 \\ +% {\bf Wurst } & 46.14 & 46.56 & 46.32 & 46.48 & 46.31\\\hline +% {\bf Total } & {\bf 97.13} & {\bf 97.23} & {\bf 97.53} & {\bf 97.65} & {\bf 98.04} \\\hline +%\end{tabular} + + + +\newpage \ No newline at end of file diff --git a/gnuplot01.gp b/gnuplot01.gp new file mode 100644 index 0000000..72afec9 --- /dev/null +++ b/gnuplot01.gp @@ -0,0 +1,24 @@ +set terminal png + set output "gnuplot01.png" + set grid + set samples 100000 + unset border + set lmargin at screen 0 + set rmargin at screen 1 + set bmargin at screen 0 + set tmargin at screen 1 + set yrange [-7:10] + set xrange [-8:8] + set size 10./10. + set key center top reverse Left + set xzeroaxis + set yzeroaxis + set ytics axis + set xtics axis + #set object circle at 3,3 size 0.2 + set label "(2,0.33)" at 2.1,0.77 tc rgb "#FF0000" + plot 1/(x**2 -1) lt rgb "#006300" lw 2 notitle, '-' w p pt 7 ps 1.5 lc rgb "#FF0000" notitle + 2.0 0.33 + e + + #"=latex}, +yticklabel style = {font=\footnotesize,xshift=0.5ex}, +xticklabel style = {font=\footnotesize,yshift=0.5ex}, +% grid=both, +% grid style={line width=.1pt, draw=gray!10}, +% major grid style={line width=.2pt,draw=gray!50}, +ymax=5.5] +\addplot [mark=none,domain=-3.8:3.8, color=NewBlue, line width=0.75mm,smooth] {x^2}; +\end{axis} + +\draw[-{Triangle[scale=3,length=5,width=6]}, color=NewBlue, line width=3mm, fill=white] (2,1.5) to (0.8,1.5); +%http://latexcolor.com + + +\draw[-{Triangle[scale=3,length=5,width=6]}, color=NewBlue, line width=3mm] (4.8,1.5) to (6,1.5); + + +\draw[draw=NewBlue, fill=white, line width=0.75mm] (-1,1.2) rectangle (0.5,1.8) node[pos=.5] {\textbf{\textcolor{black}{$-\infty$}}}; + + +\draw[draw=NewBlue, fill=white, line width=0.75mm] (6.3,1.2) rectangle (7.8,1.8) node[pos=.5] {\textbf{\textcolor{black}{$+\infty$}}}; +%\tikzfancyarrow[3cm]{} arrow + +\end{tikzpicture} \ No newline at end of file diff --git a/limit01.pgf b/limit01.pgf new file mode 100644 index 0000000..e680b7c --- /dev/null +++ b/limit01.pgf @@ -0,0 +1,53 @@ +\begin{tikzpicture}[scale=0.8] + +\pgfplotsset{compat=1.11} + +\definecolor{FireBrick}{rgb}{0.7, 0.13, 0.13} + +\definecolor{NewBlue}{rgb}{0.27, 0.45, 0.76} + +\tikzfading[name=arrowfading, top color=transparent!0, bottom color=transparent!95] +\tikzset{arrowfill/.style={#1,general shadow={fill=black, shadow yshift=-0.8ex, path fading=arrowfading}}} +\tikzset{arrowstyle/.style n args={3}{draw=#2,arrowfill={#3}, single arrow,minimum height=#1, single arrow, +single arrow head extend=.3cm,}} + +%\NewDocumentCommand{\tikzfancyarrow}{O{2cm} O{FireBrick} O{top color=orange!20!red, bottom color=red} m}{ +%\tikz[baseline=-0.5ex]\node [arrowstyle={#1}{#2}{#3}] {#4}; +%} + + +%\node [ +% fill=blue!50, draw, +% single arrow, single arrow head indent=0ex, +% rotate=0, +% font=\sffamily +%] at (1,1.5) +%{\rotatebox{0}{ \qquad}}; + + +%\draw[color=gray!10,step=2mm,help lines] (-0.7,0) grid (72mm,58mm); +%\draw[color=gray!70,step=10mm,xshift=4mm,yshift=-1mm] (-0.5,0) grid (70mm,60mm); +\begin{axis}[ +x=1cm,y=1cm, +axis x line=center, +axis y line=center, +%axis lines=middle, +ymajorgrids=true, +xmajorgrids=true, +xmin=-5, +xmax=5, +ymin=-6, +ymax=6, +xtick={-5,-4,...,5}, +ytick={-5,-4,...,6},] +\addplot [mark=none,domain=-4.8:-1.05, color=NewBlue, line width=0.5mm,step=10000, smooth, tension=0.2] {1/(x^2-1)}; +\addplot [mark=none,domain=-0.95:0.95, color=NewBlue, line width=0.5mm,step=10000] {1/(x^2-1)}; +\addplot [mark=none,domain=1.05:4.8, color=NewBlue, line width=0.5mm,step=10000] {1/(x^2-1)}; + +%\clip(-17.083986586441775,-20.54798056618339) rectangle (4.103328404466779,7.349328615703948); +\end{axis} +\filldraw[red](7,6.33) circle (0.75mm) node[above,right, yshift=4]{(2,0.33)}; + +%\node[] (A) at ( 1,3) {\textbf{$y^2=x^2$}}; + +\end{tikzpicture} \ No newline at end of file diff --git a/limit01.tex b/limit01.tex new file mode 100644 index 0000000..0bfb558 --- /dev/null +++ b/limit01.tex @@ -0,0 +1,715 @@ +%!TEX root=main.tex +\section{Grenzwerte} + +\subsection{Der Limes ~\cite{studimup.de}} +Mit dem Limes können Grenzwerte angegeben werden. Der Limes beschreibt, was passiert, wenn man für eine Variable Werte einsetzt, die einem bestimmten Wert immer näherkommen. Dabei steht unter dem „lim“ die Variable und gegen welche Zahl sie geht (also welchem Wert die Variable immer näher kommt). Nach dem „lim“ steht dann die Funktion, worin dann die Werte für x eingesetzt werden, zum Beispiel: +$\lim _ { x \rightarrow \infty } \frac { 1 } { x }$ + +Diese Schreibweise bedeutet, dass man für $x$ in die Funktion $1/x$ Werte einsetzt, die immer näher an unendlich herankommen. Man kann ja keinen unendlichen Wert einsetzen, aber man kann mit dem Limes „gucken“ was für unendlich herauskommen würde. Man spricht dann „Limes gegen unendlich“. Das geht natürlich auch mit allen anderen Werten, nicht nur für unendlich. + +\subsection{Grenzwerte im Unendlichen} +Grenzwerte im Unendlichen beschreiben, was mit der Funktion passiert, also an welchen Wert sich die Funktion immer mehr annähert, wenn $x$ gegen unendlich läuft (das heißt, wenn $x$ immer größer wird bis unendlich). Dabei kann $x$ gegen $+\infty$ und $-\infty$ laufen, also immer kleiner oder größer werden. Es sieht dann in mathematischer Schreibweise folgendermaßen aus: + +$\lim _ { x \rightarrow \infty } f ( x ) \quad$ und $\quad \lim _ { x \rightarrow - \infty } f ( x )$ + +\begin{center} +\input{limit001.pgf} +\end{center} + + + +\subsection{Merkblatt}\label{lbl:MerkblattGrenzwert} + +\subsubsection{Wichtige Grenzwerte} + +% \setlength\extrarowheight{10pt} +%\begin{tabular}{|C{2cm}|C{2cm}|} +% \hline +% & \\ +% \hline +% $\frac { 1 } { \infty }$ & $0$ \\ +% \hline +% $\frac { 1 } { \pm 0 }$ & $\pm \infty$\\ +% \hline +% & \\ +% \hline +% & \\ +% \hline +% & \\ +% \hline +% & \\ +% \hline +% & \\ +% \hline +%\end{tabular} +%\begin{tabular}{l} + +\begin{TAB}(r,7mm,8mm)[10pt]{|c|l|}{|c|c|c|c|c|c|}% (rows,min,max)[tabcolsep]{columns}{rows} + $\frac { 1 } { \infty }$ & $0$ \\ + $\frac { 1 } { \pm 0 }$ & $\pm \infty$ \\ + $\mathrm { e } ^ { \infty }$ & $\infty$\\ + $q ^ { \infty }$ & $\text {falls } | q | < 1$\\ + $\ln ( \infty )$&$\infty$\\ + $\ln \left( 0 ^ { + } \right) $&$ - \infty$ +\end{TAB} + + + + +\begin{longtable}{|l|l|l|} + $\left[ \frac { 0 } { 0 } \right] , \left[ \frac { \infty } { \infty } \right]$ & \textbf{Zähler} und \textbf{Nenner} einzeln \textbf{ableiten}. & $\lim _ { x \rightarrow 0 } \frac { \sin ( x ) } { x } \frac { \left[ \frac { 0 } { 0 } \right] } { = } \lim _ { x \rightarrow 0 } \frac { \cos ( x ) } { 1 } = 1$\\\hline + & & $\lim _ { x \rightarrow \infty } \frac { 3 x } { e ^ { 2 x } } \stackrel { \left[ \frac { \infty } { \infty } \right] } { = } \lim _ { x \rightarrow \infty } \frac { 3 } { 2 e ^ { 2 x } } = 0$ \\ + \\ +$[ 0 \cdot \infty ]$ & \textbf{Umformen zu} $\left[ \frac { 0 } { 0 } \right]$ \textbf{oder} $\left[ \frac { \infty } { \infty } \right]$: & \\ + +& \textbf{Bruch vorhanden?}: Bruch \glqq zusammensetzen\grqq\ & $\lim _ { x \rightarrow \infty } \frac { 1 } { x } \cdot \ln ( x ) \stackrel { [ 0 \cdot \infty ] } { = }$ \\ + +& & $\lim _ { x \to \infty } \frac { \ln ( x ) } { x } \stackrel { \left[ \frac { \infty } { \infty } \right] } { = } \ldots$ \\ \\ + & \textbf{Sonst}: Bruch \glqq erzeugen\grqq mit $a \cdot b = \frac { a } { 1 / b } = \frac { b } { 1 / a }$& $\lim _ { x \rightarrow 0 ^ +} x \cdot \ln ( x ) \mathop =\limits^{\left[ 0 \cdot \infty \right]} $\\ + & & $\lim _ { x \rightarrow 0 ^ { + } } \frac { \ln ( x ) } { 1 / x } \mathop = \limits^{\left[ \frac{\infty }{\infty } \right]}\ldots$\\ \\ +$ \left[ 0 ^ 0 \right] , \left[ 1 ^ \infty \right],$ & \textbf{Umformen zu} $\left[ 0 \cdot \infty \right] : \quad a ^ b = e ^ { b \cdot \ln ( a ) }$ & $\lim _ { x \rightarrow 0 ^ { + } + } ( 1 - x ) ^ { \frac { 1 } { x } } \stackrel { \left[ 1 ^ { \infty } \right] } { = }$\\ + $\left[ \infty ^ 0 \right]$& & $\lim _ { x \rightarrow 0 ^ { + } } e ^ { \frac { 1 } { x } \cdot \ln ( 1 - x ) } \stackrel { [ 0 \cdot \infty ] } { = } \ldots$\\ +$[ \infty - \infty ]$ & \textbf{Umformen}: &\\ +&\textbf{Bruch vorhanden?}: Hauptnenner bilden & $\lim _ { x \rightarrow 0 ^ { + } } \frac { 1 } { x } - \frac { 1 } { \ln ( 1 + x ) } \stackrel { [ \infty - \infty ] } { = }$\\ +& & $\stackrel { [ \infty - \infty ] } { = }\lim _ { x \rightarrow 0 ^ { + } } \frac { \ln ( 1 + x ) - x } { x \cdot \ln ( 1 + x ) } \stackrel { \left[ \frac { 0 } { 0 } \right] } { = } \ldots$\\ +& \textbf{Quadratwurzel vorhanden?:} $a - b = \frac { a ^ { 2 } - b ^ { 2 } } { a + b }$ & $\lim _ { x \rightarrow \infty } x - \sqrt { x ^ { 2 } + 1 } \stackrel { [ \infty - \infty ] } { = }$\\ + +\end{longtable} + +\vfill +\pagebreak + + +\subsection{Wichtige Grenzwerte} +Empfehlung: Die Zahl die gegen das $x$ läuft in die Funktion einsetzen. Im einfachsten Fall kommt sofort das Endergebnis heraus. +\begin{enumerate} + \item Einfach + z.B. $\mathop {\lim }\limits_{x \to - 3} {x^2} = 9$ +\item $\mathop {\lim }\limits_{x \to \infty } \frac{1}{x} = 0$ +\item $\mathop {\lim }\limits_{x \to {2^ + }} \frac{{\ln \left( {x - 1} \right)}}{{x - 2}} = 1$ +\end{enumerate} + +\textbf{Beispiel}: Funktion $\mathop {\lim }\limits_{x \to - 2} \frac{1}{{{x^2} - 1}}$ + + +\begin{figure}[h] +% \pgfplotsset{compat=1.13} +% \begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,x=1cm,y=1cm,scale=0.6] +% \definecolor{ffqqqq}{rgb}{1,0,0} +% \definecolor{qqwuqq}{rgb}{0,0.39215686274509803,0} +% \begin{axis}[ +% x=1cm,y=1cm, +% axis lines=middle, +% ymajorgrids=true, +% xmajorgrids=true, +% xmin=-7.72, +% xmax=7.7, +% ymin=-5.5, +% ymax=5.5, +% xtick={-7,-6,...,7}, +% ytick={-5,-4,...,5},] +% \clip(-7.72,-5.48) rectangle (7.72,5.48); +% \draw[line width=0.75pt,color=qqwuqq,smooth,samples=400,domain=-7.72:7.719999999999998] plot(\x,{1/((\x)^(2)-1)}); +% \begin{scriptsize} +% %\draw[color=qqwuqq] (-7.54,-0.05) node {$f$}; +% \draw [fill=ffqqqq] (2,0.3333333333333333) circle (2.5pt); +% \draw[color=ffqqqq] (2.8,0.77) node {$(2, 0.33)$}; +% \end{scriptsize} +% \end{axis} +% \end{tikzpicture} +\centering +%\includegraphics[scale=.7]{gnuplot01.png} +\input{limit01.pgf} +\end{figure} + + +%\begin{figure}[h] +%\pgfplotsset{compat=1.15} +%\begin{tikzpicture}[>=stealth, baseline=0,scale=0.75,x=1cm,y=1cm] +%\definecolor{ffqqqq}{rgb}{1,0,0} +%\definecolor{qqwuqq}{rgb}{0,0.39215686274509803,0} +%\begin{axis}[ +% x=1cm,y=1cm, +% axis lines=middle, +% ymajorgrids=true, +% xmajorgrids=true, +% xmin=-7.72, +% xmax=7.7, +% ymin=-5.5, +% ymax=5.8, +% xtick={-7,-6,...,7}, +% ytick={-5,-4,...,5}, +% restrict y to domain=-5.5:5.8, +% restrict y to domain=-7.72:7.7] +% \clip(-7.72,-5.48) rectangle (7.72,5.48); +% \draw[line width=0.8pt,color=qqwuqq,smooth,samples=500,domain=-7:7] plot(\x,{1/((\x)^(2)-1)}); +% \begin{scriptsize} +% \draw [fill=ffqqqq] (2,0.3333333333333333) circle (2.5pt); +% \draw[color=ffqqqq] (2.8,0.77) node {$(2, 0.33)$}; +% \end{scriptsize} +%\end{axis} +%\end{tikzpicture} +%\end{figure} + +\marginpar{bekommt man allgemein bei dieser Methode ein eindeutiges Ergebnis, so ist die Aufgabe gelöst}Hier kann man auch erst alle $x$ mit dem Grenzwert füllen und berechnen. Hier in diesem Fall ergibt sich ein eindeutiges Ergebnis: $\mathop {\lim }\limits_{x \to - 2} \frac{1}{{{x^2} - 1}} = \frac{1}{3}$ + +Schaut man sich die Funktion an der Stelle $-1$ an, so kann man hier von zwei Seiten diesen Wert untersuchen. Wenn man von links kommt so schreibt man $\mathop {\lim }\limits_{x \to {1^ - }} \frac{1}{{{x^2} - 1}}$. Hier geht Funktion gegen $+\infty$. Von rechts $\mathop {\lim }\limits_{x \to {1^ + }} \frac{1}{{{x^2} - 1}}$ geht die Funktion gegen $-\infty$. + +\definecolor{ffqqqq}{rgb}{1,0,0} +\definecolor{qqwuqq}{rgb}{0,0.39215686274509803,0} + +%%%%%%%%%%%%%%Test%%%%%%%%%%%%%% +%\begin{figure}[htb] +% \centering +% \begin{minipage}[t]{.45\linewidth} +% \centering +% \pgfplotsset{compat=1.13} +% \begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,x=1cm,y=1cm,scale=0.5] +% \definecolor{ffqqqq}{rgb}{1,0,0} +% \definecolor{qqwuqq}{rgb}{0,0.39215686274509803,0} +% \definecolor{ffzzqq}{rgb}{1,0.2,0} +% \begin{axis}[ +% x=1cm,y=1cm, +% axis lines=middle, +% ymajorgrids=true, +% xmajorgrids=true, +% xmin=-7.72, +% xmax=7.7, +% ymin=-5.5, +% ymax=5.5, +% xtick={-7,-6,...,7}, +% ytick={-5,-4,...,5},] +% \clip(-7.72,-5.48) rectangle (7.72,5.48); +% \draw[line width=0.75pt,color=qqwuqq,smooth,samples=400,domain=-7.72:7.719999999999998] plot(\x,{1/((\x)^(2)-1)}); +% \begin{scriptsize} +% %\draw[color=qqwuqq] (-7.54,-0.05) node {$f$}; +% \draw [->,line width=2pt,color=ffzzqq] (-5,4) -- (-1.32,4); +% %\draw [fill=ffqqqq] (2,0.3333333333333333) circle (2.5pt); +% %\draw[color=ffqqqq] (2.8,0.77) node {$(2, 0.33)$}; +% \draw[color=ffzzqq] (-3.211316965163661,4.440165320759923) node {von links}; +% \end{scriptsize} +% \end{axis} +% \end{tikzpicture} +% \end{minipage}% +% \hfill% +% \begin{minipage}[t]{.45\linewidth} +% \centering +% \pgfplotsset{compat=1.13} +% \begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,x=1cm,y=1cm,scale=0.5] +% \definecolor{ffqqqq}{rgb}{1,0,0} +% \definecolor{qqwuqq}{rgb}{0,0.39215686274509803,0} +% \definecolor{ffzzqq}{rgb}{1,0.2,0} +% \begin{axis}[ +% x=1cm,y=1cm, +% axis lines=middle, +% ymajorgrids=true, +% xmajorgrids=true, +% xmin=-7.72, +% xmax=7.7, +% ymin=-5.5, +% ymax=5.5, +% xtick={-7,-6,...,7}, +% ytick={-5,-4,...,5},] +% \clip(-7.72,-5.48) rectangle (7.72,5.48); +% \draw[line width=0.75pt,color=qqwuqq,smooth,samples=400,domain=-7.72:7.719999999999998] plot(\x,{1/((\x)^(2)-1)}); +% \draw [<-,line width=2pt,color=ffzzqq] (-0.7673053253313482,-5.056552230598019) -- (2.9126946746686526,-5.056552230598019); +% \begin{scriptsize} +% \draw[color=ffzzqq] (1.5,-4.6911412980822496) node {von rechts}; +% \end{scriptsize} +% \end{axis} +% \end{tikzpicture} +% \end{minipage} +%% \caption{Bildtitel} +%\end{figure} +\begin{figure}[htb] + \centering + \begin{minipage}[t]{.45\linewidth} + \centering + \input{limit01a.pgf} + \caption*{An der Stelle $-2 \rightarrow 2^+$} + \end{minipage}% + \hfill% + \begin{minipage}[t]{.45\linewidth} + \centering + \includegraphics[scale=0.45]{gnuplot01b.png} + \caption*{An der Stelle $-2 \rightarrow 2^-$} + \end{minipage}% + \end{figure} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagebreak + + +\begin{itemize} + \item $\frac{1}{{ \pm 0}} \to \pm \infty $ hiermit ist gemeint, je mehr der Nenner gegen $0$ geht, da eine Division durch Null nicht möglich ist. + \item $\frac{1}{\pm \infty} \to 0$ +\end{itemize} + +\begin{figure}[h] + \centering + %\resizebox{!}{.15\paperheight}{\input{gnuplot02.gp}} + %\resizebox{!}{.15\paperheight}{\includegraphics{gnuplot01a.png}} + \includegraphics[scale=0.5]{gnuplot02a.png} + \caption*{$\frac{1}{x}$} +\end{figure} + + +\begin{itemize} + \item $e^{\infty} \to \infty $ + \item $e^{- \infty} \to 0$ +\end{itemize} + +\begin{figure}[h] +\centering +%TODO +%\resizebox{!}{.15\paperheight}{\input{gnuplot03a.gp}} + \includegraphics[scale=0.5]{gnuplot03a.png} + \caption*{$e^x$} +\end{figure} +\pagebreak + +%http://tutorial.math.lamar.edu/Classes/CalcI/InverseFunctions.aspx +\marginpar{die Logarithmus-Funktion ist nur im positiven Bereich. Man kann sich nur von rechts der $0$ annähern.} +\begin{itemize} + \item $\ln (\infty) \to \infty $ + \item $\ln (0^+) \to -\infty$ +\end{itemize} +\begin{figure}[ht] +\centering +%\resizebox{!}{.15\paperheight}{\input{gnuplot03.gp}} +\includegraphics[scale=0.5]{gnuplot04a.png} +\caption*{$\ln x$}% +\end{figure} + +\begin{itemize} + \item $q^\infty = 0$, falls $\left|q\right|<1$ + \item $\ln (0^+) \to -\infty$ +\end{itemize} + +\vfill + +\pagebreak +\subsection{Regeln von L'Hospital} +Wenn man Grenzwerte wie $\lim _ { x \rightarrow x _ { 0 } } f ( x )$ bestimmen soll, schaut man zuerst einmal, was man denn erhalten würde, wenn man $x_0$ einfach einsetzt. + + + +Kommt bei der Berechnung von Grenzwerten einer der nachfolgenden Sonderfälle heraus, so kann man diese gegebenenfalls mit der Regeln von L'Hospital lösen. +\begin{description} +\item [1.]\tikz[na]\node [coordinate] (n1) {}; $\frac{0}{0}$ +\item [2.]\tikz[na]\node [coordinate] (n2) {}; $\frac{\infty}{\infty}$ +\end{description} +Diese beiden Punkte können mit der Regel von L'Hospital gelöst werden. +\textbf{Beispiel:} $\mathop {\lim }\limits_{x \to 2} {\frac{x^2+x-6}{x^2-3x+2}}$ wird hier nun die $2$ eingesetzt, so ergibt sich: + +$\mathop {\lim }\limits_{x \to 2} {\frac{2^2+2-6}{2^2-3\cdot 2+2}} = \mathop {\lim }\limits_{x \to 2} {\frac{4+2-6}{4-6+2}} = \frac{0}{0}$. Da das Ergebnis $\frac{0}{0}$ beträgt wird nun die Regel von L'Hospital angewandt. Hierzu werden der Zähler und der Nenner separat differenziert. Somit ergibt sich $\mathop {\lim }\limits_{x \to 2} {\frac{2x+1}{2x-3}}=\frac{5}{1}=5$. + +\begin{description} +\item [3.]\tikz[na]\node [coordinate] (n3) {}; $0\cdot \infty$ \qquad \tikz[na]\node [coordinate] (n31){}; Bruch vorhanden: $\mathop {\lim }\limits_{x \to \infty } \frac{1}{x}\ln \left( x \right)=\mathop {\lim }\limits_{x \to \infty } \frac{\ln \left( x \right)}{x}$ + + +\hspace{1.35cm} \tikz[na]\node [coordinate] (n32){}; sonst: $\mathop {\lim }\limits_{x \to {0^ + }} x \cdot \ln \left( x \right)=\mathop {\lim }\limits_{x \to {0^ + }} \frac{\ln \left( x \right)}{\frac{1}{x}}$ +%\begin{description} + %\item[] + +% \item[] +%\end{description} +\end{description} + + +\begin{description} + \item [4.]\tikz[na]\node [coordinate] (n41) {};$0^0$\tikz[na]\node [coordinate] (n4) {}; + \item [5.]\tikz[na]\node [coordinate] (n51) {};$\infty^0$\tikz[na]\node [coordinate] (n5) {}; + + + %$\mathop {\lim }\limits_{x \to {0^ + }} x \cdot \ln \left( x \right)=\mathop {\lim }\limits_{x \to {0^ + }} \frac{\ln \left( x \right)}{\frac{1}{x}}$ + \item [6.]\tikz[na]\node [coordinate] (n61) {};$1^\infty$\tikz[na]\node [coordinate] (n6) {}; + \item [7.]\tikz[na]\node [coordinate] (n7){};$\infty-\infty$ Bruch vorhanden: Hauptnenner bilden + + $\sqrt[2]{\ldots} a-b=\frac{a^2-b^2}{a+b} $ + + $\sqrt[3]{\ldots} a-b =\frac{a^3-b^3}{a^2+ab+b^2}$ +\end{description} + + +\begin{tikzpicture}[overlay] +%\node [xshift=0cm,yshift=0cm] at (current page.south west) +%{ +\path[-latex, color=blue!40, line width=0.5mm, opacity=0.5] (n3) edge [bend left=70] (n1); +\path[-latex, color=red!40, line width=0.5mm, opacity=0.5] (n3) edge [bend left=60] (n2); + +\path[-latex, color=green!40!black, line width=0.25mm, opacity=0.5] (n3) edge [bend right=20] (n31); + +\path[-latex, color=green!80!black, line width=0.25mm, opacity=0.5] (n3) edge [bend left=20] (n32); + +\path[-latex, color=red!80!black, line width=0.25mm, opacity=0.5] (n41) edge [bend left=70] (n3); + +\path[-latex, color=red!60!black, line width=0.25mm, opacity=0.5] (n51) edge [bend left=70] (n3); + +\path[-latex, color=red!40!black, line width=0.25mm, opacity=0.5] (n61) edge [bend left=70] (n3); +%\path (n6) -| node[coordinate] (n4) {} (n1); +%\draw[thick,decorate,decoration={brace,amplitude=5pt}] +%(n1) -- (n3); +%\node[right=4pt] at ($(n1)!0.5!(n3)$) {One and two are cool}; + +\node [inner sep=3pt, fit=(n4) (n5) (n6) ] (bracemarks) {}; +\draw[thick,decorate,decoration={brace,amplitude=5pt}] +(bracemarks.north east) -- (bracemarks.south east) node[midway, right=6pt] {$a^b=e^{b\cdot\ln(a)} \Rightarrow \mathop {\lim }\limits_{x \to {0^ + }} {x^{\tikz\node[draw,shape=circle,anchor=base, color=red] {$2x$} ;}} = \mathop {\lim }\limits_{x \to {0^ + }} {e^{2x \cdot \ln \left( x \right)}}$}; +%} +\end{tikzpicture} + +\pagebreak +\subsubsection{Beispiele zu $\frac{0}{0}$ und $\frac{\infty}{\infty}$} + + +\begin{enumerate} +\item $\mathop {\lim }\limits_{x \to 2} {\frac{x^3-6x^2+12x-8}{x^2-4x+4}}=\frac{0}{0}$ Anwenden der Regel von L'Hospital. + +$\mathop {\lim }\limits_{x \to 2} {\frac{3x^2-12x+12}{2x-4}}=\frac{0}{0}$ somit muss hier die L'Hospitalsche Regel noch einmal angewandt werden + +$\mathop {\lim }\limits_{x \to 2} {\frac{6x-12}{2}}=\frac{0}{2} = \underline{\underline{0}}$ + +\item $\mathop {\lim }\limits_{x \to \infty}\frac{-2x^3+3x-1}{4\sqrt{5}+x^2+1}$ +\marginpar{In der Unendlichkeit überleben immer nur die stärksten Terme} + +Ausklammern der höchsten (des am stärksten wachsenden Term) Potenz in Nenner und Zähler. Die beiden höchsten Potenzen sind hier $x^3$ und $x^{\frac{5}{2}}$. Die am stärksten wachsende ist in diesem Fall $x^3$. + +Somit $\mathop {\lim }\limits_{x \to \infty}\frac{x^3\left(-2+\frac{3}{x^2}-\frac{1}{x^3}\right)}{{x^3}\left( {4{x^{ - \frac{1}{2}}} + \frac{1}{x} + \frac{1}{{{x^3}}}} \right)}=\mathop {\lim }\limits_{x \to \infty}\frac{x^3\left(-2+\frac{3}{x^2}-\frac{1}{x^3}\right)}{{x^3}\left( {{\frac{4}{{{x^{\frac{1}{2}}}}}} + \frac{1}{x} + \frac{1}{{{x^3}}}} \right)} $\marginpar{$\frac{a^m}{a^n}=a^{m-n}$} +Alle Terme in der eine Konstante durch $x$ geteilt wird gehen nach $0$. Somit +$\mathop {\lim }\limits_{x \to \infty}\frac{x^3\left(-2+\cccancelto[red]{\frac{3}{x^2}}{0}-\cccancelto[red]{\frac{1}{x^3}}{0}\right)}{{x^3}\left( \bccancelto[orange]{\frac{ 4 }{x^{\frac{1}{2}}}}{0} + \bccancelto[orange]{\frac{1}{x}}{0} + \bccancelto[orange]{\frac{1}{x^3}}{0} \right)}$ + +Als Ergebnis erhält man hier $\frac{-2}{0}$ was in diesem Fall bedeutet das das Ergebnis nach unendlich geht, hier ist es $-\infty$ + +\item $\mathop {\lim }\limits_{x \to 0} \frac{{1 - \cos \left( {{x^3}} \right)}}{{4{x^6}}}$ wird die $0$ eingesetzt so ergibt sich ein $\frac{0}{0}$ Ergebnis: + + +$\mathop {\lim }\limits_{x \to 0} \frac{{1 - \cos \left( {{0^3}} \right)}}{{4 \cdot {0^6}}} = \frac{{1 - 1}}{0} = \frac{0}{0}$ + +Anwendung von L'Hospital: \marginpar{Kettenregel: + +$f\left( x \right) = g\left( {h\left( x \right)} \right) \to f'\left( x \right) = g'\left(h\left( x \right) \right) \cdot h'\left( x \right)$ } + +$\mathop {\lim }\limits_{x \to 0} \frac{{\sin \left( {{x^3}} \right) \cdot \cccancelto[blue]{3}{}{\cccancelto[red]{x^2}{}}}}{\bccancelto[blue]{24}{8} \cdot {x^{\bccancelto[red]{5}{3}}}} = \mathop {\lim }\limits_{x \to 0} \frac{{\sin \left( {{x^3}} \right)}}{{8{x^3}}}$ + +Dies ergibt wieder $\frac{0}{0} \rightarrow \sin(0) = 0$ und $8\cdot 0^3 = 0$ somit wird wieder differenziert: + +$\mathop {\lim }\limits_{x \to 0} \frac{\cos \left( x^3 \right) \cdot \cccancelto[green!50!black]{3}{}\cccancelto[orange]{x^2}{}}{\bccancelto[green!50!black]{24}{8}\bccancelto[orange]{x^2}{}}=\frac{1}{8}$ + +\item \marginpar{\[\frac{0}{{\sqrt {16} - 4}} = \frac{0}{0}\]}$\lim \limits_{x \to 4^-}\frac{\sqrt{4-x}}{\sqrt{12+x}-4} = \lim \limits_{x \to 4^-} \frac{{{{\left( {4 - x} \right)}^{\frac{1}{2}}}}}{{{{\left( {12 + x} \right)}^{\frac{1}{2}}} - 4}}$ + +Nach dieser Umstellung kann man die L'Hospitalsche Regel anwenden: + +Somit: $\mathop {\lim }\limits_{x \to 4^-}\frac{{\frac{1}{2}{{\left( {4 - x} \right)}^{ - \frac{1}{2}}} \cdot - 1}}{{\frac{1}{2}{{\left( {12 + x} \right)}^{ - \frac{1}{2}}}}} = \mathop {\lim }\limits_{x \to 4^-}\frac{{ - \frac{1}{2}{{\left( {4 - x} \right)}^{ - \frac{1}{2}}}}}{{\frac{1}{2}{{\left( {12 + x} \right)}^{ - \frac{1}{2}}}}} = \mathop {\lim }\limits_{x \to 4^-}\frac{{\frac{1}{2}{{\left( {12 + x} \right)}^{\frac{1}{2}}}}}{{ - \frac{1}{2}{{\left( {4 - x} \right)}^{\frac{1}{2}}}}} = \mathop {\lim }\limits_{x \to 4^-}\frac{{\cccancelto[black]{\frac{1}{2}}{}{{\left( {12 + x} \right)}^{\frac{1}{2}}}}}{{ - \bccancelto[black]{\frac{1}{2}}{}{{\left( {4 - x} \right)}^{\frac{1}{2}}}}}$ + + +$ = - \frac{{{{\left( {12 + x} \right)}^{\frac{1}{2}}}}}{{{{\left( {4 - x} \right)}^{\frac{1}{2}}}}} = \frac{-4}{0}$ + +Die Division durch $0$ bedeutet in diesem Fall das das Ergebnis gegen unendlich geht, hier $-\infty$. + +\item $\mathop {\lim }\limits_{x \to 0}\frac{e^x-2x-e^{-x}}{x-\sin{x}}$ + +\marginpar{Man kann die Regel solange anwenden, solange sich Änderungen ergeben, wen nicht sollte man ausklammern etc... ausprobieren}Einsetzen der $0$ ergibt +$\frac{{{e^0} - 2 \cdot 0 - {e^{ - 0}}}}{{0 - 0}} = \frac{0}{0}$ +Somit muss wieder L'Hospital angewandt werden: + +Ableiten von Nenner und Zähler: $\mathop {\lim }\limits_{x \to 0}\frac{e^x-2+e^{-x}}{1-\cos{x}}$ + +Einsetzen von $0$ ergibt: $\frac{{{e^0} - 2 + {e^{ - 0}}}}{{1 - \cos (0)}} = \frac{{1 - 2 + 1}}{{1 - 1}} = \frac{0}{0}$ + +Da noch immer keine Lösung erhalten wurde, wird nun wieder differenziert: + +$\mathop {\lim }\limits_{x \to 0}\frac{e^x-2+e^{-x}}{1-\cos{x}}=\mathop{\lim }\limits_{x \to 0}\frac{e^x - e^{ - x}}{\sin (x)}$ + +Und wieder: + +$\mathop {\lim }\limits_{x \to 0} \frac{{{e^x} + {e^{ - x}}}}{{\cos (x)}} = \frac{2}{1} = 2$ + +\item $\mathop {\lim }\limits_{x \to \infty } \frac{{{2^x} - {2^{ - x}}}}{{{2^x} + {2^{ - x}}}}$ + +Hier wird ist nun ein Fall bei der die Regel von L'Hospital zwar zur Anwendung kommen kann, jedoch nichts bewirkt. + +$\mathop {\lim }\limits_{x \to \infty } \frac{2^x - 2^{ - x}}{2^x + 2^{ - x}}=\mathop { \lim }\limits_{ x\to \infty }\frac { 2^{ x }\ln { ( } 2)-\left( -\ln { ( } 2)\cdot 2^{ -x } \right) }{ { 2 }^x\ln(2)-2^{-x}\ln(2) } =\mathop { \lim }\limits_{ x\to \infty }\frac { 2^{ x }\ln { \left(2\right)} +\ln { \left(2\right)}\cdot 2^{ -x } }{ { 2 }^{ x }\ln { \left(2\right)}-2^{ -x }\ln { \left(2\right)} } \\=\mathop {\lim }\limits_{ x\to \infty }\frac { \ln { \left( 2 \right) } \left( 2^{ x }+2^{ -x } \right) }{ \ln { \left( 2 \right) } \left( { 2 }^{ x }-2^{ -x } \right) } =\mathop {\lim }\limits_{ x\to \infty }\frac { \left( 2^{ x }+2^{ -x } \right) }{\left( { 2 }^{ x }-2^{ -x } \right) } $ + +Beim nächsten Differenzieren würde sich wiederum nur das Operationszeichen umkehren, also + wird wieder - etc. In diesem Fall wird ausgeklammert: + +$ = \mathop {\lim }\limits_{x \to \infty } \frac{{\cccancelto[red]{\ln (2)}{}\left( {{2^x} + {2^{ - x}}} \right)}}{{\bccancelto[red]{\ln (2)}{}\left( {{2^x} - {2^{ - x}}} \right)}} = \mathop {\lim }\limits_{x \to \infty } \frac{{\left( {{2^x} + {2^{ - x}}} \right)}}{{\left( {{2^x} - {2^{ - x}}} \right)}} $ + +Nun wird $2^x$ ausgeklammert. + + +Es gilt $\frac{{{a^m}}}{{{a^n}}} = {a^{m - n}} \Rightarrow \frac{{{2^{ - x}}}}{{{2^x}}} = {2^{ - x - x}} = {2^{ - 2x}}$ + +und somit: + +$ = \mathop {\lim }\limits_{x \to \infty } \frac{{{2^x}\left( {1 + {2^{ - 2x}}} \right)}}{{{2^x}\left( {1 - {2^{ - 2x}}} \right)}} = \mathop {\lim }\limits_{x \to \infty } \frac{1 + \cccancelto[blue]{2^{ - 2x}}{0}}{1 - \bccancelto[blue]{2^{ - 2x}}{0}}=\frac{1}{1}=1$ + +\end{enumerate} + +\pagebreak + + + + + + +%}\frac{\left(4-x\right)^{-\frac{1}{2}}}{\left(12+x\right)^{-\frac{1}{2}}}} = \lim \limits_{x \to 4^-}\frac{{{{\left( {12 + x} \right)}^{\frac{1}{2}}}}}{{{{\left( {4 - x} \right)}^{\frac{1}{2}}}}}$ \marginpar{wieder Anwendung der Kettenregel} +%fsdfsdfsdfsd +%\marginpar{ +%\begin{wrapfigure}{l}{} +%\centering +%\resizebox{!}{.99\marginparwidth}{\input{gnuplot04.gp}} +%\caption{$\frac{\sqrt{4-x}}{\sqrt{12+x}-4}$}% +%\end{wrapfigure} +%} + + + + + +%$\left\{ +%\begin{tabular}{p{.8\textwidth}} +%\begin{itemize} +%\item Second line +%\item Third line, which is quite long and seemingly tedious in the extreme +%\item Fourth line, which isn't as long as the third +%\end{itemize} +%\end{tabular} +%\right.$ + +%$\xlimes{ 2 }{ \frac{ x^2 }{ x } }$ + +\subsubsection{Beispiele zu $0\cdot\infty$} + +\begin{enumerate} +\item $\mathop {\lim }\limits_{x \to \infty } \frac{1}{x}\ln \left( {2x} \right)$ + +Hier tritt beim Einsetzen von $\infty$ geht $\frac{1}{\infty}$ gegen $0$ und $\ln\left(2x\right)$ gegen $\infty$. + +Umwandeln der Funktion zu einem Bruch, damit man den Fall $\frac{\infty}{\infty}$ bzw. $\frac{0}{0}$ erhält und somit die Regel von L'Hospital anwenden kann. Somit +\marginpar{$f(x)=\ln{x}$ + +$f'(x)=\frac{1}{x}$} +$\mathop {\lim }\limits_{x \to \infty } \frac{\ln \left( 2x\right)}{x}\Rightarrow \frac{\infty}{\infty}\Rightarrow \mathop {\lim }\limits_{x\to \infty }\frac { \frac { 1 }{ \cccancelto[red]{2}{}x } \cccancelto[red]{2}{} }{ 1 } = \mathop {\lim }\limits_{x \to \infty } \frac{1}{x} = 0 $ + + +\item $\mathop {\lim }\limits_{ x\to { 0 }^{ + } }x\cdot \ln { \left( 2x \right) } $ + +Hier ist $x=0$ und $\ln{\left(2\cdot 0^+\right)} = -\infty$ \marginpar{siehe wichtige Grenzwerte\ref{lbl:MerkblattGrenzwert}} + +$\mathop {\lim }\limits_{ x\to { 0 }^{ + } }\frac { \ln { \left( 2x \right) } }{ \frac { 1 }{ x } } = \frac{\infty}{\infty} \Rightarrow $\marginpar{$\frac{1}{x}=x^{-1}=-x^{-2}=-\frac{1}{x2}$} $\frac{\frac{1}{\cccancelto[red]{2}{}x}\cccancelto[red]{2}{}}{-\frac{1}{x^2}}=\frac{x^2}{-x}=x=0$ + +\marginpar{$\frac{1}{\frac{1}{x}}=\frac{1}{x^{-1}}$} +\item $\mathop {\lim }\limits_{x\to\infty}X^3\cdot e^{-2x}\Rightarrow $ \marginpar{$\infty^3=\infty$ und $e^{-2\infty}=0$} + + Da: $e^{-2x}=\frac{1}{e^{2x}}\Rightarrow \mathop {\lim }\limits_{x\to\infty}\frac{x^3}{e^{2x}}=\mathop {\lim }\limits_{x\to\infty}\frac{3x^2}{e^{2x}}\Rightarrow \frac{\infty}{\infty}\Rightarrow \mathop {\lim }\limits_{x\to\infty}\frac{6x}{2e^{2x}}= \mathop {\lim }\limits_{x\to\infty}\frac{6}{8e^{2x}}=0$ \marginpar{$\frac{6}{8e^{2\cdot\infty}}=0$} + + +\end{enumerate} + +\subsubsection{Beispiele zu $0^0$, $\infty^0$ und $1^\infty$} + +\begin{description} + +\item[1.] $\mathop {\lim }\limits_{x\to 0^{+}} \tikz[na]\node [coordinate, xshift=1mm,yshift=1mm] (n11){}; x^{-3 \tikz[na]\node [coordinate,yshift=1mm] (n21) {};x}=$ $0^{-3\cdot 0}\Rightarrow 0^0$ Umformen durch das Hinzufügen der Eulerschen Zahl $e$ als Basis, der alte Exponent hier $-\tikz[na]\node [coordinate, xshift=1mm,yshift=1mm] (n22) {}; 3x$ bleibt und wird um den natürlichen Logarithmus der eigentlichen Basis ($\tikz[na]\node [coordinate, xshift=1mm,yshift=1mm] (n12) {}; x$) erweitert: + + $\mathop {\lim }\limits_{x\to 0^+}e^{-\tikz[na]\node [coordinate, xshift=1mm,yshift=-1mm] (n23) {};3x\ln\left(\tikz[na]\node [coordinate,yshift=-1mm] (n13) {}; x\right)}$ + + Jetzt nur der Exponent betrachtet: + +\begin{equation*}\mathop{\lim }\limits_{ x\to 0^+ } x\cdot \left(\ln\left(\tikz[na]\node [coordinate,yshift=-2mm, xshift=-1mm] (n31) {};x\right)\right)\Rightarrow 0 \cdot \infty \Rightarrow \mathop{\lim }\limits_{ x\to 0^+ } \frac{\ln\left(x\right)}{\frac{1}{x}} \mathop \Rightarrow \limits^{\frac{\infty }{\infty }} \mathop = \limits^{L'H} \mathop{\lim }\limits_{ x\to 0^+ }\frac{\frac{1}{x}}{-\frac{1}{x^2}}=-\frac{x^{\cccancelto[red]{2}{}}}{\cccancelto[red]{x}{}}=x= {\color{red}\tikz[na]\node [coordinate, xshift=1mm,yshift=2mm] (n32) {};0} +\end{equation*}%\tikz[baseline, remember picture ]{\node[fill=blue!20,anchor=base] (t1) {$0$};} + + + \vspace{5mm} + + Nun wird dieses Ergebnis in die Ausgangs-Exponentialgleichung eingesetzt: + + \begin{equation*} + \mathop {\lim }\limits_{x \to {0^ + }} e^{-3 {\color{red}\ln\tikz[na]\node [coordinate, yshift=1.5mm] (n33) {};\left(x\right)}} = e^{-3 \cdot {\color{red}\tikz[na]\node [coordinate, yshift=1mm] (n34) {};0}} = e^0 = 1 +\end{equation*} + +\item[2.] $\mathop {\lim }\limits_{x \to 0 + } \sin {\left( x \right)^{\frac{1}{{\ln \left( x \right)}}}}\Rightarrow \sin + \left( + 0 + \right)=0 \text{ und } \frac{1}{\ln + \left( + 0^+ + \right)}=\frac{1}{-\infty}=0$ + +$\mathop {\lim }\limits_{x \to 0 + } e^{\frac{1}{\ln\left(x\right)}\cdot \ln\left(\sin\left(x\right)\right)}=\mathop {\lim }\limits_{x \to 0 + } e^{\frac{\ln + \left( + \sin + \left( + x + \right) + \right)}{\ln + \left( + x + \right)}}$ +\marginpar{Man kann einzelne Teile aus dem kritischen Fall $\frac{0}{0}$ rauslösen, wenn man erstens nichts verändert und man zweitens keinen neuen kritischen Fall erzeugt. Da hier der $\cos\left(0\right)=1$ ist, kann dieser rausgelöst werden. } + +\textbf{Nebenrechnung}: +$\mathop {\lim }\limits_{x \to 0 + }\frac{\ln + \left( + \sin + \left( + x + \right) + \right)}{\ln + \left( + x + \right)}=\mathop {\lim }\limits_{x \to 0 + }\frac{\frac{1}{\sin + \left( + x + \right)}\cdot\cos + \left( + x + \right)}{\frac{1}{x}}=\frac{\frac{\cos + \left( + x + \right)}{\sin + \left( + x + \right)}}{\frac{1}{x}}=\frac{x\cdot \cos\left(x\right)}{\sin\left(x\right)}$ + + +$\underbrace {\mathop {\lim }\limits_{x \to 0 + }\cos +\left( + x +\right)}_{=1}\cdot\mathop {\lim }\limits_{x \to 0 + }\frac{x}{\sin + \left( + x + \right)}\mathop = \limits^{\frac{0}{0}}=\mathop {\lim }\limits_{x \to 0 + }\frac{1}{\cos + \left( + x + \right)}=1$ + +Dieses Ergebnis wird nun wieder in die umgeformte Ausgangsgleichung eingesetzt: + +$\mathop {\lim }\limits_{x \to 0 + } e^{\frac{\ln + \left( + \sin + \left( + x + \right) + \right)}{\ln + \left( + x + \right)}}=e^1=\underline{\underline{e}}$ + + + +\end{description} + +\begin{tikzpicture}[overlay] +\path[-latex, color=blue!40, line width=0.5mm, opacity=0.5] (n11) edge [bend left=70] (n12); +\path[-latex, color=red!40, line width=0.5mm, opacity=0.5] (n21) edge [bend left=70] (n22); +\path[-latex, color=red!40, line width=0.5mm, opacity=0.5] (n22) edge [bend left=70] (n23); +\path[-latex, color=blue!40, line width=0.5mm, opacity=0.5] (n12) edge [bend left=70] (n13); + +\path[-latex, color=red!80, line width=0.2mm, opacity=0.5](n31) edge [bend right] (n33); +\path[-latex, color=red!80, line width=0.2mm, opacity=0.5] (n32) edge [bend angle =-45, bend left] (n34); +\end{tikzpicture} + +\newpage + +\begin{description} +\item[3.] $\mathop {\lim }\limits_{x \to 1} \sqrt[{1 - x}]{x}=\mathop {\lim }\limits_{x \to 1}x^{\frac{1}{1-x}}=\mathop {\lim }\limits_{x \to 1}e^{\frac{1}{1-x}\cdot \ln\left(x\right)}=e^{-\tikz[na]\node [coordinate, yshift=1mm] (n42) {};1}$ + + +\textbf{Nebenrechnung:} $\mathop {\lim }\limits_{x \to 1}\frac{\ln + \left( + x + \right)}{1-x}= \mathop = \limits^{\frac{\infty }{\infty }} = \mathop {\lim }\limits_{x \to 1} \frac{\frac{1}{x}}{-1}=-\tikz[na]\node [coordinate, yshift=1.5mm] (n41) {};1$ + +\item[4.]\marginpar{\raggedright{\color{red}$\frac{1}{x} = {x^{ - 1}} \left( {{x^{ - 1}}} \right)' = - {x^{ - 2}} = - \frac{1}{{{x^2}}}$ + + \color{blue}$1+\frac{a}{x}=\left(1+ax^{-1}\right)'=-ax^{-2}=-\frac{a}{x^2} $} + } + + $\mathop {\lim }\limits_{x \to \infty}\left(1+\frac{a}{x}\right)^x =\mathop {\lim }\limits_{x \to \infty}e^{x\cdot\ln\left(1+\frac{a}{x}\right)}=e^{\tikz[na]\node [coordinate, xshift=1mm, yshift=1mm] (n52){};a}$ + + \textbf{Nebenrechnung:} $\mathop {\lim }\limits_{x \to \infty}x\cdot\ln + \left( + 1+\frac{a}{x} + \right)=\mathop {\lim }\limits_{x \to \infty } \frac{{1 + \frac{a}{x}}}{{\frac{1}{x}}} = \mathop {\lim }\limits_{x \to \infty } \frac{{\frac{1}{{1 + \frac{a}{}}} \cdot \left( { - \frac{a}{{{x^2}}}} \right)}}{{ - \frac{1}{{{x^2}}}}} = \mathop {\lim }\limits_{x \to \infty } \frac{{ - \frac{a}{{{x^2} \cdot 1 + \frac{a}{x}}}}}{{ - \frac{1}{{{x^2}}}}} = \mathop {\lim }\limits_{x \to \infty } - \frac{a}{\cccancelto[red]{x^2}{} \cdot 1 + \frac{a}{x}} \cdot -\cccancelto[red]{x^2}{} = \mathop {\lim }\limits_{x \to \infty } \frac{a}{{1 + \frac{a}{x}}}$ Einsetzen von $\infty$ in $x$ $\frac{a}{{1 + \frac{a}{\infty }}} = \frac{a}{{1 + 0}} = \tikz[na]\node [coordinate, yshift=1.5mm,xshift=1mm] (n51){};a$ + +\item[5.] $\mathop {\lim }\limits_{x \to \infty } + \left(10+x\right)^{\frac{2}{x}}=\mathop {\lim }\limits_{x \to \infty } e^{\frac{2}{x}\cdot\ln\left(10+x\right)}=e^0=1$ + + \textbf{Nebenrechnung:} $\mathop {\lim }\limits_{x \to \infty }\frac{2\cdot + \ln\left( + 10+x + \right)}{x}=\frac{2\cdot\frac{1}{10+x}\cdot 1}{1}=\frac{\frac{2}{10+x}}{1}=\frac{2\cdot\frac{1}{\infty}}{1}=\frac{0}{1}=0$ + +\item[6.]$\mathop {\lim }\limits_{x \to \infty } \left( e^{5x}-4x \right)^{\frac{1}{x}}=\mathop {\lim }\limits_{x \to \infty }e^{\frac{1}{x}\ln\left(e^{5x}-4x\right)} = e^{\textbf{\textcolor{orange}{5}}}$ + + +Nebenrechnung: $\mathop {\lim }\limits_{x \to \infty }\frac{1}{x}\ln\left(e^{5x}-4x\right)=\mathop {\lim }\limits_{x \to \infty }\frac{\ln\left(e^{5x}-4x\right)}{x}=\mathop {\lim }\limits_{x \to \infty }\frac{1}{e^{5x}-4x}\cdot 5e^{5x}-4=\mathop {\lim }\limits_{x \to \infty}\frac{5e^{5x}-4}{e^{5x}-4x}=\mathop {\lim }\limits_{x \to \infty}{\frac{25e^{5x}}{5e^{5x}-4}}=\frac{125e^{5x}}{25e^{5x}}=\textbf{\textcolor{orange}{5}}$ + +\end{description} + + + +\begin{tikzpicture}[overlay] +\path[-latex, color=green!40!black, line width=0.5mm, opacity=0.5] (n41) edge [bend left=-70] (n42); +\path[-latex, color=yellow!40!black, line width=0.5mm, opacity=0.5] (n51) edge [bend left=-50] (n52); +\end{tikzpicture} + +\subsubsection{Beispiele zu $\infty - \infty$} + +\begin{enumerate} + \marginpar{Im ersten Term wird im Zähler die 0 postiv, da $1^+$ und somit geht der Term gegen $\infty$}\item $\mathop {\lim }\limits_{x \to 1^+}\frac{1}{x-1}-\frac{1}{\ln\left(x\right)}$ + + Bilden eines Hauptnenners: $\frac{\ln\left(x\right)-\left(x-1\right)}{\left(x-1\right)\ln\left(x\right)}$ Dadurch entsteht der Fall $\frac{0}{0}$ + + +\marginpar{$\left(u\cdot v\right)'=u'\cdot v+u\cdot v'$}$\mathop {\lim }\limits_{x \to 1^+}\frac{\ln\left(x\right)-\left(x-1\right)}{\left(x-1\right)\ln\left(x\right)}=\mathop {\lim }\limits_{x \to 1^+}\frac{\frac{1}{x}-1}{1\cdot\ln\left(x\right)+\left(x-1\right)\cdot\frac{1}{x}}=\mathop {\lim }\limits_{x \to 1^+}\frac{-\frac{1}{x^2}}{\frac{1}{x} + \left( { - \frac{1}{{{x^2}}}} \right)\left( {x - 1} \right) + \frac{1}{x}}$ + +Einsetzen der $1$ + +$\frac{-1}{1-1\cdot 0 +1}=-\frac{1}{2}$ + +\marginpar{Über dritte binomische Formel: $a-b=\frac{a^2-b^2}{a+b}$ also $\left(a-b\right)\left(a+b\right)=a^2-b^2$} +\item $\mathop {\lim }\limits_{x \to \infty} x-\sqrt{x^2+1}=\mathop {\lim }\limits_{x \to \infty}\underbrace x_{\textcolor{red}{a}} - \underbrace {\sqrt {{x^2} - 1} }_{\textcolor{red}{b}}=\mathop {\lim }\limits_{x \to \infty}\frac{x^2-\left(x^2+1\right)}{x+\sqrt{x^2+1}}=\mathop {\lim }\limits_{x \to \infty}\frac{x^2-\left(x^2+1\right)}{x+\sqrt{x^2-1}}=\mathop {\lim }\limits_{x \to \infty}\frac{-1}{x+\sqrt{x^2-1}}=-\frac{1}{\infty}=0$ + +\item \marginpar{Zum Auflösen der Wurzel $a - b = \frac{{{a^3} - {b^3}}}{{{a^2} + ab + {b^3}}}$}$\mathop {\lim }\limits_{x \to \infty } x - \sqrt[3]{{{x^3} - {x^2}}}=\mathop {\lim }\limits_{x \to \infty } \underbrace x_a - \underbrace {\sqrt[3]{{{x^3} - {x^2}}}}_b=\mathop {\lim }\limits_{x \to \infty }\frac{{{x^3} - {{\left( {\sqrt[3]{{{x^3} - {x^2}}}} \right)}^3}}}{{{x^2} + x\left( {\sqrt[3]{{{x^3} - {x^2}}}} \right) + {{\left( {\sqrt[3]{{{x^3} - {x^2}}}} \right)}^2}}} =\mathop {\lim }\limits_{x \to \infty }\frac{{{x^3} - \left( {{x^3} - {x^2}} \right)}}{{{x^2} + x\left( {\sqrt[3]{{{x^3} - {x^2}}}} \right) + {{\left( {\sqrt[3]{{{x^3} - {x^2}}}} \right)}^2}}}$ + +Hier muss nun der am stärksten wachsende Term gesucht werden: +Zweiter Term des Nenners: $x\left( \sqrt[3]{x^3 - x^2} \right)$ hier würde beim Einsetzen von $\infty$ der Term $x\left( \sqrt[3]{x^3} \right)$ übrig, welcher sich dann wiederum auf $x\cdot x$ also $x^2$ reduziert. + +Der dritte Term ${{{\left( {\sqrt[3]{{{x^3} - {x^2}}}} \right)}^2}}$ reduziert sich bei Betrachtung in der Unendlichkeit auf $\left( \sqrt[3]{x^3} \right)^2$. Da die dritte Wurzel aus $x^3 = x$ ist, bleibt $x^2$ übrig. Somit wachsen alle Terme im Nenner so schnell wie $x^2$. + +Im Zähler bleibt da $x^3 - \left( x^3 - x^2 \right)$ nur $-x^2$ übrig, so also auch hier wächst alles so schnell wie $x^2$. + +Das bedeutet das man jetzt den Faktor $x^2$ ausklammert: + +\begin{itemize} + \item Term 2 des Nenners: + $\frac{x\left(\sqrt[3]{x^3 - x^2} \right)}{x^2} = \frac{\sqrt[3]{x^3 - x^2}}{x}$ + + Um nun die Nenner $x$ in die Wurzel zu bekommen muss dieser hoch 3 genommen werden, somit ergibt sich $\frac{\sqrt[3]{x^3 - x^2}}{x^3} = \sqrt[3]{\frac{x^3 - x^2}{x^3}}$ + + Nebenrechnung: $\frac{x^3 - x^2}{x^3} = \frac{x^2\left( x - 1 \right)}{x^2 \cdot x} = \frac{x - 1}{x} = 1 - \frac{1}{x}$ + + $=\sqrt[3]{1 - \frac{1}{x}}$ + + \item Term 3 des Nenners: $\frac{\left( \sqrt[3]{x^3 - x^2} \right)^2}{x^2} = {\left( {\frac{{\sqrt[3]{{{x^3} - {x^2}}}}}{x}} \right)^2} = {\left( {\sqrt[3]{{\frac{{{x^3} - {x^2}}}{{{x^3}}}}}} \right)^2} = {\left( {\sqrt[3]{{1 - \frac{1}{x}}}} \right)^2}$ + +\end{itemize} + +Die nun in die Ausgangsfunktion eimsetzen: + +$\mathop {\lim }\limits_{x \to \infty} \frac{x^2}{x^2\left(1+\sqrt[3]{1+\frac{1}{x}}+\left(\sqrt[3]{1+\frac{1}{x}}\right)^2\right)}=\mathop {\lim }\limits_{x \to \infty} \frac{1}{1+\sqrt[3]{1-\frac{1}{x}}+\left(\sqrt[3]{1-\frac{1}{x}}\right)^2}$ + +Da sich im Zähler nun kein $x$ mehr befindet, wird jetzt im Nenner $\infty$ eingesetzt. Alle $\frac{1}{x}$ werden $0$. Somit $\frac{1}{1+1+1}=\frac{1}{3}$ + +\end{enumerate} + + %\includegraphics[scale=0.45]{gnuplot08a.png} + +%\begin{pycode} +%print ('Hello, \LaTeX') +%\end{pycode} + +%https://www.studimup.de/abitur/analysis/grenzwerte/ diff --git a/limit01a.pgf b/limit01a.pgf new file mode 100644 index 0000000..8d739fc --- /dev/null +++ b/limit01a.pgf @@ -0,0 +1,52 @@ +\begin{tikzpicture}[scale=0.7] + +\pgfplotsset{compat=1.11} + +\definecolor{FireBrick}{rgb}{0.7, 0.13, 0.13} + +\definecolor{NewBlue}{rgb}{0.27, 0.45, 0.76} + +\tikzfading[name=arrowfading, top color=transparent!0, bottom color=transparent!95] +\tikzset{arrowfill/.style={#1,general shadow={fill=black, shadow yshift=-0.8ex, path fading=arrowfading}}} +\tikzset{arrowstyle/.style n args={3}{draw=#2,arrowfill={#3}, single arrow,minimum height=#1, single arrow, + single arrow head extend=.3cm,}} + +%\NewDocumentCommand{\tikzfancyarrow}{O{2cm} O{FireBrick} O{top color=orange!20!red, bottom color=red} m}{ +%\tikz[baseline=-0.5ex]\node [arrowstyle={#1}{#2}{#3}] {#4}; +%} + + +%\node [ +% fill=blue!50, draw, +% single arrow, single arrow head indent=0ex, +% rotate=0, +% font=\sffamily +%] at (1,1.5) +%{\rotatebox{0}{ \qquad}}; + + +%\draw[color=gray!10,step=2mm,help lines] (-0.7,0) grid (72mm,58mm); +%\draw[color=gray!70,step=10mm,xshift=4mm,yshift=-1mm] (-0.5,0) grid (70mm,60mm); +\begin{axis}[ +x=1cm,y=1cm, +axis x line=center, +axis y line=center, +%axis lines=middle, +ymajorgrids=true, +xmajorgrids=true, +xmin=-5, +xmax=5, +ymin=-6, +ymax=5, +xtick={-4,-3,...,4}, +ytick={-5,-4,...,4},] +\addplot [mark=none,domain=-4.8:-1.05, color=NewBlue, line width=0.5mm,step=10000, smooth, tension=0.2] {1/(x^2-1)}; +\addplot [mark=none,domain=-0.95:0.95, color=NewBlue, line width=0.5mm,step=10000] {1/(x^2-1)}; +\addplot [mark=none,domain=1.05:4.8, color=NewBlue, line width=0.5mm,step=10000] {1/(x^2-1)}; + +%\clip(-17.083986586441775,-20.54798056618339) rectangle (4.103328404466779,7.349328615703948); +\end{axis} +\draw[-latex,red, line width=0.75mm](6.15,2.5) node[above, right, yshift=0.5mm] {von rechts} -- (4.15,2.5) ; +%\node[] (A) at ( 1,3) {\textbf{$y^2=x^2$}}; + +\end{tikzpicture} \ No newline at end of file diff --git a/limit01b.pgf b/limit01b.pgf new file mode 100644 index 0000000..cfe4228 --- /dev/null +++ b/limit01b.pgf @@ -0,0 +1,72 @@ +%!tikz editor 1.0 +\documentclass{article} +\usepackage{tikz} +\usepackage[graphics, active, tightpage]{preview} +\PreviewEnvironment{tikzpicture} + +%!tikz preamble begin +\usepackage{pgf,tikz,pgfplots} +\usetikzlibrary{fadings,shapes.arrows,shadows} +\usetikzlibrary{arrows.meta} +%!tikz preamble end + + +\begin{document} +%!tikz source begin +\begin{tikzpicture} +\begin{tikzpicture}[scale=0.7] + +\pgfplotsset{compat=1.11} + +\definecolor{FireBrick}{rgb}{0.7, 0.13, 0.13} + +\definecolor{NewBlue}{rgb}{0.27, 0.45, 0.76} + +\tikzfading[name=arrowfading, top color=transparent!0, bottom color=transparent!95] +\tikzset{arrowfill/.style={#1,general shadow={fill=black, shadow yshift=-0.8ex, path fading=arrowfading}}} +\tikzset{arrowstyle/.style n args={3}{draw=#2,arrowfill={#3}, single arrow,minimum height=#1, single arrow, + single arrow head extend=.3cm,}} + +%\NewDocumentCommand{\tikzfancyarrow}{O{2cm} O{FireBrick} O{top color=orange!20!red, bottom color=red} m}{ +%\tikz[baseline=-0.5ex]\node [arrowstyle={#1}{#2}{#3}] {#4}; +%} + + +%\node [ +% fill=blue!50, draw, +% single arrow, single arrow head indent=0ex, +% rotate=0, +% font=\sffamily +%] at (1,1.5) +%{\rotatebox{0}{ \qquad}}; + + +%\draw[color=gray!10,step=2mm,help lines] (-0.7,0) grid (72mm,58mm); +%\draw[color=gray!70,step=10mm,xshift=4mm,yshift=-1mm] (-0.5,0) grid (70mm,60mm); +\begin{axis}[ +x=1cm,y=1cm, +axis x line=center, +axis y line=center, +%axis lines=middle, +ymajorgrids=true, +xmajorgrids=true, +xmin=-5, +xmax=5, +ymin=-6, +ymax=5, +xtick={-4,-3,...,4}, +ytick={-5,-4,...,4},] +\addplot [mark=none,domain=-4.8:-1.05, color=NewBlue, line width=0.5mm,step=10000, smooth, tension=0.2] {1/(x^2-1)}; +\addplot [mark=none,domain=-0.95:0.95, color=NewBlue, line width=0.5mm,step=10000] {1/(x^2-1)}; +\addplot [mark=none,domain=1.05:4.8, color=NewBlue, line width=0.5mm,step=10000] {1/(x^2-1)}; + +%\clip(-17.083986586441775,-20.54798056618339) rectangle (4.103328404466779,7.349328615703948); +\end{axis} +\draw[-latex,red, line width=0.75mm](3.9,2.5) node[above, left, yshift=0.5mm] {von links} -- (5.9,2.5) ; +%\node[] (A) at ( 1,3) {\textbf{$y^2=x^2$}}; + +\end{tikzpicture} +\end{tikzpicture} +%!tikz source end + +\end{document} \ No newline at end of file diff --git a/main.tex b/main.tex new file mode 100644 index 0000000..3d924cd --- /dev/null +++ b/main.tex @@ -0,0 +1,179 @@ + +%!TEX root=main.tex +%\documentclass{tufte-book} +\documentclass[fleqn, a4paper,12pt]{scrbook} + +%\hypersetup{colorlinks}% uncomment this line if you prefer colored hyperlinks (e.g., for onscreen viewing) + +%% +% Book metadata +\title{Formeln und Notizen} +%\author[]{} +%\publisher{Ich} + +%% +% If they're installed, use Bergamo and Chantilly from www.fontsite.com. +% They're clones of Bembo and Gill Sans, respectively. +%\IfFileExists{bergamo.sty}{\usepackage[osf]{bergamo}}{}% Bembo +%\IfFileExists{chantill.sty}{\usepackage{chantill}}{}% Gill Sans + +\input{definitions.tex} + + +%%% Local Variables: +%%% TeX-master: "master" +%%% End: + + +\begin{document} +\tikzstyle{every picture}+=[remember picture] +% % Front matter +% \frontmatter +% +% % r.1 blank page +% \blankpage +% +% % v.2 epigraphs +% +% +% % r.3 full title page +% \maketitle +% +% +% % v.4 copyright page +% \newpage +% \begin{fullwidth} +% ~\vfill +% \thispagestyle{empty} +% \setlength{\parindent}{0pt} +% \setlength{\parskip}{\baselineskip} +% Copyright \copyright\ \the\year\ \thanklessauthor +% +% \par\smallcaps{Published by \thanklesspublisher} +% +% \par\smallcaps{tufte-latex.googlecode.com} +% +% \par Licensed under the Apache License, Version 2.0 (the ``License''); you may not +% use this file except in compliance with the License. You may obtain a copy +% of the License at \url{http://www.apache.org/licenses/LICENSE-2.0}. Unless +% required by applicable law or agreed to in writing, software distributed +% under the License is distributed on an \smallcaps{``AS IS'' BASIS, WITHOUT +% WARRANTIES OR CONDITIONS OF ANY KIND}, either express or implied. See the +% License for the specific language governing permissions and limitations +% under the License.\index{license} +% +% \par\textit{First printing, \monthyear} +% \end{fullwidth} + + % r.5 contents + + +%\tableofcontents + +%\listoffigures + +% \listoftables + + % r.7 dedication + \cleardoublepage + %~\vfill + %\begin{doublespace} + %\noindent\fontsize{18}{22}\selectfont\itshape + %\nohyphenation + %Dedicated to those who appreciate \LaTeX{} + %and the work of \mbox{Edward R.~Tufte} + %and \mbox{Donald E.~Knuth}. + %\end{doublespace} + %\vfill + %\vfill + + + % r.9 introduction + \cleardoublepage + %\chapter*{Introduction} + % + % + % + %This sample book discusses the design of Edward Tufte's + %books\cite{Tufte2001,Tufte1990,Tufte1997,Tufte2006} + %and the use of the \doccls{tufte-book} and \doccls{tufte-handout} document classes. + % + % + %%% + %% Start the main matter (normal chapters) + \mainmatter + + +% \begin{asydef} +% // Global Asymptote definitions can be put here. +% import three; +% usepackage("bm"); + %texpreamble("\def\V#1{\bm{#1}}"); +% // One can globally override the default toolbar Settings here: +% // settings.toolbar=true; +% \end{asydef} + + + + \chapter{Übersicht über Funktionen} +% \begin{figure} +% \begin{framebox} +% +% \begin{asy} +% label("Hallo Welt"); +% +% unitsize(3cm); +% size(4cm,4cm); +% import graph; +% +% real f(real x) { +% return sqrt(2*x - x^3); +% } +% draw((-4,0) -- (3,0), arrow=Arrow(HookHead)); +% draw((0,-.1) -- (0,2), arrow=Arrow(HookHead)); +% path g = graph(f, -3, 1.4142); +% draw(g); +% \end{asy} +% \end{framebox} +% \end{figure} + +% \input{trigo01.tex} + + \input{folgen01.tex} + + \input{limit01.tex} + + \input{uebungenlimit01.tex} + + %\input{differentialrechnung01.tex} + + \input{pearson_Funktionen_und_ihre_Graphen.tex} + + % \input{integral01.tex} + + %\input{calculus_one.tex} + + % \input{formeln.tex} + + %\input{FHTW.tex} + + %\section{Umrechnung rad - Degree und umgekehrt} + + + %\begin{marginfigure} + + %\input{trigon01.tikz.tex} + + %\end{marginfigure} + + \backmatter + +% \bibliography{sample-handout} +% \bibliographystyle{plainnat} + \bibliographystyle{plain} + \bibliography{formelbib} + + + \printindex + +\end{document} \ No newline at end of file diff --git a/pearson0201.pgf b/pearson0201.pgf new file mode 100644 index 0000000..942ae6f --- /dev/null +++ b/pearson0201.pgf @@ -0,0 +1,46 @@ +\begin{tikzpicture}[scale=0.75] +\pgfplotsset{compat=1.11} + +\definecolor{FireBrick}{rgb}{0.7, 0.13, 0.13} + +\definecolor{NewBlue}{rgb}{0.27, 0.45, 0.76} + +\tikzfading[name=arrowfading, top color=transparent!0, bottom color=transparent!95] +\tikzset{arrowfill/.style={#1,general shadow={fill=black, shadow yshift=-0.8ex, path fading=arrowfading}}} +\tikzset{arrowstyle/.style n args={3}{draw=#2,arrowfill={#3}, single arrow,minimum height=#1, single arrow, + single arrow head extend=.3cm,}} + +%\NewDocumentCommand{\tikzfancyarrow}{O{2cm} O{FireBrick} O{top color=orange!20!red, bottom color=red} m}{ +%\tikz[baseline=-0.5ex]\node [arrowstyle={#1}{#2}{#3}] {#4}; +%} + + +%\node [ +% fill=blue!50, draw, +% single arrow, single arrow head indent=0ex, +% rotate=0, +% font=\sffamily +%] at (1,1.5) +%{\rotatebox{0}{ \qquad}}; + + +%\draw[color=gray!10,step=2mm,help lines] (-0.7,0) grid (72mm,58mm); +%\draw[color=gray!70,step=10mm,xshift=4mm,yshift=-1mm] (-0.5,0) grid (70mm,60mm); +\begin{axis}[ +x=1cm,y=1cm, +axis lines=middle, +ymajorgrids=true, +xmajorgrids=true, +xmin=-5, +xmax=5, +ymin=-5, +ymax=5, +xtick={-5,-4,...,5}, +ytick={-5,-4,...,5},] +%\clip(-17.083986586441775,-20.54798056618339) rectangle (4.103328404466779,7.349328615703948); +\draw [line width=1pt,color=orange,domain=-5:5] plot(\x,{(-0--1*\x)/1}); +\draw [line width=1pt,color=orange,domain=-5:5] plot(\x,{(-0-1*\x)/1}); +\end{axis} + + \node[] (A) at ( 1,3) {\textbf{$y^2=x^2$}}; +\end{tikzpicture} \ No newline at end of file diff --git a/pearsonDW.pgf b/pearsonDW.pgf new file mode 100644 index 0000000..cfc2a8a --- /dev/null +++ b/pearsonDW.pgf @@ -0,0 +1,27 @@ +\begin{tikzpicture}[scale=2] +\definecolor{mycolor1}{rgb}{0.15, 0.47, 0.70} + +%\draw[->] (-1.5,-1.5) -- (2,-1.5) node[right] {$x$}; +%\draw[->] (-1.5,-2.5) -- (-1.5,0.8) node[left]{\footnotesize{$y=f(x)$}}; +%\clip[draw](-1.5,-1) rectangle (1.3,1); +%\clip(-1.5,-1.3) rectangle (1.5,1); +%\begin{axis} [axis lines=center] +\begin{scope} +\draw[scale=0.5,domain=-1.9:1.9,smooth,thick,variable=\x,color=mycolor1] plot ({\x},{0.75*\x^3-2*\x-1.}); +%\plot [domain=-2:2, smooth, thick, color=blue] { x^3 - 2*x }; +\end{scope} +%\end{axis} + +\draw[-latex] (-1.5,-1.5) -- (1.8,-1.5) node[right] {\footnotesize{$x$}}; +\draw[-latex] (-1.5,-1.5) -- (-1.5,0.8) node[left] {\footnotesize{$y=f(x)$}}; + +\draw[color=red] (-2.1,0.17) -- (1.3,0.17); +\draw[color=red] (-2.1,-1.15) -- (1.3,-1.15); + +\draw[latex-latex, color=orange](-1.9,-1.15)--(-1.9,0.17) node[midway,left]{\footnotesize\textbf{{Wertebereich}}}; + +\draw[color=green] (-0.95,0.-1.9) -- (-0.95,-1.14); +\draw[color=green] (0.95,0.-1.9) -- (0.95,0.17); + +\draw[latex-latex,color=green!50!black] (-0.95,-1.8) -- (0.95,-1.8) node[midway, below]{\footnotesize{Definitionsbereich}}; +\end{tikzpicture} diff --git a/pearson_Funktionen_und_ihre_Graphen.tex b/pearson_Funktionen_und_ihre_Graphen.tex new file mode 100644 index 0000000..d9d4f75 --- /dev/null +++ b/pearson_Funktionen_und_ihre_Graphen.tex @@ -0,0 +1,4238 @@ +%!TEX root=main.tex +\newpage +\section{Pearson Analsysis 1} +\subsection{Begriffe} +\subsubsection{Definitionsbereich} + +Seien $\mathbb{D}$ und $\mathbb{W}$ Teilmengen von $\mathbb{R}$. Unter einer reellen Funktion an eine Vorschrift, die jedem Element $x$ aus $\mathbb{D}$ genau ein Element $y=f\left(x\right)$ aus $\mathbb{W}$ zuordnet. Man schreibt +\begin{equation*} + f:\mathbb{D}\rightarrow\mathbb{W} +\end{equation*} + +\begin{center} + \input{pearsonDW.pgf} +\end{center} + + + +Der Definitionsbereich einer Funktion ist diejenige Menge ans $x$-Werten, die man ohne Probleme in die Funktion einsetzen kann, d.h. für die die Funktion definiert ist. Die nicht zulässigen Werte werden Problemstellen genannt und kann man in den nachfolgenden Fällen finden: + +\begin{enumerate} + \item bei Brüchen, indem man dort Nullstellen des Nenners berechnet, denn durch $0$ ist nicht definiert + \item negative Zahl innerhalb einer Wurzel + \item eine Zahl kleiner gleich $0$ im Logarithmus +\end{enumerate} + + +\paragraph{Beispiel 1} Die Funktion $f(x) = e ^ { \frac { 1 } {x}}$ ist für $x=0$ nicht definiert, daher lautet der Definitionsbereich $D=\mathbb{R} \setminus \left\{0\right\}$ + + +\paragraph{Beispiel 2} Der Sinus ist zwar für alle $x\in \mathbb{R}$ definiert: + +$\sin \left( \frac { 2 x } { 3 x ^ { 2 } - 4 } \right)$ + +Allerdings gibt es für $x=\pm\sqrt{\frac{4}{3}}$ eine Null im Quotienten, daher ist der Definitionsbereich $D = \mathbb { R } \backslash \pm \left\{ \sqrt { \frac { 4 } { 3 } } \right\}$. + +\paragraph{Beispiel 3} Im Logarithmus dürfen nur positive Werte stehen. Bei der Funktion $\ln \left( \frac { 1 } { x ^ { 2 } - 1 } \right)$ muss man überlegen, wann + +\subsubsection{Wertebereich} +\subsection{Funktionen und ihre Graphen} +\subsubsection{Bestimmen Sie den Definitions- und Wertebereich einer Funktion} + +\textbf{Bestimmen Sie den Definitions- und Wertebereich der Funktion} +$f(x)=-x^2+2x-8$ + + +Der Definitionsbereich einer Funktion ist die Menge $D$ aller möglichen Eingabewerte. + +\begin{wrapfigure}{r}{0.5\textwidth} + %\centering + %\resizebox{!}{.2\paperheight}{\input{gnuplot05.gp}} + \includegraphics[scale=0.4]{plot05a.pdf} + %\caption*{$f(x)=-x^2+2x-8$}% +\end{wrapfigure} + +Da der Definitionsbereich von $f(x)$ durch den Kontext nicht explizit angegeben oder eingeschränkt ist, bildet der Definitionsbereich von $f(x)$ die größtmögliche Menge reeller $x$-Werte, mit der die Funktion auf reelle $y$-Werte führt. Daher lautet der Definitionsbereich von $f(x)$ $(-\infty,\infty)$ +Der Wertebereich der Funktion ist die Menge aller Werte von $f(x)$, während $x$ durch den Definitionsbereich läuft. +Da der Graph der gegebenen Funktion f(x) eine nach unten geöffnete Parabel darstellt, ist das Maximum von $f(x)$ die Spitze der Parabel bei $\left(1,-7\right)$. Diese Funktion hat kein Minimum. Daher beträgt der Wertebereich von $f(x)$ $\left(-\infty,-7\right]$. + + +\textbf{Rechenweg:} + +Es ist eine nach unten geöffnete Parabel, da $a<0$ \marginpar{$ax^2+bx+c$} ist. +Somit besitzt diese Funktion einen Hochpunkt. Man kann diesen entweder in der Funktionszeichnung ablesen oder aber durch die Umwandlung in die Scheitelpunktform\ref{lbl:Scheitelpunktform} bestimmen. +\begin{itemize} + \item Bestimmen des Scheitelpunktes + \begin{itemize} + \item $f\left(x\right)=-\left(x^2-2x\right)-8$ + \item Quadratische Ergänzung: + + $f\left(x\right)=-\left(x^2-2x\textcolor{red}{+\left(\frac 2 2 \right)^2-\left(\frac {2} {2}\right)^2}\right)-8$ + + \item $f\left(x\right)=-\left(x^2-2x+1-1\right)-8$ + + \item Ausklammern der $-1$ $\rightarrow $ muß hier mit $-1$ multipliziert werden + + + $f\left(x\right)=-\left(x^2-2x+1\right)-8+1\rightarrow -\left(\tikz[na]\node [coordinate,yshift=2mm,xshift=1mm] (pm01) {};x^2-2x+\tikz[na]\node [coordinate,yshift=2mm,xshift=1mm] (pm02) {};1\right)-7$ + + + \item Binomische Formel auf die Klammer anwenden {\textcolor{red}{!! Auf das Vorzeichen des mittleren Terms achten!!}} + + + $\sqrt{x^2}\tikz[na]\node [coordinate,yshift=2mm,xshift=-1mm] (pm03) {};=x\;\cup\; \sqrt{\tikz[na]\node [coordinate,yshift=2mm,xshift=1mm] (pm04) {};1}=1\Rightarrow \left(x-1\right)^2\rightarrow f\left(x\right)=\left(x-1\right)^2-7$ + + + + Somit ist der Scheitelpunkt $\left(1, -7\right)$. + Der \marginpar{Die eckige Klammer bedeutet das der Wert im Bereich enthalten ist.}Definitionsbereich hat hier keinen Einschränkungen $\left(-0,0\right)$. Da die Parabel eine nach unten geöffnete Parabel darstellt, beträgt der Wertebereich: $\left(-0,7\right)$ + + + + + \end{itemize} +\end{itemize} + +\begin{tikzpicture}[overlay] + \path[color=green!40!black, line width=0.5mm, opacity=0.3] (pm01) edge [bend left=-40] (pm03); + \path[color=red!40!black, line width=0.5mm, opacity=0.3] (pm02) edge [bend left=-40] (pm04); + + +\end{tikzpicture} +\vfill + +\newpage + +\textbf{Bestimmen Sie den Definitions- und Wertebereich der Funktion} +$g ( x ) = \sqrt { 64-x^2 }$ + +Die Menge $D$ aller möglichen Eingabewerte wird als Definitionsbereich der Funktion +\begin{wrapfigure}{l}{0.5\textwidth} + \centering + %\resizebox{!}{.2\paperheight}{\input{gnuplot05.gp}} + %\includegraphics[scale=0.45]{gnuplot06a.png} + \includegraphics[scale=0.49]{plot06a.pdf} + %\caption*{$g(x)=\sqrt{64-x^2}$}% +\end{wrapfigure} +bezeichnet. Alle nicht negativen reellen Zahlen $\left[ 0,\infty \right) $ sind mögliche Eingabewerte für $\sqrt{x}$. + +Weil der Definitionsbereich von $ \sqrt { x }$ $\left[ 0 , \infty \right) $ ist, darf der Wert unter der Wurzel nicht negativ sein. Daher darf auch $ 64 - x ^ 2$ nicht negativ sein. Daher ist der Definitionsbereich von $g ( x ) = \sqrt { 64 - x ^ 2 }$ $\left[ - 8,8 \right] $. + + +Die Menge aller Werte von $ g(x)$, für die $x$ innerhalb von $D$ liegt, wird als Wertebereich der Funktion bezeichnet. + +Innerhalb des Definitionsbereichs $\left[-8,8\right]$ liefert die Funktion einen reellen Wert für $g(x)$ für jedes $x$ innerhalb des geschlossenen Intervalls. Außerhalb dieses Definitionsbereichs ist der Ausdruck $64-x^2$ negativ und die Quadratwurzel ist keine reelle Zahl. Um den Definitionsbereich zu bestimmen, müssen Sie untersuchen, wie sich $64-x^2$ zwischen $0$ und $64$ verhält. Daher verändert sich $\sqrt{64-x^2}$ von $0$ bis $8$. +Der Wertebereich der Funktion $g\left(x\right)=\sqrt{64 -x^2}$ sind alle möglichen Werte von $g(x)$ mit $-8\le x \le 8$. Daher beträgt der Wertebereich von $g\left(x\right)=\sqrt{64-x^2}$ $\left[0,8\right]$. + +{\textbf{\color{red}xyxyxyxyxyxy}} + +\vfill +\pagebreak + + +\textbf{Bestimmen Sie den Definitions- und Wertebereich der Funktion}$f\left(t\right)=\frac{7}{9-t}$ + +\begin{wrapfigure}{r}{0.5\textwidth} + \centering + %\resizebox{!}{.2\paperheight}{\input{gnuplot05.gp}} + \includegraphics[scale=0.45]{gnuplot07a.png} + \caption*{$f(t)=\frac{7}{9-t}$}% +\end{wrapfigure} + +Eine rationale Funktion ist ein Quotient oder Verhältnis $f(t)=\frac{p(t)}{q(t)}$, bei dem $p$ und $q$ Polynome sind. + +Für die gegebene Funktion ist $p(t)=7$ und $q(t)9-t$. + +Der Definitionsbereich einer rationalen Funktion ist die Menge aller reellen Zahlen $t$ mit $q(t)\neq 0$. +Um zu bestimmen, welche Eingabewerte den Nenner zu null werden lassen, setzen Sie den Ausdruck im Nenner gleich null und lösen Sie nach $t$ auf. + +$9-t=0$ + + +$t=9$ + +Entfernen Sie bitte alle Werte von $t$ die den Nenner null werden lassen, aus der Menge reeller Zahlen. Der Definitionsbereich der Funktion $f(t)$ wird dann durch das Intervall $\left(-\infty,9\right)\cup\left(9,\infty\right)$ gegeben. + +Die Menge aller Werte von $f(t)$ für die $t$ im Definitionsbereich liegt, wird als Wertebereich der Funktion bezeichnet. + +Wegen $f(t)=\frac{7}{9-t}$ ist $t=9-\frac{7}{f(t)}$ der Eingangswert für das Ergebnis $f(t)$. Der Eingangswert ist nur definiert, wenn $f(t)\neq 0$. + +Daher beträgt der Wertebereich der Funktion $f(t)$ $\left(-\infty,0\right)\cup\left(0,\infty\right)$. + +\subsection{Bestimmen ob ein Graph eine Funktion ist} + + +\input{pearson0201.pgf} + +\newpage + +\section{Pearson Brückenkurs Mathematik} +\subsection{Beispiele zu Mengen} +\subsubsection{Mengenoperationen} +\paragraph{1.}\mbox{}\\ +Gegeben sind die Mengen $M_1=\{26 ; 13 ; 5 ; 32\}, M_2=\{4 ; 5 ; 32 ; 35\}$ und $M_3=\{4 ; 1 ; 8 ; 19 ; 23 ; 5 ; 26\}$. + +Bestimmen Sie die Menge $\left(M_1 \cap M_2\right) \cup M_3$. + + +Man liest die Formel $\left(M_1 \cap M_2\right) \cup M_3$ von links nach rechts und bestimmt zuerst die Schnittmenge der Mengen $M_1$ und $M_2$: + +$$ +M_1 \cap M_2=\{26 ; 13 ; \mathbf{5} ; \mathbf{32}\} \cap\{4 ; \mathbf{5} ; \mathbf{32} ; 35\}=\{5 ; 32\} +$$ + +Nun vereinigt man die eben bestimmte Menge $M_1 \cap M_2$ mit der Menge $M_3=\{4 ; 1 ; 8 ; 19 ; 23 ; 5 ; 26\}$, um die gesuchte Menge zu erhalten: + +$$ +\left(M_1 \cap M_2\right) \cup M_3=\{\mathbf{5} ; \mathbf{32}\} \cup\{\mathbf{4} ; \mathbf{1} ; \mathbf{8} ; \mathbf{19} ; \mathbf{23} ; 5 ; \mathbf{26}\}=\{1 ; 4 ; 5 ; 8 ; 19 ; 23 ; 26 ; 32\} +$$ + +\paragraph{2.}\mbox{}\\ +Bestimmen Sie die Schnittmenge der Menge $M=\{8 ; 11 ; 14 ; 17 ; 20 ; \ldots\}$ und der Menge der ungeraden natürlichen Zahlen. + + +Man betrachtet zuerst die Menge $M$ . Sie enthält unendlich viele Zahlen, von denen die ersten fünf in aufzählender Mengenschreibweise angegeben sind. Da sich zwei aufeinanderfolgende Elemente immer um 3 unterscheiden, liegt ein Bildungsgesetz vor, mit dessen Hilfe man weitere Elemente der Menge M angeben kann. +$$ +M=\{8 ; \textcolor{red}{11} ; 14 ; \textcolor{red}{17} ; 20 ; \textcolor{red}{23} ; 26 ; \textcolor{red}{29} ; 32 ; \textcolor{red}{35}; \ldots\} +$$ + +Die Menge $\mathbb{N}=\{1 ; 2 ; 3 ; 4 ; \ldots\}$ der natürlichen Zahlen ist bekannt. +Die Menge der ungeraden natürlichen Zahlen besteht aus allen natürlichen Zahlen, die sich nicht durch 2 teilen lassen. +$$ +\text { \{ungerade natürliche Zahlen }\}=\{1 ; 3 ; 5 ; 7 ; 9 ; \textcolor{red}{11} ; 13 ; 15 ; \textcolor{red}{17} ; 19 ; \ldots\} +$$ + +Schließlich schneidet man die Menge M mit den ungeraden natürlichen Zahlen, d.h. man bestimmt alle Zahlen in M, die ungerade sind. Da diese Schnittmenge wieder unendlich groß ist, genügt es, die ersten Elemente in aufzählender Mengenschreibweise anzugeben. +$$ +M \cap\{\text { ungerade natürliche Zahlen }\}=\{11 ; 17 ; 23 ; 29 ; 35 ; \ldots\} +$$ + +\paragraph{3.}\mbox{}\\ +Schreiben Sie den folgenden Ausdruck als ein einziges Intervall. +$$ +(-\infty,-2) \cap[-6,7] +$$ + +Dieses Intervall stellt den Durchschnitt von zwei Intervallen dar. +Anstelle des Symbols $\cap$ kann das Verbindungswort 'und' benutzt werden. +Damit besteht der Durchschnitt aus allen Punkten, die in $(-\infty,-2)$ und auch in $[-6,7]$ liegen. +Es gibt keine Lücke zwischen diesen zwei Intervallen. +Das Intervall, das den Durchschnitt der gegebenen Intervalle bildet, hat zwei Endpunkte. +Sie sind -2 und -6 . +Das einzige Intervall, das $(-\infty,-2) \cap[-6,7]$ darstellt, ist $[-6,-2)$. + +\paragraph{4.}\mbox{}\\ +Schreiben Sie den folgenden Ausdruck als ein einziges Intervall. +$$ +(-\infty, 6) \cup[6,10) +$$ + +Dieses Intervall stellt die Vereinigung von zwei Intervallen dar. +Anstelle des Symbols $\cup$ kann das Verbindungswort 'oder' verwendet werden. +Damit besteht die Vereinigung aus allen Punkten, die in $(-\infty, 6)$ oder in $[6,10)$ liegen. +Es gibt keine Lücke zwischen diesen zwei Intervallen. + +Das Intervall, dass die Vereinigung der gegebenen Intervalle beschreibt, hat einen Endpunkt. Es ist $10$. + +Das einzelne Intervall, das $(-\infty, 6) \cup[6,10)$ darstellt, ist $(-\infty, 10)$. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage + +\textbf{Schreiben} Sie den folgenden Ausdruck als ein einziges Intervall. +$$ +(-\infty, 6) \cup[6,10) +$$ + +Dieses Intervall stellt die Vereinigung von zwei Intervallen dar. +Anstelle des Symbols $\cup$ kann das Verbindungswort 'oder' verwendet werden. + +Damit besteht die Vereinigung aus allen Punkten, die in $(-\infty, 6)$ oder in $[6,10)$ liegen. + +Es gibt keine Lücke zwischen diesen zwei Intervallen. Das Intervall, dass die Vereinigung der gegebenen Intervalle beschreibt, hat einen Endpunkt. Es ist $10$ . + +Das einzelne Intervall, das $(-\infty, 6) \cup[6,10)$ darstellt, ist $(-\infty, 10)$. + +\begin{figure}[h] + \centering + \begin{tikzpicture} + \begin{axis}[ + hide axis, + xmin=-10, xmax=12, + ymin=-1, ymax=1, + width=15cm, + height=3cm, + axis x line=middle, + xtick=\empty, + ytick=\empty, + enlargelimits + ] + % Das Intervall (-∞, 6) + \addplot[domain=-10:5.9, samples=2, thick, blue] {0}; + + % Das Intervall [6, 10) + \addplot[domain=6:9.9, samples=2, thick, red] {0}; + + % Offene Kreise bei x=6 und x=10 + \node[draw, fill=white, circle, inner sep=1.5pt] at (axis cs: 6, 0) {}; + \node[draw, circle, inner sep=1.5pt] at (axis cs: 10, 0) {}; + + % Punkt x=6 als geschlossener Kreis + \node[fill, circle, inner sep=1.5pt] at (axis cs: 6, 0) {}; + + % Beschriftungen + \node[below] at (axis cs: 0, 0) {0}; + \node[below] at (axis cs: 6, 0) {6}; + \node[below] at (axis cs: 10, 0) {10}; + + % Pfeile am Ende des Intervalls + \draw[thick,-latex] (axis cs: -10,0) -- (axis cs: -10.5,0); + \draw[thick,-latex] (axis cs: 10,0) -- (axis cs: 10.5,0); + \end{axis} + \end{tikzpicture} + %\caption{Caption} + %\label{fig:enter-label} +\end{figure} + + + + +\newpage + +3333 + +Schreiben Sie den folgenden Ausdruck als ein einziges Intervall. +$$ +(-\infty,-2) \cap[-6,7] +$$ + +Dieses Intervall stellt den Durchschnitt von zwei Intervallen dar. +Anstelle des Symbols $\cap$ kann das Verbindungswort 'und' benutzt werden. +Damit besteht der Durchschnitt aus allen Punkten, die in $(-\infty,-2)$ und auch in $[-6,7]$ liegen. Es gibt keine Luecke zwischen diesen zwei Intervallen. + +Das Intervall, das den Durchschnitt der gegebenen Intervalle bildet, hat zwei Endpunkte. +Sie sind -2 und -6 . +Das einzige Intervall, das $(-\infty,-2) \cap[-6,7]$ darstellt, ist $[-6,-2)$. + + + + +44444 + +Schreiben Sie den folgenden Ausdruck als ein einziges Intervall. +$$ +(-\infty,-2) \cap[-6,7] +$$ + +Dieses Intervall stellt den Durchschnitt von zwei Intervallen dar. +Anstelle des Symbols $\cap$ kann das Verbindungswort 'und' benutzt werden. +Damit besteht der Durchschnitt aus allen Punkten, die in $(-\infty,-2)$ und auch in $[-6,7]$ liegen. +Es gibt keine Luecke zwischen diesen zwei Intervallen. +Das Intervall, das den Durchschnitt der gegebenen Intervalle bildet, hat zwei Endpunkte. +Sie sind -2 und -6 . +Das einzige Intervall, das $(-\infty,-2) \cap[-6,7]$ darstellt, ist $[-6,-2)$. + + +55555 + + +Schreiben Sie den folgenden Ausdruck als ein einziges Intervall. +$$ +(-\infty, 6) \cup[6,10) +$$ + +Dieses Intervall stellt die Vereinigung von zwei Intervallen dar. +Anstelle des Symbols U kann das Verbindungswort 'oder' verwendet werden. +Damit besteht die Vereinigung aus allen Punkten, die in $(-\infty, 6)$ oder in $[6,10)$ liegen. Es gibt keine Luecke zwischen diesen zwei Intervallen. + +Das Intervall, dass die Vereinigung der gegebenen Intervalle beschreibt, hat einen Endpunkt. Es ist 10 . + +Das einzelne Intervall, das $(-\infty, 6) \cup[6,10)$ darstellt, ist $(-\infty, 10)$. + + +6666666 + + +Sei $\Omega=\{a, b, c, d, e, f, g, h, i, j, k\}$ +$$ +\begin{aligned} + & X=\{a, d, e, h, i, k\} \\ + & Y=\{a, c, f, h, i\} \\ + & Z=\{a, d, e, i, k\} +\end{aligned} +$$ + +Bestimmen Sie $\mathrm{X} \cup(\mathrm{Z} \cap \mathrm{Y})^{\prime}$. + +Um $\mathrm{X} \cup(\mathrm{Z} \cap \mathrm{Y})^{\prime}$ zu bestimmen, bestimmen Sie zuerst den Ausdruck innerhalb der Klammern. +Bestimmen Sie $Z \cap Y$. +Der Durchschnitt besteht aus allen Elementen, die in beiden Mengen $Z$ und $Y$ sind. +Die Elemente 'a' und 'i' sind in der Menge $\mathrm{Z}$ und auch in der Menge $\mathrm{Y}$. +Somit sind sie in $\mathrm{Z} \cap \mathrm{Y}$. +$$ +Z \cap Y=\{a, i\} +$$ + +Bestimmen Sie jetzt das Komplement von $\mathrm{Z} \cap \mathrm{Y}$, symbolisiert durch $(\mathrm{Z} \cap \mathrm{Y})^{\prime}$. +Diese Menge enthaelt alle Elemente aus $\boldsymbol{\Omega}$ die nicht $\mathbf{z u}\{\mathrm{a}, \mathrm{i}\}$ gehoeren. +Die Menge $\{k, j, h, g, f, e, b, c, d\}$ repraesentiert $(Z \cap Y)$ '. +Finden Sie jetzt die Vereinigung der Mengen $X$ und $\{k, j, h, g, f, e, b, c, d\}$. +Mit anderen Worten: Fuegen Sie zu der Liste der Elemente in $\{k, j, h, g, f, e, b, c, d\}$ diejenigen Elemente hinzu, die Sie noch nicht benannt haben und die in $X$ enthalten sind. Zum Beispiel ist, 'i' in der Menge $\mathrm{X}$, aber nicht in $(\mathrm{Z} \cap \mathrm{Y})$ '. +$$ +X \cup(Z \cap Y)^{\prime}=\{e, f, h, g, i, k, j, b, c, d, a\} \text {. } +$$ + +Dies ist die Menge $\Omega$. + + +8888888888 +Bestimmen Sie die Menge $\left(A^{\prime} \cup B^{\prime}\right) \cap C$, wenn folgendes gegeben ist. +$$ +\begin{aligned} + & \Omega=\{x \mid x \in \mathbb{N} \text { und } x<13\} \\ + & A=\{x \mid x \in \mathbb{N} \text { und } x \text { ist ungerade und } x<13\} \\ + & B=\{x \mid x \in \mathbb{N} \text { und } x \text { ist gerade und } x<13\} \\ + & C=\{x \mid x \in \mathbb{N} \text { und } x<8\} +\end{aligned} +$$ + +Um $\left(A^{\prime} \cup B^{\prime}\right) \cap C$ zu bestimmen, beginnen Sie damit die Menge innerhalb der Klammern, $\left(A^{\prime} \cup B^{\prime}\right)$, zu finden. +Zuerst muessen Sie A' bestimmen, das Komplement von A, das alle Elemente aus $\Omega$ enthaelt, die nicht in $\mathrm{A}$ sind. +$$ +A^{\prime}=\{2,4,6,8,10,12\} +$$ + +Als Naechstes muessen Sie $\mathrm{B}^{\prime}$ bestimmen, das Komplement von $\mathrm{B}$, das alle Elemente aus $\Omega$ enthaelt, die nicht in $\mathrm{B}$ sind. +$$ +B^{\prime}=\{1,3,5,7,9,11\} +$$ + +Identifizieren Sie jetzt die Elemente der Menge $\left(A^{\prime} \cup B^{\prime}\right.$ ) indem Sie alle Elemente in der Menge $A^{\prime}$ auflisten und dann die Elemente in der Menge $B^{\prime}$ hinzufuegen. +$$ +\begin{aligned} + \left(A^{\prime} \cup B^{\prime}\right) & =\{2,4,6,8,10,12\} \cup\{1,3,5,7,9,11\} \\ + & =\{1,2,3,4,5,6,7,8,9,10,11,12\} +\end{aligned} +$$ + +Beenden Sie jetzt das Problem, indem Sie $\left(A^{\prime} \cup B^{\prime}\right) \cap C$ bestimmen. +Der Durchschnitt ist diejenige Menge, die alle Elemente enthaelt, die den beiden Mengen $A^{\prime} \cup B^{\prime}$ und $C^{\prime}$ gemeinsam sind. +$$ +\begin{aligned} + \left(A^{\prime} \cup B^{\prime}\right) \cap C= & \{1,2,3,4,5,6,7,8,9,10,11,12\} \cap\{1,2,3,4,5,6,7\} \\ + & =\{1,2,3,4,5,6,7\} +\end{aligned} +$$ + + +999999999999 + +Bestimmen Sie die Menge $\left(A^{\prime} \cup B^{\prime}\right) \cap C$, wenn folgendes gegeben ist. +$$ +\begin{aligned} + & \Omega=\{x \mid x \in \mathbb{N} \text { und } x<13\} \\ + & A=\{x \mid x \in \mathbb{N} \text { und } x \text { ist ungerade und } x<13\} \\ + & B=\{x \mid x \in \mathbb{N} \text { und } x \text { ist gerade und } x<13\} \\ + & C=\{x \mid x \in \mathbb{N} \text { und } x<8\} +\end{aligned} +$$ + +Um $\left(A^{\prime} \cup B^{\prime}\right) \cap C$ zu bestimmen, beginnen Sie damit die Menge innerhalb der Klammern, ( $\left.A^{\prime} \cup B^{\prime}\right)$, zu finden. +Zuerst muessen Sie A' bestimmen, das Komplement von A, das alle Elemente aus $\Omega$ enthaelt, die nicht in A sind. +$$ +A^{\prime}=\{2,4,6,8,10,12\} +$$ + +Als Naechstes muessen Sie B' bestimmen, das Komplement von B, das alle Elemente aus $\Omega$ enthaelt, die nicht in B sind. +$$ +B^{\prime}=\{1,3,5,7,9,11\} +$$ + +Identifizieren Sie jetzt die Elemente der Menge ( $\mathrm{A}^{\prime} \cup \mathrm{B}^{\prime}$ ) indem Sie alle Elemente in der Menge $\mathrm{A}^{\prime}$ auflisten und dann die Elemente in der Menge $\mathrm{B}^{\prime}$ hinzufuegen. +$$ +\begin{aligned} + \left(A^{\prime} \cup B^{\prime}\right) & =\{2,4,6,8,10,12\} \cup\{1,3,5,7,9,11\} \\ + & =\{1,2,3,4,5,6,7,8,9,10,11,12\} +\end{aligned} +$$ + +Beenden Sie jetzt das Problem, indem Sie ( $\mathrm{A}^{\prime} \cup \mathrm{B}^{\prime}$ ) $\cap \mathrm{C}$ bestimmen. +Der Durchschnitt ist diejenige Menge, die alle Elemente enthaelt, die den beiden Mengen $\mathrm{A}^{\prime} \cup \mathrm{B}^{\prime}$ und $\mathrm{C}^{\prime}$ gemeinsam sind. +$$ +\begin{aligned} + \left(A^{\prime} \cup B^{\prime}\right) \cap C & =\{1,2,3,4,5,6,7,8,9,10,11,12\} \cap\{1,2,3,4,5,6,7\} \\ + & =\{1,2,3,4,5,6,7\} +\end{aligned} +$$ + +1010101010101010 + +Von den Achtklaesslern der Paxton-Schule spielten 16 Basketball, 9 Volleyball, 10 Fussball, 1 spielte nur Basketball und Fussball, 2 spielten nur Volleyball und Fussball, 1 spielte nur Basketball und Volleyball und 2 spielten Volleyball, Basketball und Fussball. + +Wieviele spielten eine oder mehrere der drei Sportarten? + +Zeichnen Sie ein leeres Diagramm, markieren Sie einen Kreis mit $B$ für Basketball, einen mit $F$ für Fussball und einen mit $V$ für Volleyball. +\begin{figure}[h] + \centering + \includegraphics[width=0.5\linewidth]{10_1.png} + %\caption{Enter Caption} + \label{fig:enter-label} +\end{figure} + +\newpage + +Tragen Sie als erstes die Anzahl der Schueler in den Durchschnitt aller drei Kreise ein, die alle drei Sportarten betreiben. $2$ spielten alle drei Sportarten. + + +\begin{figure}[h] + \centering + \includegraphics[width=0.5\linewidth]{10_2.png} + \caption{Enter Caption} + \label{fig:enter-label} +\end{figure} + +\newpage + +Tragen Sie jetzt ein, wie viele Spieler zwei Sportarten betreiben. In der Aufgabe war gegeben, dass 2 nur Volleyball und Fussball spielen. +Diese Zahl muss in den Bereich geschrieben werden, der der Durchschnitt von V und F ist, aber nicht die 2 schon frueher Erwaehnten enthaelt. +Der Grund ist: Die Aufgabe spricht hier nur von Volleyball und Fussball, d.h. Basketball ist ausgeschlossen + +\begin{figure}[h] + \centering + \includegraphics[width=0.5\linewidth]{10_3.png} + \caption{Enter Caption} + \label{fig:enter-label} +\end{figure} + +Machen Sie dasselbe fuer die anderen Sportarten. 1 spielt nur Basketball und Fussball. +1 spielt nur Basketball und Volleyball. +Diese Werte muessen im Diagramm platziert werden + +\begin{figure}[h] + \centering + \includegraphics[width=0.5\linewidth]{10_4.png} + \caption{Enter Caption} + \label{fig:enter-label} +\end{figure} + +\newpage + +Die Aufgabe sagt, dass zehn Fussball spielen. +Es gibt bereits 5 in dem Fussball-Kreis. +Deshalb muss eine 5 dort in den Kreis mit F geschrieben werden, wo keine anderen Werte sind. + + +\begin{figure}[h] + \centering + \includegraphics[width=0.5\linewidth]{10_5.png} + \caption{Enter Caption} + \label{fig:enter-label} +\end{figure} + +Neun spielen Volleyball. 5 sind bereits im Diagramm. +Es bleiben 4 uebrig. +Eine 4 ist in dem Bereich platziert worden, der Nur-Volleyball repraesentiert. + + +\begin{figure}[h] + \centering + \includegraphics[width=0.5\linewidth]{10_6.png} + \caption{Enter Caption} + \label{fig:enter-label} +\end{figure} + + +Die Aufgabe besagt, dass 16 Basketball spielen. +Es sind bereits 4 Basketballspieler eingetragen. +Somit bleiben 16 - 4 oder 12 uebrig, die nur Basketball spielen. + +\newpage + +\begin{figure}[h] + \centering + \includegraphics[width=0.5\linewidth]{10_7..png} + \caption{Enter Caption} + \label{fig:enter-label} +\end{figure} + +Um zu bestimmen, wie viele der Achtklaessler eine oder mehrere der drei Sportarten spielen, addieren Sie alle Eintraege aus dem Diagramm. +Es sind insgesamt 27 Spieler. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{1.11} +Nutzen Sie \textbf{Venn-Diagramme}, um zu bestimmen, ob die folgenden Mengen gleich sind fuer alle Mengen A, B und C. + +\begin{figure} + \centering + \includegraphics[width=0.7\linewidth]{11} + \caption{} + \label{fig:11} +\end{figure} + + +$$ +\begin{array}{l} + A \cap(B \cup C) \\ + (A \cap B) \cup C^{\prime} +\end{array} +$$ + + Wenn Sie das \textcolor{red}{Venn-Diagramm} auf der rechten Seite als Referenz verwenden, so besteht die Menge $A \cap(B \cup C)$ aus den Regionen II, IV, V. + + + +Wenn Sie das \textcolor{red}{Venn-Diagramm} auf der rechten Seite als Referenz verwenden, so besteht die Menge $(A \cap B) \cup C^{\prime}$ aus den Regionen I, II, III, V, VIII. +Daher sind die folgenden Mengen nicht für alle Mengen $A, B$ und $C$ gleich. + + +$A \cap(B \cup C)$ +$(A \cap B) \cup C^{\prime}$ + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\chapter{Lineare Algebra} +\section{Lineare Abhängigkeit} +\subsection{Definition} +Linear abhängig sein ist etwas, was alle Elemente eines Vektorraums können, also natürlich Vektoren, aber eben auch Matrizen. Ebenso können sie natürlich linear unabhängig sein. + +Was man machen kann, um auf Unabhängigkeit zu prüfen steht weiter unten im Abschnitt "Wie kann man Unabhängigkeit noch bestimmen?" + +Wenn man über lineare Abhängigkeit spricht, muss immer klar sein, welche Vektoren genau man betrachtet. +Wir nehmen uns also einen Vektorraum $V$ und ein paar Vektoren aus $V$, etwa $v_1, \ldots, v_n \in V$. Dann heißen diese Vektoren linear abhängig, wenn es eine Linearkombination von ihnen gibt, die 0 ergibt. + +Anders ausgedrückt: Es gibt Zahlen $a_1$ bis $a_n$, so dass gilt: + +$$ +a_1 v_1+a_2 v_2+\ldots+a_n v_n=0 +$$ + + +Dabei ist die 0 auf der rechten Seite die 0 des Vektorraums, also der Nullvektor. +Klar, wenn wir alle $a_i=0$ wählen, dann kommt 0 heraus. Das wollen wir aber ausschließen. +Vektoren sind also nur linear abhängig, wenn es Koeffizienten gibt, nicht alle 0 , so dass trotzdem die Linearkombination 0 ist. +Andersherum heißen die Vektoren linear unabhängig, wenn es nicht möglich ist, solche Koeffizienten zu finden, wenn also (außer für alle Koeffizienten $=0$ ) immer gilt + +$$ +a_1 v_1+a_2 v_2+\ldots+a_n v_n \neq 0 +$$ + + +Veranschaulichung +Bezogen auf die Pfeile in der Ebene $\mathbb{R}^2$, die du vielleicht noch aus der Schule kennst, bedeutet lineare Unabhängigkeit von zwei Vektoren, dass sie in unterschiedliche Richtungen zeigen, etwa so: +\begin{figure} + \centering + \includegraphics[width=0.5\linewidth]{LA01.png} + \caption{Enter Caption} + \label{fig:enter-label} +\end{figure} + +Linear abhāngig sind sie stattdessen, wenn sie in die gleiche oder die genau entgegengesetzte Richtung zeigen. + +\begin{figure} + \centering + \includegraphics[width=0.5\linewidth]{LA02.png} + \caption{Enter Caption} + \label{fig:enter-label} +\end{figure} + +Wer es gern noch geometrisch anschaulicher beschrieben hätte - hier erklăren wir es noch einmal genauer. +Beispiel 1 +Schauen wir uns das alles mal an einem Beispiel an. Wir nehmen den Vektorraum $\underline{\mathbb{R}^2}$, also die Spaltenvektoren mit 2 Einträgen, und die beiden Vektoren + +$$ +v_1=\binom{1}{0}, v_2=\binom{2}{0} +$$ + + +Diese beiden sind linear abhängig! Es gilt nämlich + +$$ +2\binom{1}{0}-\binom{2}{0}=\binom{2 \cdot 1-2}{0}=\binom{0}{0} +$$ + +und damit haben wir zwei Koeffizienten ( $a_1=2$ und $a_2=-1$ ) gefunden, so dass + +$$ +a_1 v_1+a_2 v_2=0 +$$ + +gilt. Es kommt bei der Linearkombination also 0 heraus, obwohl nicht alle Koeffizienten 0 sind. Das war genau die Definition von linear abhăngig. + +Beispiel 2 +Jetzt noch ein Paar Vektoren, die linear unabhängig sind. Nehmen wir + +$$ +v_1=\binom{1}{0}, v_2=\binom{0}{1} +$$ + +und außerdem zwei Koeffizienten $a_1$ und $a_2$. Wenn jetzt die Linearkombination 0 ergibt, also + +$$ +a_1 v_1+a_2 v_2=0 +$$ + +dann schauen wir mal, was das bedeutet: + +$$ +\begin{aligned} + a_1 v_1+a_2 v_2 & =a_1\binom{1}{0}+a_2\binom{0}{1} \\ + & =\binom{a_1}{a_2} \\ + & \stackrel{!}{=}\binom{0}{0} +\end{aligned} +$$ + + +Das Ausrufezeichen bedeutet, dass diese Gleichheit die wichtige ist. Daraus folgt nămlich, dass $a_1=0$ und $a_2=0$ sein muss. + +Die einzigen Koeffizienten, so dass die Linearkombination 0 wird, sind also beide 0 . Und wenn beide 0 sind, dann ist das in Ordnung, denn das woliten wir für lineare Unabhăngigkeit noch gelten lassen. + +Koeffizienten $\neq 0$ kann man hingegen nicht finden. +Wie kann man Unabhängigkeit noch bestimmen? +Die gute Nachricht ist, dass man die Gleichung mit den Koeffzienten nicht immer extra aufschreiben muss. Denn es handelt sich ja jedes Mal um ein homogenes Gleichungssystem. + +Um zu schauen, ob es mehr, als nur die Nulllösung gibt, berechnet man einfach den Rang der Koeffizientenmatrix - diese ergibt sich hier durch die Einträge der Vektoren. + +Im Endeffekt schreibt man die Vektoren nebeneinander auf und bekommt so eine Matrix. Der Rang dieser Matrix gibt dann an, wieviele der Vektoren linear unabhängig sind. + +Ist diese Zahl kleiner als die Anzahl der Vektoren gibt es also linear abhängige Vektoren und man sagt: die Vektoren (insgesamt) sind linear abhängig. + +Wenn man nur zwei Vektoren gegeben hat (egal welche Dimension), so kann schneller sein und schauen, ob die Vektoren Vielfache voneinander sind. + +Wie das geht zeigen wir hier in diesem Theorieblock. +Beispiel Vektoren +Um die Unabhăngigkeit von + +$$ +v_1=\left(\begin{array}{l} + 2 \\ + 0 \\ + 1 +\end{array}\right), v_2=\left(\begin{array}{l} + 3 \\ + 3 \\ + 3 +\end{array}\right) \text { und } v_3=\left(\begin{array}{c} + -1 \\ + 1 \\ + 0 +\end{array}\right) +$$ + +zu prüfen schreiben wir alle drei Vektoren nebeneinander und erhalten diese Matrix: + +$$ +\left(\begin{array}{ccc} + \frac{v_1}{2} & \frac{v_2}{3} & \frac{v_3}{-1} \\ + 0 & 3 & 1 \\ + 1 & 3 & 0 +\end{array}\right) +$$ + + +Mit den normalen Zeilenumformungen können wir nun den Rang bestimmen: + +$$ +\begin{array}{r} + \text { (III) : } \cdot(-2)+\text { (I) }) \\ + \text { (III) } \left.:+ \text { (II) } \xrightarrow[\rightarrow]{\left(\begin{array}{ccc} + 2 & 3 & -1 \\ + 0 & 3 & 1 \\ + 1 & 3 & 0 + \end{array}\right)} \begin{array}{ccc} + \left(\begin{array}{ccc} + 2 & 3 & -1 \\ + 0 & 3 & 1 \\ + 0 & -3 & -1 + \end{array}\right) \\ + \left(\begin{array}{ccc} + 2 & 3 & -1 \\ + 0 & 3 & 1 \\ + 0 & 0 & 0 + \end{array}\right) + \end{array}\right) +\end{array} +$$ + + +Eine Nullzeile in der Matrix macht Rang 2. Diese Zahl sagt nun genau, wieviele Vektoren unabhăngig sind: 2 Stück! Damit sind alle drei zusammen abhängig, denn nur wenn der Rang drei wäre, hätten wir Unabhängigkeit. + +Wenn du eine quadratische Matrix hast (gleiche Anzahl von Zeilen und Spalten), kannst du auch die Determinante heranziehen. Ist diese Null, so sind die Vektoren abhăngig. Allerdings sagt die Determinante nicht aus, wie viele dann unabhăngig sind. + +\subsection{Beispiel Matrizen} +Auch für Unabhängigkeit von Matrizen muss man nicht erst die Gleichung mit den Koeffizienten und der Nullmatrix aus der Definition aufschreiben. Für die Unabhängigkeit der Matrizen + +$$ +A=\left(\begin{array}{ll} + 1 & 2 \\ + 0 & 3 +\end{array}\right), B=\left(\begin{array}{cc} + -1 & 0 \\ + 1 & 1 +\end{array}\right) \text { und } C=\left(\begin{array}{cc} + 3 & -3 \\ + 0 & 0 +\end{array}\right) +$$ + +schreibt man diese so in eine Matrix, (das geht so) dass jede Spalte alle Elemente der jeweiligen Matrizen in derselben Reihenfolge beinhaltet. Gemeint ist: + +$$ +\left(\begin{array}{ccc} + A & \overbrace{-1}^B & \frac{C}{3} \\ + 2 & 0 & -3 \\ + 0 & 1 & 0 \\ + 3 & 1 & 0 +\end{array}\right) +$$ + +$$ +\begin{aligned} + & \text { (II) : }+(-2) \cdot(\mathrm{I}) \text { und } \\ + & \text { (IV) : }+(-3) \cdot \text { (I) } \leadsto \\ + & \left(\begin{array}{ccc} + 1 & -1 & 3 \\ + 0 & 2 & -9 \\ + 0 & 1 & 0 \\ + 0 & 4 & -9 + \end{array}\right) \\ + & \text { (III) : } \cdot \text { (2) }- \text { (II) und } \\ + & \text { (IV) : }+(-2) \cdot \text { (II) } \rightarrow \\ + & \left(\begin{array}{ccc} + 1 & -1 & 3 \\ + 0 & 2 & -9 \\ + 0 & 0 & 9 \\ + 0 & 0 & 9 + \end{array}\right) \\ + & \text { (IV) : }+ \text { (III) } \\ + & \left(\begin{array}{ccc} + 1 & -1 & 3 \\ + 0 & 2 & -9 \\ + 0 & 0 & 9 \\ + 0 & 0 & 0 + \end{array}\right) +\end{aligned} +$$ + + +Eine Nullzeile heißt der Rang ist drei und damit sind alle drei Matrizen linear unabhängig. +Noch ein paar Fakten +Nullvektor und lineare Abhängigkeit +Wenn in der betrachteten Menge von Vektoren schon der Nullvektor vorkommt, dann ist die Menge immer linear abhängig. +Wenn also beispielsweise $v_1, \ldots, v_n \in V$ und $v_n=0$ gilt, dann kann man nămlich für alle Vektoren den Koeffizient 0 nehmen, außer für den Nullivektor, da kann man zum Beispiel 1 nehmen. Dann gilt + +$$ +a_1 v_1+\ldots+a_n v_n=0 \cdot v_1+\ldots+0 \cdot v_{n-1}+1 \cdot 0=0 +$$ + + +Also kommt 0 heraus, obwohl nicht alle Koeffizienten 0 sind. Das sieht getrickst aus, funktioniert aber. Und damit sind die Vektoren linear abhängig. + +\subsection{Beispiel} +Die Menge der zwei Vektoren + +$$ +\left\{\binom{0}{0},\binom{1}{2}\right\} +$$ + +enthält den Nullvektor, die beiden Vektoren sind deshalb linear abhängig. Es gilt nämlich zum Beispiel + +$$ +2 \cdot\binom{0}{0}+0 \cdot\binom{1}{2}=\binom{0}{0} +$$ + +und in dieser Linearkombination ist der erste Koeffizient 2 , nicht 0. + +\subsection{Einzelne Vektoren} +Ein einzelner Vektor (außer der Nullvektor) ist immer linear unabhängig. +Anzahl der Vektoren und Dimension +Wenn du die Dimension des Vektorraums kennst, dann gibt es einen weiteren nützlichen Fakt. +Eine Menge von Vektoren, die mehr Vektoren enthält als die Dimension, ist immer linear abhängig. +Das liegt daran, dass eine Basis des Vektorraums genau so viele Elemente enthălt wie die Dimension, aber ein maximales linear unabhängiges System ist. + +\subsubsection{Beispiel} +Schauen wir uns mal wieder den $\mathbb{R}^2$ an, also die Spaltenvektoren mit 2 Einträgen. Dieser Vektorraum hat anschaulicherweise die Dimension 2. + +Außerdem werfen wir einen Blick auf die folgende Menge von Vektoren: + +$$ +\left\{\binom{1}{0},\binom{1}{1},\binom{0}{1}\right\} +$$ + + +Da sind drei Vektoren drin, und das ist mehr als die Dimension. Deshalb müssen wir gar nicht lange fackeln und wissen sofort, dass die Vektoren linear abhängig sind. + +\subsection{Lineare Abhängigkeit und Determinante} +Hat man $n$ Vektoren mit jeweils $n$ Einträgen hat, so wird die Matrix aus diesen Vektoren ja quadratisch. +Dann kann uns auch die Determinante helfen. +Öber die Beziehung zwischen Determinante und Linearer Abhängigkeit kannst du hier nachlesen. + +\newpage + +\section{Vektorräume}\label{Vektorraeume} + +Einleitende Bemerkung: Wir betrachten hier nur reelle Vektorräume. Mit Anderen kommst du vermutlich sowieso nicht in Kontakt und dann kannst du diese Bemerkung getrost ignorieren. + +\subsection{Was ist ein Vektorraum?} +Ein Vektorraum $V$ ist zunächst erstmal eine Menge. Diese Menge hat (wenn sie nicht leer ist) natürlich Elemente. Diese Elemente des Vektorraums heißen Vektoren. + +So weit, so gut. Einfach nur eine Menge ist aber ein Vektorraum dann doch nicht. Die Elemente (also die Vektoren) des Vektorraums erfüllen bestimmte Eigenschaften. + +Es gibt verschiedenste Schreibweisen für Vektorräume - eine Übersicht findest du hier. +\subsubsection{Addition} +Zuerst einmal muss man die Vektoren irgendwie addieren können. Sind also $x$ und $y$ Vektoren aus $V$, also $x, y \in V$, dann soll es irgendwie möglich sein, ihre Summe + +$$ +x+y +$$ + +zu bilden. Diese Summe soll wieder ein Vektor aus $V$ sein, also muss $x+y \in V$ gelten. +\subsubsection{Skalarmultiplikation} +Außerdem muss man wissen, wie man einen Vektor $x$ mit einer reellen Zahl, nennen wir sie $c \in \mathbb{R}$, multiplizieren soll (die Zahl nennt man in diesem Zusammenhang auch Skalar). Das Produkt + +$$ +c x +$$ + +muss wieder ein Vektor aus $V$ sein, also $c x \in V$. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Rechenregeln +Es müssen dann die ganzen Rechenregeln gelten, so wie man sie kennt. Wenn $x, y \in V$ Vektoren sind und $b, c \in \mathbb{R}$ reelle Zahlen, dann kann man Dinge tun wie +- $x+y=y+x$ +- $c(x+y)=c x+c y$ +- $b(c x)=(b c) x$ +- $(b+c) x=b x+c x$ +- $1 \cdot x=x$ + +Eine Multiplikation von zwei Vektoren, so dass wieder ein Vektor herauskommt, gibt es hingegen im Normalfall nicht. +Nullvektor und Negative +Weiterhin enthält jeder Vektorraum einen ganz speziellen Vektor, den man 0 oder $0_V$ nennt, den Nullvektor. Dieser verhält sich für Vektoren so wie die (gleich aussehende) 0 aus den Zahlen. Es gilt + +$$ +x+0=x +$$ + +für alle Vektoren $x$. Außerdem gibt es immer auch das Negative eines Vektors, genannt $-x$, so dass + +$$ +x+(-x)=0 +$$ + +gilt (Fachleute sprechen auch vom additiv Inversen). Auf der rechten Seite steht wieder der Nullvektor. Für die Skalarmultiplikation mit $0 \in \mathbb{R}$ gilt + +$$ +0 \cdot x=0_V +$$ + +und auch + +$$ +-1 \cdot x=-x +$$ + + +Fassen wir das noch einmal alles zusammen. + + +\newpage + + +\section{Rang einer Matrix} + +\subsection{Was ist der Rang?} +Der Rang ist eine Zahl, die zu jeder Matrix gehört, und die man ausrechnen kann. Sie hängt ganz eng zusammen mit der Lösbarkeit von linearen Gleichungssystemen und mit der linearen Unabhängigkeit von Vektoren zusammen. + +Aber jetzt zur Definition des Ranges. Wir stellen uns eine beliebige Matrix $A$ vor. Sie muss nicht quadratisch sein oder irgendwelche anderen Eigenschaften erfüllen. + +Wir können dann elementare Zeilenumformungen anwenden, um die Matrix in Zeilenstufenform zu bringen. +Der Rang entspricht der Anzahl der Zeilen der Zeilenstufenform, die keine Nullzeilen sind, also nicht vollständig aus 0 bestehen. + + +Man bezeichnet diese Anzahl mit $\operatorname{Rang}(A)$. + + +Damit kann der Rang also maximal so groß sein, wie die Matrix Zeilen hat. + +\subsubsection{Beispiele} +Wir gucken uns mal ein paar Beispiele an. Die angegebenen Matrizen sind jeweils schon in Zeilenstufenform. Nullzeilen sind rot hervorgehoben: + +$$ +A=\left(\begin{array}{lll} + 2 & 1 & 0 \\ + 0 & 1 & 1 +\end{array}\right), B=\left(\begin{array}{ccc} + 4 & -4 & 4 \\ + 0 & 0 & 2 \\ + \mathcolor{red}{0 & 0 & 0 \\ + 0 & 0 & 0} +\end{array}\right), C=\left(\begin{array}{cc} + 2 & 3 \\ + 0 & -3 \\ + \mathcolor{red}{0 & 0} +\end{array}\right) +$$ + + +Bei $A$ kommt keine Nullzeile vor, 2 von 2 Zeilen sind Nichtnullzeilen. $B$ hingegen besitzt von 4 Zeilen nur 2 Nichtnullzeilen. Ebenfalls besitzt $C$ zwei Nichtnullzeilen. Damit gilt + +$$ +\operatorname{Rang}(A)=\operatorname{Rang}(B)=\operatorname{Rang}(C)=2 +$$ + + +Eigenschaften +Eines der wichtigsten Resultate über den Rang ist, dass der Zeilenrang genau so groß ist wie der Spaltenrang. Wir könnten auch die Spalten der Matrix als Zeilen betrachten, die Zeilenstufenform ausrechnen und es würde die gleiche Anzahl an (Nicht-)Nullzeilen entstehen. + +Anders ausgedrückt: Wenn wir Zeilen und Spalten vertauschen, also die Transponierte bilden, dann ändert sich der Rang nicht: +Der Rang von $A$ ist gleich dem Rang von $A^{\mathrm{T}}$. +Wir hatten oben festgestellt, dass der Rang maximal so groß wie die Anzahl der Zeilen der Matrix sein kann. Wenn wir aber statt der Zeilen auch die Spalten betrachten können, dann heißt das, dass der Rang auch kleiner als die Anzahl der Spalten ist. + +$$ +\text { Rang }(A) \leq \text { Minimum(Zeilenanzahl, Spaltenanzahl) } +$$ + + +Wenn der Rang nicht wirklich kleiner, sondern gleich der Zeilen- oder Spaltenanzahl ist, dann sagt man, dass A vollen Rang besitzt. + +\subsection{Zusammenhang zur Lösbarkeit von Gleichungssystemen} +Bei der Bestimmung der Lösung von linearen Gleichungssystemen gibt es mehrere Fälle, die auftreten können: +\begin{itemize} + \item Das Gleichungssystem besitzt keine Lösung. + \item Das Gleichungssystem besitzt genau eine Lösung. + \item Das Gleichungssystem besitzt unendlich viele Lösungen. +\end{itemize} + +Wir können das Gleichungssystem durch eine Matrizengleichung + +$$ +A \cdot x=b +$$ + +ausdrücken. Dabei ist $A$ die Koeffizientenmatrix, $x$ der Lösungsvektor und $b$ sei der Vektor der Ergebnisse der Gleichungen. + + +Bilden wir die Matrix $(A l b)$, also die erweiterte Koeffizientenmatrix, dann hat die natürlich einen Rang, genauso wie $A$. + + +\textcolor{red}{Wenn Rang $((A \mid b))$ und $\operatorname{Rang}(A)$ gleich sind, dann besitzt das Gleichungssystem mindestens eine Lösung, ansonsten nicht.} + +Um jetzt noch zwischen genau einer und unendlich vielen Lösungen zu unterscheiden, guckt man sich den Rang von $A$ noch einmal an und vergleicht mit der Anzahl $n$ der Unbekannten (also der Anzahl der Einträge des Vektors $x$ ). + +Also, unter der Voraussetzung, dass das Gleichungssystem überhaupt eine Lösung besitzt (siehe oben): + + +\textcolor{red}{Wenn Rang $(A)$ gleich der Anzahl der Variablen ist, dann besitzt das Gleichungssystem genau eine Lösung, ansonsten unendlich viele.} + + +Wie du die Lösungen in den einzelnen Fällen ausrechnest, erfährst du hier ganz ausführlich. + +\subsubsection{Beispiel 1} +Schauen wir uns ein paar Gleichungssysteme in Matrixschreibweise an. Zuerst sei die Koeffizientenmatrix + +$$ +A=\left(\begin{array}{lll} + 2 & 0 & 1 \\ + 0 & 0 & 1 \\ + 0 & 0 & 0 +\end{array}\right) +$$ + +und die erweiterte Koeffizientenmatrix sei + +$$ +(A \mid b)=\left(\begin{array}{lll|l} + 2 & 0 & 1 & 1 \\ + 0 & 0 & 1 & 0 \\ + 0 & 0 & 0 & 1 +\end{array}\right) +$$ + + +In der Matrix A sind 2 von 3 Zeilen keine Nullzeilen. Der Rang ist also 2. +In der enweiterten Koeffizientenmatrix kommt hingegen gar keine Nullzeile vor. Alle 3 Zeilen sind Nichtnullzeilen. Sie hat also Rang 3. Da der Rang von $A$ und der von (Alb) unterschiedlich sind, kann das lineare Gleichungssystem keine Lösung besitzen. + +\subsubsection{Beispiel 2} +Jetzt sei + +$$ +A=\left(\begin{array}{ccc} + 1 & 2 & 3 \\ + 0 & -1 & 1 \\ + 0 & 0 & 3 +\end{array}\right) +$$ + +und die erweiterte Koeffizientenmatrix sei + +$$ +(A \mid b)=\left(\begin{array}{ccc|c} + 1 & 2 & 3 & 1 \\ + 0 & -1 & 1 & 0 \\ + 0 & 0 & 3 & -2 +\end{array}\right) +$$ + +Der Rang von $A$ ist 3 , ebenso wie der Rang von $(A l b)$, denn beide Male treten drei Nichtnullzeilen auf. +Deshalb besitzt das Gleichungssystem mindestens eine Lösung. Da die Koeffizientenmatrix $A$ drei Spalten hat, gibt es auch drei Variablen im Gleichungssystem. + +Der Rang von $A$ ist gleich der Anzahl der Variablen, also gibt es nach dem obigen Kriterium genau eine Lösung. + +\subsubsection{Beispiel 3} +Wir geben uns wieder eine Koeffizientenmatrix in Zeilenstufenform vor: + +$$ +A=\left(\begin{array}{ccc} + 1 & 2 & 3 \\ + 0 & -1 & 1 +\end{array}\right) +$$ + +und die erweiterte Koeffizientenmatrix sei + +$$ +(A \mid b)=\left(\begin{array}{ccc|c} + 1 & 2 & 3 & 1 \\ + 0 & -1 & 1 & 0 +\end{array}\right) +$$ + + +Nun ist wegen der zwei Nichtnullzeilen in beiden Matrizen der Rang jeweils 2. + +Da der Rang übereinstimmt, gibt es mindestens eine Lösung. + +Die Matrix $A$ besitzt 3 Spalten, also gibt es 3 Variablen. Diese Anzahl stimmt diesmal aber nicht mit dem Rang überein, der ist nämlich kleiner. + +Also gibt es zu diesem linearen Gleichungssystem unendlich viele Lösungen. + +\newpage + +\section{Die Dimension eines Vektorraums} + +Anschaulich kannst du dir sicher etwas unter einer Dimension vorstellen. Eine Gerade (oder ein einfacher Strich) ist eindimensional, eine Ebene (oder ein Blatt Papier) ist zweidimensional und der Raum in dem wir uns bewegen ist ein dreidimensionaler Raum. + +Für Vektorräume kann man den Begriff der Dimension ganz genau formulieren. +Wie du im entsprechenden Artikel nachlesen kannst, besitzt jeder Vektorraum eine Basis. +Diese Anzahl an Vektoren in einer Basis ist eben nun die Dimension des Vektorraums. Wenn der Vektorraum $V$ heißt, dann bezeichnen wir seine Dimension mit $\operatorname{Dim}(V)$. + +\subsection{Bestimmung der Dimension} +Um die Dimension zu bestimmen, musst du also (üblicherweise) eine Basis des Vektorraums finden und dann die Anzahl der Vektoren in dieser Basis zählen. Je nachdem wie dein Vektorraum gegeben ist gibt es dort vielfältige Möglichkeiten. + +Bei linearen Hüllen bestimmt man die Dimension also recht leicht, indem man bestimmt, wie viele der erzeugenden Vektoren linear unabhängig sind - das geht gut mit diesen Algorithmus. + +Im Zusammenhang mit Abbildungen gibt es auch einen (nicht ganz so einfachen) Dimensionssatz, den du dir in seiner allgemeinen Form hier ansehen kannst. + +Da man eine Matrix $A$ auch als Abbildung interpretieren kann, gibt es diesen Satz auch für Vektorrāume der Form: + +$$ +V=\left\{x \vec{x} \in \mathbb{R}^n \mid A \vec{x}=0\right\} +$$ + + +Wenn ein (Unter-)Vektorraum in dieser Form gegeben ist, lautet die allgemeine Formel für die Dimension: + +$$ +\operatorname{Dim}(V)=n-\operatorname{Rang}(A) +$$ + + +Dabei ist $n$ einfach nur die Anzahl deiner Variablen (bzw. Einträge im Vektor $x$ ). Dies ist manchmal auch als \textbf{Rangformel} bekannt, über die du hier Genaueres findest. + +Nun noch zwei Begriffe, falls du irgendwo mal den Klugscheißer heraushängen lassen willst: + + +\begin{enumerate} + \item Die eben genannte Menge $V$ ist ja nichts weiter als die Lösungsmenge des homogenen linearen Gleichungssystems $A x=0$. Diese Menge ist gleichzeitig auch der Kern der Matrix. + + Die Dimension des Kerns ist also durch $\operatorname{dim}(V)$ gegeben - der Fachbegriff dafür lautet Defekt: + + $$ + \operatorname{def}(A)=\operatorname{Dim}(\operatorname{Kern}(A))=n-\operatorname{Rang}(A) + $$ + + \item Auch der Rang der Matrix $A$ gibt eine Dimension an, nämlich die vom Bild der Matrix: + + $$ + \operatorname{Dim}(\operatorname{Bild}(A))=\operatorname{Rang}(A) + $$ +\end{enumerate} + +Beispiele zu Basisvektoren +Für die bekannten Vektorräume $\mathbb{R}^1, \mathbb{R}^2$ und $\mathbb{R}^3$ wollen und können wir das mit den Dimensionen einmal direkt nachprüfen. 1-dimensional + +Im Fall $\mathbb{R}=\mathbb{R}^1$ betrachten wir die Menge $\{1\}$. Diese ist eine Basis des $\mathbb{R}$-Vektorraums $\mathbb{R}$, denn jede Zahl $x \in \mathbb{R}$ lässt sich schreiben als + +$$ +x=x \cdot 1 +$$ + +also als Produkt einer Zahl und des Basiselementes 1. Also ist \{1\} ein minimales Erzeugendensystem für $\mathbb{R}$ (klar, weniger als einen Vektor kann man nicht nehmen), also eine Basis. + +Damit gilt + +$$ +\operatorname{Dim}\left(\mathbb{R}^1\right)=1 +$$ + + +2-dimensional +Jetzt sehen wir uns den $\mathbb{R}^2$ an und betrachten die Menge + +$$ +B_2=\left\{\binom{1}{0},\binom{0}{1}\right\} +$$ + + +Die beiden Vektoren sind sicherlich nicht linear abhăngig, denn der zweite ist kein Vielfaches des ersten und andersherum. Jeder Vektor $x$ aus $\mathbb{R}^2$, + +$$ +x=\binom{x_1}{x_2} +$$ + +lässt sich nun schreiben als + +$$ +x=\binom{x_1}{x_2}=x_1\binom{1}{0}+x_2\binom{0}{1} +$$ + +also als Linearkombination der beiden Vektoren aus $B_2$. Also ist $B_2$ ein linear unabhängiges Erzeugendensystem von $\mathbb{R}^2$ und damit eine Basis. + +Sie besteht aus zwei Vektoren, also gilt + +$$ +\operatorname{Dim}\left(\mathbb{R}^2\right)=2 +$$ + + +3-dimensional +Die Dimension von $\mathbb{R}^3$ sollte jetzt natürlich 3 sein. Wenn wir die Menge + +$$ +B_3=\left\{\left(\begin{array}{l} + 1 \\ + 0 \\ + 0 +\end{array}\right),\left(\begin{array}{l} + 0 \\ + 1 \\ + 0 +\end{array}\right),\left(\begin{array}{l} + 0 \\ + 0 \\ + 1 +\end{array}\right)\right\} +$$ + +betrachten, dann ist auch wieder jeder Vektor aus $\mathbb{R}^3$ darstellbar durch + +$$ +x=\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right)=x_1\left(\begin{array}{l} + 1 \\ + 0 \\ + 0 +\end{array}\right)+x_2\left(\begin{array}{l} + 0 \\ + 1 \\ + 0 +\end{array}\right)+x_3\left(\begin{array}{l} + 0 \\ + 0 \\ + 1 +\end{array}\right) +$$ + +und die gleichen Argumente wie für $\mathbb{R}^2$ zeigen, dass es sich bei $B_3$ um eine Basis des $\mathbb{R}^3$ handelt. Deshalb gilt + +$$ +\operatorname{Dim}\left(\mathbb{R}^3\right)=3 +$$ + +$n$-dimensional +Die gleichen Argumente wie vorher zeigen, dass allgemein für jedes $n \in \mathbb{N}$ gilt: + +$$ +\operatorname{Dim}\left(\mathbb{R}^n\right)=n +$$ + + +Beispiel zum Dimenssionssatz +Wenn wir folgenden Vektorraum gegeben haben: + +$$ +V=\left\{\left.\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right) \in \mathbb{R}^3 \right\rvert\, x_1+x_2-x_3=0, x_3=x_2\right\} +$$ + + +Dann können wir die Dimension nun nicht mehr ohne Weiteres ablesen - sie ist insbesondere nicht 3. Zur Bestimmung brauchen wir den Dimensionssatz von oben. Dieser sagt, dass + +$$ +\operatorname{Dim}(V)=n-\operatorname{rang}(A) +$$ + + +Eine ausführliche Besprechung gibt es hier. +Zunāchst ist $n$ leicht zu bestimmen, denn es ist einfach nur die Anzahl unserer Variablen: 3. Für den Rang brauchen wir erstmal eine Matrix $A$. Diese steht für die Koeffizientenmatrix des homogenen LGS $A x=0$, was durch die Gleichungen gegeben ist. + +Hier müssen wir bei der zweiten Gleichung erstmal dafür sorgen, dass rechts eine Null steht: + +$$ +x_3=x_2 \Rightarrow x_3-x_2=0 +$$ + + +Nun kann man mit den Gleichungen, die Koeffizientenmatrix $A$ ermitteln: +(I) $x_1+x_2-x_3=0$ +(II) $\quad-x_2+x_3=0$ + +$$ +A=\left(\begin{array}{ccc} + 1 & 1 & -1 \\ + 0 & -1 & 1 +\end{array}\right) +$$ + + +Diese Matrix ist bereits in Zeilenstufenform, sodass wir den Rang ablesen können. Es gibt keine Nullzeilen, also ist der Rang 2. Damit haben wir alles für die Dimension von $V$ zusammen: + +$$ +\begin{aligned} + \operatorname{Dim}(V) & =n-\operatorname{Rang}(A) \\ + & =3-2 \\ + & =1 +\end{aligned} +$$ + + +Die Menge $V$ beschreibt also eine Gerade. + + +\newpage + + +\section{Lineare Gleichungssysteme} +Bevor wir genauer beschreiben, was ein lineares Gleichungssystem ist und was die verwandten Begriffe bedeuten, hier die Links zu den wichtigen Themen: +- Es gibt zwei Arten von linearen Gleichungssystemen (LGS): homogene und inhomogene Gleichungssysteme +- Die Anzahl der Lösungen ermittelst du mit dem Rang der erweiterten Koeffizientenmatrix - wie du die Lösungen dann abliest steht hier. + +\subsection{Definition} +Ein lineares Gleichungssystem in $n$ Variablen ist eine Menge von Gleichungen, in denen die Variablen $x_1$ bis $x_n$ vorkommen. +Dabei können vor den Variablen noch Zahlen, sogenannte Koeffizienten stehen. +Eine Gleichung mit drei Variablen könnte zum Beispiel so aussehen: + +$$ +2 x_1-x_2+4 x_3=-2 +$$ + + +Hier hat die Variable $x_1$ den Koeffizienten 2, $x_2$ hat -1 und $x_3$ hat 4 als Koeffizienten. Auch wenn nur $-x_2$ dasteht, ist das als $+(-1) x_2$ zu verstehen. + +Eine oder mehrere von solchen Gleichungen zusammen bilden dann ein Gleichungssystem. Nicht alle Variablen müssen in allen Gleichungen vorkommen. So ist zum Beispiel + +$$ +x_3=4 +$$ + +auch eine Gleichung eines Gleichungssystems in drei Variablen. Die Koeffizienten von $x_1$ und $x_2$ sind dann einfach 0 . +\subsection{Merkmale} +Schon jetzt haben wir ein paar wichtige Daten kennengelernt, die zu einem Gleichungssystem gehören: +- Die Anzahl der Variablen +- Die Anzahl der Gleichungen +- Die Koeffizienten, die in den Gleichungen vor den Variablen stehen +- Die Zahlen, die nach dem " $=$ " am Ende der Gleichungen stehen + +Grundsätzlich unterscheidet man nach den Zahlen die auf der rechten Seite der Gleichung stehen: +1. Sind dort nur Nullen zu finden, so spricht man von einem homogenen linearen Gleichungssystem +2. Sobald jedoch eine Gleichung eine $\mathrm{Zahl} \neq 0$ auf der rechten Seite hat, so spricht man von einem inhomogenen linearen Gleichungssystem + +\subsection{Beispiel} +Sehen wir uns jetzt ein Beispiel für ein vollständiges Gleichungssystem mit drei Gleichungen in 4 Variablen an + +$$ +\left.\begin{array}{rl} + \text { (I) : } 2 x_1+3 x_2 & +x_4 \\ + \text { (II) : } & =x_2-x_3 \\ + \text { (III) : } & x_1-x_2+x_3-x_4 +\end{array}\right)=0 +$$ + + +Am Anfang steht in römischen Ziffern und runden Klammern jeweils die Zeilennummer. Dann folgen die einzelnen Gleichungen, immer zuerst die Koeffizienten und dann die Variablen. + +Taucht eine Variable nicht auf, so ist ihr Koeffizient in der Gleichung 0. +Am Ende der Gleichung steht ein " $=$ " und dahinter eine reelle Zahl, die auch 0 sein kann, aber trotzdem hingeschrieben wird. +\subsection{Abstrakte Schreibweise} +Will man ein Gleichungssystem allgemein aufschreiben, so erhalten die Koeffizienten meistens den Buchstaben $a_{i, j}$ mit Indizes unten, einem für die Zeilennummer und einem für die Variable, vor der sie stehen. + +Beispielsweise wäre $a_{1,3}$ der Koeffizient in der ersten Gleichung vor der dritten Variable. +Die Zahlen nach dem " $=$ " werden mit $b_i$ bezeichnet, wobei der Index $i$ unten für die Zeilennummer steht. So ist $b_2=-1 \mathrm{im}$ obigen Beispiel, nämlich die Zahl hinter dem " $=$ " der zweiten Gleichung. + +Ein allgemeines Gleichungssystem mit 3 Gleichungen in 4 Variablen sieht dann so aus: + +$$ +\begin{aligned} + \text { (I) : } & a_{1,1} x_1+a_{1,2} x_2+a_{1,3} x_3+a_{1,4} x_4=b_1 \\ + \text { (II) : } & a_{2,1} x_1+a_{2,2} x_2+a_{2,3} x_3+a_{2,4} x_4=b_2 \\ + \text { (III) : } & a_{3,1} x_1+a_{3,2} x_2+a_{3,3} x_3+a_{3,4} x_4=b_3 +\end{aligned} +$$ + + +\subsection{Matrixschreibweise} +Es gibt eine Möglichkeit, Gleichungssysteme sehr platzsparend und übersichtlich aufzuschreiben. +\subsubsection{Koeffizientenmatrix} +Dazu benötigt man erstmal eine Matrix mit so vielen Zeilen, wie das Gleichungssystem Gleichungen hat und so vielen Spalten, wie das Gleichungssystem Variablen besitzt. + +Ein Gleichungssystem mit 4 Gleichungen in 3 Variablen würde also eine $4 \times 3$-Matrix erfordern. +In diese Matrix trägt man nun alle Koeffizienten des Gleichungssystems ein. Dabei sind auch die Nullen zu berücksichtigen, die vor nicht auftauchenden Variablen stehen. + +Diese Matrix nennt man dann die Koeffizientenmatrix des Gleichungssystems, meistens wird sie mit $A$ bezeichnet. +\subsubsection{Beispiel} +Um auf unser obiges Beispiel zurückzukommen: Das Gleichungssystem + +$$ +\left.\begin{array}{rl} + \text { (I) : } & 2 x_1+3 x_2+x_4 \\ + =2 \\ + \text { (II) : } & x_2-x_3 \\ + \text { (III) : } & x_1-x_2+x_3-x_4 +\end{array}\right)=0 +$$ + +hat die Koeffizientenmatrix + +$$ +A=\left(\begin{array}{cccc} + 2 & 3 & 0 & 1 \\ + 0 & 1 & -1 & 0 \\ + 1 & -1 & 1 & -1 +\end{array}\right) +$$ + + +Platzsparend kann das ganze Gleichungssystem dann mit Hilfe von Matrizenmultiplikation aufgeschrieben werden: + +$$ +\left(\begin{array}{cccc} + 2 & 3 & 0 & 1 \\ + 0 & 1 & -1 & 0 \\ + 1 & -1 & 1 & -1 +\end{array}\right)\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 \\ + x_4 +\end{array}\right)=\left(\begin{array}{c} + 2 \\ + -1 \\ + 0 +\end{array}\right) +$$ + +Noch kürzer geht es so: $A x=b$. +Erweiterte Koeffizientenmatrix +Jetzt fehlen allerdings noch die Zahlen auf der Seite der Gleichungen nach dem " $=$ ". Diese trägt man untereinander in einen Spaltenvektor ein und hängt diesen sozusagen rechts noch an die Matrix dran. + +Den Vektor nennt man üblicherweise $b$. +Meistens trennt man Matrix und Vektor noch durch einen senkrechten Strich. Die entstehende Matrix mit einer Spalte mehr heißt erweiterte Koeffizientenmatrix und wird meist (Alb) geschrieben. + +Beispiel +Das obige Gleichungssystem besitzt dann die erweiterte Koeffizientenmatrix + +$$ +(A \mid b)=\left(\begin{array}{cccc|c} + 2 & 3 & 0 & 1 & 2 \\ + 0 & 1 & -1 & 0 & -1 \\ + 1 & -1 & 1 & -1 & 0 +\end{array}\right) +$$ + + +Lösungen und Lösungsmenge +Die Variablen $x_1$ bis $x_n$, die in einem Gleichungssystem vorkommen, sind gewissermaßen Platzhalter für reelle Zahlen. +Setzt man für die Variablen Zahlen ein und rechnet all die Summen aus, dann kann es sein, dass die Gleichungen nicht stimmen. +Beispielsweise könnte man in die Gleichung + +$$ +2 x_1+x_2=4 +$$ + + +Die Werte $x_1=1$ und $x_2=-1$ einsetzen. Dann steht da + +$$ +4=2 x_1+x_2=2 \cdot 1+(-1)=2-1=1 +$$ + +und das ist offenbar Quatsch, denn $4 \neq 1$. Wenn wir allerdings $x_1=1$ und $x_2=2$ eingesetzt hätten, dann wäre die Gleichung richtig gewesen. + +In diesem richtigen Fall nennen wir den Vektor + +$$ +\binom{1}{2} +$$ + +der aus den eingesetzten Zahlen in der Reihenfolge der Variablen besteht, eine Lösung der Gleichung. +In einem Gleichungssystem kommt meistens mehr als nur eine Gleichung vor. Setzen wir die Zahlen in allen Gleichungen gleichzeitig ein und sind alle Gleichungen erfüllt, dann heißt der Vektor eine Lösung des Gleichungssystems. + +Einige Vektoren beinhalten also Lösungen eines Gleichungssystems, andere nicht. +Die Menge aller Vektoren, die Lösungen eines Gleichungssystems beschreiben, nennt man die Lösungsmenge des Gleichungssystems. + +Sehr oft ist man vor die Aufgabe gestellt, die Lösung eines Gleichungssystems auszurechnen. In manchen Fallen kann man direkt sehen, was los ist. + +Beispiel +Die Lösungsmenge des Gleichungssystems + +$$ +\begin{aligned} + \text { (I) : } & x_1+x_2 \\ + \text { (II) : } & x_2=1 +\end{aligned} +$$ + +ist zum Beispiel + +$$ +L=\left\{\binom{1}{1}\right\} +$$ + +und besteht nur aus einem Vektor. Wegen $x_2=1$ muss der zweite Eintrag des Vektors 1 sein und dann kann diese 1 in die obere Gleichung eingesetzt werden und durch Umformung kommt auch $x_1=1$ heraus. + +Nicht immer ist es aber so einfach, die Lösung abzulesen. +Lösungsverfahren +Was das Lösungsverhalten eines linearen Gleichungssystems angeht, so gibt es drei Möglichkeiten. +Diese hängen aufs Engste mit dem Rang der Matrix zusammen. Im entsprechenden Artikel findet sich auch eine Charakterisierung des Lösungsverhaltens. + +\begin{enumerate} + \item Das Gleichungssystem hat überhaupt keine Lösung. + \item Es gibt genau eine Lösung des Gleichungssystems. + \item Es gibt sogar unendlich viele Lösungen des Gleichungssystems. +\end{enumerate} + +Um die Lösungsmenge eines Gleichungssystems zu bestimmen, muss auf jeden Fall das Gleichungssystem erst einmal vereinfacht werden. + +Dazu gibt es den sogenannten Gauß-Algorithmus, den man auf die erweiterte Koeffizientenmatrix des Gleichungssystems anwendet. +Der Gauß-Algorithmus überführt die erweiterte Koeffizientenmatrix in Zeilenstufenform. Aus dieser kann man sowohl das Lösungsverhalten als auch die Lösungsmenge erhalten. + +Genaueres und Ausführliches dazu findest du im Artikel über das Ablesen von Lösungen. + +\newpage + +\section{Rangformel für lineare Gleichungssysteme} +Ein lineares Gleichungssystem $A x=b$ besitzt immer eine Lösungsmenge $L$. Es gibt drei Möglichkeiten: +\begin{enumerate} + \item Das Gleichungssystem ist nicht lösbar. Dann ist die Lösungsmenge die leere Menge, das heißt $L=\emptyset$. + \item Es gibt genau eine Lösung. In diesem Fall besteht $L$ aus genau einem Punkt. Damit besitzt $L$ die Dimension $0$. + \item Es gibt unendlich viele Lösungen. Dabei besitzt $L$ eine höhere Dimension und ist entweder eine Gerade, eine Ebene, ein Raum und so weiter. +\end{enumerate} + +Die Matrix $A$ im Gleichungssystem $A x=b$ ist die Koeffizientenmatrix und sie besitzt natürlich einen Rang. +In dem Fall, dass es überhaupt eine Lösung gibt, hängt dieser Rang eng mit der Dimension von $L$ zusammen, und zwar nach folgender Formel: + +$$ +\operatorname{dim}(L)=n-\operatorname{Rang}(A) +$$ + + +Was ist hier $n$ ? Hier gibt es viele Charakterisierungen: + +\begin{enumerate} + \item Es ist die Anzahl der Variablen im Gleichungssystem. + \item $n$ entspricht auch der Spaltenanzahl der Koeffizientenmatrix $A$. + \item Es ist die Dimension des $\mathbb{R}^n$, in dem die Lösungsmenge $L$ liegt. + \item Es ist die Anzahl der Einträge der Lösungsvektoren. +\end{enumerate} + + +Achtung! +Falls du ein inhomogenes Gleichungssystem $A x=b$ vorgegeben hast, dann musst du zuerst immer feststellen, ob es überhaupt eine Lösung gibt. + +Die Rangformel gilt nur, falls mindestens eine Lösung existiert. +Dies ist für homogene Gleichungssysteme aber garantiert - dort gibt es immer den Nullvektor als Lōsung. +\subsection{Beispiel 1} +Wir gucken uns das homogene Gleichungssystem $A x=0$ an, welches die Koeffizientenmatrix + +$$ +A=\left(\begin{array}{cccc} + 2 & 1 & 0 & 4 \\ + 0 & -1 & 3 & 1 \\ + 0 & 0 & 0 & 0 +\end{array}\right) +$$ + +besitzt. Hier gibt es 4 Variablen, beziehungsweise hat $A$ vier Spalten. Homogene Systeme besitzen immer mindestens eine Lösung, nämlich die Nulllösung + +$$ +\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 \\ + x_4 +\end{array}\right)=\left(\begin{array}{l} + 0 \\ + 0 \\ + 0 \\ + 0 +\end{array}\right) +$$ + +Deshalb können wir die Rangformel anwenden, um die Dimension der Lősungsmenge herauszubekommen. +Der Rang von $A$ ist 2 , denn es gibt 2 Nichtnullzeilen. +Außerdem ist in der Formel $n=4$, wegen der 4 Variablen. Damit gilt + +$$ +\begin{aligned} + \operatorname{dim}(L) & =n-\operatorname{Rang}(A) \\ + & =4-2 \\ + & =2 +\end{aligned} +$$ + + +\subsection{Beispiel 2} +Die Lösungsmenge eines inhomogenen Gleichungssystems $A x=b$ sei gegeben durch + +$$ +L=\left\{\left.\left(\begin{array}{l} + 1 \\ + 0 \\ + 1 +\end{array}\right)+t\left(\begin{array}{c} + -1 \\ + 2 \\ + 0 +\end{array}\right) \right\rvert\, t \in \mathbb{R}\right\} +$$ + + +Wir können mit der Rangformel den Rang der Koeffizientenmatrix $A$ bestimmen, auch wenn wir eigentlich gar nicht wissen, wie die aussieht. + +In der Rangformel kommen außer $\operatorname{Rang}(A)$ noch die Dimension von $L$ und dieses $n$ vor. + +$$ +\operatorname{dim}(L)=n-\operatorname{Rang}(A) +$$ + + +Dabei entspricht $n$ der Anzahl der Einträge in den Lösungsvektoren, hier also $n=3$. +Außerdem kommt in $L$ ein Parameter $t$ vor, der die unendlich vielen Lösungen beschreibt. Es gilt also $\operatorname{dim} (L)=1$. Wären es zwei Parameter gewesen, dann wäre die Dimension auch 2 und so weiter. + +Also können wir einsetzen: + +$$ +1=3-\operatorname{Rang}(A) +$$ + + +Umstellen nach $\operatorname{Rang}(A)$ liefert sofort + +$$ +\begin{aligned} + \operatorname{Rang}(A) & =3-1 \\ + & =2 +\end{aligned} +$$ + +\subsubsection{Beispiel 3} +Ein inhomogenes Gleichungssystem $A x=b$ habe die erweiterte Koeffizientenmatrix + +$$ +(A \mid b)=\left(\begin{array}{ccc|c} + -1 & 2 & 0 & 0 \\ + 0 & -2 & 3 & 1 \\ + 0 & 0 & 0 & 2 +\end{array}\right) +$$ + + +Dabei ist $A$ + +$$ +\left(\begin{array}{ccc} + -1 & 2 & 0 \\ + 0 & -2 & 3 \\ + 0 & 0 & 0 +\end{array}\right) +$$ + +mit dem Rang 2. Die Spaltenanzahl von $\boldsymbol{A}$ ist 3 , also würde man nach der Rangformel folgendes Resultat erwarten: + +$$ +\begin{aligned} + \operatorname{dim}(L) & =n-\operatorname{Rang}(A) \\ + & =3-2 \\ + & =1 +\end{aligned} +$$ + + +Allerdings haben wir eine Sache übersehen: +Das Gleichungssystem besitzt überhaupt keine Lösung! - darauf musst du immer aufpassen. +Der Grund dafür, dass es keine Lösung gibt, ist der verschiedene Rang von ( Alb ) und $A$. Dieser Zusammenhang ist hier beschrieben. +Damit besitzt die Lösungsmenge $L$ überhaupt keine Dimension, denn sie ist leer: + +$$ +L=\emptyset +$$ + +\newpage + +\section{Vielfache und lineare Abhängigkeit} +Um zu bestimmen, ob genau zwei Vektoren linear abhängig sind reicht es zu überprüfen, ob der eine ein Vielfaches des anderen ist. +Dieses Verfahren ist dabei deutlich schneller (und intuitiver) als die Standardprozedur zum Test auf lineare (Un)abhängig. +Grafisch wäre das etwa so. Diese beiden Vektoren sind linear unabhängig: + +\begin{figure}[ht] + \centering + \includegraphics[width=0.5\linewidth]{LA03.png} + \caption{Enter Caption} + \label{fig:enter-label} +\end{figure} + + +Diese beiden hingegen sind linear abhängig, sie liegen auf derselben Geraden und sind Vielfache voneinander: + + +\begin{figure} + \centering + \includegraphics[width=0.5\linewidth]{LA04.png} + \caption{Enter Caption} + \label{fig:enter-label} +\end{figure} + +Um so etwas schnell (und ohne Zeichnung, was in vierdimensionalen Rāumen sowieso nicht geht) zu sehen, braucht man natürlich ein bisschen Übung. + +Hier ein paar Beispiele. Die folgenden Vektoren sind Vielfache voneinander (daher linear abhängig): +Beispiel 1 + +$$ +v=\binom{1}{2}, w=\binom{2}{4} +$$ + + +Es ist natürlich $w=2 v$. +Beispiel 2 +Auch diese beiden Vektoren sind Vielfache voneinander: + +$$ +v=\left(\begin{array}{c} + -4 \\ + 0 \\ + -2 \\ + 2 +\end{array}\right), w=\left(\begin{array}{c} + 2 \\ + 0 \\ + 1 \\ + -1 +\end{array}\right) +$$ + + +Hier ist $v=-2 w$. +Beispiel 3 +Die folgenden beiden Vektoren sind hingegen keine Vielfachen voneinander: + +$$ +v=\left(\begin{array}{l} + 0 \\ + 3 \\ + 1 +\end{array}\right), w=\left(\begin{array}{c} + -2 \\ + 0 \\ + 2 +\end{array}\right) +$$ + + +Das sieht man zum Beispiel bequem an der Position der Nullen. +Aber auch ohne Nullen kann man lineare Abhängigkeit schnell mit dem Verfahren testen: +Beispiel 4 + +$$ +v=\left(\begin{array}{l} + 1 \\ + 3 \\ + 1 +\end{array}\right), w=\left(\begin{array}{l} + 2 \\ + 1 \\ + 2 +\end{array}\right) +$$ + + +Die Überlegung ist dabei so: +Damit + +$$ +v=c \cdot w +$$ + +mit $c \in \mathbb{R}$ und $c \neq 0$ sein kann, müsste für die erste Komponente schon gelten, dass $c=\frac{1}{2}$ ist: + +$$ +\left(\begin{array}{c} + 1 \\ + \ldots \\ + \ldots +\end{array}\right)=\frac{1}{2} \cdot\left(\begin{array}{c} + 2 \\ + \ldots \\ + \ldots +\end{array}\right) +$$ + +für die zweite Komponente müsste gelten, dass $c=3$ ist: + +$$ +\left(\begin{array}{c} + \ldots \\ + 3 \\ + \ldots +\end{array}\right)=\frac{1}{2} \cdot\left(\begin{array}{c} + \ldots \\ + 1 \\ + \ldots +\end{array}\right) +$$ + +und für die dritte Komponente $c=2$. Wir bräuchten also unterschiedliche $c$-Werte und das geht leider nicht - daher sind auch diese Vektoren linear unabhängig. + +Zusammenhang mit der Definition +Warum ist "Vielfache sein" für zwei Vektoren dasselbe wie linear abhängig sein? +Na , per Definition sind zwei Vektoren $v$ und $w$ linear abhängig, wenn es eine Linearkombination + +$$ +\alpha v+\beta w=0 +$$ + +gibt, wobei mindestens einer der beiden Koeffizienten $\alpha$ und $\beta$ nicht $=0$ ist. +Das können wir umstellen: + +$$ +\alpha v=-\beta w +$$ + + +Und jetzt, angenommen $\alpha \neq 0$, erhalten wir + +$$ +v=-\frac{\beta}{\alpha} w +$$ + + +Also ist $w$ ein Vielfaches von $v$. + +\newpage + +\section{Matrizen in Vektoren umschreiben} + +Für viele Rechenaufgaben benötigst du deine "Rechenobjekte" in der Form von Spaltenvektoren. +Manchmal sind allerdings Matrizen vorgegeben und du sollst zum Beispiel bestimmen, ob sie linear unabhängig sind. +Um das bequem auszurechnen, musst du die Matrizen zunächst in eine andere (bekannte) Form verwandeln - nämlich in entsprechende äquivalente Spaltenvektoren. + +Verfahren +Schwierig ist das aber auf keinen Fall. Du startest links oben in der Matrix und gehst die erste Zeile ab. +Jeden Eintrag, den du findest, schreibst du untereinander in einen Spaltenvektor: + +%$\left(\begin{array}{cc}2 & 0 \\ 0 & 1\end{array}\right) \Rightarrow\left(\begin{array}{c}2 \\ 0 \\ \cdots\\ \cdots \end{array}\right)$ + + +\[ +\begin{tikzpicture} + % Matrix setzen + \matrix (A) [matrix of math nodes,left delimiter={(},right delimiter={)},outer sep=2pt] + { + 2 & 0 \\ + 0 & 1 \\ + }; + + \matrix (B) [matrix of math nodes, right delimiter={)}, left delimiter={(}, right=2cm of A, outer sep=2pt] { + 2 \\ + 0 \\ + \ldots \\ + \ldots \\ + }; + + \draw[blue,line width=2pt,opacity=0.35,->,>={Triangle[length=0pt 4,width=0pt 2]}] (A-1-1.west) -- (A-1-2.east); + \draw[thick, double distance=2pt, -{Implies}, opacity=1] ([xshift=15pt]A.east) -- ([xshift=-15pt]B.west); +\end{tikzpicture} +\] + +Jetzt gehst du in die nächste Zeile und wiederholst alles, schreibst die weiteren Einträge aber immer weiter nach unten in den Vektor. + +\[ +\begin{tikzpicture} + % Matrix setzen + \matrix (A) [matrix of math nodes,left delimiter={(},right delimiter={)},outer sep=2pt] + { + 2 & 0 \\ + 0 & 1 \\ + }; + + \matrix (B) [matrix of math nodes, right delimiter={)}, left delimiter={(}, right=2cm of A, outer sep=2pt] { + 2 \\ + 0 \\ + 0 \\ + 1 \\ + }; + + \draw[blue,line width=2pt,opacity=0.35,->,>={Triangle[length=0pt 4,width=0pt 3]}] (A-1-1.west) -- (A-1-2.east); + + \draw[blue,line width=1pt,dashed,opacity=0.35,->,>={Triangle[length=0pt 4,width=0pt 2]}] (A-1-2.east) -- (A-2-1.west); + + \draw[blue,line width=2pt,opacity=0.35,->,>={Triangle[length=0pt 4,width=0pt 3]}] (A-2-1.west) -- ([xshift=1pt]A-2-2.east); + + \draw[thick, double distance=2pt, -{Implies}, opacity=1] ([xshift=15pt]A.east) -- ([xshift=-15pt]B.west); + + %\draw ([xshift=5pt]A.east) -- node[above] {\Large$\Rightarrow$} ([xshift=-5pt]B.west); + + %\draw[opacity=1] ([xshift=5pt]A.east) -- node[above] {\Large$\Rightarrow$} ([xshift=-5pt]B.west); +\end{tikzpicture} +\] + + +Das war es schon. Wichtig ist, dass du die Reihenfolge des Ablesens genau einhältst (du könntest auch eine andere wählen, aber dann musst du es immer so machen). + +Merkregel +Wie beim Buchlesen - oben anfangen, dann von links nach rechts. (Interessant wäre hier wirklich die Frage, ob zum Beispiel Saudi-arabische Mathematiker das anders machen) + +Beispiele +Die beiden Matrizen + +$$ +\left(\begin{array}{ll} + 1 & 2 \\ + 3 & 4 +\end{array}\right),\left(\begin{array}{ll} + 5 & 6 \\ + 7 & 8 +\end{array}\right) +$$ + +werden zu den folgenden beiden Spaltenvektoren: + +$$ +\left(\begin{array}{l} + 1 \\ + 2 \\ + 3 \\ + 4 +\end{array}\right),\left(\begin{array}{l} + 5 \\ + 6 \\ + 7 \\ + 8 +\end{array}\right) +$$ + + +Die Matrix + +$$ +\left(\begin{array}{cccc} + 2 & 3 & -1 & 0 \\ + 1 & -1 & 1 & -1 +\end{array}\right) +$$ + +wird zu diesem monströsen Vektor: + +$$ +\left(\begin{array}{c} + 2 \\ + 3 \\ + -1 \\ + 0 \\ + 1 \\ + -1 \\ + 1 \\ + -1 +\end{array}\right) +$$ + +\newpage + +\section{Summe von Untervektorräumen}\label{SummeVonUntervektorraeumen} +Gegeben seien zwei Untervektorräume $U$ und $V$. Gelegentlich muss man sich mit der Summe $U+V$ beschäftigen. +Wer komplizierte Namen mag kann diese Konstruktion auch als Minkowski-Summe von Mengen bezeichnen. +\subsection{Was muss ich wissen?} +Zuerst mal das Wichtigste: Die Summe $U+V$ ist wieder ein Untervektorraum - und zwar derjenige, der alle Vektoren aus $U$ und alle aus $V$ enthält. + +Allerdings műssen auch alle möglichen Summen von Vektoren aus $U$ und $V$ enthalten sein, denn Untervektorräume sind ja bekanntlich abgeschlossen bezüglich Summenbildung. +Was heißt das? Eigentlich ganz einfach: Der Raum $U+V$ besteht aus allen möglichen Summen von Vektoren $u+v$, wobei $u \in U$ und $v \in V$ gilt: + +$$ +U+V=\{u+v \mid u \in U, v \in V\} +$$ + + +\subsection{Darstellung mit linearen Hüllen} +Besonders einfach gestaltet sich das mit der Summe, wenn die beiden Räume $U$ und $V$ als lineare Hullen gegeben sind, beispielsweise + +$$ +U=\left\langle u_1, \ldots, u_r\right\rangle +$$ + +und + +$$ +V=\left\langle v_1, \ldots, v_s\right\rangle +$$ + + +Dann lässt sich die Summe $U+V$ wieder als lineare Hülle darstellen, und zwar so: + +$$ +U+V=\left\langle u_1, \ldots, u_r, v_1, \ldots, v_s\right\rangle +$$ + +Beispiel +Ist beispielsweise + +$$ +U=\left\langle\left(\begin{array}{c} + 2 \\ + 1 \\ + 0 \\ + -1 +\end{array}\right),\left(\begin{array}{l} + 0 \\ + 1 \\ + 0 \\ + 1 +\end{array}\right),\left(\begin{array}{l} + 1 \\ + 0 \\ + 1 \\ + 0 +\end{array}\right)\right\rangle +$$ + +und + +$$ +V=\left\langle\left(\begin{array}{l} + -1 \\ + -1 \\ + -1 \\ + -1 +\end{array}\right),\left(\begin{array}{c} + 1 \\ + 2 \\ + 0 \\ + -1 +\end{array}\right)\right\rangle +$$ + +dann ist die Summe gegeben durch + +$$ +U+V=\left\langle\left(\begin{array}{c} + 2 \\ + 1 \\ + 0 \\ + -1 +\end{array}\right),\left(\begin{array}{l} + 0 \\ + 1 \\ + 0 \\ + 1 +\end{array}\right),\left(\begin{array}{l} + 1 \\ + 0 \\ + 1 \\ + 0 +\end{array}\right),\left(\begin{array}{l} + -1 \\ + -1 \\ + -1 \\ + -1 +\end{array}\right),\left(\begin{array}{c} + 1 \\ + 2 \\ + 0 \\ + -1 +\end{array}\right)\right\rangle +$$ + + +\newpage + + +\section{Untervektorräume} + +Ein Untervektorraum (manchmal auch nur Unterraum) ist erstmal auch ein Vektorraum. Zusätzlich ist er aber "eingebettet" in einen gröBeren Vektorraum. + +Zur Definition eines Untervektorraums $U$ gehört also die Angabe eines Vektorraums $V$, von dem $U$ eine Teilmenge ist, also $U \subseteq V$. Wie man die Vektoren addiert und mit Zahlen multipliziert wird dabei durch die entsprechenden Regeln im größeren Vektorraum gegeben. + +Was einen Untervektorraum aber von einer beliebigen Teilmenge eines Vektorraums unterscheidet, ist die Abgeschlossenheit. +Das bedeutet, dass man aus dem Untervektorraum durch Addition von Vektoren und Multiplikation mit Zahlen nicht "herauskommt", also immer wieder ein Vektor des Untervektorraums entsteht. + +Zwei Teilmengen, die immer auch die Eigenschaften des Untervektorraums erfüllen sind +- Die Menge $V$ selbst (denn $V$ ist Vektorraum und $V \subseteq V$ ) +- Der Nullvektorraum, also die Menge $\{0 \overrightarrow{\}}$, in der nur der Nullvektor enthalten ist. + +Wie kann so etwas aussehen? +Die bekannteste Formen von Untervektorräumen sind wohl die Lōsungsmengen homogener Gleichungssysteme, wie etwa + +$$ +U=\left\{\left.\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right) \in \mathbb{R}^3 \right\rvert\, x_1+x_2-x_3=0\right\} +$$ + + +Diese kann man auch in der sogenannten Parameterform angeben, etwa so: + +$$ +U=\left\{\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 \\ + x_4 +\end{array}\right) \in \mathbb{R}^4 \left\lvert\,\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 \\ + x_4 +\end{array}\right)=s\left(\begin{array}{l} + 1 \\ + 2 \\ + 0 \\ + 4 +\end{array}\right)+t\left(\begin{array}{c} + 0 \\ + -1 \\ + -3 \\ + 1 +\end{array}\right)\right., s, t \in \mathbb{R}\right\} +$$ + + +Aber auch bei linearen Hüllen handelt es sich stets um einen Untervektorraum. + +\subsection{tWie prüfe ich, ob eine gegebene Menge Untervektorraum ist?} +Diese Aufgabe erfordert, dass wir erstmal einen Vektorraum $V$ gegeben haben und die Menge $U \subseteq V$, von der wir feststellen sollen, ob es sich um einen Untervektorraum handelt. Dazu gehst du dann so vor: +\begin{description} + \item[I.] Ist $U$ die Lösungsmenge eines homogenen linearen Gleichungssystems? Wenn ja, dann ist es automatisch ein Untervektorraum (siehe unten) und wir sind fertig. + \item[II.] Liegt der Nullvektor in $U$? Wenn nicht, dann kann es kein Untervektorraum sein und wir können auch wieder aufhören. + \item[III.] Hast du die erste Frage mit nein und die zweite mit ja beantwortet, musst du das Untervektorraumkriterium anwenden und zeigen, ob es zutrifft oder nicht. +\end{description} + +Untervektorraum als Lösungsmenge eines homogenen LGS +Wenn die Menge $U$ die Form hat: + +$$ +U=\left\{x \in \mathbb{R}^n \mid A x=0\right\} +$$ + +ist $U$ also die Lősungsmenge eines homogenen linearen Gleichungssystems (LGS). +Man kann nachweisen (und vielleicht hast du das auch mal in der Vorlesung mitbekommen), dass jede Lösungsmenge eines homogenen linearen Gleichungssystem ein Untervektorraum ist, also dann auch $U$. + +Mit diesem Kriterium kann man ohne viel Aufwand eine Menge Unterräume identifizieren. +\subsection{Untervektorraum als Schnitt von Vektorräumen} +Schneidet man Vektorräume $U$ und $V$ miteinander, so entsteht immer ein neuer Vektorraum, der ein Untervektorraum von $U$ und $V$ ist. Mehr dazu findet man in diesem Artikel. + +\subsection{Nullvektor nicht in $U=U$ ist kein UVR} +Da ein Untervektorraum selbst ein Vektorraum ist, und Vektorräume immer einen Nullvektor enthalten müssen, muss natürlich auch $0 \in U$ gelten. + +Das sieht man auch durch das weiter unten besprochene Untervektorraumkriterium. Einer der Punkte dort ist, dass alle Vielfachen von einem Element des Untervektorraums $U$ wieder in $U$ sein müssen. Als Formel: + +Für alle $v \in U$ und $a \in \mathbb{R}$ gilt $a \cdot v \in U$ +Das gilt auch für $a=0$ und damit muss der Nullvektor $(0 \cdot v=0)$ immer in $U$ sein, damit es ein Untervektorraum sein kann. Ist das nicht der Fall, kann $U$ folglich kein Untervektorraum sein. + +\subsection{Das Untervektorraumkriterium} +Treffen die oben genannten Punkte nicht zu, gibt es noch ein allgemeines Kriterium, um herauszufinden, ob es sich bei einer Teilmenge $U \subseteq V$ eines Vektorraums $V$ um einen Untervektorraum handelt. + +Dazu muss gelten: +\begin{itemize} + \item $U$ ist nicht die leere Menge. + \item Sind $v, w \in U$ zwei Vektoren, so ist ihre Summe $v+w$ wieder ein Vektor aus $U$. + \item Ist $v \in U$ ein Vektor und $a$ eine reelle Zahl, so ist $a \cdot v$ wieder ein Vektor aus $U$. + +\end{itemize} + +Da die meisten Untervektorräume durch eine Eigenschaft und nicht explizit durch bestimmte Vektoren gegeben sind, muss man nachprüfen, dass überhaupt irgendein Vektor die angegebene Eigenschaft erfüllt. + +Wenn du dich an den Algorithmus gehalten hast, hast du ja bereits überprüft, ob $0 \in U$ gilt. Da du dich um das Untervektorraumkriterium nur kümmern musst, wenn $0 \in U$ ist, folgt gleich schon mal, dass $U \neq \emptyset$. + +Die zweite und dritte Bedingung stellen dann die Abgeschlossenheit bezüglich der Addition von Vektoren beziehungsweise der Skalarmultiplikation sicher. Wie man das macht schauen wir uns am besten am Beispiel an. + +Vorher aber noch eine kleiner Bemerkung: Manchmal verpackt man die letzten beiden Punkte auch in Einen. Dazu fordert man dann: +Sind $v, w \in U$ zwei Vektoren und $a, b \in \mathbb{R}$, so ist auch $a \cdot v+b \cdot w$ ein Vektor aus $U$. +Wir werden es der Übersicht halber immer mit den beiden oben angegeben Punkten versuchen, aber wer es schneller mag, kann das auch hier beides mit diesem einen Punkt erledigen. + +\section{Beispiel Untervektorraumkriterium} +Wir betrachten den $\underline{\mathbb{R}^3}$ und die Teilmenge + +$$ +W:=\left\{\left.\left(\begin{array}{l} + x \\ + y \\ + 0 +\end{array}\right) \right\rvert\, x, y \in \mathbb{R}\right\} +$$ + +also alle Vektoren, die in der dritten Komponente immer eine 0 stehen haben. +$U$ ist dann ein Untervektorraum von $\mathbb{R}^3$. Das zeigen wir jetzt mit dem Kriterium. +$U$ nicht leer: +Zuerst gilt $0 \in W$, denn für $x=0$ und $y=0$ erhalten wir den Nullvektor und da dieser auch in der dritten Komponente eine 0 hat, ist er ein Vektor, der die Bedingung erfüllt. + +Summe zweier Vektoren wieder in $U$ enthalten: +Sind zwei Vektoren + +$$ +\left(\begin{array}{l} + x \\ + y \\ + 0 +\end{array}\right),\left(\begin{array}{l} + u \\ + v \\ + 0 +\end{array}\right) +$$ + +aus $U$ gegeben, so liegt auch ihre Summe in $U$, denn + +$$ +\left(\begin{array}{l} + x \\ + y \\ + 0 +\end{array}\right)+\left(\begin{array}{l} + u \\ + v \\ + 0 +\end{array}\right)=\left(\begin{array}{c} + x+u \\ + y+v \\ + 0 +\end{array}\right) +$$ + +und dieser Vektor hat wieder 0 als dritten Eintrag. Genauso verhält es sich mit der Skalarmultiplikation. +Vielfaches der Elemente wieder in $U$ enthalten +Denn ist $a$ eine reelle Zahl, so gilt + +$$ +a\left(\begin{array}{l} + x \\ + y \\ + 0 +\end{array}\right)=\left(\begin{array}{c} + a x \\ + a y \\ + 0 +\end{array}\right) +$$ + +und auch dieser Vektor liegt in $U$, denn er enthält als dritten Eintrag eine 0 . +Damit ist das Untervektorraumkriterium erfüllt und $U$ ein Untervektorraum von $\mathbb{R}^3$. + +\subsubsection{Allgemeines Beispiel 1} +Die Menge + +$$ +U=\left\{\left.\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right) \in \mathbb{R}^3 \right\rvert\, x_1+x_2=x_3\right\} +$$ + +ist ein Untervektorraum von $V=\mathbb{R}^3$, denn es ist die Lösungsmenge eines homogenen LGS. Das sieht man, wenn man die Gleichung in der Menge umschreibt: + +$$ +x_1+x_2=x_3 \Leftrightarrow x_1+x_2-x_3=0 +$$ + + +\subsubsection{Allgemeines Beispiel 2} +Die Menge + +$$ +U=\left\{\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right) \in \mathbb{R}^3 \left\lvert\,\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right)=\left(\begin{array}{l} + 1 \\ + 0 \\ + 0 +\end{array}\right)+s\left(\begin{array}{c} + -1 \\ + 1 \\ + 0 +\end{array}\right)+t\left(\begin{array}{l} + 1 \\ + 0 \\ + 1 +\end{array}\right)\right., s, t \in \mathbb{R}\right\} +$$ + +ist kein Untervektorraum von $V=\mathbb{R}^3$. Es handelt sich zunächst nicht um die Lösungsmenge eines homogenen Gleichungssystems (dazu müsste der Vektor $(1,0,0)^{\mathrm{T}}$ weg). + +Damit der Nullvektor in $U$ liegt, müsste man $s$ und $t$ finden, sodass: + +$$ +\left(\begin{array}{l} + 1 \\ + 0 \\ + 0 +\end{array}\right)+s\left(\begin{array}{c} + -1 \\ + 1 \\ + 0 +\end{array}\right)+t\left(\begin{array}{l} + 1 \\ + 0 \\ + 1 +\end{array}\right)=\left(\begin{array}{l} + 0 \\ + 0 \\ + 0 +\end{array}\right) +$$ + + +Das geht aber nicht, denn aus der zweiten Zeile folgt $s=0$, aus der dritten Zeile $t=0$ und somit folgt für die erste Zeile: + +$$ +1+0+0=0 +$$ + +$U$ ist also kein Untervektorraum, weil $0 \notin U$. +Allgemeines Beispiel 3 +Ändern wir die Menge des letzten Beispiels so ab, dass + +$$ +U=\left\{\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right) \in \mathbb{R}^3 \left\lvert\,\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right)=s\left(\begin{array}{c} + -1 \\ + 1 \\ + 0 +\end{array}\right)+t\left(\begin{array}{l} + 1 \\ + 0 \\ + 1 +\end{array}\right)\right., s, t \in \mathbb{R}\right\} +$$ + +so handelt es sich um die Lösungsmenge eines homogenen linearen Gleichungssystems und dementsprechend um einen Untervektorraum. + +Hier gilt es zu beachten, wie man die Lösungsmenge von Gleichungssystemen darstellen kann. Dazu kann man ja mal die Lösungsmenge des Gleichungssystems aus unserem ersten Beispiel bestimmen: + +$$ +x_1+x_2-x_3=0 +$$ + +Allgemeines Beispiel 3 +Ändern wir die Menge des letzten Beispiels so $a b$, dass + +$$ +\left.U=\left\{\left.\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right) \in \mathbb{R}^3 \right\rvert\, \begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right)=s\left(\begin{array}{c} + -1 \\ + 1 \\ + 0 +\end{array}\right)+t\left(\begin{array}{l} + 1 \\ + 0 \\ + 1 +\end{array}\right), s, t \in \mathbb{R}\right\} +$$ + +so handelt es sich um die Lösungsmenge eines homogenen linearen Gleichungssystems und dementsprechend um einen Untervektorraum. + +Hier gilt es zu beachten, wie man die Lösungsmenge von Gleichungssystemen darstellen kann. Dazu kann man ja mal die Lösungsmenge des Gleichungssystems aus unserem ersten Beispiel bestimmen: + +$$ +x_1+x_2-x_3=0 +$$ + + +Diese Lösungsmenge ist genau unsere gegebene Menge, nur eben anders formuliert: + +$$ +\left\{\left.\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right) \in \mathbb{R}^3 \right\rvert\, x_1+x_2=x_3\right\}=\left\{\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right) \in \mathbb{R}^3 \left\lvert\,\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right)=s\left(\begin{array}{c} + -1 \\ + 1 \\ + 0 +\end{array}\right)+t\left(\begin{array}{l} + 1 \\ + 0 \\ + 1 +\end{array}\right)\right., s, t \in \mathbb{R}\right\} +$$ + +\newpage + +\section{Homogene lineare Gleichungssysteme} +\subsection{Definition} +Wir denken uns ein beliebiges lineares Gleichungssystem mit Koeffizientenmatrix $A$ und einem festen Vektor $b$. Wir schreiben dann + +$$ +A x=b +$$ + +mit dem Lösungsvektor $x$. Alle $x$, für die das stimmt, sind Lösungen des Gleichungssystems. +So, jetzt kommt's. Das Gleichungssystem heißt homogen, wenn $b=0$ ist, die rechte Seite der Gleichungen im Gleichungssystem also nur aus Nullen besteht. + +Die obige Gleichung sieht also so aus: + +$$ +A x=0 +$$ + + +Ansonsten, wenn nicht alle $b_i=0$ sind, dann heißt das Gleichungssystem inhomogen (siehe hier). +\subsection{Konsequenzen} +Die Gleichung $A x=0$ hat eine ziemlich direkte Auswirkung: +Ein homogenes Gleichungssystem besitzt immer mindestens eine Lösung, nämlich $x=0$. +Woran liegt das? Wenn wir uns eine beliebige Gleichung mit den Variablen $x_1$ bis $x_n$ vorgeben, zum Beispiel + +$$ +2 x_1-x_2+3 x_4=0 +$$ + +dann können wir einfach + +$$ +x_1=x_2=x_3=x_4=0 +$$ + +setzen und dann steht da $0=0$, also eine wahre Aussage, es stimmt alles. Wenn irgendein Eintrag von $b$ nicht $0$ wäre, dann würde das nicht in jedem Fall gehen. + +Wie man im Artikel über den Rang nachlesen kann, bedeutet das dann auch, dass ein homogenes Gleichungssystem unendlich viele Lösungen hat, wenn in der Zeilenstufenform von $A$ eine Nullzeile vorkommt. + +\subsection{Lösungsverfahren} +Ein homogenes Gleichungssystem wird genauso gelöst wie ein normales, allgemeines lineares Gleichungssystem. Am besten du benutzt dazu auch den Gauß-Algorithmus. + +Der einzige Unterschied ist, dass du keine erweiterte Koeffizientenmatrix aufstellen musst, sondern nur mit der Koeffizientenmatrix $A$ arbeitest. + +Da die Einträge von $b$ eh alle $0$ sind und sich das durch elementare Zeilenumformungen auch nicht ändern würde, kannst du die Nullspalte in der erweiterten Koeffizientenmatrix auch genauso gut weglassen. + +Mehr zur Lösung von linearen Gleichungssystemen (und insbesondere auch homogenen) findest du im Artikel zu dem Gauß-Algorithmus, im Theorieblock über allgemeine lineare Gleichungssysteme und im Artikel über das Ablesen von Lösungen aus der Zeilenstufenform. + +\newpage + +\section{Die Zeilenstufenform}\label{Zeilenstufenform} +Die Zeilenstufenform ist eine bestimmte Gestalt von Matrizen. +\subsection{Was ist die Zeilenstufenform?} +Um diese Frage zu beantworten, hier eine einfache Beschreibung: +In jeder Zeile (von oben nach unten) der Matrix müssen am Anfang der Zeile mehr Nullen stehen als in allen vorherigen Zeilen. +Dadurch ergeben sich die "Stufen", die der Zeilenstufenform ihren Namen geben. Vielleicht sind dir auch die speziellen Formen "Dreiecksgestalt" oder "Trapezform" ein Begriff. + +Letztlich sind das aber auch nur bestimmte Zeilenstufenformen. +\subsection{Erstes Beispiel} +Beispielsweise ist die folgende Matrix in Zeilenstufenform. Die Stufen sind dabei durch Striche eingezeichnet: +\begin{center} + \begin{tikzpicture} + + % Matrix mit Zahlen + \matrix (m) [matrix of math nodes, + nodes in empty cells, + left delimiter={(}, + right delimiter={)}, + column sep=1em, row sep=1em, + minimum height=1.25em, minimum width=1.25em, + anchor=center] + { + \textcolor{blue}{2} & \textcolor{red}{4} & \textcolor{red}{2} & 2 \\ + 0 & \textcolor{blue}{1} & \textcolor{red}{1} & 5 \\ + 0 & 0 & \textcolor{blue}{-1} & 1 \\ + 0 & 0 & 0 & 0\\ + }; + + % Treppe zeichnen + \draw[thick] (m-1-1.north west) -- (m-1-1.south west) -- (m-1-2.south west) -- (m-2-2.south west) -- (m-2-2.south east) + -- ([xshift=-4pt]m-2-3.south west) -- (m-3-3.south west) -- (m-3-4.south east); + \end{tikzpicture} +\end{center} + + + + +Die ersten beiden Stufen haben jeweils die Länge 1, die dritte hat die Länge 2. Es gibt keine Einschränkung, wie "groß" eine Stufe sein muss oder sein darf. + +Diese Form nennt man manchmal auch Trapezform, weil man die Linien auch wie ein Trapez ziehen kann: + +\begin{center} + \begin{tikzpicture} + + % Matrix mit Zahlen + \matrix (m) [matrix of math nodes, + nodes in empty cells, + left delimiter={(}, + right delimiter={)}, + column sep=1em, row sep=1em, + minimum height=1.25em, minimum width=1.25em, + anchor=center] + { + 2 & 4 & 2 & 2 \\ + 0 & 1 & 1 & 5 \\ + 0 & 0 & -1 & 1 \\ + 0 & 0 & 0 & 0\\ + }; + + % Treppe zeichnen + \draw[thick,red] (m-1-1.center) -- (m-1-4.center) -- (m-3-4.center) -- (m-3-3.center) -- (m-1-1.center); + \end{tikzpicture} +\end{center} + + + + +\subsection{Ein weiteres Beispiel} +Die erste Zeile darf dabei auch mit null beginnen. Die folgende Matrix ist daher ebenso in Zeilenstufenform: + +\begin{center} + \begin{tikzpicture} + [scale=0.5] + % Matrix mit Zahlen + \matrix (m) [matrix of math nodes, + nodes in empty cells, + left delimiter={(}, + right delimiter={)}, + column sep=1em, row sep=1em, + minimum height=1.25em, minimum width=1.25em, + anchor=center] + { + 0 & 1 & 1 & 1 & -1 & 2 \\ + 0 & 0 & 0 & 5 & 0 & 3 \\ + 0 & 0 & 0 & 0 & 1 & 1 \\ + 0 & 0 & 0 & 0 & 0 & 0 \\ + 0 & 0 & 0 & 0 & 0 & 0\\ + }; + + \draw[thick] (m-1-1.north east) -- ([yshift=-2mm]m-1-1.south east) -- ([yshift=-2mm,xshift=-1mm]m-1-4.south west) -- ([xshift=-1mm,yshift=-2mm]m-2-4.south west) -- ([yshift=-2mm]m-2-4.south east) -- ([yshift=-2mm,xshift=-2mm]m-2-5.south west) -- ([xshift=-2mm,yshift=-2mm]m-3-5.south west) -- ([yshift=-2mm]m-3-6.south east); + \end{tikzpicture} +\end{center} + + +\subsection{Eigenschaften} +Die Bedingung der Zeilenstufenform führt dazu, dass alle vorkommenden Nullzeilen der Matrix sich auf den letzten Zeilen befinden. + +Eine Matrix kann verschiedene Zeilenstufenformen haben. Beispielsweise könnte man einfach die erste Zeile mit 2 multiplizieren und eine andere Zeilenstufenform erhalten. + +Das ist sehr wichtig, wenn man Ergebnisse vergleichen will, weil es bei der Bestimmung einer Zeilenstufenform eben nicht eine, sondern viele Lösungen gibt. + +Was bei den verschiedenen Zeilenstufenformen einer Matrix übereinstimmen sollte ist die Anzahl der Nullzeilen: +Die Anzahl der Nullzeilen ist in jeder Zeilenstufenform einer Matrix gleich. +Es gibt eine besondere Zeilenstufenform, die reduzierte Zeilenstufenform, die für jede Matrix sogar komplett eindeutig bestimmt ist, mit allen Einträgen. + +\subsection{Beispiele 1} +Folgende Matrizen befinden sich in Zeilenstufenform. + +$$ +\left(\begin{array}{ll} + 0 & 0 \\ + 0 & 0 +\end{array}\right),\left(\begin{array}{llll} + 0 & 2 & 3 & 4 \\ + 0 & 0 & 2 & 3 \\ + 0 & 0 & 0 & 1 +\end{array}\right),\left(\begin{array}{lll} + 1 & 1 & 0 \\ + 0 & 1 & 1 \\ + 0 & 0 & 1 +\end{array}\right) +$$ + + +Die letzte Matrix hat dabei "Dreiecksgestalt", weil man analog zur Trapezform hier ein Dreieck über die Einträgen malen kann, die nicht null sind: + +\begin{center} + \begin{tikzpicture} + + % Matrix mit Zahlen + \matrix (m) [matrix of math nodes, + nodes in empty cells, + left delimiter={(}, + right delimiter={)}, + column sep=1em, row sep=1em, + minimum height=1.25em, minimum width=1.25em, + anchor=center] + { + 1 & 1 & 0 \\ + 0 & 1 & 1 \\ + 0 & 0 & 1 \\ + }; + + % Treppe zeichnen + \draw[thick,blue] (m-1-1.center) -- (m-1-3.center) -- (m-3-3.center) -- (m-1-1.center) ; + \end{tikzpicture} +\end{center} + + + +Beispiele 2 +Die folgenden Matrizen befinden sich hingegen nicht in Zeilenstufenform. + +$$ +\left(\begin{array}{ll} + 2 & 1 \\ + 1 & 0 +\end{array}\right),\left(\begin{array}{lll} + 1 & 1 & 0 \\ + 0 & 0 & 1 \\ + 0 & 0 & 2 +\end{array}\right),\left(\begin{array}{cccc} + 2 & -1 & 2 & -1 \\ + 0 & 0 & 0 & 1 \\ + 0 & 4 & 3 & 2 \\ + 0 & 0 & 4 & 3 +\end{array}\right) +$$ + + +Die letzte Matrix könnte man durch Umsortieren der Zeilen noch in Zeilenstufenform bringen, bei den anderen beiden kommt man an Additionen von Zeilen zu anderen nicht vorbei. + +Berechnung und weitere Anwendung +Jede Matrix kann man durch elementare Zeilenumformungen in eine ihrer Zeilenstufenformen überführen. +Zur Berechnung der Zeilenstufenform dient der GauB-Algorithmus. Im dazugehörigen Artikel wird auch das Rechenverfahren beschrieben. + +Beim Berechnen der linearen Unabhăngigkeit mit Parametern gibt es Tricks, die Zeilenstufenform leichter zu berechnen. Wie das geht steht hier + +Wie du aus der Zeilenstufenform die Lösung des zugehörigen linearen Gleichungssystems abliest, wird hier beschrieben. +Möchte man aus einem Erzeugendensystems eines Vektorraums eine Basis auswählen möchte hilft einem die Zeilenstufenform auch wie genau steht hier. + + +\newpage + +\section{Die reduzierte Zeilenstufenform} + +Wir setzen hier voraus, dass dir bekannt ist, was die Zeilenstufenform einer Matrix ist. +\subsection{Was ist die reduzierte Zeilenstufenform?} +In der Zeilenstufenform bist du fertig, wenn du die maximale Anzahl an Nullzeilen erreicht hast und bei jeder Zeile eine "Treppenstufe" zu finden ist. + +An die Werte der übrigbleibenden Einträge ist jedoch keine Bedingung gestellt. +Die reduzierte Zeilenstufenform setzt genau da an. Sie bezeichnet eine möglichst einfache Zeilenstufenform, mit möglichst vielen Nullen und Einsen in der Matrix. + +Der erste Eintrag ungleich 0 jeder Zeile, also die erste Zahl $\neq 0$ in jeder Stufe, soll dabei 1 sein. Außerdem sollen alle darüberliegenden Zahlen 0 sein. + +\subsubsection{Beispiel} +Die folgende Matrix erfült genau das. Die Stufenanfänge sind 1 , die darüberliegenden Einträge sind alle 0 . + +$\left(\begin{array}{cccc}1 & 0 & 2 & 0 \\ 0 & 1 & 4 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0\end{array}\right)$ + +\subsection{Wie bekommt man die reduzierte Zeilenstufenform?} +Sehen wir uns mal als Beispiel eine Zeilenstufenform an: + +$\left(\begin{array}{cccc}\lfloor 2 & 0 & 2 & 2 \\ 0 & 1 & 1 & 5 \\ 0 & 0 & -1 & 1 \\ 0 & 0 & 0 & 0\end{array}\right)$ + +Diese Zeilenstufenform ist nicht reduziert, denn am Anfang der ersten und dritten Zeile stehen 2 und -1 . +Durch Multiplikation der Zeilen mit entsprechenden Zahlen $\frac{1}{2}$ und -1 bekäme man die weg. Dann sähe die Zeilenstufenform so aus: + +$\left(\begin{array}{cccc}1 & 0 & 1 & 1 \\ 0 & 1 & 1 & 5 \\ 0 & 0 & 1 & -1 \\ 0 & 0 & 0 & 0\end{array}\right)$ + +Das ist aber immer noch nicht die reduzierte Zeilenstufenform, denn über den Anfängen der Stufen sollen überall noch Nullen stehen. +Das ist in der dritten Spalte nicht der Fall. Durch Subtraktion der dritten Zeile von den darüberliegenden erhält man schließlich + +$\left(\begin{array}{cccc}1 & 0 & 0 & 2 \\ 0 & 1 & 0 & 6 \\ 0 & 0 & 1 & -1 \\ 0 & 0 & 0 & 0\end{array}\right)$ + + +Diese Zeilenstufenform ist reduziert. Am Anfang jeder Stufe steht eine 1 und darüber sind nur Nullen zu finden, so wie gefordert. +Zur Berechnung der reduzierten Zeilenstufenform verwendet man den Gauß-Jordan-Algorithmus. Im Grunde genommen haben wir etwas Ähnliches schon eben gerade gemacht. + +\subsection{Eigenschaften} +Jetzt kommt noch eine tolle Eigenschaft der reduzierten Zeilenstufenform: +Es gibt zu jeder Matrix nur eine einzige reduzierte Zeilenstufenform. Egal welchen Rechenweg du anwendest und welche Operationen du durchführst, wenn du am Ende bei der reduzierten Zeilenstufenform landest, dann ist die immer gleich. + +Die reduzierte Zeilenstufenform einer Matrix ist eindeutig. +Das, was wir da oben ausgerechnet haben, hätten wir also immer herausbekommen, wenn wir mit der gleichen Matrix angefangen hätten. + +Egal, ob wir dabei seltsame Umwege oder unsinnige Zwischenschritte durchgeführt hätten. +\subsubsection{Beispiele} +Zum Abschluss bringen wir noch ein paar Beispiele für reduzierte Zeilenstufenformen: + +$$ +\left(\begin{array}{ll} + 1 & 0 \\ + 0 & 1 +\end{array}\right),\left(\begin{array}{lll} + 1 & 2 & 0 \\ + 0 & 0 & 1 \\ + 0 & 0 & 0 +\end{array}\right),\left(\begin{array}{llll} + 1 & 5 & 0 & 2 \\ + 0 & 0 & 1 & 1 +\end{array}\right) +$$ + + +Und auch noch ein paar Beispiele von Zeilenstufenformen, die nicht reduziert sind. + +$$ +\left(\begin{array}{lll} + 2 & 0 & 0 \\ + 0 & 0 & 1 \\ + 0 & 0 & 0 +\end{array}\right),\left(\begin{array}{ll} + 1 & 1 \\ + 0 & 1 +\end{array}\right),\left(\begin{array}{ccc} + 1 & -1 & 0 \\ + 0 & 1 & 1 +\end{array}\right) +$$ + + +Bei der ersten steht eine 2, wo eigentlich eine 1 stehen müsste (nämlich am Anfang einer Stufe). +Bei der zweiten stimmt zwar mit den Anfängen der Stufen alles, aber über der zweiten Stufe steht rechts oben noch eine 1 statt einer 0 . +Bei der dritten Matrix stimmt die -1 nicht. Sie müsste noch 0 werden, da sie über dem Anfang der zweiten Stufe steht. + +\newpage + +\section{Der Gauß-Jordan-Algorithmus} + +Beschreibung +Der Gauß-Jordan-Algorithmus ist eine Erweiterung des Gauß-Algorithmus. +Während der Gauß-Algorithmus dazu da ist, eine Matrix in Zeilenstufenform zu überführen, geht der Gauß-Jordan-Algorithmus noch weiter und erzeugt sogar die (eindeutig bestimmte) reduzierte Zeilenstufenform. + +Die ersten Schritte beider Algorithmen sind gleich. Wir können also davon ausgehen, dass der GauB-Algorithmus bereits angewendet wurde und die betrachtete Matrix in Zeilenstufenform ist. + +Zwei Schritte sind nun noch notwendig: +- Die ersten Einträge der "Stufen" müssen 1 sein. Das funktioniert durch Multiplikation mit dem Kehrwert. +- Die Einträge über den Anfängen der Stufen müssen alle 0 werden. Dazu kann man die Zeile, wo die Stufe anfängt, zu den darüberliegenden addieren oder von ihnen abziehen. + +Beispiel +Hier mal eine Zeilenstufenform: + +Die blau markierten Zahlen sind die Stufenanfänge der jeweiligen Zeile. Sie müssen 1 werden. +Die rot markierten Einträge sind die Einträge über den Stufenanfängen. Diese müssen alle 0 werden. +Die Eintrăge in der letzten Spalte stehen nicht über einem Stufenanfang. Sie können bleiben. +Die Rechenschritte +Jetzt kommen die einzelnen Rechenschritte, um aus der Zeilenstufenform die reduzierte Zeilenstufenform zu machen. +Schritt 1: Stufenanfang auf 1 bringen +Der erste Teil betriftt die Normierung der Stufenanfänge auf 1. Hierzu gehst du einfach alle Zeilen nacheinander durch und teilst jeweils die gesamte Zeile durch den ersten Eintrag der Zeile, der nicht null ist (den Stufenanfang). + +Beispiel +Wir hatten diese Matrix: + +$\left(\begin{array}{cccc}\lfloor 2 & 4 & 2 & 2 \\ 0 & 1 & 1 & 5 \\ 0 & 0 & -1 & 1 \\ 0 & 0 & 0 & 0\end{array}\right)$ + +Wir fangen in der ersten Zeile an. Der erste Eintrag ist 2 , was nicht 1 ist. Also multiplizieren wir die ganze Zeile mit $\frac{1}{2}$. +Dann gehen wir in die zweite Zeile. Der erste Nicht-Null-Eintrag ist 1, was okay ist. +Also gehen wir zur dritten Zeile. Dort ist der Eintrag -1 , was nicht 1 ist. Wir multiplizieren deshalb die ganze Zeile mit -1 . +Dann kommt heraus: + +$\left(\begin{array}{cccc}\begin{array}{|ccc}1 & 2 & 1\end{array} & 1 \\ 0 & 1 & 1 & 5 \\ 0 & 0 & 1 & -1 \\ 0 & 0 & 0 & 0\end{array}\right)$ + +Schritt 2: Nullen erzeugen +Der zweite Teil des Algorithmus betrifft nun die Einträge über den Stufenanfängen. Diese müssen alle 0 werden. +1. Beginne in der letzten Spalte. +II. Suche den untersten Eintrag, der nicht 0 ist und nimm den vordersten Eintrag (also den Stufenanfang) dieser Zeile (nennen wir die Zeile mal $a$ ) +III. Sieh dir den nächsten darüberliegenden Eintrag an (der nicht 0 ist). Die zugehörige Zeile nennen wir mal $b$ und der Wert des Eintrages sei $x$. +IV. Ziehe das $x$-fache der Zeile $a$ von der darüberliegenden Zeile $b$ ab. +V. Wiederhole die letzten beiden Schritte auch mit den darüberliegenden Zeilen, bis alle Einträge über dem Stufenanfang 0 sind. +VI. Gehe eine Spalte nach links und wiederhole ab Schritt 2. + +Beispiel +Wir sehen uns an, was in unserem Beispiel passiert: + +Wir fangen in der letzten Spalte an, der unterste Eintrag ist -1. Dieser ist jedoch nicht der Anfang der Stufe, also gehen wir eine Spalte nach links (in die dritte Spalte). + +Dort ist der unterste Eintrag (in der dritten Zeile) 1 und er ist der Anfang der Stufe. Gleich darüber liegt auch eine 1. +Ziehe also das 1 -fache der dritten Zeile von der zweiten Zeile ab. + +Jetzt ist in der ersten Zeile noch die 1. Wir ziehen also auch das 1-fache der dritten Zeile von der ersten ab. + + +Jetzt ist über dem Stufenanfang in der dritten Spalte keine Zahl außer 0 mehr, wir gehen also eine Spalte nach links. +Dort ist der unterste Eintrag die 1 in der zweiten Zeile. Es handelt sich um den Anfang der Stufe. +Darüber liegt eine 2, also ziehen wir das 2-fache der zweiten Zeile von der ersten ab. + +Jetzt ist auch in der zweiten Spalte alles in Ordnung und wir gehen eine Spalte weiter nach links in die erste Spalte. Dort ist aber nichts zu tun, denn über dem Stufenanfang liegt kein weiterer Eintrag. + +Fertig. +Kurze Anmerkung +Man kann die beiden Teilabschnitte des Algorithmus auch vertauschen. Manchmal ist das praktischer, wenn ansonsten durch das Multiplizieren mit den Kehrwerten zu viele Brüche entstehen würden. + +Dann muss man natürlich sehen, dass man beim Aufräumen über den Stufenanfängen (die nicht alle 1 sind) die entsprechenden Vielfachen der Zeile addiert oder abzieht. + +\newpage + +\section{Elementare Zeilenumformungen} + +\subsection{Was sind elementare Zeilenumformungen?} + +In der linearen Algebra beschäftigt man sich zu sehr großen Teilen mit linearen Gleichungssystemen und Matrizen. +Meistens möchte man die Gleichungssysteme oder Matrizen in eine einfachere Form bringen, an denen sich ihre Eigenschaften leichter ablesen lassen. + +Dazu kann man aber nicht einfach so beliebig irgendwelche Zahlen austauschen, sondern muss die sogenannten elementaren Zeilenumformungen anwenden. Davon gibt es drei Stück: +- Vertauschen von zwei Zeilen, +- Multiplikation einer Zeile mit einer Zahl (außer 0), +- Addition des Vielfachen einer Zeile zu einer anderen + +Man kann beliebig viele von ihnen hintereinander durchführen, um die gewünschte Gestalt des Gleichungssystems oder der Matrix zu erreichen. + +Was macht diese drei Umformungen so besonders? +Bei Matrizen verändern sich durch solche Umformungen die wesentlichen Eigenschaften der Matrix nicht (Rang, Lösung des zugehörigen Gleichungssystems, reduzierte Zeilenstufenform, Invertierbarkeit und so weiter). + +Diese drei elementaren Umformungen sind nämlich diejenigen, bei denen "keine Information verlorengeht", denn die Umformungen sind auch jederzeit umkehrbar. + +Multiplikation einer Zeile mit 0 ist hingegen keine elementare Zeilenumformung, weil dadurch alle Einträge der Zeile zu 0 werden, also sämtliche Information über die Zeile verlorengeht. + +Wir sehen uns jetzt jede der drei Umformungen noch mal etwas genauer an: +Vertauschen von zwei Zeilen +Sowohl lineare Gleichungssysteme als auch Matrizen besitzen Zeilen, die man vertauschen kann. +Dadurch geht keine Information verloren, denn wir könnten die Zeilen ja jederzeit wieder zurücktauschen. +Diese Umformung wird bei uns generell so notiert: + +$$ +(\mathrm{k}): \leftrightarrow(\mathrm{l}) \leadsto +$$ + + +Dabei geben $k$ und $l$ an, um welche Zeilen es sich handelt (also zum Beispiel (I) und (II)) und der Pfeil $\cdots$ soll symbolisieren, dass sich etwas verändert. + +\newpage + +\section{Untervektorräume} +Ein Untervektorraum (manchmal auch nur Unterraum) ist erstmal auch ein Vektorraum. Zusätzlich ist er aber "eingebettet" in einen größeren Vektorraum. + +Zur Definition eines Untervektorraums $U$ gehört also die Angabe eines Vektorraums $V$, von dem $U$ eine Teilmenge ist, also $U \subseteq V$. +Wie man die Vektoren addiert und mit Zahlen multipliziert wird dabei durch die entsprechenden Regeln im größeren Vektorraum gegeben. + +Was einen Untervektorraum aber von einer beliebigen Teilmenge eines Vektorraums unterscheidet, ist die Abgeschlossenheit. +Das bedeutet, dass man aus dem Untervektorraum durch Addition von Vektoren und Multiplikation mit Zahlen nicht "herauskommt", also immer wieder ein Vektor des Untervektorraums entsteht. + +Zwei Teilmengen, die immer auch die Eigenschaften des Untervektorraums erfüllen sind +- Die Menge $V$ selbst (denn $V$ ist Vektorraum und $V \subseteq V$ ) +- Der Nullvektorraum, also die Menge $\{0\}$, in der nur der Nullvektor enthalten ist. + +\subsection{Wie kann so etwas aussehen?} +Die bekannteste Formen von Untervektorräumen sind wohl die Lösungsmengen homogener Gleichungssysteme, wie etwa + +$$ +U=\left\{\left.\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right) \in \mathbb{R}^3 \right\rvert\, x_1+x_2-x_3=0\right\} +$$ + + +Diese kann man auch in der sogenannten Parameterform angeben, etwa so: + +$$ +U=\left\{\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 \\ + x_4 +\end{array}\right) \in \mathbb{R}^4 \left\lvert\,\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 \\ + x_4 +\end{array}\right)=s\left(\begin{array}{l} + 1 \\ + 2 \\ + 0 \\ + 4 +\end{array}\right)+t\left(\begin{array}{c} + 0 \\ + -1 \\ + -3 \\ + 1 +\end{array}\right)\right., s, t \in \mathbb{R}\right\} +$$ + + +Aber auch bei linearen Hüllen handelt es sich stets um einen Untervektorraum. + +\subsection{Wie prüfe ich, ob eine gegebene Menge Untervektorraum ist?} +Diese Aufgabe erfordert, dass wir erstmal einen Vektorraum $V$ gegeben haben und die Menge $U \subseteq V$, von der wir feststellen sollen, ob es sich um einen Untervektorraum handelt. Dazu gehst du dann so vor: +I. Ist $U$ die Lösungsmenge eines homogenen linearen Gleichungssystems? Wenn ja, dann ist es automatisch ein Untervektorraum (siehe unten) und wir sind fertig. +II. Liegt der Nullvektor in $U$ ? Wenn nicht, dann kann es kein Untervektorraum sein und wir können auch wieder aufhören. +III. Hast du die erste Frage mit nein und die zweite mit ja beantwortet, musst du das Untervektorraumkriterium anwenden und zeigen, ob es zutrifft oder nicht. + +\subsection{Untervektorraum als Lösungsmenge eines homogenen LGS} +Wenn die Menge $U$ die Form hat: + +$$ +U=\left\{x \in \mathbb{R}^n \mid A x=0\right\} +$$ + +ist $U$ also die Lősungsmenge eines homogenen linearen Gleichungssystems (LGS). +Man kann nachweisen (und vielleicht hast du das auch mal in der Vorlesung mitbekommen), dass jede Lősungsmenge eines homogenen linearen Gleichungssystem ein Untervektorraum ist, also dann auch $U$. + +Mit diesem Kriterium kann man ohne viel Aufwand eine Menge Unterrăume identifizieren. +\subsection{Untervektorraum als Schnitt von Vektorräumen} +Schneidet man Vektorräume $U$ und $V$ miteinander, so entsteht immer ein neuer Vektorraum, der ein Untervektorraum von $U$ und $V$ ist. Mehr dazu findet man in diesem Artikel. + +\subsection{Nullvektor nicht in $U=U$ ist kein UVR} +Da ein Untervektorraum selbst ein Vektorraum ist, und Vektorräume immer einen Nullvektor enthalten müssen, muss natürlich auch $0 \in U$ gelten. + +Das sieht man auch durch das weiter unten besprochene Untervektorraumkriterium. Einer der Punkte dort ist, dass alle Vielfachen von einem Element des Untervektorraums $U$ wieder in $U$ sein müssen. Als Formel: + +Für alle $v \in U$ und $a \in \mathbb{R}$ gilt $a \cdot v \in U$ +Das gilt auch für $a=0$ und damit muss der Nullvektor $(0 \cdot v=0)$ immer in $U$ sein, damit es ein Untervektorraum sein kann. Ist das nicht der Fall, kann $U$ folglich kein Untervektorraum sein. + + + +\subsection{Das Untervektorraumkriterium} +Treffen die oben genannten Punkte nicht zu, gibt es noch ein allgemeines Kriterium, um herauszufinden, ob es sich bei einer Teilmenge $U \subseteq V$ eines Vektorraums $V$ um einen Untervektorraum handelt. + +Dazu muss gelten: +- $U$ ist nicht die leere Menge. +- Sind $v, w \in U$ zwei Vektoren, so ist ihre Summe $v+w$ wieder ein Vektor aus $U$. +- Ist $v \in U$ ein Vektor und $a$ eine reelle Zahl, so ist $a \cdot v$ wieder ein Vektor aus $U$. + +Da die meisten Untervektorräume durch eine Eigenschaft und nicht explizit durch bestimmte Vektoren gegeben sind, muss man nachprüfen, dass überhaupt irgendein Vektor die angegebene Eigenschaft erfüll. + +Wenn du dich an den Algorithmus gehalten hast, hast du ja bereits überprüft, ob $0 \in U$ gilt. Da du dich um das Untervektorraumkriterium nur kümmern musst, wenn $0 \in U$ ist, folgt gleich schonmal, dass $U \neq \emptyset$. + +Die zweite und dritte Bedingung stellen dann die Abgeschlossenheit bezüglich der Addition von Vektoren beziehungsweise der Skalarmultiplikation sicher. Wie man das macht schauen wir uns am besten am Beispiel an. + +Vorher aber noch eine kleiner Bemerkung: Manchmal verpackt man die letzten beiden Punkte auch in Einen. Dazu fordert man dann: +Sind $v, w \in U$ zwei Vektoren und $a, b \in \mathbb{R}$, so ist auch $a \cdot v+b \cdot w$ ein Vektor aus $U$. +Wir werden es der Übersicht halber immer mit den beiden oben angegeben Punkten versuchen, aber wer es schneller mag, kann das auch hier beides mit diesem einen Punkt erledigen. + +\subsection{Beispiel Untervektorraumkriterium} +Wir betrachten den $\underline{\mathbb{R}^3}$ und die Teilmenge + +$$ +W:=\left\{\left.\left(\begin{array}{l} + x \\ + y \\ + 0 +\end{array}\right) \right\rvert\, x, y \in \mathbb{R}\right\} +$$ + +also alle Vektoren, die in der dritten Komponente immer eine 0 stehen haben. +$U$ ist dann ein Untervektorraum von $\mathbb{R}^3$. Das zeigen wir jetzt mit dem Kriterium. +$U$ nicht leer: +Zuerst gilt $0 \in W$, denn für $x=0$ und $y=0$ erhalten wir den Nullvektor und da dieser auch in der dritten Komponente eine 0 hat, ist er ein Vektor, der die Bedingung erfült. + +Summe zweier Vektoren wieder in $U$ enthalten: +Sind zwei Vektoren + +$$ +\left(\begin{array}{l} + x \\ + y \\ + 0 +\end{array}\right),\left(\begin{array}{l} + u \\ + v \\ + 0 +\end{array}\right) +$$ + +aus $U$ gegeben, so liegt auch ihre Summe in $U$, denn + +$$ +\left(\begin{array}{l} + x \\ + y \\ + 0 +\end{array}\right)+\left(\begin{array}{l} + u \\ + v \\ + 0 +\end{array}\right)=\left(\begin{array}{c} + x+u \\ + y+v \\ + 0 +\end{array}\right) +$$ + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +und dieser Vektor hat wieder 0 als dritten Eintrag. Genauso verhält es sich mit der Skalarmultiplikation. +Vielfaches der Elemente wieder in $U$ enthalten +Denn ist $a$ eine reelle Zahl, so gilt + +$$ +a\left(\begin{array}{l} + x \\ + y \\ + 0 +\end{array}\right)=\left(\begin{array}{c} + a x \\ + a y \\ + 0 +\end{array}\right) +$$ + +und auch dieser Vektor liegt in $U$, denn er enthält als dritten Eintrag eine 0 . +Damit ist das Untervektorraumkriterium erfüllt und $U$ ein Untervektorraum von $\mathbb{R}^3$. +\subsection{Allgemeines Beispiel 1} +Die Menge + +$$ +U=\left\{\left.\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right) \in \mathbb{R}^3 \right\rvert\, x_1+x_2=x_3\right\} +$$ + +ist ein Untervektorraum von $V=\mathbb{R}^3$, denn es ist die Lösungsmenge eines homogenen LGS. Das sieht man, wenn man die Gleichung in der Menge umschreibt: + +$$ +x_1+x_2=x_3 \Leftrightarrow x_1+x_2-x_3=0 +$$ + + +\subsection{Allgemeines Beispiel 2} +Die Menge + +$$ +U=\left\{\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right) \in \mathbb{R}^3 \left\lvert\,\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right)=\left(\begin{array}{l} + 1 \\ + 0 \\ + 0 +\end{array}\right)+s\left(\begin{array}{c} + -1 \\ + 1 \\ + 0 +\end{array}\right)+t\left(\begin{array}{l} + 1 \\ + 0 \\ + 1 +\end{array}\right)\right., s, t \in \mathbb{R}\right\} +$$ + +ist kein Untervektorraum von $V=\mathbb{R}^3$. Es handelt sich zunächst nicht um die Lösungsmenge eines homogenen Gleichungssystems (dazu müsste der Vektor $(1,0,0)^{\mathrm{T}}$ weg). + +Damit der Nullvektor in $U$ liegt, müsste man $s$ und $t$ finden, sodass: + +$$ +\left(\begin{array}{l} + 1 \\ + 0 \\ + 0 +\end{array}\right)+s\left(\begin{array}{c} + -1 \\ + 1 \\ + 0 +\end{array}\right)+t\left(\begin{array}{l} + 1 \\ + 0 \\ + 1 +\end{array}\right)=\left(\begin{array}{l} + 0 \\ + 0 \\ + 0 +\end{array}\right) +$$ + + +Das geht aber nicht, denn aus der zweiten Zeile folgt $s=0$, aus der dritten Zeile $t=0$ und somit folgt für die erste Zeile: + +$$ +1+0+0=0 +$$ + +$U$ ist also kein Untervektorraum, weil $0 \notin U$. +\subsection{Allgemeines Beispiel 3} +Ändern wir die Menge des letzten Beispiels so ab, dass + +$$ +U=\left\{\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right) \in \mathbb{R}^3 \left\lvert\,\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right)=s\left(\begin{array}{c} + -1 \\ + 1 \\ + 0 +\end{array}\right)+t\left(\begin{array}{l} + 1 \\ + 0 \\ + 1 +\end{array}\right)\right., s, t \in \mathbb{R}\right\} +$$ + +so handelt es sich um die Lösungsmenge eines homogenen linearen Gleichungssystems und dementsprechend um einen Untervektorraum. + +Hier gilt es zu beachten, wie man die Lösungsmenge von Gleichungssystemen darstellen kann. Dazu kann man ja mal die Lösungsmenge des Gleichungssystems aus unserem ersten Beispiel bestimmen: + +$$ +x_1+x_2-x_3=0 +$$ + + +Diese Lősungsmenge ist genau unsere gegebene Menge, nur eben anders formuliert: + +$$ +\left\{\left.\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right) \in \mathbb{R}^3 \right\rvert\, x_1+x_2=x_3\right\}=\left\{\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right) \in \mathbb{R}^3 \left\lvert\,\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right)=s\left(\begin{array}{c} + -1 \\ + 1 \\ + 0 +\end{array}\right)+t\left(\begin{array}{l} + 1 \\ + 0 \\ + 1 +\end{array}\right)\right., s, t \in \mathbb{R}\right\} +$$ + + +Falls dir die Beispiele noch nicht reichen: hier und hier gibt's Aufgaben zum Selber-Rechnen. + + + +\newpage + + +\section{Teilmengen} + + +Eine Menge $A$ heißt Teilmenge von $B$, wenn jedes Element von $A$ auch in $B$ liegt. Man schreibt dann + +$$ +A \subseteq B +$$ + + +Hierbei ist zu beachten, dass diese Teilmengendefinition auch einschließt, dass $A$ und $B$ die gleichen Mengen sein können. +Man kann also auch schreiben: + +$$ +A \subseteq A +$$ + + +Damit ist also jede Menge insbesondere eine Teilmenge von sich selbst. (Jaja, die Mathematiker und ihre Definitionen...) +Eine echte Teilmenge liegt vor, wenn es zusätzlich noch mindestens ein Element aus $B$ gibt, was nicht in $A$ liegt - letztlich also gilt, dass $A$ und $B$ nicht dieselben Mengen sind. + +Auch dafür gibt es eine spezielle Schreibweise: + +$$ +A \subset B +$$ + + +Grafisch kann man das "in $B$ enthalten sein" so darstellen: + +\begin{figure}[ht] + \centering + \includegraphics[width=0.7\linewidth]{Teilmengen} + \caption{} + \label{fig:teilmengen} +\end{figure} + + +Hat man nun zwei Mengen $A, B$ gegeben und soll herausfinden, ob $A$ in $B$ enthalten ist, muss man folglich prüfen, ob alle Elemente von $A$ in $B$ liegen. + +Hierzu reicht es in der Regel aus, die gegebenen Mengen zu vereinfachen, denn dann zeichnet sich meist schon ab, ob eine Teilmenge vorliegt, oder nicht. + +\subsection{Beispiel 1} +Die Menge $A=\{a, b, c\}$ ist eine echte Teilmenge von $B=\{d, a, e, b, f, c, g\}$, denn jeder der drei Buchstaben aus $A$ findet sich auch in $B$-die beiden Mengen sind aber offensichtlich nicht die gleichen. + +\subsection{Beispiel 2} +Bei den Mengen $A=\left\{x \in \mathbb{Z} \mid x^2<9\right\}$ und $B=\{0,1,2\}$ kann man nicht sofort bestimmen, was hier die Teilmengenbeziehung ist. Dazu vereinfachen wir $A$ erstmal: + +Die Ungleichung $x^2<9$ wird für alle $x \in \mathbb{R}$ zwischen -3 und 3 erfült: + +$$ +\begin{gathered} + x^2<9 \Rightarrow x<3 \text { und } x>-3 \\ + x \in(-3,3) +\end{gathered} +$$ + + +Da in $A$ aber nur ganze Zahlen erlaubt sind, dürfen wir also nur alle ganzen Zahlen aus dem Intervall $(-3,3)$ nehmen. + +$$ +A=\{-2,-1,0,1,2\} +$$ + + +Damit sieht man auch, dass $A$ nicht in $B$ enthalten ist, weil etwa das Element -2 nicht in $B$ liegt: + +$$ +A \nsubseteq B +$$ + + +Vielmehr gilt, dass alle Elemente von $B$ in $A$ liegen, also haben wir auch hier erneut eine echte Teilmenge: + +$$ +B \subset A +$$ + + +\subsection{Eigenschaften von Teilmengen} +Um in manchen Beweisen Mengen umschreiben zu können, ist folgendes Wissen besonders wertvoll: + +Seien $A, B$ Mengen. Dann gelten unter anderem folgende Beziehungen: +\begin{enumerate} + \item Die leere Menge ist Teilmenge jeder Menge: $\emptyset \subseteq A$ + \item Jede Menge ist Teilmenge von sich selbst: $A \subseteq A$ + \item $A$ ist Teilmenge von $B$ genau dann, wenn für die Vereinigung gilt: $A \cup B=B$ + \item $A$ ist Teilmenge von $B$ genau dann, wenn für den Schnitt gilt: $A \cap B=A$ + \item $A$ ist Teilmenge von $B$ genau dann, wenn für die Differenz gilt: $A \backslash B=\emptyset$ (also die Differenz leer ist) + \item Zwei Mengen $A$ und $B$ sind genau dann gleich, wenn $A$ Teilmenge von $B$ und $B$ Teilmenge von $A$ ist: + \\ + $$ + A=B \Leftrightarrow A \subseteq B \text { und } B \subseteq A + $$ +\end{enumerate} + + +\section{Summe von Untervektorräumen} +Gegeben seien zwei Untervektorrăume $U$ und $V$. Gelegentlich muss man sich mit der summe $U+V$ beschăftigen. +Wer komplizierte Namen mag kann diese Konstruktion auch als Minkowski-Summe von Mengen bezeichnen. +\subsection{Was muss ich wissen?} +Zuerst mal das Wichtigste: Die Summe $U+V$ ist wieder ein Untervektorraum - und zwar derjenige, der alle Vektoren aus $U$ und alle aus $V$ enthält. + +Allerdings müssen auch alle möglichen Summen von Vektoren aus $U$ und $V$ enthalten sein, denn Untervektorrauume sind ja bekanntlich abgeschlossen bezüglich Summenbildung. + +Was heißt das? Eigentlich ganz einfach: Der Raum $U+V$ besteht aus allen möglichen Summen von Vektoren $u+v$, wobei $u \in U$ und $v \in V$ gilt: + +$$ +U+V=\{u+v \mid u \in U, v \in V\} +$$ + + +\subsection{Darstellung mit linearen Hüllen} +Besonders einfach gestaltet sich das mit der Summe, wenn die beiden Räume $U$ und $V$ als lineare Hüllen gegeben sind, beispielsweise + +$$ +U=\left\langle u_1, \ldots, u_r\right\rangle +$$ + +und + +$$ +V=\left\langle v_1, \ldots, v_s\right\rangle +$$ + + +Dann lässt sich die Summe $U+V$ wieder als lineare Hülle darstellen, und zwar so: + +$$ +U+V=\left\langle u_1, \ldots, u_r, v_1, \ldots, v_s\right\rangle +$$ + + +Beispiel +Ist beispielsweise + +$$ +U=\left\langle\left(\begin{array}{c} + 2 \\ + 1 \\ + 0 \\ + -1 +\end{array}\right),\left(\begin{array}{l} + 0 \\ + 1 \\ + 0 \\ + 1 +\end{array}\right),\left(\begin{array}{l} + 1 \\ + 0 \\ + 1 \\ + 0 +\end{array}\right)\right\rangle +$$ + +und + +$$ +V=\left\langle\left(\begin{array}{l} + -1 \\ + -1 \\ + -1 \\ + -1 +\end{array}\right) \cdot\left(\begin{array}{c} + 1 \\ + 2 \\ + 0 \\ + -1 +\end{array}\right)\right\rangle +$$ + +dann ist die Summe gegeben durch + +$$ +U+V=\left\langle\left(\begin{array}{c} + 2 \\ + 1 \\ + 0 \\ + -1 +\end{array}\right),\left(\begin{array}{l} + 0 \\ + 1 \\ + 0 \\ + 1 +\end{array}\right) \cdot\left(\begin{array}{l} + 1 \\ + 0 \\ + 1 \\ + 0 +\end{array}\right),\left(\begin{array}{l} + -1 \\ + -1 \\ + -1 \\ + -1 +\end{array}\right),\left(\begin{array}{c} + 1 \\ + 2 \\ + 0 \\ + -1 +\end{array}\right)\right\rangle +$$ + +\newpage + +\section{Die lineare Hülle} +Wenn du Vektoren mit $n$ Einträgen gegeben hast, dann kannst du ihre lineare Hülle betrachten. +\subsection{Was ist das?} +Diese Menge besteht aus allen Vielfachen der Vektoren und deren Summen, ist also die Menge aller möglichen Linearkombinationen, die mit den gegebenen Vektoren gebildet werden können. + +Die lineare Hülle wird manchmal auch Erzeugnis oder Spann genannt. +Sie steht im engen Zusammenhang mit Erzeugendensystemen von Vektorräumen, da die gegebenen Vektoren ja genau das Erzeugendensystem darstellen, denn mit ihnen "baut" man die Lineare Hülle. + +Man nennt die gegebenen Vektoren von daher oft auch erzeugende Vektoren. +Die lineare Hülle taucht auch im Zusammenhang mit dem Bild einer Matrix auf. + + +%%%%%%%%%%%%%%%%%%%% +\subsubsection{Untervektorraum} +Die lineare Hülle ist übrigens immer ein Untervektorraum des Vektorraums aus dem die Vektoren sind. Siehe dazu das 1. Beispiel. +\subsubsection{Basis und Dimension} +Um die Basis einer linearen Hülle zu bestimmen, sucht man die Vektoren heraus, die linear unabhāngig sind. +Kennt man die Anzahl der linear unabhängigen Vektoren, so ist genau das die Dimension der Linearen Hülle. +Möchte man die Dimension einer linearen Hülle berechnen, geht man am Besten wie hier beschrieben vor. +Aufgaben zu dieser Problematik findest du z.Bsp. hier und hier. +Eine weitere Aufgabenstellung ist oft, ob ein bestimmter Vektor in einer linearen Hülle enthalten ist oder nicht - zum Glück kriegt man das leicht heraus. +\subsection{Schreibweisen} +Hier gibt es wie immer mehrere Varianten - hat man eine Menge von Vektoren gegeben + +$$ +M=\left\{v_1, \ldots, v_n\right\} +$$ + + +So kann man entweder + +$$ +\mathcal{L}(M)=\mathcal{L}\left(\left\{v_1, \ldots, v_n\right\}\right) +$$ + +oder + +$$ +\langle M\rangle=\left\langle v_1, \ldots, v_n\right\rangle +$$ + +oder aber auch + +$$ +\left\langle v_1, \ldots, v_n\right\rangle=\left\{a_1 v_1+\ldots a_n v_n \mid a_1, \ldots, a_n \in \mathbb{R}\right\} +$$ + +schreiben, um die lineare Hülle formal aufzuschreiben. +Die letzte Variante entspricht der sogenannten Parameterform. +Wir gehen diese Varianten mal für die gängigen Beispiele durch. +\newpage + +\section{Linearkombination von Vektoren} +Zwei Vektoren +Wir fangen mit zwei Vektoren mit der gleichen Anzahl an Einträgen an. Nennen wir die Vektoren $x$ und $y$. +Eine Linearkombination dieser beiden Vektoren ist eine Summe von Vielfachen dieser Vektoren. +Wenn also $t, s$ reelle Zahlen ist, dann ist $t x$ ein Vielfaches von $x$ und $s y$ ein Vielfaches von $y$. Die Summe + +$$ +t x+s y +$$ + +ist dann eine Linearkombination von $x$ und $y$. Man kombiniert die beiden Vektoren mit Koeffizienten zu einer Summe. +Auch wenn wir andere Zahlen wählen, also andere Vielfache von $x$ und $y$, dann ist deren Summe wieder eine (andere) Linearkombination von $x$ und $y$. + +Beispiel +Jetzt wollen wir ein konkretes Beispiel ausrechnen. Die beiden Vektoren $x$ und $y$ seien Vektoren aus dem $\mathbb{R}^2$. + +$$ +x=\binom{1}{1}, y=\binom{-1}{3} +$$ + + +Wir setzen $t=2$ und $s=-1$, betrachten also das 2 -fache von $x$ und das -1 -fache von $y$. Dann ist die dazugehörige Linearkombination + +$$ +2 x-y=2\binom{1}{1}-\binom{-1}{3} +$$ + + +Diese Linearkombination hat sogar einen konkreten Wert, den wir ausrechnen können: + +$$ +\binom{2}{2}-\binom{-1}{3}=\binom{2-(-1)}{2-3}=\binom{3}{-1} +$$ + + +Die Menge aller Linearkombinationen von Vektoren wird auch als deren lineare Hülle bezeichet. +Mehr als zwei Vektoren +Nachdem wir den Fall von zwei Vektoren besprochen haben, kōnnen wir mehr nehmen. Wir nehmen $k$ Vektoren mit der gleichen Anzahl an Eintrăgen, also etwa $a_1$ bis $a_k$. + +Dann wählen wir $k$ Koeffizienten aus $\mathbb{R}$, also etwa $t_1$ bis $t_k$ und bilden das jeweilige Vielfache $t_i a_i$ für alle $i=1, \ldots, k$. Deren Summe ist dann eine Linearkombination von $a_1$ bis $a_k$ : + +$$ +t_1 a_1+t_2 a_2+\ldots+t_k a_k +$$ + + +Jede andere Wahl von Koeffizienten $t_1$ bis $t_k$ liefert eine andere Linearkombination der Vektoren $a_1$ bis $a_k$. +Die Linearkombination wird wie gesagt im Zusammenhang mit linearen Hüllen benötigt, aber auch bei der Bestimmung von Unabhängigkeit betrachtet man Linearkombinationen von Vektoren. + +\newpage + +\section{Das Erzeugendensystem} +\subsection{Definition} +Wir nehmen uns einen Vektorraum $V$. +Ein Erzeugendensystem (EZS) für einen solchen Vektorraum ist eine Menge von Vektoren, deren lineare Hülle der gesamte Vektorraum ist. + +Das EZS ist also die Menge an Vektoren, mit denen ich die gesamte Menge $V$ "bauen" kann (durch Linearkombinationen). Jeder Vektor muss sich also irgendwie als Summe (mit Koeffizienten davor) von Vektoren aus dem Erzeugendensystem schreiben lassen. + +Noch einmal etwas formaler: Ein Erzeugendensystem ist eine Teilmenge $X=\left\{v_1, v_2, \ldots, v_n\right\}$ von $V$, so dass es für jeden beliebigen Vektor $v \in V$ eine Linearkombination + +$$ +a_1 v_1+\ldots+a_n v_n=v +$$ + +gibt, deren Ergebnis $v$ ist. Dabei sind die Koeffizienten $a_i$ reelle Zahlen. +\subsection{Wie bestimmt man, ob $X$ ein EZS ist?} +Einen einfachen Fahrplan dazu findest du hier im Abschnitt "Algorithmus". Allgemein müsste man eigentlich zeigen, dass jeder Vektor aus der Menge $V$ eine Linearkombination der gegebenen Vektoren ist. + +Das führt einen zu einem Gleichungungssystem, von dem man dann zeigen muss, dass es für jeden Vektor aus $V$ gilt. Wie das aussieht kannst du dir in dieser Aufgabe ansehen - wir würden dir trotzdem den oben verlinken Algorithmus empfehlen :) + +Darüber hinaus gibt es noch ein paar Kriterien, die dabei helfen, zu bestimmen, ob Mengen EZS sind oder nicht. +\subsubsection{Kriterien} +Erzeugendensysteme können beliebig viele Vektoren enthalten, auch solche, die man weglassen könnte und man dann immer noch ein Erzeugendensystem hätte. + +Ein minimales Erzeugendensystem hingegen, wo man also keine Vektoren mehr weglassen kann, heiBt eine Basis des Vektorraums. Jede Basis ist also EZS. + +Eine Menge von Vektoren, die weniger Elemente enthält als die Dimension des Vektorraums, kann niemals ein Erzeugendensystem sein. +\subsection{Beispiel 1} +Wir betrachten den Vektorraum $\underline{\mathbb{R}^2}$ der Spaltenvektoren mit zwei Einträgen und wollen ein paar verschiedene Erzeugendensysteme angeben. + +Ein (etwas sinnloses) Beispiel ist es, die Menge aller Vektoren von $\mathbb{R}^2$ als Erzeugendensystem zu betrachten. Das funktioniert natürlich, vereinfacht die Sache aber auch nicht. + +Man kann dann jeden Vektor $v \in \mathbb{R}^2$ einfach als + +$$ +v=1 \cdot v +$$ + +schreiben, also als Linearkombination von Vektoren ( $v$ alleine reicht schon) des Erzeugendensystems. + +\subsection{Beispiel 2} +Ein etwas sinnvolleres Beispiel ist die Menge + +$$ +E=\left\{\binom{1}{0},\binom{0}{2}\right\} +$$ + + +Wenn wir uns dann einen beliebigen Vektor + +$$ +v=\binom{x}{y} +$$ + +hernehmen, so können wir den schreiben als Linearkombination der Vektoren aus $E$, nämlich als + +$$ +v=\binom{x}{y}=x\binom{1}{0}+\frac{1}{2} y\binom{0}{2} +$$ + + +Deshalb ist $E$ ein Erzeugendensystem. Ebenso wäre aber + +$$ +F=\left\{\binom{1}{0},\binom{0}{2},\binom{1}{1}\right\} +$$ + +ein Erzeugendensystem, denn wie wir gesehen haben kommt man schon mit den ersten beiden Vektoren aus. Der Dritte stört dann nicht weiter. + +Es kann dann aber mehrere unterschiedliche Möglichkeiten geben, einen Vektor mit $F$ zu erzeugen. Beispielsweise: + +$$ +\begin{aligned} + \binom{2}{1} & =2\binom{1}{0}+\frac{1}{2}\binom{0}{2} \\ + & =1\binom{1}{0}+1\binom{1}{1} +\end{aligned} +$$ + + +\newpage + + +\section{Basen von Vektorräumen}\label{BasenVonVektorraeumen} +Eine Basis eines Vektorraums $V$ ist eine Menge von Vektoren, die gleichzeitig ein Erzeugendensystem für ganz $V$ ist, aber auch nur linear unabhängige Vektoren enthalt. + +Vektorrăume besitzen mehrere Basen (normalerweise unendlich viele verschiedene), aber alle haben die gleiche Anzahl Vektoren. +Die Anzahl dieser Vektoren ist für den Vektorraum $V$ also eindeutig bestimmt und heißt seine Dimension. +Eine Basis erfült alle folgenden Beschreibungen. Wenn man nachprüfen möchte, ob eine Menge von Vektoren eine Basis ist, reicht es also, eine der Eigenschaften nachzuweisen. +\begin{enumerate} + \item Sie ist ein \textbf{linear unabhängiges Erzeugendensystem}. Das ist ja die Definition. + \item Sie ist ein maximales \textbf{linear unabhängiges System}. Das bedeutet, die Menge der Vektoren ist linear unabhängig und man kann keinen Vektor dazunehmen, ohne dass die Menge linear abhăngig wird. + \item Sie ist ein\textbf{ minimales Erzeugendensystem}. Das bedeutet, die Menge der Vektoren erzeugt ganz $V$ und man kann keinen Vektor weglassen, ohne dass das Erzeugnis nicht mehr ganz $V$ ist. + \item Jeder Vektor aus $V$ kann auf genau eine Art als Linearkombination der Basisvektoren geschrieben werden. +\end{enumerate} + +Meistens ist es jedoch das Einfachste, die Definition nachzuprüfen, also dass die Menge linear unabhăngig und ein Erzeugendensystem ist. Dazu nimmst du folgenden Fahrplan: + +\subsection{Algorithmus} +Gegeben ist die Menge $E=\left\{v_1, v_2, \ldots, v_n\right\}$ und der Vektorraum $V$. Um zu prüfen, ob $E$ Erzeugendensystem (EZS) oder gar Basis ist machst du Folgendes: + +\begin{enumerate}[I] + \item Gilt $E \subseteq V$ ? Wenn nicht, kann $E$ kein EZS und damit auch keine Basis sein. + \item Bestimme die Dimension von $V$ und die Dimension der linearen Hulle von $E$ (wie man das macht steht unten). Gilt nun + + $$ + \operatorname{Dim}(V)=\operatorname{Dim}\left(\left\langle v_1, v_2, \ldots, v_n\right\rangle\right) + $$ + + \item Stimmt die obige Gleichung, musst du noch prüfen, ob alle Vektoren linear unabhängig sind. Wenn ja, dann hast du auch eine Basis - wenn nicht, dann nicht! +\end{enumerate} + +Zusammengepackt mit nem Beispiel findest du diesen Algorithmus noch einmal hier. +Im Endeffekt kann man den ersten Punkt überspringen, denn so eine leichte Aufgabe wird es wohl nur geben, wenn dein Dozent einen Druckfehler übersieht. + +Die Punkte zwei und drei kann man auch in einem Abwasch erledigen, denn für die Dimension der linearen Hülle stellt man die Matrix auf, die die Vektoren $v_1$ bis $v_n$ als Spaiten enthält: + +$$ +A=\left(\begin{array}{llll} + v_1 & v_2 & \ldots & v_n +\end{array}\right) +$$ + + +Von dieser Matrix berechnest du den Rang und bekommst so: + +$$ +\operatorname{Dim}\left(\left\langle v_1, v_2, \ldots, v_n\right\rangle\right)=\operatorname{Rang}(A) +$$ + + +Damit klărst du nun, ob $E$ EZS ist oder nicht. +Wenn ja, dann würdest du jetzt schauen, ob $v_1$ bis $v_n$ linear unabhängig sind. Und dazu berechnest du den Rang von $A!$ Entspricht dieser der Anzahl deiner Vektoren, sind diese linear unabhängig und du hast eine Basis. + +Man kann also zusammenfassend sagen: +Stimmen Anzahl der Vektoren, der Rang der Matrix aus diesen Vektoren und die Dimension des Vektorraums, in dem sie liegen überein, dann hast du eine Basis. + +\subsubsection{Beispiel 1} +Wir wollen überprüfen, ob + +$$ +E=\left\{\binom{1}{2},\binom{-1}{2},\binom{0}{1}\right\} +$$ + +ein Erzeugendensystem von $V=\mathbb{R}^2$ ist. Dazu arbeiten wir unseren Algorithmus ab. +Schritt 1: $E \subseteq V$ ? +Alle drei Vektoren liegen im $\mathbb{R}^2$, also trifft dieser Punkt erwartungsemāß zu. +Schritt 2: Dimensionen bestimmen +Die Dimension von $V$ ist zwei. Für die Dimension der linearen Hülle von $E$ stellen wir diese Matrix auf: + +$$ +A=\left(\begin{array}{ccc} + \frac{v_1}{1} & \frac{v_2}{-1} & \frac{v_3}{0} \\ + 2 & 2 & 1 +\end{array}\right) +$$ + + +Eine Zeilenstufenform dieser Matrix erhalten wir, indem wir das Zweifache der ersten Zeile von der zweiten abziehen: + +$$ +\left(\begin{array}{ccc} + 1 & -1 & 0 \\ + 0 & 4 & 1 +\end{array}\right) +$$ + + +Der Rang hiervon ist 2. Damit folgt: + +$$ +2=\operatorname{Rang}(A)=\operatorname{Dim}\left(\left\langle v_1, v_2, \ldots, v_n\right\rangle\right)=\operatorname{Dim}(V) +$$ + + +$E$ ist also definitiv Erzeugendensystem. +Schritt 3: Ist es auch Basis? +Wir haben drei Vektoren, der Rang der Matrix $A$ ist aber nur 2. Damit sind die Vektoren nicht linear unabhängig und $E$ ist keine Basis. +\subsubsection{Beispiel 2} +Wir wollen überprüfen, ob + +$$ +E=\left\{\left(\begin{array}{c} + 1 \\ + 0 \\ + -1 +\end{array}\right),\left(\begin{array}{c} + 2 \\ + 2 \\ + -4 +\end{array}\right),\left(\begin{array}{c} + 0 \\ + 2 \\ + -2 +\end{array}\right)\right\} +$$ + +ein Erzeugendensystem oder gar eine Basis von $V=\mathbb{R}^3$ ist. Schritt eins ist wieder klar, denn alle drei Vektoren liegen im $\mathbb{R}^3$. Daher gleich zum zweiten Schritt. + +Schritt 2: Dimensionen bestimmen +$V$ hat Dimension drei. Wenn wir unsere Vektoren als Matrix aufschreiben und dann die Zeilenstufenform erzeugen, bekommen wir: + +$$ +A=\left(\begin{array}{ccc} + 1 & 2 & 0 \\ + 0 & 2 & 2 \\ + -1 & -4 & -2 +\end{array}\right) +$$ + + +$$ +\begin{aligned} + & \text { (III) : }+ \text { (I) } \rightarrow \\ + & \left(\begin{array}{ccc} + 1 & 2 & 0 \\ + 0 & 2 & 2 \\ + 0 & -2 & -2 + \end{array}\right) \\ + & \text { (III) : }+ \text { (II) } \rightarrow \\ + & \left(\begin{array}{lll} + 1 & 2 & 0 \\ + 0 & 2 & 2 \\ + 0 & 0 & 0 + \end{array}\right) +\end{aligned} +$$ + + +Der Rang dieser Matrix ist zwei und damit folgt: + +$$ +2=\operatorname{Rang}(A)=\operatorname{Dim}\left(\left\langle v_1, v_2, \ldots, v_n\right\rangle\right) \neq \operatorname{Dim}(V)=3 +$$ + + +Also kann $E$ kein Erzeugendensystem von $V$ sein und ist damit auch keine Basis, weil $E$ nur etwas Zweidimensionales erzeugen kann (eine Ebene also) und das reicht nicht für den $\mathbb{R}^3$. Schritt 3 fält also auch flach. + +Im Artikel über die Dimension werden am Beispiel des $\mathbb{R}^n$, also des Vektorraums der Spaltenvektoren mit $n$ Einträgen, exemplarisch weitere Basen und die Dimension ausgerechnet. + +\newpage + + +\section{Bestimmen einer Basis} + +Oft ist es wichtig, zu einem gegebenen (Unter) Vektorraum $V$ eine Basis explizit zu bestimmen, um damit rechnen zu können. +Je nachdem, in welcher Form dein Vektorraum gegeben ist (und da gibt es ja wirklich einige), gibt es unterschiedliche Verfahren, die wir als Übersicht kurz präsentieren wollen. + +\subsection{Vektorraum ist der $\mathbb{R}^n$} + +Es gibt eine Standardbasis (die sogenannte kanonische Basis), die kennst du sicher. +für den $\mathbb{R}^2$ sieht sie so aus: + +$$ +\binom{1}{0},\binom{0}{1} +$$ + +für den $\mathbb{R}^3$ dann so: + +$$ +\left(\begin{array}{l} + 1 \\ + 0 \\ + 0 +\end{array}\right),\left(\begin{array}{l} + 0 \\ + 1 \\ + 0 +\end{array}\right),\left(\begin{array}{l} + 0 \\ + 0 \\ + 1 +\end{array}\right) +$$ + + +Wenn du aus irgendeinem Grund die nicht verwenden kannst, dann kannst du aus ihnen 3 andere Vektoren herstellen, indern du Vielfache und Summen bildest, etwa + +$$ +\left(\begin{array}{l} + 2 \\ + 2 \\ + 2 +\end{array}\right),\left(\begin{array}{l} + 0 \\ + 3 \\ + 3 +\end{array}\right),\left(\begin{array}{l} + 0 \\ + 0 \\ + 4 +\end{array}\right) +$$ + + +So lange du nicht zu wild herumrechnest, bleiben die drei Vektoren eine Basis. +Merkregel +Solange du in jedem Vektor an einer unterschiedlichen Position eine $0$ stehen hast, bleiben die Vektoren linear unabhängig. +Im oberen Beispiel besitzt der erste Vektor keine $0$, der zweite an der ersten Stelle, der dritte besitzt an der zweiten Stelle eine $0$, die sonst kein Vektor dort hat - passt also! + +Zur Sicherheit kannst du natürlich immer noch überprüfen, ob die Vektoren noch linear unabhängig sind. + +\subsection{Der Vektorraum ist gegeben als lineare Hülle} +Eine weitere mögliche Art, einen Vektorraum anzugeben, ist als lineare Hülle von ein paar Vektoren. (Genauer: Einer Menge von Vektoren) + +Beispielsweise: + +$$ +V=\left\langle\left(\begin{array}{l} + 2 \\ + 0 \\ + 1 \\ + 0 +\end{array}\right),\left(\begin{array}{c} + -1 \\ + -1 \\ + 1 \\ + 1 +\end{array}\right),\left(\begin{array}{l} + 0 \\ + 1 \\ + 1 \\ + 0 +\end{array}\right)\right\rangle +$$ + + +Da die gegebenen Vektoren immer ein Erzeugendensystem bilden (Das gilt bei linearen Hüllen ja immer), geht es im Grunde darum, aus diesem EZS eine Basis auszuwählen. + +Wie das geht, dazu gibt es eine ausführliche Anleitung hier. +\subsection{Vektorraum ist gegeben durch Bedingungen (lineare Gleichungen)} +Ein mögliches Beispiel, wie du dir das vorzustellen hast: + +$$ +V=\left\{\left.\left(\begin{array}{l} + x_1 \\ + x_2 \\ + x_3 +\end{array}\right) \in \mathbb{R}^3 \right\rvert\, \begin{array}{r} + 2 x_1+x_3=0 \\ + x_1-x_2=0 +\end{array}\right\} +$$ + + +Hier besteht $V$ aus allen Vektoren, deren Einträge aus dem $\mathbb{R}^3$ sind und die Bedingungen in Form der Gleichungen erfüllen. +Anders gesagt: Die Vektoren in $V$ lösen alle dieses homogene lineare Gleichungssystem auf der rechten Seite! +Das können wir aber lösen und erhalten als Lösungsmenge gerade $V$. + +\subsection{Er ist Summe oder Schnitt von zwei Vektorräumen} + +Manchmal lăsst sich ein Vektorraum $V$ gut als Summe oder Durchschnitt von zwei Vektorräumen $U_1$ und $U_2$ beschreiben, also als + +$$ +V=U_1+U_2 +$$ + +oder + +$$ +V=U_1 \cap U_2 +$$ + +Wenn du Basen von $U_1$ und $U_2$ hast, dann ist es leicht, eine Basis von $V$ zu bestimmen. Wie das geht? Hier ist eine ausführliche Anleitung\ref{SuSvUVR}. + + +\newpage + +\section{Schnitt und Summe von UVR}\label{SuSvUVR} + +\begin{description} + \item[Warnung] + Dieses Thema ist ziemlich komplex und es gibt zig Herangehensweisen, solche Aufgaben schnell und "mit Auge" zu lösen. Wir werden hier zwei Varianten zeigen, die immer funktionieren, allerdings auch etwas aufwändiger sind. + + Wenn du zwei Vektorräume(\ref{Vektorraeume}) $U$ und $V$ gegeben hast und eine Basis(\ref{BasenVonVektorraeumen}) der direkten Summe(\ref{SummeVonUntervektorraeumen}) $U+V$ und des Durchschnitts $U \cap V$ berechnen sollst, gibt es im Wesentlichen zwei Möglichkeiten: + \item[Methode 1] + Einerseits kannst du Summe und Schnitt getrennt berechnen. +Wie das mit der Summe geht, steht hier. +Für den Durchschnitt löst du dann ein lineares Gleichungssystem, was wir gleich noch einmal genau erklären. +Diese Methode ist leichter zu verstehen, man sieht direkter, warum es funktioniert. Andererseits kann der Rechenaufwand höher sein. + \item[Methode 2] + Du verwendest den sogenannten Zassenhaus-Algorithmus, der dir mit ein paar Matrixumformungen gleichzeitig Basen für Summe und Schnitt ausspuckt. + + Daran muss man sich ein bisschen gewöhnen (allein schon an den Namen), es geht aber ziemlich schnell und der Rechenaufwand hält sich in Grenzen. + \item[Vorbereitung] + In beiden Fällen benötigen wir zuerst eine Basis oder zumindest ein Erzeugendensystem für beide Vektorräume $U$ und $V$. +\end{description} + +\subsection{Die Gleichungssystem-Methode} +Was ist eigentlich der Schnitt $U \cap V$ ? Er besteht aus allen Vektoren, die sowohl in $U$ als auch in $V$ liegen. +Wenn du eine Basis + +$$ +\left\{u_1, \ldots, u_r\right\} +$$ + +von $U$ und eine Basis + +$$ +\left\{v_1, \ldots, v_s\right\} +$$ + +von $V$ gegeben hast, dann lässt sich jeder Vektor $u \in U$ in der Form + +$$ +u=\alpha_1 u_1+\cdots+\alpha_r u_r +$$ + +darstellen - wir stellen den Vektor als Kombination der Basiselemente dar. +Dabei sind $\alpha_1, \ldots, \alpha_r$ reelle Zahlen. +Ebenso hat jeder Vektor $v \in V$ eine Darstellung + +$$ +v=\beta_1 v_1+\cdots+\beta_s v_s +$$ + + +Die Idee ist jetzt, diese beiden Darstellungen gleichzusetzen: + +$$ +\alpha_1 u_1+\cdots+\alpha_r u_r=\beta_1 v_1+\cdots+\beta_s v_s +$$ + + +Dann müssen wir noch alle $\alpha_i$ und $\beta_j$ finden, die so eine Gleichung möglich machen. Mit anderen Worten, wir müssen das Gleichungssystem + +$$ +\alpha_1 u_1+\cdots+\alpha_r u_r-\beta_1 v_1-\cdots-\beta_s v_s=0 +$$ + +in den Variablen $\alpha_1, \ldots, \alpha_r, \beta_1, \ldots, \beta_s$ lösen. +Kurzes Beispiel +Ganz schön abstrakt, oder? Am besten wir sehen uns ein Beispiel an. Eine Basis für $U$ sei + +$$ +\left\{\left(\begin{array}{l} + 1 \\ + 2 \\ + 1 +\end{array}\right),\left(\begin{array}{c} + -1 \\ + 0 \\ + 1 +\end{array}\right)\right\} +$$ + +und eine Basis für $V$ + +$$ +\left\{\left(\begin{array}{c} + 0 \\ + -2 \\ + 2 +\end{array}\right),\left(\begin{array}{l} + 1 \\ + 1 \\ + 1 +\end{array}\right)\right\} +$$ + + +Dann müssen wir das Gleichungssystem + +$$ +\alpha\left(\begin{array}{l} + 1 \\ + 2 \\ + 1 +\end{array}\right)+\beta\left(\begin{array}{c} + -1 \\ + 0 \\ + 1 +\end{array}\right)-\gamma\left(\begin{array}{c} + 0 \\ + -2 \\ + 2 +\end{array}\right)-\delta\left(\begin{array}{l} + 1 \\ + 1 \\ + 1 +\end{array}\right)=0 +$$ + +in den Variablen $\alpha, \beta, \gamma, \delta$ Iösen. +Also, wie geht das? Zunăchst packen wir die vier Vektoren in eine Matrix (die Minusse nicht vergessen) + + +$$ +\left(\begin{array}{cccc} + 1 & -1 & 0 & -1 \\ + 2 & 0 & 2 & -1 \\ + 1 & 1 & -2 & -1 +\end{array}\right) +$$ + +und berechnen dann eine Zeilenstufenform mit den folgenden Zeilenumformungen: +\begin{enumerate} + \item Ziehe die 1. Zeile 2-mal von der 2. ab. + \item Ziehe die 1. Zeile von der 3. ab. + \item Ziehe die 2. Zeile von der 3. ab. +\end{enumerate} + + +Das Ergebnis lautet + +$$ +\left(\begin{array}{cccc} + 1 & -1 & 0 & -1 \\ + 0 & 2 & 2 & 1 \\ + 0 & 0 & -4 & -1 +\end{array}\right) +$$ + +und wir kőnnen auch gleich die Lösung ablesen. Wir führen einen Parameter $\delta=t$ ein. Dann gibt uns die 3. Zeile: + +$$ +-4 \gamma-t=0 \Rightarrow \gamma=-\frac{1}{4} t +$$ + + +Einsetzen in die 2. Zeile gibt uns + +$$ +2 \beta+2 \gamma+\delta=0 \Rightarrow 2 \beta-\frac{1}{2} t+t=0 \Rightarrow \beta=-\frac{1}{4} t +$$ + +und die 1. Zeile schließlich + +$$ +\alpha-\beta-\delta=0 \Rightarrow \alpha+\frac{1}{4} t-t=0 \Rightarrow \alpha=\frac{3}{4} t +$$ + + +Die Lösung lautet also + +$$ +\left(\begin{array}{l} + \alpha \\ + \beta \\ + \gamma \\ + \delta +\end{array}\right)=t\left(\begin{array}{c} + \frac{3}{4} \\ + -\frac{1}{4} \\ + -\frac{1}{4} \\ + 1 +\end{array}\right) +$$ + + +Und was soll das Ganze jetzt? Jetzt setzen wir diese Werte in unsere Ausgangsgleichung + +$$ +\alpha\left(\begin{array}{l} + 1 \\ + 2 \\ + 1 +\end{array}\right)+\beta\left(\begin{array}{c} + -1 \\ + 0 \\ + 1 +\end{array}\right)=\gamma\left(\begin{array}{c} + 0 \\ + -2 \\ + 2 +\end{array}\right)+\delta\left(\begin{array}{l} + 1 \\ + 1 \\ + 1 +\end{array}\right) +$$ + +ein. Auf beiden Seiten muss natürlich das Gleiche herauskommen. Nach ein bisschen Rumgefriemel lautet die linke Seite: + + +$$ +\left(\begin{array}{c} + \frac{3}{4} t+\frac{1}{4} t \\ + \frac{6}{4} t \\ + \frac{3}{4} t-\frac{1}{4} t +\end{array}\right)=\left(\begin{array}{c} + t \\ + \frac{3}{2} t \\ + \frac{1}{2} t +\end{array}\right)=t\left(\begin{array}{c} + 1 \\ + \frac{3}{2} \\ + \frac{1}{2} +\end{array}\right) +$$ + + +Diese (durch $t$ parametrisierte) Gerade ist genau die Schnittmenge von $U$ und $V$ ! +Wir haben also + +$$ +U \cap V=\left\{\left.t\left(\begin{array}{c} + 1 \\ + \frac{3}{2} \\ + \frac{1}{2} +\end{array}\right) \right\rvert\, t \in \mathbb{R}\right\}=\left\langle\left(\begin{array}{c} + 1 \\ + \frac{3}{2} \\ + \frac{1}{2} +\end{array}\right)\right\rangle=\left\langle\left(\begin{array}{l} + 2 \\ + 3 \\ + 1 +\end{array}\right)\right\rangle +$$ + + +Der letzte Ausdruck ist sicherlich der übersichtlichste. Vergiss nicht, dass du Vektoren in solchen linearen Hülen immer mit irgendwelchen Zahlen (außer 0 ) multiplizieren kannst, ohne dass sich etwas ändert. + +Wer es anschaulich mag kann hier auch noch erkennen: $U$ und $V$ waren beides Ebenen, denn beide hatten Dimension 2 (da jeweils zwei Basiselemente). Diese beiden Ebenen schneiden sich und das ergibt eine Gerade - und die haben wir ja gerade berechnet. + +\subsection{Der Zassenhaus-Algorithmus} +Wir gehen wieder davon aus, dass du Basen von $U$ und $V$ gegeben hast. +Der Algorithmus funktioniert grob so: Wir stellen eine ziemlich große Matrix auf (die sogenannte Zassenhaus-Matrix), indem wir sie mit den beiden Basen füttern. + +Dann rechnen wir (wie könnte es anders sein) eine Zeilenstufenform(\ref{Zeilenstufenform}) von ihr aus und erhalten am Ende sowohl eine Basis von $U \cap V$ als auch eine von $U+V$. + +\subsubsection{Aufstellen der Matrix} +Wir machen das wieder anhand eines Beispiels, bequemerweise das Gleiche wie oben. Die Basis für $U$ lautete + +$$ +\left\{\left(\begin{array}{l} + 1 \\ + 2 \\ + 1 +\end{array}\right),\left(\begin{array}{c} + -1 \\ + 0 \\ + 1 +\end{array}\right)\right\} +$$ + +und die für $V$ + +$$ +\left\{\left(\begin{array}{c} + 0 \\ + -2 \\ + 2 +\end{array}\right),\left(\begin{array}{l} + 1 \\ + 1 \\ + 1 +\end{array}\right)\right\} +$$ + + +Füge zuerst die Basisvektoren von $U$ als Zeilen in eine Matrix ein: + +$$ +\left(\begin{array}{ccc} + 1 & 2 & 1 \\ + -1 & 0 & 1 +\end{array}\right) +$$ + + +Das verdoppelst du jetzt nach rechts: + +$$ +\left(\begin{array}{cccccc} + 1 & 2 & 1 & 1 & 2 & 1 \\ + -1 & 0 & 1 & -1 & 0 & 1 +\end{array}\right) +$$ + + +Anschließend schreibst du die Basisvektoren von $V$ unten links als weitere Zeilen hin, allerdings nur einmal: + +$$ +\left(\begin{array}{cccccc} + 1 & 2 & 1 & 1 & 2 & 1 \\ + -1 & 0 & 1 & -1 & 0 & 1 \\ + 0 & -2 & 2 & & & \\ + 1 & 1 & 1 & & & +\end{array}\right) +$$ + + +Den Rest der Matrix füllst du mit Nullen auf. + +$$ +\left(\begin{array}{cccccc} + 1 & 2 & 1 & 1 & 2 & 1 \\ + -1 & 0 & 1 & -1 & 0 & 1 \\ + 0 & -2 & 2 & 0 & 0 & 0 \\ + 1 & 1 & 1 & 0 & 0 & 0 +\end{array}\right) +$$ + + +\subsubsection{Berechnen der Zeilenstufenform} +Ja, die Matrix ist ein ganz schöner Wummer. Trotzdem ist das Berechnen einer Zeilenstufenform(\ref{Zeilenstufenform}) ganz einfach, und zwar mit folgenden Rechenschritten: +\begin{enumerate} + \item Addiere die 1. Zeile zur 2. + \item Ziehe die 1. Zeile von der 4. ab. + \item Vertausche die 2. und 4. Zeile. + \item Ziehe die 2. Zeile 2-mal von der 3. ab. + \item Addiere die 2. Zeile 2-mal zur 4. + \item Ziehe die 3. Zeile von der 4. ab. +\end{enumerate} + +Das war's: + +$$ +\left(\begin{array}{cccccc} + 1 & 2 & 1 & 1 & 2 & 1 \\ + 0 & -1 & 0 & -1 & -2 & -1 \\ + 0 & 0 & 2 & 2 & 4 & 2 \\ + 0 & 0 & 0 & -4 & -6 & -2 +\end{array}\right) +$$ + + +\subsubsection{Ablesen der Basis von $U \cap V$ und $U+V$} +Die berechnete Zeilenstufenform teilen wir in der Mitte durch: + +$$ +\left(\begin{array}{ccc|ccc} + 1 & 2 & 1 & 1 & 2 & 1 \\ + 0 & -1 & 0 & -1 & -2 & -1 \\ + 0 & 0 & 2 & 2 & 4 & 2 \\ + 0 & 0 & 0 & -4 & -6 & -2 +\end{array}\right) +$$ + + +Da wo die Nullzeilen der linken Häfte anfangen machen wir auch noch einen Strich: + + +$$ +\left(\begin{array}{ccc|ccc} + 1 & 2 & 1 & 1 & 2 & 1 \\ + 0 & -1 & 0 & -1 & -2 & -1 \\ + 0 & 0 & 2 & 2 & 4 & 2 \\ + \hline 0 & 0 & 0 & -4 & -6 & -2 +\end{array}\right) +$$ + + +Jetzt stehen (jeweils als Zeilen) die Basisvektoren von $U+V$ oben links und die von $U \cap V$ unten rechts. +Eine Basis für $U+V$ lautet also + +$$ +\left\{\left(\begin{array}{l} + 1 \\ + 2 \\ + 1 +\end{array}\right),\left(\begin{array}{c} + 0 \\ + -1 \\ + 0 +\end{array}\right),\left(\begin{array}{l} + 0 \\ + 0 \\ + 2 +\end{array}\right)\right\} +$$ + +und eine für $U \cap V$ lautet + +$$ +\left\{\left(\begin{array}{l} + -4 \\ + -6 \\ + -2 +\end{array}\right)\right\} +$$ + + +Das kannst du (wenn du willst) noch durch $-2$ teilen, dann kommt sogar dieselbe Basis raus wie beim Rechenweg mit dem Gleichungssystem. \ No newline at end of file diff --git a/plot05a.png b/plot05a.png new file mode 100644 index 0000000..5156b57 Binary files /dev/null and b/plot05a.png differ diff --git a/plot06a.png b/plot06a.png new file mode 100644 index 0000000..7636800 Binary files /dev/null and b/plot06a.png differ diff --git a/plot6a.png b/plot6a.png new file mode 100644 index 0000000..ce18ec0 Binary files /dev/null and b/plot6a.png differ diff --git a/uebungenlimit01.tex b/uebungenlimit01.tex new file mode 100644 index 0000000..72f8730 --- /dev/null +++ b/uebungenlimit01.tex @@ -0,0 +1,53 @@ +%!TEX root=main.tex +\newpage + +\section{Übungsaufgaben Grenzwerte} + +\subsection{Bestimme, wie sich die Funktion $f$ im Unendlichen verhält} + + +\subsubsection{Aufgabe 1} + +\begin{description} + +\item[Verhalten gegen $+{\infty}$ ] \marginpar{Es wird nur die höchste Potenz betrachtet}$\mathop {\lim }\limits_{x \to +\infty }x^4-x^3=\mathop {\lim }\limits_{x \to +\infty }x^4=\left(+\infty\right)^4={\infty}$ + +\item[Verhalten gegen $-{\infty}$] $\mathop {\lim }\limits_{x \to -\infty }x^4-x^3=\mathop {\lim }\limits_{x \to -\infty }x^4=\left(-\infty\right)^4={\infty}$ + +\end{description} + + +\subsubsection{Aufgabe 2} +%http://mathenexus.zum.de/html/analysis/grenzwerte/Grenzwertplusminusunend_Ueb.htm +\begin{description} +\item[Verhalten gegen $+{\infty}$ ] $\rightarrow $ für $x>0$ \newline\newline +$f ( x ) = \frac { 1 } { x } \cdot \sqrt { x ^ { 2 } + 1 } = \mathop {\lim }\limits_{x \to \infty}\frac { 1 } { x } \cdot \sqrt { x ^ { 2 } + 1 }=\mathop {\lim }\limits_{x \to \infty}$ + +\item[Verhalten gegen $-{\infty}$ ] +$f ( x ) = \frac { 1 } { x } \cdot \sqrt { x ^ { 2 } + 1 }$ + +\end{description} + +\paragraph{Grenzwerte in der Unendlichkeit mit Quadratwurzeln} + +Da sich obige Aufgabe im negativ Unendlichen nicht so recht erklärt hat hier noch ein paar Ausführungen dazu: + +\begin{itemize} +\item Wenn $ x $ positiv ist $ x=\sqrt{x^2} $ zum Beispiel, wenn $ x=3 $, dann $ x=3=\sqrt{9} $ + +\item Wenn $ x $ negativ ist $ x=-\sqrt{x^2} $ dem gegenüber ist also wenn $ x=-3 $ dann $ x=-3=-\sqrt{9} $ +\end{itemize} + + + + + + +\textbf{Wichtig}: Man muss sich merken, das wenn $x=-\sqrt{x^2}$ wenn $x \rightarrow -\infty$ ist, muss man automatisch auf die negativen Werte von $x$ schauen muss. + +\textbf{Beispiel 1}: $\mathop {\lim }\limits_{x \to \infty} \frac { \sqrt { 5 x ^ { 2 } + 2 x } } { x }$ +Da man hier $x \rightarrow \infty$ untersucht, sind nur positive Werte von $x$ interessant und man nutzt $x=\sqrt{x^2}$. + +$\lim _ { x \rightarrow \infty } \frac { \sqrt { 5 x ^ { 2 } + 2 } x } { x } = \lim _ { x \rightarrow \infty } \frac { \frac { \sqrt { 5 x ^ { 2 } + 2 } x } { \sqrt { x ^ { 2 } } } } { \frac { x } { x } } = \lim _ { x \rightarrow \infty } \frac { \sqrt { \frac { 5 x ^ { 2 } + 2 } { x ^ { 2 } } } } { 1 } = \lim _ { x \rightarrow \infty } \sqrt { 5 + \frac { 2 } { x } } = \lim _ { x \rightarrow \infty } \sqrt { 5 + 0 }=5$ + +\textbf{Beispiel 2}: $\mathop {\lim }\limits_{x \to \infty} \frac { \sqrt { 5 x ^ { 2 } + 2 x } } { x }$ \ No newline at end of file