Найти х, где у минимальный - PullRequest
       12

Найти х, где у минимальный

1 голос
/ 29 октября 2019

У меня есть полином в диапазоне (-2,2) . Я могу легко найти минимальные значения y, повторяя с x = 0.1 . Но я также хочу найти соответствующее значение x, где y является минимальным. (без использования каких-либо дополнительных библиотек)

Скажем, у = х ** 2 + 3 * х + 5. Я хочу найти мин (у) в диапазоне (-2,2) , а также хочу найти х, который дает мин (у).

def f(x):
   return x**2+3*x+5
y=[]
x=[i/10 for i in range(-20,20)]
for x in x:
   y_values.append(f1(x))

#min(y) find also minimum of y but I want to find it with long way.

   minimum1=y_values[0]
   for n in y_values: 
        if minimum1>n:
           minimum1=n

Ответы [ 2 ]

1 голос
/ 29 октября 2019

Поскольку кортежи упорядочены по первым элементам, а затем по вторым элементам и т. Д., Вы можете передать в функцию min выражение-генератор, которое выдает кортежи (y, x):

min((f(x), x) for x in (i / 10 for i in range(-20, 20)))

Thisвозвращает:

(2.75, -1.5)
0 голосов
/ 29 октября 2019

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

def f(x):
   return x**2+3*x+5

y=[]
x=[i/10 for i in range(-20,20)]

ymin = f1(x[0])
xmin = x[0]

for x in x:
   if(f1(x)<y):
       ymin = f1(x)
       xmin = x
   y_values.append(f1(x))
...