Ask Your Question

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

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 $\mathbb{R}^3$?

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?

edit retag close merge delete

## 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?

( 2018-04-16 07:38:29 -0500 )edit

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

( 2018-04-16 10:49:14 -0500 )edit

## 1 answer

Sort by ยป oldest newest most voted

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

more

## 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.

( 2018-04-16 07:05:11 -0500 )edit

## Your Answer

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

Add Answer

## Stats

Asked: 2018-04-15 13:05:24 -0500

Seen: 106 times

Last updated: Apr 16 '18