次の方法で任意の数値をパーセンテージに変換する方法を探しています。
1.00 は 50%
1.00 未満の数値は対数的に 0% に近づきます
1.00 を超える数値は、対数的に 100% に近づきます。
x > 0. x が正の側で無限に小さくなるので、y は 0 に近づく必要があります。
これは簡単にできると思いますが、その方法を思い出せません。
試す1 / (1 + e^(1-x))
それは1単位シフトされたロジスティック関数です
より速く接近したい場合は、eをより高いものに変更できます
編集:
f(0) = 0 にするために使用できます1 - 2^(-x)
対数的というのは漸近的ということですか?もしそうなら、「xが正側で無限に小さくなるにつれて、yは0に近づく必要がある」ということは、fが連続であればf(0)=0を意味します。その場合、x/(x+1) は機能します: http://www.wolframalpha.com/input/?i=x%2F%28x%2B1%29
どうy = f(t) = 1 - exp(-t/tau)
ですか?
t が 0 に近い場合、y はおよそ t/tau です。t が無限大に近づくと、y は漸近的に 1 に近づきます。
f(1)=0.5 アプローチに関しては、これを使用して tau = 1/log(2) を解くことができます。
あなたが説明していることから、私はx立方体のグラフを聞いています-非常に基本的で、ほとんどの言語で効率的であるはずです.
グラフ http://jedsmith.org/static/S01813305.png
y=(x-1)^3+1
これを(元になる変換)でグラフにしまし(1,1)
た。もちろん、単純に 50 倍することで、結果をパーセンテージにすることもできます。
最終的には、Mathematica ではなくプログラミング言語で大まかなパーセンテージの動作を与える効率的なソリューションを見つけようとしていますよね?