Làm cách nào để thực hiện chức năng sau trong C#?Làm thế nào tôi có thể thực hiện chức năng tần số phím đàn piano trong C#?
Trả lời
double F = 440.0 * Math.Pow(2.0, (n-49.0)/12.0);
+1 để gọi Math.Pow chỉ một lần – ram
Bạn đúng, phương trình có thể được đơn giản hóa cho câu trả lời của bạn, nhưng tôi đã thực hiện trực tiếp. –
440 * Math.Pow(Math.Pow(2, 1.0/12), n - 49)
+1, nghiêm ngặt đến điểm –
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)
vậy ....
double d = 27.5 * Math.Pow(2, (n-1)/12.0)
Và kể từ rễ thứ 12 của 2 = 1.0594630943592952645618252949463, sau đó
double d = 27.5 * Math.Pow(1.0594630943592952645618252949463, (n-1))
như vậy ...
double d = 27.5 * Math.Pow(1.059463094359295, (n-1));
Tôi hy vọng rằng nếu giải pháp này được sử dụng, một bình luận được đặt để bảo trì. –
Bạn chắc chắn rằng toán học là đúng? Hãy thử n = 49. Bạn sẽ nhận được 440. –
bắt tốt 12 gốc của 2 = 1.0594630943592952645618252949463, không .083333333333333 ... Tôi chạy Windows calc nặng ... Tôi đã chỉnh sửa để sửa. –
http://www.codeproject.com/script/Articles/ArticleVersion.aspx?aid=339638&av=501750
string funcion= "440*((2)^(1/12))^(X-49)";
X=4
double FX= GetValueFunc(4);
;) jeje
Tôi đề nghị bạn làm quen với System.Math.Pow - http://msdn.microsoft.com/en-us/library/system .math.pow (VS.71) .aspx - điều này sẽ cho phép bạn xử lý cả hai số mũ và phần thứ n. –
Xây dựng một cây đàn piano, phải không? –
Đây là cây đàn piano như thế nào? Bất cứ ai chăm sóc để giải thích pls? –