我对python和科学计算界是一个相当陌生的人
首先,我正在构建一个包含常用幂级数数学函数定义的模块
例如,下面是指数函数的代码:
def exponential(x):
"""Exponential function"""
exp=1.0
term=1.0
iteration=1
factorial=1
while(abs(term/factorial)>1e-15):
factorial*=iteration
term*=x
exp+=term/factorial
iteration+=1
return exp
接下来,我想在一个漂亮的表中显示该函数的计算结果,如下所示:
### Evaluations for the exponential function ###
x=-4.00 --- exp(-4.00)=0.018315638888734 --- precision=0.000000000000000
x=-3.50 --- exp(-3.50)=0.030197383422319 --- precision=0.000000000000001
x=-3.00 --- exp(-3.00)=0.049787068367864 --- precision=0.000000000000000
x=-2.50 --- exp(-2.50)=0.082084998623899 --- precision=0.000000000000000
x=-2.00 --- exp(-2.00)=0.135335283236613 --- precision=0.000000000000000
x=-1.50 --- exp(-1.50)=0.223130160148430 --- precision=0.000000000000000
x=-1.00 --- exp(-1.00)=0.367879441171442 --- precision=0.000000000000000
x=-0.50 --- exp(-0.50)=0.606530659712633 --- precision=0.000000000000000
x=+0.00 --- exp(+0.00)=1.000000000000000 --- precision=0.000000000000000
x=+0.50 --- exp(+0.50)=1.648721270700128 --- precision=0.000000000000000
x=+1.00 --- exp(+1.00)=2.718281828459046 --- precision=0.000000000000000
x=+1.50 --- exp(+1.50)=4.481689070338066 --- precision=0.000000000000002
x=+2.00 --- exp(+2.00)=7.389056098930649 --- precision=0.000000000000002
x=+2.50 --- exp(+2.50)=12.182493960703471 --- precision=0.000000000000002
x=+3.00 --- exp(+3.00)=20.085536923187661 --- precision=0.000000000000007
x=+3.50 --- exp(+3.50)=33.115451958692326 --- precision=0.000000000000014
x=+4.00 --- exp(+4.00)=54.598150033144265 --- precision=0.000000000000028
此表由以下代码生成:
from math import exp
start=-4.0
end=4.0
step=0.5
spacesx0=(1+len(str(int(end))))
spaces0=(1+len(str(int(exp(abs(end))))))
print("### Evaluations for the exponential function ###")
print("")
for i in range(int(start/step),int(end/step)+1):
# computations
x=step*i
expx=exponential(x)
precision=abs(expx-exp(x))
# spaces calculations
spacesx=spacesx0+1-(len(str(int(abs(x)))))
spaces=spaces0+1-(len(str(int(expx))))+spacesx
# text formating
if x<0:
s="x=%.2f"+" "*spacesx+"--- exp(%.2f)=%.15f"+" "*spaces+"--- precision=%.15f"
else:
s="x=+%.2f"+" "*spacesx+"--- exp(+%.2f)=%.15f"+" "*spaces+"--- precision=%.15f"
# end text formating
# display
print(s % (x,x,expx,precision ))
由于我想计算和显示其他几个常用函数(cosh,sinh,sin,cos,arctan,…)的结果,我想设计一个通用的显示函数
对于这样的显示函数,我需要一些参数,比如函数(实际计算的值)、标题、x-start、x-end和step
我还想为计算添加一个精度值
我期待任何建议,可以帮助我设计的显示功能
一种可能的改进方法是创建一个更简单的函数来显示任何类型的表。将所有数据构建为当前格式的col,然后将所有值传递给函数。然后可以计算每列中的最大条目,并相应地格式化数据:
这种方法至少可以消除添加空间的需要,并使显示尽可能紧凑:
相关问题 更多 >
编程相关推荐