Как оценить центр вращения маятника с помощью оптимизации scipy с целевой функцией простого и двойного суммирования - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь научиться использовать scipy.optimize.minimize для реализации двух разных методов, чтобы оценить центр вращения движущегося маятника.Мне удалось реализовать один метод, но у меня есть несколько вопросов относительно ограничений и границ, и я не знаю, как реализовать второй случай, учитывая, что целевая функция представляет собой двойное суммирование.

Описание маятника:

Маятник имеет длину 1 метр, его горизонталь направлена ​​вправо, параллельно оси 'x', его начало - начало декартовой системы отсчета (0,0) ион может вращаться только вокруг этой же точки.

В случае, когда я использую целевую функцию № 1:

enter image description here

где:

v = 'x' and 'y' coordinates of the tip of the pendulum acquired experimentally
c = 'x' and 'y' coordinates of the center of rotation that I want to estimate
r = radius of the circle

for a given time instant

с помощью следующего скрипта я получаю ожидаемый результат

import numpy as np
from scipy.optimize import minimize

def objective(x):
    # Pendulum tip 'x' and 'y' coordinate
    v = x[0:2]

    # Circle centroid 'x' and 'y' coordinate
    c = x[2:4]

    # Circle radius
    r = x[4:]

    return (np.linalg.norm(v-c) - r**2)**2

x0 = np.array([1.01, -0.01, 0.02, 0.01, 1.0])

sol = minimize(objective, x0, method='SLSQP')

print sol.x

Так как 'r' - это длина, которую я знаю с небольшой ошибкой, я должен определить ограничение или верхнюю и нижнюю границы для этогопеременная?То же самое происходит с переменной 'c'.

В случае, когда я использую целевую функцию # 2:

enter image description here

где:

v = 'x' and 'y' coordinates of the tip of the pendulum acquired experimentally
c = 'x' and 'y' coordinates of the center of rotation that I want to estimate
r = radius of the circle

for a given time instant

Как определить целевую функцию с момента ее двойного суммирования?

Спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...