Skip to content

MATLAB - Polynomial Addition

In mathematics, a polynomial is an expression of variables and coefficients involving only addition, subtraction, multiplication, and non-negative integer exponents. They are foundational in many areas of science and engineering, from fitting data curves to designing digital filters.

MATLAB provides several ways to represent and manipulate polynomials. The traditional method uses a simple row vector to store coefficients, which is memory-efficient and excellent for numerical computation.

A polynomial is represented in MATLAB by a row vector containing its coefficients in descending order of power. For a polynomial of degree N, the vector will have N+1 elements.

For example, the polynomial:

p(x) = 4x⁵ + 5x² - 2x + 7

This is a 5th-degree polynomial. To represent it, we must include coefficients for all powers from 5 down to 0 (the constant term). The missing x⁴ and x³ terms have coefficients of zero.

% The coefficients correspond to x⁵, x⁴, x³, x², x¹, x⁰
poly_p = [4 0 0 5 -2 7];
  • 4: Coefficient of x⁵
  • 0: Coefficient of x⁴
  • 0: Coefficient of x³
  • 5: Coefficient of x²
  • -2: Coefficient of x¹ (or x)
  • 7: Coefficient of x⁰ (the constant term)

This standardized representation is crucial for MATLAB’s polynomial functions to work correctly.

You can add two polynomials by adding their corresponding coefficient vectors. However, a common challenge arises when the polynomials have different degrees, resulting in vectors of different lengths. The + operator will fail in this case.

The Best Practice: To add polynomials of different degrees, you must first pad the shorter vector with leading zeros so that both vectors have the same length. This aligns the coefficients of like powers.

Example: Adding Polynomials of Different Degrees

Section titled “Example: Adding Polynomials of Different Degrees”

Let’s add P1(x) = 4x⁴ - 3x² + 2 and P2(x) = 5x³ - 2x² + 1.

%% Define the coefficient vectors for the two polynomials
p1 = [4, 0, -3, 0, 2]; % Represents 4x⁴ - 3x² + 2 (Degree 4)
p2 = [5, -2, 0, 1]; % Represents 5x³ - 2x² + 1 (Degree 3)
%% -- This will cause an error! --
% sum_poly_error = p1 + p2; % Error: Matrix dimensions must agree.
%% The Correct Way: Pad the shorter vector
% Determine the length of each polynomial vector
len1 = length(p1);
len2 = length(p2);
% Pad the shorter vector with leading zeros
if len1 < len2
p1 = [zeros(1, len2 - len1), p1];
elseif len2 < len1
p2 = [zeros(1, len1 - len2), p2];
end
% Now the vectors have the same length and can be added
sum_poly = p1 + p2;
%% Display the results
disp('Padded P1 coefficients:');
disp(p1);
disp('Padded P2 coefficients:');
disp(p2);
disp('Resultant polynomial coefficients:');
disp(sum_poly);
% The result [4 5 -5 0 3] represents 4x⁴ + 5x³ - 5x² + 3

Modern Approach: The Symbolic Math Toolbox

Section titled “Modern Approach: The Symbolic Math Toolbox”

For more complex or analytical polynomial manipulation, the Symbolic Math Toolbox offers a more intuitive and powerful approach. It works with symbolic variables, so you don’t need to manage coefficient vectors manually.

% This requires the Symbolic Math Toolbox
try
%% Define the symbolic variable
syms x;
%% Define polynomials using the symbolic variable
sym_p1 = 4*x^4 - 3*x^2 + 2;
sym_p2 = 5*x^3 - 2*x^2 + 1;
%% Addition is straightforward and natural
sym_sum = sym_p1 + sym_p2;
%% Display the result in a readable format
fprintf('Symbolic Result: %s\n', string(sym_sum));
%% You can easily get the coefficients if needed
sum_coeffs_from_sym = coeffs(sym_sum, 'All');
disp('Coefficients from symbolic result:');
disp(double(sum_coeffs_from_sym));
catch ME
if strcmp(ME.identifier, 'MATLAB:UndefinedFunction')
disp('Symbolic Math Toolbox is not installed. Skipping this example.');
else
rethrow(ME);
end
end

Polynomial addition is a fundamental building block. For instance, in control systems, transfer functions are often combined, which involves adding their numerator or denominator polynomials.

Further Learning:

  • conv function: For polynomial multiplication.
  • deconv function: For polynomial division.
  • polyval function: To evaluate a polynomial at a specific value.
  • polyfit function: For fitting polynomials to data (curve fitting).