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:
splinter/python/splinterpy/function.py
Line 55 in da6ac4f
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