|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 赐福考官 于 2021-10-7 13:54 编辑
在使用python进行计算的时候,数据如果很小,如0.0000001,它就会自己转化成科学计数法,然而不知为啥换成科学计数法之后计算得结果和原来有很大区别
困扰了我很久不知道怎么解决,下面是我写的代码,C、D、E均使用了科学计数法表示后面计算的时候就出现错误了,但我改成普通的小数后就行了
b = 0.08445*(10**-3)
R = 8.314
V0 = 1
p = 1000000
T = 273.15
a = 8.664*(10**-6)*p
C = b+R*T/p
D = a/p
E = a*b/p
def f(V):
return V**3-C*V**2+D*V-E
def f1(V):
return 3*V**2-2*C*V+D
for i in range(100):
if f(V0) == 0:
print(V0)
break
elif f(V0) != 0:
V1 = V0-f(V0)/f1(V0)
if abs(V1-V0) < 0.001:
print(V1)
break
V0 = V1
你的题目运用太多浮点数,只能逐个加 round()
- b = 0.08445*(10**-3)
- R = 8.314
- V0 = 1
- p = 1000000
- T = 273.15
- a = 8.664*(10**-6)*p
- C = b+round(R*round(T/p, 5), 5)
- D = round(a/p, 5)
- E = a*round(b/p, 5)
- def f(V):
- return round(V**3-C*V**2+D*V-E, 5)
- def f1(V):
- return round(3*V**2-2*C*V+D, 5)
- for i in range(100):
- if f(V0) == 0:
- print(round(V0, 5))
- break
- elif f(V0) != 0:
- V1 = V0-round(f(V0)/f1(V0), 5)
- if abs(V1-V0) < 0.001:
- print(V1)
- break
- V0 = V1
复制代码
|
|