これは完全な答えではありませんが、いくつかの提案:
注:私はダブルスのスケールファクタのための「S」、および「x」を使用しています。
まず、無理な力が働かないかどうか尋ねてください。例えば。次に、s = 1、s = 2、s = 3などとなる。
x [i]のリストと許容値t = 1/10がある。各x [i]に対して、| s * x [i] -q [i] |となるような整数q [i]が存在するように、最小の正の整数sを見つけたいと思う。 <
まず、各x [i]に対して順序付きリストを作成できる場合は、それらをマージしてそれらのすべてで機能する最小のものを見つけるだけで十分です。第2に、答えはx [i]の小数部分のみに依存することに注意してください。
上記のテストを再整理すると、| x - q/s | < t/s。つまり、近似はt/sよりも良いはずであるという意味で、xに対して「良い」合理的な近似を見つけたいと考えています。数学者はこれの変種を研究しました。ここで、「良い」の基準は、より小さい「s」の値を持つものより優れていなければならず、これらを見つけるのに最も良い方法はcontinued fraction expansionの切捨てです。
残念ながら、これはあなたが必要とするものではありません。一度あなたの許容範囲に入ると、必ずしもますます良くなる必要はありません。同じ耐性が働きます。次の明白なことは、これを使って最初の数字にスキップし、そこから無理な力を加えることです。残念なことに、最初のsができる最大の数は5であるので、それはすべてあなたをそれほど購入しません。しかし、この方法では、動作するものが見つかるでしょう。最小のものではありません。存在する場合、これを使用してより小さいものを見つけることができますか?私は分かりませんが、ブルートフォースの上限を設定します。
また、各xの許容値を< tにする必要がある場合、これはすべてのxの製品の許容差が< t^nであることを意味します。これは、あなたが大いに前方にスキップし、暴力強制の合理的な下限を設定するかもしれません。
スケールファクタは、右、整数または10の電力必要はありませんか? – Vlad
上記の例では、xの値はどのようになると思いますか? –
ところで、最小の正の倍率はゼロです。否定的なものも考慮する必要がありますか? – Vlad