2014-01-20 4 views
2

У меня следующая функцияКак построить функцию 3 d в R?

f(x,y) = 2 x^2 + 12 x * y + 7 y^2 

И Я хотел бы построить 3-D графика в R? Мне интересно, можно ли это сделать. Поэтому я посмотрел в Интернете и попробовал код ниже, но ничего не было нарисовано. Может ли кто-нибудь указать, что не так, пожалуйста?

x <- seq(-100,100,0.1) 
y <- seq(-100,100,0.1) 
z <- 2*x^2 + 12 * x * y + 7 * y^2 

xyz <- data.frame(cbind(x,y,z)) 
names(xyz) <- c('x', 'y', 'z') 
library(lattice) 
wireframe(z ~x*y, data = xyz, scales = list(arrows = FALSE), zlab = 'f(x,y)', drape = T) 
+0

вы можете быть заинтересованы в 'curve3d' функции от' emdbook' пакета ... –

ответ

2

Ничто не рисуется, потому что ваш z вектор одномерно, определяется только в x=y. Для того, чтобы расширить свой кадр данных, используйте outer и expand.grid:

df <- expand.grid(x = x, y = y) 
df$z <- as.vector(outer(x,y, function(x,y) {2*x^2 + 12 * x * y + 7 * y^2})) 
wireframe(z ~ x * y, data = df, scales = list(arrows = FALSE), zlab = 'f(x,y)', drape = T) 

enter image description here

Смежные вопросы