Anleitung 3

#############################################
#
#
R. Hoepfner -- WS 2015/16
#
#
Praktikum zur 'Einfuehrung in die Stochastik'
#
#
Funktionen von 2 Variablen
#
#
08.10.15
#
############################################
# manchmal interessant
par(pty="s") ;
par(pty="m") ;
# befiehlt quadratisches Format fuer Graphiken
# bzw. hebt dies wieder auf
# definiere als beispielfunktion
rechnebeispielfkt <- function(x,y){
exp(x) * ( sin(y) )^2
} ; # damit wird in der folge gearbeitet
###########################################
#
perspektivische plots
###########################################
# siehe
# help(persp) ;
leg1 <- "gitter von x-werten" ;
leg2 <- "gitter von y-werten" ;
leg <- "darstellung der funktion (x,y) -> exp(x)*sin^2(y)" ;
# vier moegliche gitter: grob, weit, fein, superfein
x1grob <- seq( -3, 3, 0.25 ) ;
x2grob <- seq( -5, 5, 0.25 ) ;
x1weit <- seq( -15, 10, 0.1 ) ;
x2weit <- seq( -15, 15, 0.1 ) ;
x1fein <- seq( -3, 3, 0.1 ) ;
x2fein <- seq( -5, 5, 0.1 ) ;
x1superfein <- seq( -3, 3, 0.01 ) ;
x2superfein <- seq( -5, 5, 0.01 ) ;
# gitter zu anfang nicht zu fein waehlen,
# sonst sieht man nichts
# einfacher perspektivischer plot
persp( x1grob, x2grob,
outer( x1grob, x2grob, rechnebeispielfkt ),
xlab=leg1, ylab=leg2, zlab="", main=leg ) ;
# standardeinstellungen
# oder mit achsenbeschriftung und schattierung
persp( x1grob, x2grob,
outer( x1grob, x2grob, rechnebeispielfkt ),
xlab=leg1, ylab=leg2, zlab="",
shade=T, ticktype="detailed",
nticks=24, cex.axis=0.7, main=leg ) ;
# oder
wertegrob <- outer( x1grob, x2grob, rechnebeispielfkt) ;
range(wertegrob) ;
# [1] 0.00000 20.05714
persp( x1grob, x2grob, wertegrob,
xlim=1.1*range(x1grob), ylim=1.1*range(x2grob),
zlim=1.1*range(wertegrob),
ticktype="detailed", nticks=12, cex.axis=0.9,
col=5, shade=0.3,
xlab=leg1, ylab=leg2, zlab="", main=leg ) ;
# separiert rahmen und graphik optisch
# oder als kleiner ausschnitt
# aus einem viel umfassenderem graphen
# rahmen- und masstabslos als rein dekorative flaeche
werteweit <- outer( x1weit, x2weit, rechnebeispielfkt) ;
range(x1weit) ;
# [1] -15 10
range(werteweit) ;
# [1]
0.00 22026.03
# standard-rechteckformat
par(pty="m") ;
persp( x1weit, x2weit, werteweit,
xlim=1.1*range(x1grob), ylim=1.1*range(x2grob),
zlim=1.1*range(wertegrob),
shade=0.2, box=F, col=7, main=leg ) ;
par(pty="s") ;
# zum aesthetischen vergnuegen
#
#
#
#
#
graphik kann man mit einem drehwinkel
in der ebene drehen
oder mit einem azimuthwinkel kippen
und von allen seiten betrachten, siehe
help(persp) ;
wertefein <- outer( x1fein, x2fein, rechnebeispielfkt) ;
# setze nun als startwert
i <- 0 ;
# zur drehung in der ebene: wiederholt eingeben:
persp( x1fein, x2fein, wertefein,
theta=i*15,
xlab=leg1, ylab=leg2, zlab="",
xlim=1.1*range(x1grob), ylim=1.1*range(x2grob),
zlim=1.1*range(wertegrob),
ticktype="detailed", nticks=12, cex.axis=0.7,
col=7, shade=0.2, main=leg ) ;
i <- i+1 ;
# laesst das bild mitsamt box in der ebene drehen
# setze als startwert
j <- 0 ;
# zum kippen mit azimuthwinkel: wiederholt eingeben
persp( x1fein, x2fein, wertefein,
theta=23*15, phi=j*15 ,
xlab=leg1, ylab=leg2, zlab="",
xlim=1.1*range(x1grob), ylim=1.1*range(x2grob),
zlim=1.1*range(wertegrob),
ticktype="detailed", nticks=12, cex.axis=0.7,
col=7, shade=0.2, main=leg ) ;
j <- j+1 ;
# kippt das bild mitsamt der box
# und vieles mehr : siehe
# help(persp) ;
################################
#
image plots
################################
# siehe
# help(image)
# auch hier wieder quadratisches format
par(pty="s") ;
image( x1fein, x2fein, wertefein,
xlab=leg1, ylab=leg2, main=leg,
col=topo.colors(12) ) ;
# hoehenprofil der funktion in
# codierung von blau bis braun (landkarte)
image( x1fein, x2fein, wertefein,
xlab=leg1, ylab=leg2, main=leg,
col=topo.colors(36) ) ;
# feinheit einstellbar, siehe
# help(topo.colors)
# oder
wertesuperfein <- outer( x1superfein, x2superfein, rechnebeispielfkt ) ;
# und in den interessantesten bereich zoomen
image( x1superfein, x2superfein, wertesuperfein,
xlim=c(0.5*max(x1fein),1.01*max(x1fein)),
xlab=leg1, ylab=leg2, main=leg,
col=heat.colors(36) ) ;
# hoehenprofil der funktion in
# codierung von rot bis weissgluehend
# feinheit einstellbar, siehe
# help(heat.colors)
##########################################################
#
contour plots
##########################################################
# help(contour) ;
# zoome in den interessanten bereich
contour( x1superfein, x2superfein, wertesuperfein,
xlim=c(0.5*max(x1fein),1.01*max(x1fein)),
nlevels=20, labcex=0.7, col=2,
xlab=leg1, ylab=leg2, main=leg ) ;
# hoehenprofil der funktion
# niveaulinien mit angezeigten funktionswerten
# feinheit steuerbar
# oder mit anzeige der farbcodierung am rand
par(pty="m") ;
filled.contour( x1fein, x2fein, wertefein,
xlim=c(0.5*max(x1fein),1.01*max(x1fein)),
nlevels=20,
color.palette=heat.colors,
#color=topo.colors,
xlab=leg1, ylab=leg2, main=leg ) ;
# farbcodierter plot des hoehenprofils
# schluessel fuer farbencode am rechten rand
# feinheit und farbcodierung steuerbar
# help(filled.contour) ;
# man kann auch nur numerische werte ausgeben,
# um mit diesen explizit weiterzurechnen
# help(contourLines) ;
############# 24.10.15 #################