Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function Python:一个范围内函数的最大值_Function_Range_Max - Fatal编程技术网

Function Python:一个范围内函数的最大值

Function Python:一个范围内函数的最大值,function,range,max,Function,Range,Max,我试图通过以下代码找出函数的最大值(这里是T(n)): for i in range(2, imax-1): Q=q(i-1)-q(i) Tn=T(i)+(Dt/(rho*cp*0.1))*Q y=max(Tn) 但我得到一个错误“float”对象是不可编辑的。任何关于这方面的建议都会对我有所帮助 请注意,“q”和“T(i)”已被定义为“i”的函数,所有其他术语都是常量。max取一个iterable(例如,alist,dict,str等),因此它可能看起来像是,max(

我试图通过以下代码找出函数的最大值(这里是T(n)):

for i in range(2, imax-1):
    Q=q(i-1)-q(i)
    Tn=T(i)+(Dt/(rho*cp*0.1))*Q
    y=max(Tn)
但我得到一个错误“float”对象是不可编辑的。任何关于这方面的建议都会对我有所帮助


请注意,“q”和“T(i)”已被定义为“i”的函数,所有其他术语都是常量。

max
取一个iterable(例如,a
list
dict
str
等),因此它可能看起来像是,
max([1,2,3])#=>3
。一种常见的模式是使用理解:
max(f(x)表示范围(10)内的x))
。理解需要一个表达式,因此不能使用
Tn
的原始定义


如果你把
Tn
的定义扩展为一个表达式,我们得到
Tn=T(i)+(Dt/(rho*cp*0.1))*(q(i-1)-q(1))
。在理解中使用它,我们得到了范围(2,imax-1)内i的
max(T(i)+(Dt/(rho*cp*0.1))*(q(i-1)-q(1))
max
取一个可数(例如
list
dict
str
,等等),因此它看起来可能类似于
max([1,2,3])。一种常见的模式是使用理解:
max(f(x)表示范围(10)内的x))
。理解需要一个表达式,因此不能使用
Tn
的原始定义


如果你把
Tn
的定义扩展为一个表达式,我们得到
Tn=T(i)+(Dt/(rho*cp*0.1))*(q(i-1)-q(1))
。在理解中使用它,我们得到
max(T(i)+(Dt/(rho*cp*0.1))*(q(i-1)-q(1)),对于范围(2,imax-1))内的i

函数返回多个值中的最大值,因此逻辑上需要在列表或元组中传递至少两个值作为参数。
我建议您基于当前代码使用此解决方案,以便于理解:

y = None
for i in range(2, imax-1):
    Q=q(i-1)-q(i)
    Tn=T(i)+(Dt/(rho*cp*0.1))*Q
    if y is None:
        y=Tn
    else:
        y=max(Tn,y)

更进一步说(也许更好),在这种情况下,列表理解可以很好地适应,正如Andrea在其回答中所详细说明的。

函数返回多个值中的最大值,因此逻辑上需要在列表或元组中传递至少2个值作为参数。
我建议您基于当前代码使用此解决方案,以便于理解:

y = None
for i in range(2, imax-1):
    Q=q(i-1)-q(i)
    Tn=T(i)+(Dt/(rho*cp*0.1))*Q
    if y is None:
        y=Tn
    else:
        y=max(Tn,y)

为了更进一步(也许更好),列表理解在本例中得到了很好的应用,正如Andrea在其回答中所详细说明的那样。

非常感谢AndreaThank you非常感谢AndreaThank you非常感谢AndreaThank you非常感谢Laurent非常感谢Laurent