/ / Calcolo exp (x) con l'uso della ricorsione in Python [duplicato] - python, matematica, ricorsione, exp

Calcolare exp (x) con l'uso della ricorsione in Python [duplicato] - python, matematica, ricorsione, exp

Sto cercando di calcolare e ^ x usando la ricorsione, e ^ x = e ^ (x / 2) * e ^ (x / 2), e il terzo ordine Espansione di Maclaurin per e ^ x e lo script continua a tornare 1. Non cerco una soluzione più accurata, semplicemente per capire dove lo script va male:)

Il mio pensiero è che con iterazioni sufficienti dovrebbe finire con (1 + x / N + (x / N) ^ 2/2) ^ N quando il valore della funzione scende sotto il limite.

def exp(x):
if abs(x)<0.0001:
return 1+x+x**2/2
else:
y=exp(x/2)
return y*y

risposte:

7 per risposta № 1

Prova questo invece (nota il 2.0 nella chiamata ricorsiva):

def exp(x):
if abs(x) < 0.0001:
return 1 + x + x**2 / 2.0
else:
y = exp(x / 2.0)
return y * y

Sta fallendo perché se passi un numero intero in xdire 1, poi x / 2 fa la divisione intera (in python 2.x), che risulterebbe in 0 invece di 0.5. Usando x / 2.0, costringe Python ad usare la divisione float.


3 per risposta № 2
def exp(x):
if abs(x)<0.0001:
return 1+x+(x**2)/2.0
else:
y=exp(x/2.0)
return y*y

La divisione intera tronca. Hai bisogno di galleggianti qui.