使用python查找函数的最大值和最小值

使用python查找函数的最大值和最小值,python,max,min,Python,Max,Min,编写一个函数maxminf,a,b,n=1000来查找最大值 以及区间内数学函数fx的最小值 在a和b之间。下面的测试程序 from math import cos, pi print maxmin(cos, -pi/2, 2*pi, 100001) 应该写出 (1.0, -1.0). maxmin函数可以计算一组n个等距坐标 在存储在列表x中的a和b之间,然后在 指向x并将值存储在另一个列表y中。Python函数 maxy和miny返回表中的最大值和最小值 分别列出y 我试着用 from

编写一个函数maxminf,a,b,n=1000来查找最大值 以及区间内数学函数fx的最小值 在a和b之间。下面的测试程序

from math import cos, pi
print maxmin(cos, -pi/2, 2*pi, 100001)
应该写出

(1.0, -1.0).
maxmin函数可以计算一组n个等距坐标 在存储在列表x中的a和b之间,然后在 指向x并将值存储在另一个列表y中。Python函数 maxy和miny返回表中的最大值和最小值 分别列出y

我试着用

from math import cos, pi
import numpy

def maxmin(f, a, b, n=1000):
    x = (f(i) for i in numpy.linspace(a, b, n))
    #print x
    maximum = max(x==2)
    minimum = min(x==0)
    return maximum, minimum

print maxmin(cos, -pi/2, 2*pi, 100001)
但它运行不正常。当我的意思是它不能正常工作时,我没有给出我应该得到的最大值和最小值,即1.0,-1.0。 这就是我得到的错误

minimum = min(x)
ValueError: min() arg is an empty sequence
>>>

我不知道它需要什么序列

您发布的代码会给您一个名称错误:由于您导入内容的方式,没有定义全局名称“numpy”。而不是做

from numpy import *
照办

import numpy
另外,numpy中的函数称为linspace,而不是linespace。如果你改变这两件事,它会起作用,但还有其他问题


您似乎不了解Python的导入是如何工作的。这就是问题的根源。每当您从numpy import*输入时,Python都会找到numpy并将numpy中定义的所有内容放入当前文件中。所以你不能将numpy中的东西称为numpy.linspace、numpy.sin或其他任何东西。你只是把它们称为linspace和sin。

什么是numpy.linespace?当你说它不能正常运行时,你是什么意思?请将您的问题包括程序的完整输出,包括您遇到的任何错误的全文。我想您指的是numpy.linspace,Mitch?在您的行中,max=maxx和minimum=minx,您是在尝试使用内置的max和min函数,还是来自numpy的函数?这就是为什么从模块导入*不是一个好主意-您会遇到名称空间冲突和意外行为。请尝试将numpy作为np导入,然后显式调用所需的函数。导入numpy后,函数返回1.0,-1.0您能帮我解决其他问题吗。。对不起,我一点也不擅长编程。如果我们在课堂上提问并侮辱我们的智力,我的老师会让我们感到尴尬,因此没有人提问。我认为即使OP解决了这个问题,他们也需要使用列表理解来定义x,而不是生成器。这就是空序列错误的来源。你指出的问题都不会导致这个特定的值错误。@Mitch如果这没有回答你所有的问题,为什么要接受它?@SethMMorton这确实回答了我回答问题时的版本。然后OP把x变成了一个生成器表达式,用了max和min,就像现在使用的一样,FWIW。啊,我不知道。在这种情况下,OP的礼仪很差。@Mitch,如果你有一个新问题,就把它作为一个新问题发布。否则,像我这样的人可能会指责某人没有正确回答问题。