Regula falsi keeps its bracket, converges for every continuous f, and is linear with one end fixed full
This proof shows: correctness, termination, invariant, convergence, rate.
We write [ak,bk] for the bracket at the start of pass k+1 of the loop of lines L5 to L11, so [a0,b0] is the input, and ck+1 for the cut point computed in that pass. When one end is fixed we write xk=ak and ek=xk−x∗. Divided differences are written f[u,v] and f[u,v,w].
Claim 1 (termination and the invariant). REGULA-FALSI returns after at most kmax passes and kmax+2 evaluations of f. If line L3 passes, then at the start of every pass ak<bk, [ak,bk]⊆[a0,b0], and f(ak), f(bk) are finite, nonzero and of opposite signs. This holds in floating point for the computed values of f.
Proof. Line L1 makes two evaluations and each pass one (line L7); the loop runs at most kmax times. The invariant holds for k=0 by lines L2 and L3. Assume it for k. Line L6 gives a point c with ak<c<bk: either the computed chord zero passes the test, or c is the computed midpoint. (In floating point, when ak and bk are adjacent numbers, the computed midpoint equals an end; then line L8 replaces that end by itself, the invariant still holds, and the next pass computes the same c, so line L10 returns.) Line L7 returns unless f(c) is finite and nonzero. Line L8 replaces the end whose value has the sign of f(c), so the new ends still have values of opposite signs, and the new bracket lies inside the old one. □
In exact arithmetic the chord zero always lies strictly inside: with f(ak)<0<f(bk) (the other case is symmetric),
c=f(bk)−f(ak)akf(bk)−bkf(ak)=ak+f(bk)−f(ak)−f(ak)(bk−ak), and the fraction lies in (0,1). So the guard of line L6 is never used, and ck+1 is the chord zero.
Claim 2 (convergence for continuous f). Let f be continuous on [a0,b0] with f(a0)<0<f(b0), and run the method in exact arithmetic with δ=0 and kmax=∞. If it does not return at line L7, then ak↑α, bk↓β with α≤β, f(α)≤0≤f(β), every end that moves infinitely often tends to a zero of f, and every limit point of (ck) is a zero of f.
Proof. By Claim 1, (ak) is non-decreasing and (bk) non-increasing, with ak<bk, so the limits exist and α≤β. Since f(ak)<0<f(bk) and f is continuous, f(α)≤0≤f(β).
Suppose a moves in infinitely many passes, say in passes k∈K, so that ak+1=ck+1 for k∈K. For those k,
ck+1(f(bk)−f(ak))=akf(bk)−bkf(ak). Let k→∞ in K: ck+1→α, ak→α, bk→β, and by continuity
α(f(β)−f(α))=αf(β)−βf(α),that isf(α)(β−α)=0. If α<β this gives f(α)=0. If α=β, then f(α)≤0≤f(β)=f(α) gives f(α)=0 as well. The case of b is the same with the roles exchanged, giving f(β)(β−α)=0.
Each pass moves exactly one end, so at least one end moves infinitely often. Each ck+1 equals ak+1 or bk+1. A limit point of (ck) is the limit of a subsequence that lies, after passing to a further subsequence, entirely in the moves of a or entirely in the moves of b; it is then α with a moving infinitely often, or β with b moving infinitely often, and in both cases a zero. □
The width bk−ak tends to β−α, which may be positive; Claim 3 shows that this is the usual case.
Claim 3 (one end fixed). Let f∈C2 on [a0,b0] with f′′>0 there and f(a0)<0<f(b0). Then f has exactly one zero x∗ in (a0,b0), and in exact arithmetic f(ck)<0 for every k, so bk=b0 and ak=ck for all k≥1, and ak↑x∗.
Proof. A zero exists by the intermediate value theorem. If z1<z2 were two zeros in (a0,b0), then z1=λa0+(1−λ)z2 with λ∈(0,1), and strict convexity gives f(z1)<λf(a0)+(1−λ)f(z2)<0, a contradiction. So the zero is unique. Now let ℓ be the affine function through (ak,f(ak)) and (b0,f(b0)). By strict convexity f<ℓ on (ak,b0), and ck+1 is the zero of ℓ in that interval, so f(ck+1)<ℓ(ck+1)=0. Line L8 then replaces a, and b never moves. By Claim 2, a moves infinitely often and tends to a zero in [a0,b0]; f(a0)<0<f(b0) rules out the ends, so the limit is x∗. □
Lemma (the error identity with a fixed end). In the setting of Claim 3, with b=b0,
ek+1=f[xk,b](b−x∗)f[xk,b,x∗]ek. Proof. Line L6 is the secant step from the points xk and b, so the secant error identity (the lemma in the proof for the secant method) holds with ek−1 replaced by b−x∗. Its proof uses only f(x∗)=0 and the definition of divided differences. Here f[xk,b]>0 because f(xk)<0<f(b). □
Claim 4 (linear rate). In the setting of Claim 3, if no ek is zero, then
k→∞limekek+1=C=1−f(b)f′(x∗)(b−x∗),0<C<1. Proof. As xk→x∗, the divided differences are continuous in their arguments for f∈C2, so f[xk,b]→f[x∗,b]=f(b)/(b−x∗) and f[xk,b,x∗]→f[x∗,x∗,b]=(f[x∗,b]−f′(x∗))/(b−x∗). Putting these into the lemma,
ekek+1→f(b)/(b−x∗)(b−x∗)(f[x∗,b]−f′(x∗))/(b−x∗)=f(b)f(b)−f′(x∗)(b−x∗)=C. For the bounds, convexity gives f′(x∗)≥(f(x∗)−f(a0))/(x∗−a0)>0, so C<1, and strict convexity gives f(b)>f(x∗)+f′(x∗)(b−x∗)=f′(x∗)(b−x∗), so C>0. □
So the convergence is linear with a nonzero rate, and the order is exactly 1.
Floating point. Claim 1 holds as stated. Claims 2 to 4 hold in exact arithmetic. In floating point the iterates follow them until ∣f(c)∣ reaches its rounding error, after which the computed signs, and so the moves of line L8, are no longer governed by the true f. ■