Taylor series in matlab

1 view (last 30 days)
I'm working on trying to approximate a taylor series for log(1+x) in matlab. However, I wasn't given an equation, and I haven't finished calculus yet and I'm struggling to get the right equation for the proximation. I can't use the built in functions in matlab to accomplish this sadly. Right now my code is.
x = linspace(0,pi, 100);
N=10;
logApprox = zeros(1,length(x));
for i = 1:length(x)
for j = 1:N
Number = (j - 1);
logApprox(i) = logApprox(i) + (-1)^(j + 1)*((x(i)^N)/N)^(Number)/factorial(Number);
end
end
disp(logApprox)
  2 Comments
Brendan Clark
Brendan Clark on 25 Apr 2021
I understand how the equation is laid out in that format, I just don't have a deep enough grasp of calculus to turn that into a usable matlab equation.

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 25 Apr 2021
- x^6/6 + x^5/5 - x^4/4 + x^3/3 - x^2/2 + x
Look at that more carefully. Suppose you have a loop index, K, then you have a term X^K/K*(-1)^(K+1)
After that what you need to know is to use the .^ operator instead of the ^ operator -- x.^K/K*(-1)^(K+1)
You do not need to loop over the x values; you can use vectorized calculations.
  1 Comment
Walter Roberson
Walter Roberson on 25 Apr 2021
With a fairly small amount of extra work, you can eliminate the loop, but that requires understanding implicit expansion.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!