bgrimstad/splinter

In python spline.eval_jacobian(p) returns only the first column of the jacobian

slovak194 opened this issue · 2 comments

Hi!

I've noticed, that only first column of the jacobian is returned when I use python bindings (dev branch, or installed from PyPy).
I had to write my own simple bindings with pybind11 to overcome this issue.
Here is the small test:

import splinterpy
import numpy as np
from itertools import product
np.set_printoptions(suppress=True)


def some_fun(lx):
    return np.array((
        np.sin(lx[0] + lx[1]),
        np.cos(lx[0] - lx[1]),
        np.tan(lx[0]/lx[1])
    )).tolist()


domain = [
    np.linspace(-1, 1, 10),
    np.linspace(-1, 1, 10)
]

x = [list(xx) for xx in product(*domain)]
y = [some_fun(xx) for xx in x]

bspline = splinterpy.bspline_interpolator(x, y, degree=3)

p = np.array((0.7, -0.1))

print("\nbspline.eval:\n", bspline.eval(p))
print("\nbspline.eval_jacobian:\n", bspline.eval_jacobian(p))
bspline.eval:
 [0.5646270834036826, 0.696689837482913, 0.7350330225547118]
bspline.eval_jacobian:
 [[0.8253916603802878, -0.7172947275474233]]

So the bspline.eval_jacobian returns only 2 numbers.

Best regards,
Alex

Hi Alex!

Thanks for the report! I'm a bit puzzled we haven't seen this earlier. I see that we have actually added a TODO about this issue:

# TODO: add support for self._dim_y > 1

I don't have the time to properly fix the issue now, but I've at the very least made it so that we no longer just return the wrong result with no mention about it being wrong: b0380aa

Thanks for the report! We'll hopefully be able to fix the bug properly soon!

Hi Anders,

Thanks for the report! We'll hopefully be able to fix the bug properly soon!
Glad to hear that!

Best regards,
Alex