# Lab 1: Secant method
In numerical analysis, the secant method is a root-finding algorithm that uses a succession of roots of secant lines to better approximate a root of a function f. The secant method can be thought of as a finite-difference approximation of Newton's method. However, the method was developed independently of Newton's method and predates it by over 3000 years.
## The method

As can be seen from the recurrence relation, the secant method requires two initial values, $x_0$ and $x_1$, which should ideally be chosen to lie close to the root.
## Derivation of the method



## Visualization

The first two iterations of the secant method. The red curve shows the function f, and the blue lines are the secants. For this particular case, the secant method will not converge to the visible root.
## Code
```scilab
function [result]=y_true()
result = [-3.0771032, 2.8952]
endfunction
function [result]=y_true_builded
x=poly([-98 2 11], 'x', "coeff")
result = roots(x)
endfunction
function [result]=QE(x)
result = 11 * x ^ 2 + 2 * x - 98;
endfunction
function [result]=QE_der2(x)
result = 22
end
function [result]=secant(x0, x1, eps, max_iter)
if QE(x0) * QE(x1) < 0 then
if QE(x0) * QE_der2(x0) > 0 then
x_stopped = x0;
x_runner = x1;
end
if QE(x1) * QE_der2(x1) > 0 then
x_stopped = x1;
x_runner = x0;
end
for i = 1:max_iter
old = x_runner;
x_runner = x_runner - (QE(x_runner) / (QE(x_runner) - QE(x_stopped))) * (x_runner - x_stopped);
if abs(old - x_runner) < eps then
break;
end
end
result = x_runner
else
result = "Root is not in this range";
end
endfunction
function [result]=secant_iter(epses)
for i = 1:length(epses)
result(i) = secant(-10, 1, epses(i), 200);
end
endfunction
```