FINDING THE SMALLEST POSITIVE ROOT OF A POLYNOMIAL EQUATION FOR A

In a previous blog at autarkaw.wordpress.com (June 10), we set up a polynomial equation that would allow us to find the longest mast that can be setup before it buckles under its own weight. In this blog, we will find the root of this equation. The problem is given at http://numericalmethods.eng.usf.edu/blog/mast_of_length.pdf and we are solving Exercise 1 of the pdf file.

Contents

TOPIC

Smallest positive root of a polynomial equations with infinite terms

SUMMARY

% Language : Matlab 2008a;
% Authors : Autar Kaw;
% Mfile available at
% http://numericalmethods.eng.usf.edu/blog/rootinfinite.m;
% Last Revised : July 4, 2010
% Abstract: This program shows you how to find the smallest positive real root
% of a polynomial equations with infinite terms
clc
clear all

INTRODUCTION

disp('ABSTRACT')
disp('   This program shows you how to')
disp('   find the smallest positive real root')
disp('   of a polynomial equations with infinite terms')
disp(' ')
disp('AUTHOR')
disp('   Autar K Kaw of http://autarkaw.wordpress.com')
disp(' ')
disp('MFILE SOURCE')
disp('   http://numericalmethods.eng.usf.edu/blog/rootsinfinite.m')
disp('  ')
disp('PROBLEM STATEMENT')
disp('   http://numericalmethods.eng.usf.edu/blog/mast_of_length.pdf')
disp(' ')
disp('LAST REVISED')
disp('   July 4, 2010')
disp(' ')
ABSTRACT
   This program shows you how to
   find the smallest positive real root
   of a polynomial equations with infinite terms
 
AUTHOR
   Autar K Kaw of http://autarkaw.wordpress.com
 
MFILE SOURCE
   http://numericalmethods.eng.usf.edu/blog/rootsinfinite.m
  
PROBLEM STATEMENT
   http://numericalmethods.eng.usf.edu/blog/mast_of_length.pdf
 
LAST REVISED
   July 4, 2010
 

INPUTS

prespecified tolerance, eps

eps=0.000001;
% maximum number of terms of polynomial
nmax=100;

DISPLAYING INPUTS

disp('INPUTS')
fprintf(' The maximum number of terms of the polynomial chosen, nmax= %g',nmax)
fprintf('\n The prespecified tolerance, eps= %g',eps)
disp('  ')
disp('  ')
INPUTS
 The maximum number of terms of the polynomial chosen, nmax= 100
 The prespecified tolerance, eps= 1e-006  
  

CODE

for N=2:1:nmax
    % The above looop is to see how many terms we should take of the
    % infinite polynomial
  aa(1)=-3.0/8.0;
    % Setting up the polynomial via recursive relations
for i=2:1:N
  aa(i)=-3*aa(i-1)/(4*i*(3*i-1));
end
% Since it is a polynomial of order N,
% there are N+1 coefficients
% To set up the polynomial for MATLAB
% N+1 th coefficient is the constant term
% N th coefficient is the term of order 1
% and so on till 1st coefficient is of order N
bb(N+1)=1;
for i=1:1:N
    bb(N-i+1)=aa(i);
end

% Finding all the roots of the Nth order polynomial
abc=roots(bb);

% Finding the first real positive root so that it
% would be used as the starting minimum value available
for i=1:1:N
    if isreal(abc(i))==true & abc(i)>0
        minval=abc(i);
        break;
    end
end

% Finding the smallest positive real root

for i=1:1:N
    if isreal(abc(i))==true & abc(i)>0
        if (abc(i) < minval)
            minval=abc(i);
        end
    end
end
% Checking if prespecified tolerance is met
if N>2
    absea=abs((minval-previous)/minval)*100;
    if absea<=eps
        terms_needed=N;
        break;
    end
end
previous=minval;
end

DISPLAYING OUTPUTS

disp('OUTPUTS')
fprintf(' The number of terms used in the polynomial is %g',terms_needed)
fprintf('\n The smallest positive real root is %g',minval)
disp('  ')
OUTPUTS
 The number of terms used in the polynomial is 8
 The smallest positive real root is 3.48327