############################################# # # 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 #################
© Copyright 2024 ExpyDoc