RosettaCodeData/Task/Metallic-ratios/Mathematica/metallic-ratios.math

33 lines
860 B
Plaintext

ClearAll[FindMetallicRatio]
FindMetallicRatio[b_, digits_] :=
Module[{n, m, data, acc, old, done = False},
{n, m} = {1, 1};
old = -100;
data = {};
While[done == False,
{n, m} = {m, b m + n};
AppendTo[data, {m, m/n}];
If[Length[data] > 15,
If[-N[Log10[Abs[data[[-1, 2]] - data[[-2, 2]]]]] > digits,
done = True
]
]
];
acc = -N[Log10[Abs[data[[-1, 2]] - data[[-2, 2]]]]];
<|"sequence" -> Join[{1, 1}, data[[All, 1]]],
"ratio" -> data[[All, 2]], "acc" -> acc,
"steps" -> Length[data]|>
]
Do[
out = FindMetallicRatio[b, 32];
Print["b=", b];
Print["b=", b, " first 15=", Take[out["sequence"], 15]];
Print["b=", b, " ratio=", N[Last[out["ratio"]], {\[Infinity], 33}]];
Print["b=", b, " Number of steps=", out["steps"]];
,
{b, 0, 9}
]
out = FindMetallicRatio[1, 256];
out["steps"]
N[out["ratio"][[-1]], 256]