Почему это не правильно оценивает е ^ х, используя ряды Тейлора? - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь написать функцию с именем expSeries, которая использует другую функцию factFunc для оценки e ^ x. Я уже написал функцию factFunc, как показано ниже:

function fact = factFunc(n) 
    f = 1;
    for a = 1:b
        f = f*a;            
    end
    fact = f;
end

Я сейчас пытаюсь написать функцию expSeries, которая вычисляет e ^ x с использованием ряда Тейлора. Это то, что я до сих пор:

function expo = exponentialFunc(x) 
terms = input('Enter the number of terms');
b = 0;
for i = 1:terms
        b = x/factFunc(terms);
end
expo = b;
end

А в основной программе у меня

n = exponentialFunc(4);
disp(n);

Где в этом случае я пытаюсь найти е ^ 4. Тем не менее, выход не то, что ожидалось. У кого-нибудь есть идеи, где я иду не так?

1 Ответ

0 голосов
/ 08 ноября 2018

Fix to factFunc:

function fact = factFunc(n) 
    f = 1;
    for a = 1:n
        f = f*a;            
    end
    fact = f;
end

Fix to exponentialFunc

function expo = exponentialFunc(x) 
    terms = input('Enter the number of terms');
    b = 0;
    for i = 0:terms-1
            b = b + x^i/factFunc(i);
    end
    expo = b;
end

Пример

>> exponentialFunc(4)
Enter the number of terms10

ans =

   54.1541

Примечание exp (4) = 54,59815 ...

...