8

だから私は関数を持っています(私は疑似関数型言語でこれを書いています、私はそれが明確であることを願っています):

dampen (lr : Num, x : Num) = x + lr*(1-x)

そして、これを値 x に n 回適用したいと思います。再帰的に実装できます:

dampenN (0, lr, x) = dampen(lr, x)
dampenN (n, lr, x) = dampenN(n-1, lr, dampen(x))

しかし、反復手順 (再帰またはループ) に頼らずに数学的にそれを行う方法が必要です。

残念ながら、私の代数のスキルは信じられないほど錆びています。誰か助けてくれませんか?

4

4 に答える 4

5
x + lr*(1-x) 
= x + lr - lr*x 
= x*(1-lr)+lr

それを2回適用すると

(x*(1-lr)+lr)*(1-lr)+lr 
= x*(1-lr)^2 + lr*(1-lr) + lr

そして3回

(x*(1-lr)+lr)*(1-lr)^2 + lr*(1-lr) + lr 
= x*(1-lr)^3 + lr*(1-lr)^2 + lr*(1-lr) + lr

または一般に、n回は

x*(1-lr)^n + lr * ( (1-lr)^n + (1-lr)^(n-1)...+(1-lr) +1)

それは役に立ちますか?

于 2009-03-06T23:57:37.003 に答える
2

数式からシリーズを完全に削除できます。

私たちは与えられます:

x_(n+1) = x_n + lr(1-x_n)

これは、次のように書き直すと、より簡単にすることができます。

x_(n+1) = (1-lr)x_n + lr

事実上、これを末尾再帰に変換しました。(コンピューターサイエンスの観点が必要な場合。)

この意味は:

x_n = (1-lr)^n * x_0    +   ((1-lr)^(n-1) + (1-lr)^(n-2) + ... + 1)*lr 

右側の大きな項は幾何級数であるため、折りたたむこともできます。

x_n = (1-lr)^n * x_0   +   lr *  (1 - (1-lr)^n) / (1- (1 -lr))
x_n = (1-lr)^n * x_0   +   1 - (1 - lr)^n

最後の表現に小さな誤りがあったため、編集しました。来る嵐に+1。

于 2009-03-07T05:35:41.047 に答える