Форум сайта python.su
Добрый день.
Задался целью изучить 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 ?
Заранее благодарю.
Прикреплённый файлы:
Снимок.PNG (122,0 KБ)
Офлайн
x800Зачем? Вот ты теперь сидишь и сделать ничего не можешь с этим. Обучение классное, конечно. Это как мальчишка решил научиться плавать и сиганул на десятиметровую глубину, а там понял, что плавать-то он не умеет, и орёт окружающим, чтобы спасли его, бросили ему спасательный круг.
Задался целью изучить Python.
Поставил перед собой задачу - портировать расчет, который используем в работе, из маткада в python.
Отредактировано py.user.next (Окт. 17, 2021 16:36:47)
Офлайн
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
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
Отредактировано xam1816 (Окт. 17, 2021 19:04:46)
Офлайн
xam1816
x: array(0.45161859)
xam1816
x: array(-1.16240037)
x1=[(-2, 0)] print(optimize.minimize(f,[1], bounds = x1))
Отредактировано x800 (Окт. 17, 2021 21:25:21)
Офлайн