Azzera filtri
Azzera filtri

Taylor Series of e^x

98 visualizzazioni (ultimi 30 giorni)
Joseph Melo Manalo
Joseph Melo Manalo il 21 Mar 2020
Risposto: Mohamed Hakim il 21 Mag 2021
The program calculates e^x by adding terms of the series and stopping when the absolute value of the term that was added last is smaller than 0.0001. Use a while-end loop, but limit the number of passes to 30. If in the 30th pass the value of the term that is added is not smaller than 0.0001, the program stops and displays a message that more than 30 terms are needed.
clear
clc
fprintf('Solving e^x using Taylor Series\n');
x=input('x = ');
n=30;
i=0;
f=1;
while i<n || i==n
f=f+(x.^i)/factorial(i);
i=i+1;
end
y=f-1
This is where I am stuck, I don't know how to limit the n to 30 and how can I make a condition that if the value of the term is smaller than 0.0001 it will stop.
Any help would be appreciated, Thank you!
  1 Commento
Walter Roberson
Walter Roberson il 21 Mar 2020
while term is in range && iterations is in range
Calculate a term
accumulate term into total
increment iterations

Accedi per commentare.

Risposta accettata

Subhamoy Saha
Subhamoy Saha il 21 Mar 2020
clear
clc
fprintf('Solving e^x using Taylor Series\n');
x=input('x = ');
n=30;
i=0;
f=1;
while i<=n
last_term=(x.^i)/factorial(i);
if (x.^i)/factorial(i)<0.0001
msgbox('Last term is smaller than 0.0001 and hence stopped')
break
elseif i==n && last_term>0.0001
msgbox('More steps needed')
break
end
f=f+last_term;
i=i+1;
end
y=f-1
  4 Commenti
Subhamoy Saha
Subhamoy Saha il 25 Mar 2020
I didn't realised that @Walter.
Joseph Melo Manalo
Joseph Melo Manalo il 25 Mar 2020
I just read the rules in asking homework and I am really sorry for not tagging "homework". I thank you both also for answering my questions. I have learn that I can learn better using actual example, so even though Subhamoy Saha didn't exactly write the code that I need. I can work from there. Again I am sorry and Thank you both!

Accedi per commentare.

Più risposte (2)

Mohamed Hakim
Mohamed Hakim il 20 Mag 2021
function [ts]=newton(x,n)
i=1;
ts=1;
while i<n || i==n
ts=ts+(x.^i)/factorial(i);
i=1+i;
end
end
  1 Commento
Walter Roberson
Walter Roberson il 20 Mag 2021
Is there a reason to write
i<n || i==n
instead of
i<=n
?

Accedi per commentare.


Mohamed Hakim
Mohamed Hakim il 21 Mag 2021
y= @(x) 2*x^2-5*x+3;
x1=input("enterfirst number");
x2=input("enterfirst number");
if f(x1)*f(x2)==0
disp("no");
end

Categorie

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

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by