Taylor series in matlab

6 vues (au cours des 30 derniers jours)
Brendan Clark
Brendan Clark le 25 Avr 2021
Commenté : Walter Roberson le 25 Avr 2021
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 commentaires
Walter Roberson
Walter Roberson le 25 Avr 2021
That particular function does not need the factorial, and you are raising to the wrong power
Order 7 for example:
- x^6/6 + x^5/5 - x^4/4 + x^3/3 - x^2/2 + x
Brendan Clark
Brendan Clark le 25 Avr 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.

Connectez-vous pour commenter.

Réponse acceptée

Walter Roberson
Walter Roberson le 25 Avr 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 commentaire
Walter Roberson
Walter Roberson le 25 Avr 2021
With a fairly small amount of extra work, you can eliminate the loop, but that requires understanding implicit expansion.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by