2010-11-24 6 views
15

Est-ce que quelqu'un sait Qu'est-ce que, par exemple, Root[-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1] signifie dans Mathematica?Que signifie # dans Mathematica?

Alors qu'est-ce que Root[-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1] signifie exactement?

Merci.

Répondre

4

#1 représente le premier argument d'un pure function.

Si vous avez plusieurs arguments #1, #2, #3 ... se référer au premier, deuxième, troisième argument et ainsi de suite.

+0

Cher Soufiane, merci. Alors qu'est-ce que Root [-1 - 2 # 1 - # 1^2 + 2 # 1^3 + # 1^4 &, 1] signifie exactement? – user376089

31

C'est un espace réservé pour une variable.

Si vous souhaitez définir un y (x) = x^2 fonction, vous venez pourriez faire:

f = #^2 & 

Le & "pompes à" la variable dans le signe #. Cela est important pour l'appairage & et # lorsque vous avez des fonctions imbriquées.

In: f[2] 
    Out: 4 

Si vous avez une fonction d'exploitation sur deux vars, vous pouvez faire:

f = #1 + #2 & 

Alors

In: f[3,4] 
    Out: 7 

Ou vous pouvez avoir une fonction d'exploitation dans une liste, donc:

f = #[[1]] + #[[2]] & 

Ainsi:

In: f[{3,4}] 
    Out: 7 

A propos Root[]

Selon aide Mathematica:

Root[f,k] represents the exact kth root of the polynomial equation f[x]==0 . 

Donc, si votre poly est x^2 - 1, en utilisant ce que nous avons vu ci-dessus:

 f = #^2 - 1 & 

In[4]:= Root[f, 1] 

Out[4]= -1 (* as we expected ! *) 

Et

In[5]:= Root[f, 2] 

Out[5]= 1 (* Thanks God ! *) 

Mais si nous essayons avec un polynôme d'ordre supérieur:

  f = -1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 & 

In[6]:= Root[f, 1] 

Out[6]= Root[-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1] 

Cela signifie que Mathematica ne sait pas comment caculate un résultat symbolique. C'est juste la première racine du polynôme. Mais il ne sait quelle est sa valeur numérique:

In[7]:= [email protected][-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1] 

Out[7]= -2.13224 

Ainsi, Root[f,k] est une sorte d'écriture sténographique pour les racines de polynômes à l'ordre> 3. Je vous sauver d'une explication sur les radicaux et trouver des racines polynomiales ...pour le mieux, je pense que

9

Comment savoir ce que tous les moyens intégrés dans la syntaxe Mathematica:

  1. expression Copier
  2. Do TreeForm [Maintenez la touche [coller l'expression ici]].
  3. pièces souris sur de l'arbre pour identifier la syntaxe en question, dans ce cas sous
  4. Entrez « ? Emplacement »
+5

Ou peut-être plus facile: 1) Mettez en surbrillance 2) Appuyez sur F1 3) Profit? – Janus

+0

Cela fonctionne probablement la plupart du temps.Un exemple où TreeFor est meilleur est quand le contexte est important, par exemple si vous sélectionnez & à la fin de la fonction, cela vous donnera de l'aide pour BitAnd, And et Function –

6

Notation # est (comme indiqué ci-dessus) utilisé pour désigner « une variable va ici "dans une fonction pure (" fermeture "pour vous les développeurs traditionnels). Il doit toujours être suivi à la fin par &.

Le meilleur exemple est le suivant: f[x_]:=x+5. Cela crée un ensemble retardé, à chaque fois qu'une valeur est passée dans une référence de symbole f en tant que paramètre fonctionnel, cette valeur reçoit un nom spécifique à la fonction de contexte local x (sans affecter la définition globale de x, s'il y en a un). Ensuite, l'expression x+5 sera évaluée en utilisant cette nouvelle variable/valeur. Le processus ci-dessus nécessite l'initialisation du symbole f, la création de la variable locale x et la mise en mémoire permanente de l'expression x+5, sauf si vous l'effacez.

Side note:f=5 et f[x_]:=5 travaillent tous les deux avec un "symbole" f. f peut être appelée une fonction, lorsque des crochets sont utilisés pour extraire sa valeur, et f[x_] peut coexister pacifiquement avec f[x_,y_] sans se chevaucher l'un l'autre. Un sera utilisé quand un paramètre est envoyé, et un autre quand 2 paramètres sont envoyés.

Parfois vous avez juste besoin d'une fonction rapide et n'avez pas besoin de la définir et de la laisser pendre. Donc, (someValue + 5) devient (#+5)&, où & dit "Je suis une pure fonction, et travaillera avec tout ce que vous m'envoyez", et # dit "Je suis le paramètre (ou une liste de paramètres) qui a été envoyé à la fonction pure" . Vous pouvez également utiliser #1, #2, #3, etc, si vous lui envoyez plus de 1 paramètre.

Exemple de pure fonction multi-paramètres d'usage courant:

Disons que mydata est une liste de listes, que vous devez trier par médiane des listes (par exemple les données des prix des logements de différentes villes des États-Unis):

Sort[ myData , Median[#1] > Median[#2]& ] 

conseil rapide, si vous appliquez une fonction à une seule valeur, il peut sembler plus propre et plus propre, et utilise moins de frappe utiliser @ au lieu de [], ce qui signifie essentiellement Prefix. Ne pas confondre avec Map (/@) ou Apply(@@). La commande ci-dessus devient alors:

Sort[ myData , [email protected]#1 > [email protected]#2 & ] 

Vous pouvez enchaîner @ en tant que tel: [email protected]@DeleteDuplicates[...]

+0

Ceci est une excellente explication. Je vous remercie. (Liens vers plus d'informations sur les différentes significations de '@' pourrait être une bonne idée, cependant, si vous allez mentionner qu'il y a plusieurs sens différents au point de prêter à confusion, et plus loin, pour quelque chose qui est plutôt difficile à Google ...;) – ELLIOTTCABLE