Can't get my Maclaurin Series function to use symsum properly?

조회 수: 4 (최근 30일)
Cole Butler
Cole Butler 2017년 3월 30일
댓글: Walter Roberson 2017년 3월 30일
Here is the code I'm working with currently:
function [ output_args ] = MaclaurinSeries( f,a,tol )
syms x k;
y = subs(f,a)
disp(f)
i=1
error = 1;
while error > tol
f1 = symsum(diff(f,x,k) * (x^k)/(factorial(k)),k,0,i)
error = y - subs(f1,a)
q = subs(f1,a)
i=i+1
end
Every time I run it, no matter how many times I tweak it, I manage to get f1 = 0 every time (which just isn't true). It calculates the derivative properly and everything, but I just don't know why it's returning zero. Any help?

채택된 답변

Walter Roberson
Walter Roberson 2017년 3월 30일
편집: Walter Roberson 2017년 3월 30일
symsum(diff(f,x,k) * (x^k)/(factorial(k)),k,0,i)
is processed as
temp = diff(f,x,k) * (x^k)/(factorial(k));
symsum(temp, k, 0, i)
That is, the expression is evaluated first (as is the case for all MATLAB function arguments) and the result of the expression has the symsum applied to it.
But diff(f, x, k) with symbolic k is 0 . I do not know why they made that choice.
With it coming out as 0, you are doing symsum(0, k, 0, i) which is going to be 0.
I would advise not using symsum for this. Instead, keep a running total, adding one more term at each point.
  댓글 수: 3
Torsten
Torsten 2017년 3월 30일
You are not allowed to use MATLAB's "taylor" ?
Best wishes
Torsten.
Walter Roberson
Walter Roberson 2017년 3월 30일
f1 = sym(0);
while ...
new_term = ...
f1 = f1 + new_term;
...
end

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Calculus에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by