Dérivés De La Calculatrice
Je suis intéressée par la construction d'un dérivé de la calculatrice. J'ai creusais la tête de plus de résoudre le problème, mais je n'ai pas trouvé une bonne solution à tous les. Peut-être vous avez un soupçon de savoir comment commencer? Grâce
Je suis désolé! J'ai bien envie de faire un geste symbolique de la différenciation.
Disons que vous avez la fonction f(x) = x^3 + 2x^2 + x
Je veux afficher les dérivés, dans ce cas f'(x) = 3x^2 + 4x + 1
J'aimerais le mettre en œuvre en objective-c pour l'iPhone.
Qu'est-ce exactement que vous essayez de faire? Symbolique de la différenciation?
Finance ou mathématiques?
Numérique de la différenciation est trivial. Symbolique est certainement plus compliqué, mais si vous n'avez pas besoin de la sortie à être simplifié, il est assez facilement faisable.
Numérique de la différenciation est extrêmement difficile. Au moins, c'est si vous voulez dire le calcul d'une approximation à un dérivé par échantillonnage de la fonction à points à proximité. Comment fermer doivent les points? Comment savez-vous que vous êtes en mesure de "vraies" valeurs et ne sont pas la simple mesure de l'erreur numérique?
Il n'a pas besoin d'être un génie de l'ingénieur pour moi de s'inquiéter; il ne lui reste qu'à écrire quelques logiciels que certains fusée ingénieur, un jour, décide d'utiliser sans vraiment comprendre =)
Finance ou mathématiques?
Numérique de la différenciation est trivial. Symbolique est certainement plus compliqué, mais si vous n'avez pas besoin de la sortie à être simplifié, il est assez facilement faisable.
Numérique de la différenciation est extrêmement difficile. Au moins, c'est si vous voulez dire le calcul d'une approximation à un dérivé par échantillonnage de la fonction à points à proximité. Comment fermer doivent les points? Comment savez-vous que vous êtes en mesure de "vraies" valeurs et ne sont pas la simple mesure de l'erreur numérique?
Il n'a pas besoin d'être un génie de l'ingénieur pour moi de s'inquiéter; il ne lui reste qu'à écrire quelques logiciels que certains fusée ingénieur, un jour, décide d'utiliser sans vraiment comprendre =)
OriginalL'auteur burki | 2010-05-25
Vous devez vous connecter pour publier un commentaire.
Je suppose que vous essayez de trouver exactement la même dérivée d'une fonction. (Différentiation symbolique)
Vous avez besoin pour analyser l'expression mathématique et de stocker les opérations individuelles dans la fonction dans une structure en arbre.
Par exemple,
x + sin²(x)
serait stocké comme un+
opération, appliquée à l'expressionx
et un^
(exponentiation) opération desin(x)
et2
.Vous pouvez ensuite récursivement différencier l'arbre en appliquant les règles de différenciation pour chaque nœud. Par exemple, un
+
nœud allait devenir leu' + v'
, et un*
nœud deviendraituv' + vu'
.OriginalL'auteur SLaks
vous avez besoin de vous souvenir de votre calcul. fondamentalement, vous avez besoin de deux choses: la table des dérivés de fonctions de base et les règles de façon à en extraire des expressions composées (comme
d(f + g)/dx = df/dx + dg/dx
). Puis prendre des expressions et l'analyseur de manière récursive aller de l'autre de l'arbre. (http://www.sosmath.com/tables/derivative/derivative.html)OriginalL'auteur Andrey
Analyse de votre chaîne dans un S-expression (même si c'est généralement pris en Lisp contexte, vous pouvez faire un équivalent de chose dans à peu près n'importe quelle langue), de la plus simple à la lex/yacc ou équivalent, puis d'écrire un appel récursif à "tirer" de la fonction. En OCaml-ish dialecte, quelque chose comme ceci:
(Si vous ne savez pas syntaxe d'OCaml -
derive
est à deux paramètres de fonction récursive, avec en premier paramètre le nom de la variable, et le second, mathched dans les lignes successives; par exemple, si ce paramètre est une structure de formeAdd(x, y)
, le retour de la structureAdd
construite à partir de deux champs, avec les valeurs de la dérivéex
et dérivésy
; et de même pour d'autres cas de cederive
pourrait recevoir en paramètre;_
dans le premier modèle signifie "tout")Après cela, vous pourriez avoir un peu de ménage fonction pour le rangement de la résultante de l'expression (réduction des fractions etc.) mais cela devient compliqué, et n'est pas nécessaire pour la dérivation lui-même (c'est à dire ce que vous obtenez sans elle, c'est toujours une bonne réponse).
Lors de votre transformation de la s-exp est fait, la reconversion de la résultante s-exp dans la forme d'une chaîne, à nouveau avec une fonction récursive
OriginalL'auteur Amadan
SLaks déjà décrit la procédure de différentiation symbolique. Je voudrais juste ajouter quelques petites choses:
2 * x
donnerait2 + 0*x
. Cela peut aussi être fait par l'arbre de traitement (par exemple, par la transformation de0 * [...]
à0
et[...] + 0
à[...]
et ainsi de suite)OriginalL'auteur Niki
Pour quels types d'opérations sont vous qui veulent pour calculer une dérivée? Si vous permettez à des fonctions trigonométriques comme le sinus, le cosinus et la tangente, ce sont probablement les meilleures stockées dans une table, tandis que d'autres comme les polynômes peuvent être beaucoup plus facile à faire. Êtes-vous permettant de fonctions à plusieurs entrées,par exemple f(x,y) plutôt que de simplement f(x)?
Polynômes en une variable unique serait ma suggestion, puis envisager d'ajouter dans trigonométriques, logarithmiques, exponentielles et d'autres fonctions avancées pour calculer les dérivés qui peuvent être plus difficile à faire.
OriginalL'auteur JB King
Symbolique au cours de la différenciation des fonctions communes (+, -, *, /, ^, sin, cos, etc.) ignorant les régions où la fonction ou de ses dérivés est pas défini, c'est facile. Ce qui est difficile, peut-être contre toute attente intuitive, est de simplifier le résultat par la suite.
À faire de la différenciation, de stocker les opérations dans un arbre (ou même juste en notation polonaise) et faire un tableau de la dérivée de chacune des opérations élémentaires. Puis applicables à plusieurs reprises la chaîne de la règle et de l'élémentaire de produits dérivés, en collaboration avec la définition de la dérivée d'une constante à 0. C'est rapide et facile à mettre en œuvre.
OriginalL'auteur Charles