Loading [MathJax]/jax/output/HTML-CSS/jax.js

First time here? Check out the FAQ!

Ask Your Question
1

level/contour curves in 3D

asked 12 years ago

heptadecagon gravatar image

updated 8 years ago

FrédéricC gravatar image

Is there a way to graph level curves of a function f(x,y) in 3D at their respective heights? (Much like contourplot3d in Maple.) Thanks.

To make things clearer: what I'd like to see is a 3D plot with level curves (not surfaces). We start with a function of 2 variables (not three) and I'd like to see the 'exploded' contour plot so that the level curves are graphed at their respective z-altitudes. Makes sense?

Preview: (hide)

3 Answers

Sort by » oldest newest most voted
4

answered 12 years ago

calc314 gravatar image

updated 12 years ago

Below is a bit of a hack, but I think it does what you want.

var('x,y,z')
f(x,y)=x^2+3*y^2
levels=[1,2,3,4]
epsilon=0.1
p=plot3d(f(x,y),(x,-2,2),(y,-2,2),color='khaki',opacity=0.7)
for h in levels:
    p+=implicit_plot3d(f(x,y)==h,(x,-2,2),(y,-2,2),(z,h,h+epsilon))

show(p)

image description

Preview: (hide)
link

Comments

1

Small variation: var('x,y,z') sum([implicit_plot3d(x^2-y^2==level,(x,-4,4),(y,-4,4),(z,level,level+0.1)) for level in srange(-10,10,2)])

achrzesz gravatar imageachrzesz ( 12 years ago )

Cool use of srange!

calc314 gravatar imagecalc314 ( 12 years ago )

Thanks for the solution, though, like you said, it's a little bit of a hack.

heptadecagon gravatar imageheptadecagon ( 12 years ago )
1

answered 12 years ago

calc314 gravatar image

updated 12 years ago

You can use contour_plot and can specify the heights you want as follows.

var('x,y')
contour_plot(x^3+x*y,(x,-4,4),(y,-4,4),contours=[0,1,2,3])

For a 3D version, see 3D contours.

Preview: (hide)
link

Comments

I think he means can one do a 3d plot in the same way?

kcrisman gravatar imagekcrisman ( 12 years ago )

Good point! I'll edit my answer.

calc314 gravatar imagecalc314 ( 12 years ago )

Indeed, what I'd like to see is a 3D plot with level curves (**not surfaces**). We start with a function of 2 variables (**not three**) and I'd like to see the 'exploded' contour plot so that the level curves are graphed at their respective z-altitudes. Makes sense?

heptadecagon gravatar imageheptadecagon ( 12 years ago )

Look at the next answer

achrzesz gravatar imageachrzesz ( 12 years ago )
1

answered 12 years ago

achrzesz gravatar image

updated 12 years ago

One can use gnuplot (in Sage)

   sage: gnuplot_console()
    #and then
    set contour surface
    set cntrparam levels incremental -10,2,10
    unset surface 
    set isosamples 100,100
    splot [-4:4] [-4:4] [-11:11] x**2-y**2
Preview: (hide)
link

Comments

Thanks, that looks interesting but I would rather avoid having to use gnuplot.

heptadecagon gravatar imageheptadecagon ( 12 years ago )

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 12 years ago

Seen: 3,231 times

Last updated: Aug 02 '12