MATLAB Answers

Exponential Function using Taylor series

7 views (last 30 days)
Karen on 9 Apr 2015
Edited: Karen on 10 Apr 2015
Hi, I've been trying to write a code which has a row vector input of numbers (x in my code) and the output is row vector e^x (y in my code). e^x is given by the sum of: x^n/n! where n=0,1,2... I have to try and write an unbounded while loop with these conditions: n has a maximum of 50 and that y is more than 0.001 (if less than 0.001, sequence is terminated).
This is what I've done:
the problem is:
1)i've written a loop for the factorial function in a different script, how do i input that into this one?
2)my output is still less than 0.001 when it shouldn't have happened. when given this row vector: [-2 -1.5 -1] the output should be [0.1365 0.2232 0.3679] but I do not obtain these numbers. :(
Any help would be amazing! thanks :)

Accepted Answer

James Tursa
James Tursa on 9 Apr 2015
Edited: James Tursa on 9 Apr 2015
1) You need to turn your factorial script into a function. However, note that MATLAB has a function called factorial already. So either use MATLAB's function, or name your function something else (e.g., make a file called myfactorial.m and fill in the code).
2) Your while loop is flawed if x is a vector, since the if-test is not doing what you think it is. Put a for-loop around that while loop and loop through all the elements of x. E.g., if this outer loop is for k=1:numel(x), then use x(k) in the while loop instead of just x. E.g.,
x = input(etc)
e = zeros(size(x)); % your result vector, see (3) below
for k=1:numel(x)
n = 0;
while( use x(k) here instead of just x )
3) You are not summing the terms! You compute a term as y, then you throw it away and overwrite it on the next iteration with another term. So start with a result vector, e.g. e = zeros(size(x)), then in your loop have e(k) = e(k) + y;

More Answers (0)

Community Treasure Hunt

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

Start Hunting!