2009-12-11 12 views
8

मैं सी # में निम्नलिखित फ़ंक्शन को कैसे कार्यान्वित कर सकता हूं?मैं सी # में पियानो कुंजी आवृत्ति फ़ंक्शन कैसे कार्यान्वित कर सकता हूं?

alt text

+0

मेरा सुझाव है कि आप अपने आप System.Math.Pow के साथ परिचित - http://msdn.microsoft.com/en-us/library/system .math.pow (VS.71) .aspx - यह आपको दोनों घाटियों और nth जड़ों को संभालने की अनुमति देगा। –

+16

एक पियानो का निर्माण, क्या आप हैं? –

+0

यह एक पियानो कैसा है? कोई भी pls व्याख्या करने की देखभाल? –

उत्तर

34
double F = 440.0 * Math.Pow(2.0, (n-49.0)/12.0); 
+3

+1 को इंगित करने के लिए सख्त है। केवल एक बार – ram

+0

आप सही हैं, समीकरण को आपके उत्तर में सरल बनाया जा सकता है, लेकिन मैंने प्रत्यक्ष कार्यान्वयन किया। –

13
440 * Math.Pow(Math.Pow(2, 1.0/12), n - 49) 
+0

+1, गणित को कॉल करने के लिए –

2
440 * 12th root of 2 raised to n-49 
= 440 * (2^1/12) ^(n-49) 
= 440 * 2^(n/12)/2^(49/12) 
= 440 * 2^(n/12)/(2^4 * 2^1/12) 
= 440 * (1/2^4) * 2^((n-1) /12) 
= 8 * 55 * (1/16) * 2^((n-1) /12) 
= 27.5 * 2^((n-1) /12) 

तो ....

double d = 27.5 * Math.Pow(2, (n-1)/12.0) 

और 2 = 1.0594630943592952645618252949463 के 12 वें जड़ के बाद से, तो

double d = 27.5 * Math.Pow(1.0594630943592952645618252949463, (n-1)) 

तो ...

double d = 27.5 * Math.Pow(1.059463094359295, (n-1)); 
+0

मुझे उम्मीद है कि यदि इस समाधान का उपयोग किया जाता है, तो रखरखाव के लिए एक टिप्पणी दी जाती है। –

+0

क्या आप वाकई गणित सही हैं? एन = 4 9 का प्रयास करें। आपको 440 मिलना चाहिए। –

+0

2 = 1.0594630943592952645618252949463 की अच्छी पकड़ 12 वीं रूट, 0.83333333333333 नहीं ... मैंने विंडोज कैल्क को बुरी तरह से चलाया ... मैंने सही करने के लिए संपादित किया है। –

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

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