2009-03-06 6 views
8

तो मैं एक समारोह है (मैं एक छद्म कार्यात्मक भाषा में इस लिख रहा हूँ, मैं अपनी स्पष्ट आशा):मैं कैसे लागू कर सकते हैं इस और अधिक कुशलता से

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

और मैं करने के लिए इस n बार आवेदन करना चाहते हैं एक मूल्य एक्स। मैं इसे रिकर्सिवली को लागू कर सकते हैं:

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

लेकिन एक तरह से मैं गणितीय एक सतत प्रक्रिया (पुनरावर्ती, या एक पाश) का सहारा के बिना यह कर सकते हैं होना चाहिए।

दुर्भाग्य से मेरे बीजगणित कौशल विश्वास से परे जंगली हैं, क्या कोई मदद कर सकता है?

उत्तर

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 

सही पर बड़ा अवधि एक geometric series है, इसलिए कि रूप में अच्छी तरह ढह जा सकता है:

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।

+0

द्वारा गणना की जा सकती है आपकी श्रृंखला में (1-lr)^n शामिल नहीं है ... क्या आप समझा सकते हैं क्यों? मैं मार्कस्यू के समाधान में उस शब्द को देखता हूं। – Niyaz

+0

हां। X1 = (1-lr) x0 + r, x2 = (1 - lr) x1 + r से शुरू होता है, इसलिए x2 = (1 - lr)^2 x0 + (1 - lr) * r और –

5
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 

या सामान्य रूप में, एन बार

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

कि मदद करता है देता है?

+0

आप आगे जा सकते हैं और नोटिस कर सकते हैं (1-एलआर)^एन + (1-एलआर)^(एन -1) ... + (1 -lr) +1 ज्यामितीय प्रगति का योग है और सूत्र – vava

0

मेरे बीजगणित कौशल भी चूसना, लेकिन मैं समीकरण थोड़ा refactor करने का फैसला किया और कुछ मामलों की जांच, 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)^n के सभी उप शर्तों के विस्तार से निपटना होगा।

1

वास्तव में, मार्कसक्यू की पोस्ट में एक त्रुटि है। सही सूत्र है:

 
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)) 
+0

Yup पर; आपने एक त्रुटि पकड़ी +1। –

संबंधित मुद्दे