求函数在给定区间上的最值
Description
给定函数 func=lambda x:5*x**3+6*x**2+2*x+8,求给定区间该函数的最大值和最小值。x为0.01为最小分度进行运算,结果要求小数点后保留6位数字。
如给定区间[a,b],a=0.1,b=0.3,则要比较0.10,0.11,0.12,0.13,0.14,0.15,0.16,0.17,0.18,0.19,0.20,0.21,0.22,0.23,0.24,0.25,0.26,0.27,0.28,0.29,0.30这21个数所得函数值中的最大值和最小值。
Input
一行,两个带一位小数的浮点数a和b,用空格分开。如:
0.1 0.3
Output
一行,两个带六位小数的浮点数,第一个为最大值,第二个为最小值,中间用空间分开。如:
9.2750008.265000
Sample Input 1
0.1 0.3
Sample Output 1
9.275000 8.265000
Hint
该题关系到浮点的运算,注意大小的比较方式。
Source
中学生可以这样学Python
错误代码如下(怎么改啊,裂开):
from math import fabs
func=lambda x:5*x**3+6*x**2+2*x+8
a,b=map(float,input().split())
#print((b-a))
#print((b-a)/0.01)
cishu=round(fabs(b-a)/0.01)
#print(cishu)
fmin=func(a)
fmax=func(a)
for i in range(cishu+1):
j=round(a+0.01*i,2)
f=func(j)
#print(j,f)
if f>fmax:
fmax=f
elif f<fmin:
fmin=f
print('{:.6f} {:.6f}'.format(fmax,fmin))
2023.10.24 感觉跟换了一个脑子思考一样,现在对了
from math import fabs
a,b=map(float,input().split())
cishu=round(fabs(a-b)/0.01)+1
l=[]
#print(cishu)
for i in range(cishu):
x=round(a+i*0.01,2)
#print(x)
f=5*x**3+6*x**2+2*x+8
l.append(f)
print('{:.6f} {:.6f}'.format(max(l),min(l)))