Имам функция на една променлива, на която бих искал да намеря минималната стойност, както и стойността на променливата, където е постигнат минимумът. В момента постигам това чрез следния скрипт на Python:
import numpy as np
from scipy.optimize import fmin
import math
x1=0.
y1=800.
x2=1100.
y2=-800.
v1=2000.
v2=4000.
def T(xi):
time=sqrt((x1-xi)**2+y1**2)/v1+sqrt((x2-xi)**2+y2**2)/v2
return time
fmin(T,0)
Изпълнението на този скрипт произвежда следното ехо:
import numpy as np
from scipy.optimize import fmin
import math
x1=0.
y1=800.
x2=1100.
y2=-800.
v1=2000.
v2=4000.
def T(xi):
time=sqrt((x1-xi)**2+y1**2)/v1+sqrt((x2-xi)**2+y2**2)/v2
return time
fmin(T,0)
Optimization terminated successfully.
Current function value: 0.710042
Iterations: 41
Function evaluations: 82
Out[24]: array([ 301.9498125])
Така че минималната стойност на функцията е ~0,71 и се постига при стойност на аргумента ~302. Бих искал обаче да присвоя тези стойности, както следва:
(Tmin,xmin)=fmin(T,0)
Optimization terminated successfully.
Current function value: 0.710042
Iterations: 41
Function evaluations: 82
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
C:\Users\Kurt.Peek\<ipython-input-25-aec613726d59> in <module>()
----> 1 (Tmin,xmin)=fmin(T,0)
ValueError: need more than 1 value to unpack
Така че получавам грешка „ValueError: нужда от повече от 1 стойност за разопаковане“. Някой знае ли как да предотврати тази грешка и да присвои тези два изхода?