for (int bb = 1; bb <= 24; bb++)
{
if (x > Math.Exp(Math.Log(2) * (-bb)))
{
x = r - Math.Exp(Math.Log(2) * (-bb));
xbb = 1;
}
else
{
xbb = 0;
}
}
开始我的r = 0.1后,我得到了我的第一个&#39; x&#39;,我想把它插入&#39; r&#39;为下一步。所以&#39; r&#39;看起来像以前的&#39; x&#39; (r=x_n-1
)。
我知道如何在MathCad中执行此操作,但不知道如何在C#中执行此操作。
答案 0 :(得分:1)
看起来你只需要:
if (x > Math.Exp(Math.Log(2) * (-bb)))
{
x = r - Math.Exp(Math.Log(2) * (-bb));
xbb = 1;
r = x;
}
因此,在下一次迭代中,r
将保留x
的“上一个”值。
答案 1 :(得分:1)
看起来你实际上只是计算x的二进制表示。 Math.Exp( Math.Log(2) * -bb )
只是写Math.Pow(2, -bb)
是一种相当冗长的方式。你也不需要那样计算它。以下是我的工作方式(假设您的变量为double
):
double x = r;
double pow = 0.5;
for( int i = 0; i < 24; ++i )
{
int xbb = 0;
if( x > pow )
{
x -= pow;
xbb = 1;
}
pow /= 2;
}