Azzera filtri
Azzera filtri

I need help with a taylor series approximation of e^x

2 visualizzazioni (ultimi 30 giorni)
Please help!
I have a portion of a code I am trying to write that isn't co-operating. This function is written to approximate e^x by a taylor series expansions using a set number of terms. Earlier on in the code I successfully evaluated the function at 3 and 5 terms. My third task is to figure out how many terms it takes to get an evaluation within 0.000001 error.
%%Necessary Terms %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
errMax = 0.000001;
ex = 1;
nMax = 1000000;
for nInitial=0:nMax
while abs((exp(x)-ex)/exp(x))*100 >= errMax
ex = ex + x.^nInitial/factorial(nInitial);
end
end
fprintf(['The number of terms necessary for the function to be within the allowed error of 0.0001 is ' num2str(nInitial) '.\n']);
fprintf(['The true value of e^3 is ' num2str(exp(3)) '.\n']);
end
Please help!

Risposta accettata

Walter Roberson
Walter Roberson il 14 Lug 2018
for nInitial=0:nMax
if abs((exp(x)-ex)/exp(x))*100 < errMax
break;
end
ex = ex + x.^nInitial/factorial(nInitial);
end
  4 Commenti
Thomas MacDowell
Thomas MacDowell il 14 Lug 2018
at the 647th term in the series it turns into 'NaN' which is why it isn't giving me an answer, how can I get the number of terms? I'mm pulling my hair out over this
Walter Roberson
Walter Roberson il 14 Lug 2018
Your calculation is off by 1.0. Initialize ex to 0 instead of 1.

Accedi per commentare.

Più risposte (1)

sparsh mehta
sparsh mehta il 19 Mag 2021
or nInitial=0:nMax
if abs((exp(x)-ex)/exp(x))*100 < errMax
break;
end
ex = ex + x.^nInitial/factorial(nInitial);
end

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by