Regula Falsi Method; Question I'm stuck on. - Programmers Heaven

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!


Regula Falsi Method; Question I'm stuck on.

zukiaszukias Posts: 2Member
If you already know what the regula falsi method is, you can skip the first section. Function is to be written in MATLAB.

[B]Regula Falsi method
The standard Regula Falsi is a method to find roots of a function in an interval [a, b] similar to the bisection method. Assume that f(a)*f(b) < 0. Regula Falsi determines a new point xm as the intersection of the straight line connecting (a, f (a)) and (b, f (b)) with the x-axis:

xm = (f(a)*b - f(b)*a) / (f(a) - f(b) ) (1)

If f(xm) has the same sign as f(a) then the new lower bound a is xm and b stays the same. (Case a)

If f(xm) has the same sign as f(b) then the new upper bound b is xm while a stays the same. (Case b)

If f(xm) = 0 then xm is a root => stop with a=b=xm

[COLOR="Navy"][B]The Weighted regula falsi method[/B]

The weighted regula falsi follows the same procedure as the regula falsi method but it modifies the equation (1) for xm slightly:

xm =
( wa*b*f(a) - wb*a*f (b) ) / ( wa*f(a) - wb*f(b) )

where the weights wa and wb are set initially equal to 1. In later stages they are set as the following:

if the previous k>=2 iterations all were of (Case a) then wb = 2^(1-k) and wa = 1

If the previous k>=2 iterations all were of (Case b) then wa = 2^(1-k) and wb = 1

otherwise wa = wb = 1[/COLOR]


Write a function WeightRF that finds the root of a function f using the above weighted regula falsi method. The first line of the file WeightRF.m should look like:

function [a,b]=WeightRF(f,aini,bini,maxit,tol)

The meaning of the inputs has to be:
f: a function of a single variable that you can call inside WeightRF. The procedure is supposed to find a root of f;

aini: initial lower bound for the root of f;

bini: intial upper bound for the root of f; the root of f is to be found between aini and bini;

maxit (positive integer): the iteration should stop as soon as the number of iterations exceeds maxit

tol (small positive real number): tolerance; the iteration should stop if the difference between the current bounds is less than tol.

The meaning of the outputs has to be:
a: a column vector of all lower bounds generated by the iteration;
b: a column vector of all upper bounds generated by the iteration.

This means that the return values a and b are vectors with at most maxit elements, a(1) should be aini, and b(1) should be bini. If the iteration stops after i<maxit iterations are reached then a and b should contain i elements.[/COLOR]


Well, I don't even really know how to do simple loops yet, this unit has gone far too fast and we have been expected to do too much too soon :/ I also don't really understand the concept of the weighted regula falsi method much, so any help would be appreciated :)


Sign In or Register to comment.