Processing math: 100%

First time here? Check out the FAQ!

Ask Your Question
1

Correct input for list_plot3d(..., interpolation='spline')

asked 7 years ago

amdall gravatar image

updated 7 years ago

I'm trying to construct smooth surfaces from lists of points in 3-space using list_plot3d and the spline option, but without success. For example, the input

list_plot3d ([(-1, 2, 3), (2, -1, 3), (3, -1, 2), (-1 ,3 ,2), (2, 3, -1), (3, 2, -1)], interpolation_type='spline')

returns the error

TypeError: m >= (kx+1)(ky+1) must hold

The following returns the expected piecewise linear surface suggesting that there is a special restriction on the input when using the spline option.

list_plot3d ([(-1, 2, 3), (2, -1, 3), (3, -1, 2), (-1 ,3 ,2), (2, 3, -1), (3, 2, -1)])

Question: What is the correct input to obtain a best fit polynomial surface going through the six points in R3?

Edit: As pointed out by @slelievre, since these six points lie in a common plane, the corresponding surface should be the plane containing the points. So why does Sage throw an error instead of this plane?

Preview: (hide)

Comments

Maybe interpolation type 'spline' wants the x and y coordinates of the points to form a nice grid, and here, because we have six points not forming such a grid, it is not happy?

slelievre gravatar imageslelievre ( 7 years ago )

Here's an example (if I understand correctly) of some points having 'nice' x and y coordinates: pts=[(0,0,1),(1,0,2),(0,1,2),(1,1,5)]. Using pts instead of the six points given in the post yields the same TypeError. Can you get a smooth surface from any point set? A single functioning example would be of great help. But I guess I'm off to read the source code: /scipy/interpolate//_fitpack_impl.pyc

amdall gravatar imageamdall ( 7 years ago )

1 Answer

Sort by » oldest newest most voted
0

answered 7 years ago

slelievre gravatar image

The six points listed in the question are in the same plane.

One can check that by doing a list_plot, or a point3d, or by constructing the polyhedron with vertices the points in the list.

Here are the corresponding commands.

$ sage
SageMath version 8.2.rc1, Release Date: 2018-03-31
sage: p = [(-1, 2, 3), (2, -1, 3), (3, -1, 2), (-1 ,3 ,2), (2, 3, -1), (3, 2, -1)]
sage: list_plot(p)
Launched jmol viewer for Graphics3d Object
sage: point3d(p)
Launched jmol viewer for Graphics3d Object
sage: po = Polyhedron(p)
sage: po
A 2-dimensional polyhedron in ZZ^3 defined as the convex hull of 6 vertices
sage: po.show()
Launched jmol viewer for Graphics3d Object
Preview: (hide)
link

Comments

Thanks for the answer, but I don't get it yet. Shouldn't the spline approximation through six points in a plane be the plane itself? Also, the same TypeError is thrown if I nudge one of the points off of the plane (e.g. the last point is changed to (3,2,0)), so planarity doesn't seem to be the root cause of the error.

amdall gravatar imageamdall ( 7 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: 7 years ago

Seen: 507 times

Last updated: Apr 16 '18