Я думаю, что у вас есть прежде всего физическая проблема, переводящая физическую ситуацию в систему ОДУ.
x(s)
и y(s)
- это координаты веревки, где s
- это длина вдоль веревка. Следовательно, (x'(s),y'(s))
является единичным вектором, который уникально характеризуется своим углом a(s)
, что дает
x'(s) = cos(a(s))
y'(s) = sin(a(s))
. Чтобы получить форму, теперь нужно рассмотреть механику. Предполагается, что веревка вращается без спирали вокруг оси вращения, оставаясь в одной плоскости. Кроме того, из равновесия сил вы также получаете, что два других уравнения действительно являются уравнениями первого порядка, а не уравнениями второго порядка. Таким образом, ваше состояние имеет только 4 компонента, и поэтому системная функция ODE должна быть
def fun(s, u):
x, y, F, a = u;
dxds=np.cos(a)
dyds=np.sin(a)
dFds=-beta * x * np.cos(a) + np.sin(a)
dads=(beta * x * np.sin(a) + np.cos(a) ) / F
return dxds, dyds, dFds, dads
Теперь доступно только 4 слота граничных условий, которые являются координатами начала и конца каната.
def bc(ua, ub):
return ua[0], ub[0], ua[1], ub[1] - 0.6
Кроме того, длина интервала для s
также является длиной веревки, поэтому значение 0,5 невозможно для заданных координат на полюсе, попробуйте 1,0. Существует некоторый эксперимент, необходимый для получения первоначального предположения, которое не приводит к единственному якобиану в решателе BVP. В конце я получаю решение в плоскости xy
с компонентами