2016-09-16 5 views
0

Я хочу найти приблизительную сумму экспоненциальной функции, мой код выглядит следующим образом:приближенного суммирования показательной функции в Python

import numpy as np 
import matplotlib.pyplot as plt 
import math 

N = input ("Please enter an integer at which term you want to turncate your summation") 
x = input ("please enter a number for which you want to run the exponential summation e^{x}") 

exp_sum =0.0 

for n in range (0, N): 
    factorial = math.factorial(n) 
    power  = x**n 
    nth_term = power/factorial 
    exp_sum = exp_sum + nth_term 

print exp_sum 

Теперь я проверил это для пары (х, N) = (1 , 20), и он возвращает 2.0, мне было интересно, правильный ли мой код в этом контексте, если это так, то получить e = 2.71 ..., сколько терминов я должен рассматривать как N? если мой код неправильный, пожалуйста, помогите мне исправить это.

+0

Добавьте это как первую строку вашего кода, 'из __future__ import division'. –

ответ

1

Какую версию python вы используете? Деление, которое находит nth_term, дает разные результаты в python 2.x и в версии 3.x.

Кажется, что вы используете версию 2.x. Используемое вами разделение дает только целочисленные результаты, поэтому после первых двух строк (1/factorial (0) + 1/factorial (1)) вы добавляете только нули.

Так как использование версии 3.x или заменить эту строку с

nth_term = float(power)/factorial 

Или, как комментарий предполагает, сделать Python 2.x сделать разделение, как 3.x, добавив строку

from __future__ import division 

в начале или рядом с началом модуля.