Я думаю, что ваша проблема в том, что x и y являются массивами двойных значений.
Массив x является независимой переменной; Я ожидаю, что это будет отсортировано в порядке возрастания. Если я оценю y [i], я ожидаю получить значение кривой в точке x [i].
Когда вы вызываете эту функцию numpy, вы получаете массив производных значений, которые имеют ту же форму, что и массивы (x, y). Если есть n пар из (x, y), то
y'[i] gives the value of the first derivative of y w.r.t. x at x[i];
y''[i] gives the value of the second derivative of y w.r.t. x at x[i].
Кривизна k также будет массивом с n точками:
k[i] = abs(x'[i]*y''[i] -y'[i]*x''[i])/(x'[i]**2 + y'[i]**2)**1.5
Думайте о x и y как о функциях параметра t. x '= dx / dt и т. д. Это означает, что кривизна k также является функцией этого параметра t.
Мне нравится, когда у меня есть понятное решение в закрытой форме, когда я программирую решение.
y(x) = sin(x) for 0 <= x <= pi
y'(x) = cos(x)
y''(x) = -sin(x)
k = sin(x)/(1+(cos(x))**2)**1.5
Теперь у вас есть хорошая формула для кривизны как функции от x.
Если вы хотите параметризовать его, используйте
x(t) = pi*t for 0 <= t <= 1
x'(t) = pi
x''(t) = 0
Посмотрите, сможете ли вы построить их и сделать так, чтобы ваше решение Python соответствовало им.