0
我是一个相当新的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))
由于我想计算d显示其他常用函数(cosh,sinh,sin,cos,arctan,...)的结果,我想要设计一个通用显示函数。
对于这样的显示函数,我认为需要诸如函数(实际计算的值),标题,x-start,x-end和step等参数。
我也想为计算添加一个精度值。
我期待着任何可以帮助我设计显示功能的建议。