Найти - Пользователи
Полная версия: экстремум функции
Начало » Центр помощи » экстремум функции
1
x800
Добрый день.
Задался целью изучить Python.
Поставил перед собой задачу - портировать расчет, который используем в работе, из маткада в python.
И вроде все шло удачно, но столкнулся с таким моментом, который не получается реализовать, а именно найти экстремум функции Y(Х) в заданных интервалах X, с заданием начального приближения переменной Х. Вот аналогичный пример в маткаде ссылка на пример - интересующий фрагмент прикрепил картинкой.

Все, что смог накопать, это использование библиотеки sympy, а также использование функции maximum и minimum из sympy.calculus.util:
x = symbols(“x”)
f = -1*(x ** 7) + 5 * (x **3) - 3 * x
interv = Interval(-2.0, 0.0)
res_min = minimum(f, x, interv)
res_max = maximum(f, x, interv)

Но как задать начальное приближение переменной Х = 1, чтобы результаты получились как в примере -0,452 и -1,162 ?

Заранее благодарю.
py.user.next
x800
Задался целью изучить Python.
Поставил перед собой задачу - портировать расчет, который используем в работе, из маткада в python.
Зачем? Вот ты теперь сидишь и сделать ничего не можешь с этим. Обучение классное, конечно. Это как мальчишка решил научиться плавать и сиганул на десятиметровую глубину, а там понял, что плавать-то он не умеет, и орёт окружающим, чтобы спасли его, бросили ему спасательный круг.

Хочешь научиться - начинай, как все начинают, с простого чего-нибудь. Если плавать учишься, начинай с лужи, где воды по пояс. А если ты такой умный и тонешь уже в какой-то яме, то тони тихонько, не ори.
xam1816
 from scipy import optimize
def f(x):
	return -1*(x ** 7) + 5 * (x **3) - 3 * x
print(optimize.minimize(f,[1]))

       fun: -0.8981283963885099
 hess_inv: array([[0.07846038]])
      jac: array([-1.82539225e-06])
  message: 'Optimization terminated successfully.'
     nfev: 14
      nit: 5
     njev: 7
   status: 0
  success: True
        x: array([0.45161859])
Process finished with exit code 0
Вы чего-нибудь понимаете?…
я нет…

при x = -1

       fun: -1.49841576523223
 hess_inv: array([[0.01842377]])
      jac: array([5.96046448e-08])
  message: 'Optimization terminated successfully.'
     nfev: 16
      nit: 6
     njev: 8
   status: 0
  success: True
        x: array([-1.16240037])
Process finished with exit code 0
x800
xam1816
x: array(0.45161859)
xam1816
x: array(-1.16240037)


то, что нужно!
спасибо большое!

почитал про optimize.minimize, получается и интервал (как в примере, -2 < x < 0 ) задать можно через параметр bounds!

 x1=[(-2, 0)]
print(optimize.minimize(f,[1], bounds = x1))

то, что искал! спасибо, xam1816, еще раз.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB