Я совершенно новый для 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 и шаг.
Я также хочу добавить значение точности для вычислений.
Я с нетерпением жду любых советов, которые могут помочь мне разработать эту функцию отображения.