Мой код для графиков рядов Тейлора cos (2x) вместо cos (x) в Matlab - PullRequest
1 голос
/ 12 апреля 2020

Я пишу функцию, которая вычисляет ряд Тейлора любой функции.

syms  x
y=cos(x);
y0=0;
a=0;
for i=0:25
      diff(y,i);                                %%Gives the derivative formula
      y0=y0+diff(y,i)*((x-a)^i)/factorial(i);   %%sums every new element of the series
end

x=0:0.1:2*pi;
res = subs(y0,x);
plot(x,res,x,cos(x))

Это код Matlab.

Моя проблема в том, что он отображает cos(2x) вместо cos(x), аналогично он отображает ln(2x) вместо ln(x) и т. Д.

Я проверил факториалы, и они отображаются чтобы быть правильным. В чем может быть проблема, я испортил сериал или допустил ошибку Matlab?

1 Ответ

2 голосов
/ 12 апреля 2020

Вы строите многочлен Тейлора вокруг точки x с шагом x-a, то есть вы вычисляете приближение для

f(x+(x-a))=f(2*x-a)

Теперь как a=0, это означает, что согласно наблюдениям , вы получите f(2*x).

. Вам необходимо оценить производные по a, чтобы получить правильные коэффициенты.

y0=y0+subs(diff(y,i),a)*((x-a)^i)/factorial(i);   %%sums every new element of the series
...