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