I est une nouveauté en python et dans le monde du calcul scientifique. En guise de début, je construis un module contenant les définitions des fonctions mathématiques habituelles avec les séries de puissances.Construire une fonction d'affichage générique pour les résultats de calculs
À titre d'exemple, voici le code de la fonction exponentielle:
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
Ensuite, je veux afficher les résultats de calcul de cette fonction dans une belle table, comme les suivantes:
### 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
Ce tableau est généré par le code ci-dessous:
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))
Comme je veux calculer une d afficher les résultats pour plusieurs autres fonctions habituelles (cosh, sinh, sin, cos, arctan, ...), je souhaiterais concevoir une fonction d'affichage générique.
Pour une telle fonction d'affichage, j'ai besoin de paramètres tels qu'une fonction (dont les valeurs sont réellement calculées), un titre, un x-start, un x-end et un pas, je pense.
Je veux aussi ajouter une valeur de précision pour les calculs.
J'attends tous les conseils qui m'aideront à concevoir cette fonction.