سؤال

وهكذا لدي وظيفة (أنا أكتب هذا في اللغة الزائفة وظيفية، وآمل في واضح):

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

وأود أن تطبيق هذا ن مرات إلى قيمة س. أنا يمكن تنفيذه بشكل متكرر:

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

ولكن يجب أن يكون هناك طريقة أستطيع أن أفعل ذلك رياضيا من دون اللجوء إلى إجراء تكراري (عودي، أو حلقة).

ومما يؤسف له مهاراتي الجبر صدئة تفوق الخيال، يمكن لأي شخص أن تساعد؟

هل كانت مفيدة؟

المحلول

ونحن يمكن القضاء على سلسلة من الصيغة الخاصة بك تماما.

وإننا نعطي:

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 لcomingstorm.

نصائح أخرى

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

وتطبيقه يعطي مرتين

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

ووثلاث مرات

(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)

هل تساعد؟

في الواقع، آخر MarkusQ لديها خطأ. الصيغة الصحيحة هي:

x * (1-lr)^n + lr * ( (1-lr)^(n-1) + (1-lr)^n-2 + ... + (1-lr) + 1 )
= x * (1-lr)^n + lr * ( 1 - (1-lr)^n )/(1 - (1-lr))
= x * (1-lr)^n + (lr/lr) * (1 - (1-lr)^n)
= (x-1) * (1-lr)^n + 1

لاحظ أيضا أن "n" هو عدد المرات التي قمت بتطبيق وظيفة. في شبة الكود الوظيفي الخاص بك أعلاه، فإن "ن = 0" حالة ينطبق على وظيفة مرة واحدة، وليس الصفر مرات؛ لتتناسب مع الصيغة أعلاه، فإنه سيتعين عليها أن تذهب:

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

وبلدي مهارة الجبر تمتص جدا، لكنني قررت أن ريفاكتور المعادلة قليلا، وبدأت دراسة بعض الحالات، D0، وD1:

d0 = x + lr(1-x) => x + lr - lr*x => (1 - lr)x + lr
d1 = (1 - lr)[(1 - lr)x + lr] + lr => (1 - lr)^2 x + lr(1 - lr) + lr

وأساسا إذا كنت تبدأ في رؤية الدرجة الثانية، يمكنك البدء في رؤية شكل مكعب وهلم جرا.

وعند هذه النقطة يتم استخدام العاشر مرة واحدة فقط، وكان لديك فقط للتعامل مع الأسي لجميع المصطلحات الفرعية من النموذج (1 - LR). ^ ن

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top