leftimage for poohprod.ru

Taylor expansion - series experiments with Matlab

Once you know how Maclaurin series work, Taylor series are easier to understand.

Taylor expansions are very similar to Maclaurin expansions because Maclaurin series actually are Taylor series centered at x = 0.

Thus, a Taylor series is a more generic form of the Maclaurin series, and it can be centered at any x-value.

The goal of a Taylor expansion is to approximate function values.

You’ll have a good approximation only if you’re close to the series’ center.

Taylor series look almost identical to Maclaurin series:

taylor series formula

- The derivatives in Taylor series are evaluated at x = c, the center of the approximation,
not at x = 0.
- You raise the quantity (x – c) to the n power, not just x.

Other than that, the formulas (Maclaurin’s and Taylor’s) are identical.

As an example, let’s use a cosine series to approximate cos(1.6), using just three terms in the Taylor polynomial for f(x) = cos(x) centered at x = pi/2
(x is approx. 1.57). In this problem, f(x) = cos(x) and c = pi/2.

taylor expansion - example of code

And we’ll need to take three derivatives (n = 0 to 2) of the function and then evaluate them at x = pi/2.

Definition 1: f(0)(x) is the function itself, in this case cos(x). It's not a derivative!
Definition 2: 0! = 1.

f(0)(x) = cos(x) f(0)(pi/2) = cos(pi/2) = 0
f(1)(x) = -sin(x) f(1)(pi/2) = -sin(pi/2) = -1
f(2)(x) = -cos(x) f(2)(pi/2) = -cos(pi/2) = 0

Let’s create a fast script in Matlab to evaluate the series just with 3 terms (0 to 2):

clear, clc

% Let's see more decimals
format long

% We go from n = 0 to n = 2
n = 0 : 2;

% Center and point to evaluate
c = pi/2;
x = 1.6;

% These are the derivatives for each term
d = [0 -1 0];

% We form the sequence, following the Taylor formula
seq = d .* (x - c).^n ./(factorial(n))

% We add-up to get the Taylor approximation
approx = sum(seq)

% Let's compare with the official number
real_value = cos(x)

The resuls are:

seq = 0 -0.10 0
approx = -0.10
real_value = -0.29

We’ve got almost the exact value by using only 3 terms of the series (and two values are zero because the derivative is zero for those terms!!). If we had used n = 10, it would have been an even better approximation.

Now, let’s develop an automated series to express the cosine function (centered at pi/2) using the Taylor expansion and let’s compare the results with different number of terms included.

function stp = taylor_cosine(c, x, n)
% c = center of the function
% x = a vector with values around c
% n = number of terms in the series

% Start the series with 0
smp = 0;

% Consider all the possible derivatives
deriv = [0 -1 0 1]';

% Iterate n times (from 0 to n-1)
for i = 0 : n-1

% Implement the Taylor expansion
t(i+1, :) = deriv(1) * (x-c).^(i) / factorial(i);

% Find derivative for the next term
deriv = circshift(deriv, -1);


% Add-up the calculated terms
stp = sum(t);

Note: the above code is not very efficient, because we’re calculating and adding terms even when their derivative is zero, which is a waste of 50% of the time, more or less. We’ll leave it as-is just to keep and show the natural flow of the formula...

Now, let’s create a script to test and use the function above.

clear, clc, close all

% Work with values around center c
c = pi/2;
x = -4 : .1 : 6;
y = cos(x);

% Plot the goal
plot(x, y, 'g', 'Linewidth', 3)
'Study of Taylor series')
'cos(x) with different number of terms')
axis([-4 6 -3 3])
hold on

% Consider 4 terms in the series
smp = taylor_cosine(c, x, 4);
plot(x, smp,

% Consider 6 terms
smp = taylor_cosine(c, x, 6);
plot(x, smp,

% Consider 10 terms
smp = taylor_cosine(c, x, 10);
plot(x, smp,
'k', 'linewidth', 3)

% Label the calculated lines
legend('cos(x)', '4-term series', ...
'6 terms', '10 terms')

The results are:

Taylor expansion - cosine series

We see that all of the Taylor expansions work well when we are close to pi/2 (x approx. 1.57). More terms approximate better a larger portion of the cosine curve.

Maclaurin Series Sequences Fourier Analysis - intro

Fourier Series

From 'Taylor Expansion ' to home

From 'Taylor Expansion ' to Calculus Problems


footer for Taylor expansion page

Related pages

online smith chart plottergauss jordan c programpiecewise functions calculatortaylor expansion onlineradioactive decay formula calculatorunit impulse function examplesascii code alphabetunit impulse function matlabscilab codesalvage car price guidematlab to java converterhow to calculate permutations and combinationsbinary to hex charthow to graph piecewise defined functionslucas numbers listsolve simultaneous equations matlabprogram to convert decimal to octaldecimal code converterwriting a matlab programhow to solve system of equations matlabpythagoras theorem calculator onlinecramers rule examplesmatlab for loop matrixbisection method algorithmlagrange interpolation algorithm matlabhow to hexadecimal to binaryascii code binary tablehow to calculate pnrexponential decay half life formulacompound interest continuously formulaohms law calculator appgui in matlab examplesquadratic taylor polynomialpeak fitting matlabplot 3d matrix matlabmatlab polardecimal to octal exampleshow to count bmi formulaplot sphere in matlabmatlab factorialbinary and hexadecimal numbersbooks on matlabannuity functionsolids of revolution exampleswrite a program to find roots of quadratic equationconversion from octal to binaryhow to divide in matlabmatlab books for beginnersto display a pascal triangle patternformula for factorialsmatlab for loop syntaxwhat is salvage value in accountingmultiplying matrices in matlabmatlab patch 3dbisection methodsgoogle integral calculatorconvert binary numbers to hexadecimalequation for depreciationcombinational circuits examplesmatlab gui codemaclaurin series expansion of sinxdepreciation value of cars calculatorascii code maptakagi factorizationsecond order polynomial fitoctal to binary tabledurer magic squaredecimal to octal converter onlineexponential interpolation formulahow to create a histogram in matlablinear algebra in matlabrc circuit calculationsine infinite serieslagrange interpolation algorithm matlab