在 python 中寻找最小值
Finding smallest value in python
我正在寻求一些帮助来为 python
中的以下内容创建代码
我已尝试回答,但不太确定如何完成。这是我目前所拥有的
import numpy as np
import math
from numpy import cos
x=10**(-p)
funct = (1-math.cos(x))/x
所以我已经定义了我要计算的函数,我相信我用
做对了
funct = (1-math.cos(x))/x
我已经说了x需要带什么
x=10**(-p)
但是,当使用标准双精度时,如何添加代码以找到在 x = 10**-p 处没有正确有效数字的 p 的最小值?
我需要以某种方式使用
print(min(funct))
寻求有关此执行的帮助,谢谢!
编辑:新代码
import numpy as np
import math
for p in range(10):
x=10.0**-p;
result = (1-np.cos(x))/x
print (p)
print (result)
Test = 2*np.sin(x/2)**2/x
print (p)
print(Test)
给出结果:
0
0.459697694132
0
0.459697694132
1
0.0499583472197
1
0.0499583472197
2
0.00499995833347
2
0.00499995833347
3
0.000499999958326
3
0.000499999958333
4
4.99999996961e-05
4
4.99999999583e-05
5
5.0000004137e-06
5
4.99999999996e-06
6
5.00044450291e-07
6
5e-07
7
4.99600361081e-08
7
5e-08
8
0.0
8
5e-09
9
0.0
9
5e-10
随着循环
for p in range(15): x=10.0**-p; print p, x, (1-np.cos(x))/x, 2*np.sin(x/2)**2/x
我得到了表达式的值和理论上等效的表达式
p x (1-cos(x))/x 2*sin²(x/2)/x
0 1.0 0.459697694132 0.459697694132
1 0.1 0.0499583472197 0.0499583472197
2 0.01 0.00499995833347 0.00499995833347
3 0.001 0.000499999958326 0.000499999958333
4 0.0001 4.99999996961e-05 4.99999999583e-05
5 1e-05 5.0000004137e-06 4.99999999996e-06
6 1e-06 5.00044450291e-07 5e-07
7 1e-07 4.99600361081e-08 5e-08
8 1e-08 0.0 5e-09
9 1e-09 0.0 5e-10
10 1e-10 0.0 5e-11
11 1e-11 0.0 5e-12
12 1e-12 0.0 5e-13
13 1e-13 0.0 5e-14
14 1e-14 0.0 5e-15
但我不知道如何解释任务以给出有效答案。可以是 p=5 也可以是 p=8.
我正在寻求一些帮助来为 python
中的以下内容创建代码我已尝试回答,但不太确定如何完成。这是我目前所拥有的
import numpy as np
import math
from numpy import cos
x=10**(-p)
funct = (1-math.cos(x))/x
所以我已经定义了我要计算的函数,我相信我用
做对了funct = (1-math.cos(x))/x
我已经说了x需要带什么
x=10**(-p)
但是,当使用标准双精度时,如何添加代码以找到在 x = 10**-p 处没有正确有效数字的 p 的最小值?
我需要以某种方式使用
print(min(funct))
寻求有关此执行的帮助,谢谢!
编辑:新代码
import numpy as np
import math
for p in range(10):
x=10.0**-p;
result = (1-np.cos(x))/x
print (p)
print (result)
Test = 2*np.sin(x/2)**2/x
print (p)
print(Test)
给出结果:
0
0.459697694132
0
0.459697694132
1
0.0499583472197
1
0.0499583472197
2
0.00499995833347
2
0.00499995833347
3
0.000499999958326
3
0.000499999958333
4
4.99999996961e-05
4
4.99999999583e-05
5
5.0000004137e-06
5
4.99999999996e-06
6
5.00044450291e-07
6
5e-07
7
4.99600361081e-08
7
5e-08
8
0.0
8
5e-09
9
0.0
9
5e-10
随着循环
for p in range(15): x=10.0**-p; print p, x, (1-np.cos(x))/x, 2*np.sin(x/2)**2/x
我得到了表达式的值和理论上等效的表达式
p x (1-cos(x))/x 2*sin²(x/2)/x
0 1.0 0.459697694132 0.459697694132
1 0.1 0.0499583472197 0.0499583472197
2 0.01 0.00499995833347 0.00499995833347
3 0.001 0.000499999958326 0.000499999958333
4 0.0001 4.99999996961e-05 4.99999999583e-05
5 1e-05 5.0000004137e-06 4.99999999996e-06
6 1e-06 5.00044450291e-07 5e-07
7 1e-07 4.99600361081e-08 5e-08
8 1e-08 0.0 5e-09
9 1e-09 0.0 5e-10
10 1e-10 0.0 5e-11
11 1e-11 0.0 5e-12
12 1e-12 0.0 5e-13
13 1e-13 0.0 5e-14
14 1e-14 0.0 5e-15
但我不知道如何解释任务以给出有效答案。可以是 p=5 也可以是 p=8.