function [x] = rich(a, b, c, u)
n = size(b, 1)
e = zeros(n, 1)
f = zeros(n, 1)
x = zeros(n, 1)
tol = 1e-12
if b(1) < tol then
msg = sprintf("b(%d) = %f", i , b);
error(msg)
end
e(1) = -c(1)/b(1)
f(1) = u(1)/b(1)
for i = 2:n
DD = a(i) * e(i-1) + b(i)
if (abs(DD) < tol) then
msg = sprintf("DD(%d) = %f", i , DD);
error(msg)
end
e(i) = - c(i) / DD; // e(n) pas utilise
f(i) = (u(i) - a(i) * f(i-1)) / DD
end
x(n) = f(n)
for j = n-1:-1:1
x(j) = e(j) * x(j+1) + f(j)
end
endfunction