Simple code for Secant Method

27 views (last 30 days)
AV22
AV22 on 26 Feb 2012
I was asked to write a simple code for the Secant Method and display results in a table showing Pn, Pn - P* and a few other things. I am trying to get it to solve y = x^2-2. For some reason I can't get my code to perform more than one iteration even though I reassign the variable at the end. Here is my code, and the result I am getting. I need to go to n = 10.
function SecantProject
disp('*******************************')
p0 = 1; p1 = 2; TOL = 0.000001;
for i = 2:10
q0 = f(p0);
q1 = f(p1);
p = p1 - q1(p1-p0)/(q1-q0);
Err = p - sqrt(2);
Alpha0 = abs(p - sqrt(2))/(p0-sqrt(2))^1;
Alpha1 = abs(p - sqrt(2))/(p0-sqrt(2))^1.618;
Alpha2 = abs(p - sqrt(2))/(p0-sqrt(2))^2;
if abs(p-p1)< TOL
q = f(p);
q*q1 < 0;
p0 = p1;
p1 = p;
end
end
fprintf('P0 = %f\n\n', p0)
fprintf('Pn \t\t\t\t Pn-Sqrt(2)\t\t Alpha = 1\t\t Alpha = 1.618\t Alpha = 2\n'); fprintf('__________________________________________________________________________\n')
fprintf('%f \t\t %f\t\t %f\t\t %f\t\t %f\t\t\n', p, Err, Alpha0, Alpha1, Alpha2);
function y = f(x)
y = x^2 - 2;
end
end
And this is the result:
SecantProject
*****************************
P0 = 1.000000
Pn Pn-Sqrt(2) Alpha = 1 Alpha = 1.618 Alpha = 2 ________________________________________________________________________
1.333333 -0.080880 -0.195262 0.12
The formatting looks off on here, but I just need to know how to continue for 8 more iterations?

Answers (0)

Categories

Find more on Modeling in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!