Пересекая линейный участок - PullRequest
2 голосов
/ 19 марта 2019

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

def costfuntion(b, a):
    # b Value
    x = np.linspace(b*(-b), b*(b), 100)
    y = (x - a)**2
    return y

Моя попытка заговора:

plt.plot(costfuntion(20,5))
plt.ylabel("Cost Value");

#b = 'some b value'
plt.plot(b, marker='o', color='b')

То, что я пытаюсь подражать (около 1:13)

enter image description here

Ответы [ 2 ]

1 голос
/ 19 марта 2019
def costfuntion(b, a):
    # b Value
    x = np.linspace(b*(-b), b*(b), 100)
    y = (x - a)**2
    return x, y

x, y = costfuntion(20,5)
plt.plot(x, y)
for i in range(0, len(x), 2):
    plt.plot(x[i], y[i], marker='o', color='b')

Измените функцию стоимости, чтобы она возвращала значения x и y функции, которую вы строите, и используйте эту информацию для построения точек на функции.

1 голос
/ 19 марта 2019

Поскольку значения y зависят от значений a, вам необходимо указать a для поиска y. Учтите следующее:

def costfunction(b, a):
    # b Value
    x = np.linspace(b*(-b), b*(b), 100)
    y = (x - a)**2
    return x, y
a = 5
c = costfunction(20, a)
plt.plot(c[0], c[1], linestyle='-', linewidth=1)
plt.ylabel("Cost Value");

b = 100
yb = (b - a)**2    # Find the corresponding y-value
plt.plot(b, yb, marker='o', color='b')
plt.show()

Это даст вам

Cost function with tracer

Вы также можете заметить, что я изменил определение costfunction, чтобы оно возвращало значения x, в противном случае matplotlib будет просто использовать любые значения, какие пожелает.

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