Форум сайта python.su
0
Добрый день.
Задался целью изучить 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Б)
Офлайн
857
x800Зачем? Вот ты теперь сидишь и сделать ничего не можешь с этим. Обучение классное, конечно. Это как мальчишка решил научиться плавать и сиганул на десятиметровую глубину, а там понял, что плавать-то он не умеет, и орёт окружающим, чтобы спасли его, бросили ему спасательный круг.
Задался целью изучить Python.
Поставил перед собой задачу - портировать расчет, который используем в работе, из маткада в python.
Отредактировано py.user.next (Окт. 17, 2021 16:36:47)
Офлайн
124
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)
Офлайн
0
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)
Офлайн