Numerical analysis: secant method. What am I doing wrong.

306 Views Asked by At

I'm trying to solve a problem regarding the application of the secant numerical method.

My MATLAB code is the following

function [f]= fsecante(t) 
R=24.7;
L=2.74;
C=0.000251;
P1=-0.5*(R/L)*t;
P2=t*sqrt(1/(L*C)-(R^2)/(4*L^2));
f=2*exp(P1).*cos(P2)-1;
end

%iteradas iniciais%
x0=0;
x1=10^-4;
wanted=10^-8;
f0=fsecante(x0);
f1=fsecante(x1);
iter=0;
error=wanted;

while(erro>=wanted)
    F=(x1-x0)/(f1-f0);
    xn=x1-F*f1
    error=abs(F*f1);
    iter=iter+1;
    x0=x1;
    x1=xn;
    f0=fsecante(x0);
    f1=fsecante(x1);
end

I used a calculator to get an idea about the value I should obtain which is 0.152652376 (approximately) However using the method in MATLAB, it converges to 1.4204 which is way over what we should get. What am I doing wrong? My guess is that I have my error variable wrong in the cycle? I also find strange that my solution goes of the set [0,1] where the solution should be. Can someone give me some clarification about what am I missing?

1

There are 1 best solutions below

3
On

Change the initial point

x1 = 1e-3

This is what I got

enter image description here