2017-02-06 13 views
0

Я хочу нарисовать параболу с python 2.7, зная координаты вершины.draw parabola с координатами вершин python

На данный момент я реализовал это. Дело в том, что вершина не находится на параболе, на самом деле она изображает параболу и отдельный пункт. Может ли кто-нибудь указать на ошибку? Спасибо.

def parabola(return_hist1,V): 
    #solve the equations and plot the parabola 

    # V[0] is the x-coordinate and V[1] is the y-coordinate 

    A=np.array([[2*V[0]],[4*V[1]]]) 
    B=np.array([[1],[-1]]) 
    sol=A*B 

    Y=range(int(V[1]),50) 
    X=[] 
    for e in Y: 
     X.append(sol[0]*e**2 + sol[1]*e) 

    plt.plot(X,Y) 
    plt.plot(V[0],V[1],'ro') 
    plt.show() 
    return 
+0

Вы хотите нарисовать параболу только с помощью одной точки? Боюсь, я не понимаю - вам нужно три очка, чтобы отследить параболу, потому что у вас есть три неизвестных, чтобы рассчитать –

+0

Спасибо, Мануэль, за ваш ответ. Я знаю, что v [0] = -b/(2 * a) и v [1] = -b ** 2/4a (как я установил c = 0). директриса равна y = V [1]. Разве эти данные недостаточно, чтобы нарисовать их? – Lucia

+0

Вы пробовали 'Y = range (int (V [1]) - 1,50)'? –

ответ

0

Гадание это то, что вы ищете:

# create parabola 
X = np.linspace(-20,20,1000) # range of parabola: -20,20 in 1000 steps 
Y = X**2 # calculate square of each X value to create a parabola at 0/0 
# move lowest point of parabola to V 
X += V[0] 
Y += V[1] 
# plot ... 

Своп X/Y для поворота на 90 градусов.

Парабола обычно имеет уравнение y = a(x-X)**2+Y с V=(X,Y). Зная только V, вы не сможете определить коэффициент растяжения a. Также, если пользователь parabola хочет, чтобы он был вертикальным или горизонтальным.