################################################################################ # # Blatt 1 # ################################################################################ ## Aufgabe 1a) ## ----------- branin <- function(x,y) { (y-5.1*(x/pi)^2/4+5*x/pi-6)^2+10*(1-1/(8*pi))*cos(x)+10 } x <- seq(-5,10,0.1) y <- seq(0,15,0.1) z <- outer(x,y,branin) contour(x,y,z,xlab="x",ylab="y",nlevels=50,main="Isolinien der Branin-Funktion") pdf("D:\\temp\\branin-2D.pdf") contour(x,y,z,xlab="x",ylab="y",nlevels=50,main="Isolinien der Branin-Funktion") dev.off() persp(x,y,z,theta=75,phi=30,main="Plot der Branin-Funktion") pdf("D:\\temp\\branin-3D.pdf") persp(x,y,z,theta=75,phi=30,main="Plot der Branin-Funktion") dev.off() ## Aufgabe 1b) ## ----------- params <- matrix( c(1.0,1.25,1.5,0.25,0.5,0.75,2.0,2.5,3.0),ncol=3,nrow=3,byrow="true") odm <- matrix( c(1,1,1,2,2,2,3,3,3,1,2,3,1,2,3,1,2,3,1,2,3,2,3,1,3,1,2),ncol=3,nrow=9,byrow="false") #install.packages("DoE.base") #library("DoE.base") #odm <- as.matrix(oa.design(nlevels=3,nfactors=3,nruns=9,randomize=FALSE)) od <- matrix(nrow=9,ncol=3) for (i in 1:9) { for (j in 1:3) { od[i,j] <- params[j,odm[i,j]] # od[i,j] <- params[j,as.numeric(odm[i,j])] } } print(od) ## Aufgabe 1c) ## ----------- branin2 <- function(v) { branin(v[1],v[2]) } # poor ol' man's method overloading for (x in c(-2,1,4,7)) { for (y in c(3,6,9,12)) { for (k in 1:nrow(od)) { info=optim(c(x,y),branin2,method="Nelder-Mead",list(alpha=od[k,1],beta=od[k,2],gamma=od[k,3])) # startpoint, params, solution, value, iterations print(c(x,y,od[k,],info$par,info$value,as.numeric(info$counts[1]))) } } }