我刚刚开始使用Python进行编程课程。
其中一个问题指出:
您遇到了斯特林近似 ln(n!)≈n ln(n)− n 在统计热力学中,可能会想知道这种近似的好坏。 小数字。通过使用Python数学库可以轻松地验证这一点 提供对自然对数以及阶乘函数的访问。 编写一个小的Python脚本来打印n,ln(n!),n ln(n)– n和相对错误: 错误=(ln(n!)−(n ln(n)− n))/ ln(n!) 在表格中显示从2到1000的n值。
我能够处理数据本身(为简单起见,下面将显示2到9):
>>> for x in range(2,10):
... a = math.log(math.factorial(x))
... b = x*math.log(x) - x
... c = (a-b)/a
... print(x, '\t', a, '\t', b, '\t', c)
结果为:
2 0.6931471805599453 -0.6137056388801094 1.8853900817779268
3 1.791759469228055 0.2958368660043291 0.8348903013573665
4 3.1780538303479458 1.5451774444795623 0.5137975858922471
5 4.787491742782046 3.0471895621705016 0.3635102208239511
6 6.579251212010101 4.750556815368331 0.2779487114435725
7 8.525161361065415 6.621371043387192 0.2233142854483519
8 10.60460290274525 8.635532333438686 0.18568074517875863
9 12.801827480081469 10.775021196025975 0.15832163706385113
我想将标题放在列的上方,但我不知道如何。我试过在for x in range命令的上方放置另一个print命令,但随后它只是首先打印标题。有很多关于标题的教程,但这些教程并不涉及包含公式和生成的数据的表,而是涉及手动放置在单元格中的固定值。
希望有人可以帮助我。
答案 0 :(得分:0)
我建议您检查numpy和pandas之类的库,以获取使用python进行数值计算的真正潜力。例如:
import numpy as np
import pandas as pd
import math
a = []
b = []
c = []
x = [i for i in range(2,10)]
for el in x:
ac = math.log(math.factorial(el))
a.append(ac)
bc = el*math.log(el) - el
b.append(bc)
c.append((ac-bc)/ac)
array = np.vstack((x,a,b,c))
df = pd.DataFrame(array.T, columns=["x", "a", "b", "c"])
print(df.head())
df.to_excel("table.xlsx", index=False)