Function Python:一个范围内函数的最大值
我试图通过以下代码找出函数的最大值(这里是T(n)):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(
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([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