2009-12-11 24 views
8

Aşağıdaki işlevi C# uygulamasında nasıl uygularım?C# ile piyano tuş frekansı fonksiyonunu nasıl uygularım?

alt text

+0

Eğer System.Math.Pow yakından tanımak - http://msdn.microsoft.com/en-us/library/system .math.pow (VS.71) .aspx - bu, hem üsleri hem de nt köklerini ele almanızı sağlar. –

+16

Piyano hazırlıyor musunuz? –

+0

Bu nasıl bir piyano? Söylemek isteyen var mı? –

cevap

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

+1 nokta – ram

+0

Doğru, denklem cevabınıza göre basitleştirilebilir, ancak doğrudan bir uygulama yaptım. –

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

+1, katı Math.Pow için sadece bir kez –

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) 

böylece ....

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

Ve 2 = 1,0594630943592952645618252949463 12. kökü beri

, sonra

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

yüzden ...

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

Umarız bu çözüm kullanılırsa, sürdürülebilirlik için bir yorum yapılır. –

+0

Matematik doğru olduğundan emin misin? N = 49'ı deneyin. 440. –

+0

'u yakalamanız gerekir. 2 = 1.0594630943592952645618252949463'ün 12. kökü iyi değil .083333333333333 ... Windows calc'ı kötü bir şekilde çalıştırdım ... Düzeltmek için düzenledim. –