Module:Algèbre
Ce module est destiné à stocker des fonctions utiles en algèbre.
La fonction fraction permet de transformer un nombre écrit sous forme décimale en fraction approchant au mieux le nombre tout en ayant un numérateur et un dénominateur de valeur pas trop élevé.
Par exemple :
Pour 1.5, {{#invoke:Algèbre|fraction|1.5}} donne 3/2.
Pour 0.153153153, {{#invoke:Algèbre|fraction|0.153153153}} donne 17/111.
Pour π, {{#invoke:Algèbre|fraction|3.1415926536}} donne 355/113.
Pour e, {{#invoke:Algèbre|fraction|2.71828182846}} donne 193/71.
local p = {}
function p.fraction(frame)
local x, i, num, den
local n = {99, 99, 99, 99, 99, 99, 99, 99, 99, 99}
i = 1
x = tonumber(frame.args[1])
if x > 0.001 then -- Traite le cas ou le nombre n’est pas proche de 0
n[i],x = math.modf(x)
while
x > 0.001 and i < 10
do
x = 1/x
i = i + 1
n[i],x = math.modf(x)
end
if i == 10 then
i = 2
for j = 3, 10 do
if n[j] > n[i] then i = j end
end
i = i - 1
end
num = 0
den = 1
for j = i, 1, -1 do
num,den = den,n[j]*den + num
end
else -- Traite le cas ou le nombre est proche de 0
if x > 0 then -- Traite le cas ou le nombre proche de 0 mais pas nul
x = 1/x
num,x = math.modf(x)
den = 1
if x > 0 then -- Augmente la précision
x = 1/x
den = math.modf(x)
num = num*den + 1
end
else -- Traite le cas ou le nombre est nul
den = 0
num = 1
end
end
return den.."/"..num
end
return p