Matlab

Moderators: None (Apply to moderate this forum)
Number of threads: 1471
Number of posts: 2147

This Forum Only
Post New Thread
Single Post View       Linear View       Threaded View      f

Report
Regula Falsi Method; Question I'm stuck on. Posted by zukias on 28 Mar 2011 at 5:24 PM
If you already know what the regula falsi method is, you can skip the first section. Function is to be written in MATLAB.

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

----------------------------------------------------------------------
The Weighted regula falsi method

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


----------------------------------------------------------------
Question:

(a)
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.


----------------------------------------------------------------------

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 :)
Report
Re: Regula Falsi Method; Question I'm stuck on. Posted by zukias on 2 Apr 2011 at 3:44 PM
bump
bump



 

Recent Jobs

Official Programmer's Heaven Blogs
Web Hosting | Browser and Social Games | Gadgets

Popular resources on Programmersheaven.com
Assembly | Basic | C | C# | C++ | Delphi | Flash | Java | JavaScript | Pascal | Perl | PHP | Python | Ruby | Visual Basic
© Copyright 2011 Programmersheaven.com - All rights reserved.
Reproduction in whole or in part, in any form or medium without express written permission is prohibited.
Violators of this policy may be subject to legal action. Please read our Terms Of Use and Privacy Statement for more information.
Operated by CommunityHeaven, a BootstrapLabs company.