Example #1
0
def compute_components(domask):
    """ Returns:
    
    x: 1-D array with x coordinates
    y: 1-D array with y coordinates
    u: 2-D array with x vector components
    v: 2-D array with y vector components
    """
    

    
    uf, vf = velocity_field(cylinder_stream_function(R=RADIUS))

    y, x = np.ogrid[XMIN:XMAX:N*1j, XMIN:XMAX:N*1j]
    
    u = uf(x,y)
    v = vf(x, y)
    
    xx, yy = np.mgrid[XMIN:XMAX:N*1j, XMIN:XMAX:N*1j]
    
    r = np.sqrt(xx**2 + yy**2)
    
    mask = r <= RADIUS
    
    if domask:
        u[mask] = 0
        v[mask] = 0
    
    x = x.reshape((N,))
    y = y.reshape((N,))
    
    return x, y, u, v
Example #2
0
def compute_components(domask):
    """ Returns:
    
    x: 1-D array with x coordinates
    y: 1-D array with y coordinates
    u: 2-D array with x vector components
    v: 2-D array with y vector components
    """

    uf, vf = velocity_field(cylinder_stream_function(R=RADIUS))

    y, x = np.ogrid[XMIN:XMAX:N * 1j, XMIN:XMAX:N * 1j]

    u = uf(x, y)
    v = vf(x, y)

    xx, yy = np.mgrid[XMIN:XMAX:N * 1j, XMIN:XMAX:N * 1j]

    r = np.sqrt(xx**2 + yy**2)

    mask = r <= RADIUS

    if domask:
        u[mask] = 0
        v[mask] = 0

    x = x.reshape((N, ))
    y = y.reshape((N, ))

    return x, y, u, v
Example #3
0
# значением можно поиграть, чтобы получить представление
# каким образом скорость обучения влияет на скорость сходимости
alpha = 0.01
# 20 итераций поиска
iterations = 20
# Вектор значений - мы хотим вывести на экран траекторию,
# поэтому двумерный массив [итерции, 2]
solution = np.zeros((iterations, 2))
x0 = np.array((1, 1)).reshape(2, 1)
# преобразуем начальное приближение в вектор столбец
solution[0, :] = x0.reshape(1, 2)
print("x0: " + str(solution[0, :]))
# Цикл - смотри формулу 3 (наискорейший спуск), шаги 7 и 8 примера выполения
for i in range(0, iterations):
    # умножаем матрицу Гессе на значение вектора параметров на предыдущем шаге
    # формула 3 и 5 - метод наискорейшего спуска
    g = np.array((7, -6, -6, -2)).reshape(2, 2).dot(x0)
    # формула 3, шаги 7 и 8
    x = x0 - alpha * g

    # обновление значений для следующего шага
    x0 = x
    solution[i, :] = x.reshape(1, 2)
    print("x: " + str(solution[i, :]))

cc.plot(solution[:, 0], solution[:, 1], 'r^')

# вывод графического изображения на экран
plt.grid()
plt.show()
Example #4
0
def hhej(x, y):
    return x.reshape(-1, 1) + y