Изо всех сил пытается получить сближение с числом Эйлера - PullRequest
1 голос
/ 12 апреля 2020

Привет, я работал над тем, чтобы построить график сходимости 'e', ​​используя уравнение 1 / N! с ограничениями от 0 до 9.

clc,clear
terms=[1];
x=10;
for i=2:x
    terms(i,1)=terms(i-1,1) + 1/factorial(i);
end
disp(terms)
xplotrange = 0:9;
plot(xplotrange,terms,'b-')

С помощью кода я намеревался построить количество членов на оси 'x' и результат ряда на оси 'y'. Но меня смущает, почему массив чисел, выведенных в for для l oop, сходится на 1.718 вместо 2.718?

Ответы [ 2 ]

2 голосов
/ 12 апреля 2020

Как указано @ Даниэль , число Эйлера через расширение Тейлора должно начинаться с x=0. Таким образом, вы можете настроить свой код на что-то вроде ниже

terms=[1];
x=10;
for i=2:x
    terms(i,1)=terms(i-1,1) + 1/factorial(i-1);
end
disp(terms)
xplotrange = 0:9;
plot(xplotrange,terms,'b-')

или метод, использующий cumsum, например,

terms=[1];
x=10;
terms = cumsum(1./factorial(0:x));
disp(terms)
xplotrange = 0:x;
plot(xplotrange,terms,'b-');
2 голосов
/ 12 апреля 2020

Инициализируя terms с помощью 1 и начиная с l oop со 2, вы фактически начинаете с i=1, но сумма должна начинаться с i=0. 1/0! - это 1, которого вам не хватает.

...