# multiple roots using bisection

Not what you're looking for?

Writing program for Matlab where I find multiple roots using bisection, please see attachment

I wrote this program (with a lot of help) that finds multiple roots using bisection. For example, this program found the first 10 roots of cos(5x). Now, I'm supposed to find and store the first 50 roots of

Where

= 50; L = 200; = 0.447; = 4.47

= 25; L= 200; = 0.748; = 1.875

= 15; L= 200; = 0.045; = 19.25

The instructions say: Now we must only modify the variable that determines the number of roots to find. We must also refine (i.e. improve) the bracket search algorithm so that roots that are not evenly spaced can be found. Test your algorithm by finding the roots for at least three different combinations of the parameters and L. How can you verify that your algorithm has not missed any of the roots? HINT: Consider the maximum frequency (dig back to that trig you forgot) to help determine the size of an appropriate bracket for this part of the problem.

(1) I only understand the first sentence of these instructions. How do I modify my program to find those 50 roots and, yes, how can I verify that my algorithm has not missed any of the roots?

(2) Also, could you please describe what each line of the main program is doing? I understand the subprogram, 'bisection,' pretty well. I know the two programs are similar.

Main Program (for finding first 10 roots of cos(5x))

function root=multibisection(func,j,xtol,ftol)

xlower=0;

xupper=xlower+j;

ylower=feval(func,xlower); %takes func and evaluates xlower into that function

yupper=feval(func,xupper);

i=1;

while i<11

ylower=feval(func,xlower); %takes func and evaluates xlower into that function

yupper=feval(func,xupper);

if abs(ylower)<ftol;

root=xlower;

return

elseif abs(yupper)<ftol;

root=xupper;

return

end

while (yupper*ylower)>0

xlower=xupper;

xupper=xlower+j;

yupper=feval(func,xupper);

ylower=feval(func,xlower);

end

b=bisection(func,xlower,xupper,xtol,ftol);

roots(i)=b;

i=i+1;

xlower=b+j;

xupper=xlower+j;

end

roots

format long

Sub Program

function root=bisection(func,xlower,xupper,xtol,ftol)

xroot=(xlower + xupper)/2;

yroot=feval(func,xroot);

count=0;

while abs(yroot)>ftol;

ylower=feval(func,xlower); %takes func and evaluates xlower into that function

yupper=feval(func,xupper);

if ylower*yroot<0;

xupper=xroot;

yupper=yroot;

else

xlower=xroot;

ylower=yroot;

end

if abs(xupper-xlower)<xtol

root=xroot;

return

end

root=xroot;

xroot=(xlower + xupper)/2;

yroot=feval(func,xroot);

count=count + 1;

if count>500 %max number of iterations

count

range=xupper-xlower

disp ('too many interval halvings, stopping ...')

root=xroot

return

end

end %ends the while loop

Line4 m-file

function y=line4(x)

y=cos(5*x);

Testing:

>> multibisection(@line4,0.314,1e-11,1e-11)

roots =

Columns 1 through 4

0.31415926533914 0.94247779608140 1.57079632675968 2.19911485721864

Columns 5 through 8

2.82743338823505 3.45575191891333 4.08407044967386 4.71238898037956

Columns 9 through 10

5.34070751111268 5.96902604181838

##### Purchase this Solution

##### Solution Summary

The expert writes a program for Matlab where multiple roots are found. The solution helps with multiple roots using bisection is given.

##### Solution Preview

Please view attached word document

I wrote this program (with a lot of help) that finds multiple roots using bisection. For example, this program found the first 10 roots of cos(5x). Now, I'm supposed to find and store the first 50 roots of

Where

= 50; L = 200; = 0.447; = 4.47

= 25; L= 200; = 0.748; = 1.875

= 15; L= 200; = 0.045; = 19.25

The instructions say: Now we must only modify the variable that determines the number of roots to find. We must also refine (i.e. improve) the bracket search algorithm so that roots that are not evenly spaced can be found. Test your algorithm by finding the roots for at least three different combinations of the parameters and L. How can you verify that your algorithm has not missed any of the roots? HINT: Consider the maximum frequency (dig back to that trig you forgot) to help determine ...

##### Purchase this Solution

##### Free BrainMass Quizzes

##### Basic Computer Terms

We use many basic terms like bit, pixel in our usual conversations about computers. Are we aware of what these mean? This little quiz is an attempt towards discovering that.

##### Java loops

This quiz checks your knowledge of for and while loops in Java. For and while loops are essential building blocks for all Java programs. Having a solid understanding of these constructs is critical for success in programming Java.

##### C# variables and classes

This quiz contains questions about C# classes and variables.

##### Excel Introductory Quiz

This quiz tests your knowledge of basics of MS-Excel.

##### Javscript Basics

Quiz on basics of javascript programming language.