Comment puis-je mettre en œuvre la fonction suivante en C #? p>
p>
4 Réponses :
440 * Math.Pow(Math.Pow(2, 1.0/12), n - 49)
double F = 440.0 * Math.Pow(2.0, (n-49.0)/12.0);
Vous êtes correct, l'équation peut être simplifiée à votre réponse, mais j'ai fait une mise en œuvre directe.
double d = 27.5 * Math.Pow(1.059463094359295, (n-1));
J'espère que si cette solution est utilisée, un commentaire est placé pour la maintenabilité.
Tu es sûr que les mathématiques ont raison? Essayez n = 49. Vous devriez obtenir 440.
Bonne prise 12ème racine de 2 = 1,0594630943592952645618252949463, pas .0833333333333333 ... J'ai couru Windows Calc Badly ... j'ai édité de corriger.
Vous n'avez pas été modifié pour corriger le problème, c'est-à-dire que votre méthode ne donne toujours pas 440 lorsque n est 49.
Merci, je viens de faire ... et j'ai testé cette fois et maintenant je reçois 440 .. J'utilise malheureusement le forum comme éditeur ... Dernière erreur était à la fin, où j'ai fabriqué une erreur d'algèbre. (supposé 2 ^ (A * b) = 2 ^ a * 2 ^ B, en fait c'est (2 ^ a) ^ b ...
Autre chose. Vous avez un numéro de 32 chiffres là-bas. Les doubles sont automatiquement arrondis à environ 15 chiffres, et l'oreille humaine ne peut pas entendre une différence entre deux tons qui diffèrent donc de toute façon. Vous voudrez peut-être perdre environ vingt de ces chiffres: le code de rédaction qui a des quantités ridicules de précision comme celle-ci le lecteur à croire que ce code est significatif.
@Eric, bon point ... je m'attendais au compilateur à Sqauwk sur moi si je me suis trop nombreux là-bas ... Donc, quand ce n'est pas le cas, j'étais trop paresseux pour regarder la limite pour moi ... tu dis C'est environ 15 chiffres? Je vais éditer à cela ... et j'ai testé avec les trois autres octaves inférieures de C, (n = 37, 25 et 13) et obtenu 220, 110 et 55, respectivement, donc je suis aussi spectable que c'est juste maintenant ...
http://www.codeproject.com/script/ Articles / ArticleVersion.aspx? Aide = 339638 & AV = 501750
string funcion= "440*((2)^(1/12))^(X-49)"; X=4 double FX= GetValueFunc(4); ;) jeje
Je vous suggère de vous familiariser avec System.Math.Pow - msdn.microsoft.com/en-us/library/system.math.pow (vs.71) .aspx - Cela vous permettra de gérer les exposants et nième racines.
Construire un piano, es-tu?
Comment est-ce un piano? Quelqu'un se soucie d'expliquer les pls?
La fréquence de la 49ème clé de l'extrémité gauche d'un piano est de 440 Hz. C'est la chaîne que vous commencez à régler un piano de; Vous avez raison, puis vous ajustez chaque autre chaîne de celle-ci. La formule donnée est la formule de la fréquence de la nième clé sur un piano. Incidemment, merci pour la grande question Alon, je vais écrire un blog à ce sujet en janvier.
Et si vous êtes intéressé par une courte histoire et une justification du tempérament égal, j'ai écrit des articles de blog sur cela il y a quelques années. blogs.msdn.com/ericlippert/archive/tags/music/default. ASPX
Merci Eric. Je ne savais pas que tu avais un fond dans la musique :)
@ALONGUNKINKIN: Ici, c'est: blogs.msdn.com/b/ericlippert/archive/2010/01/07/...