2010-11-24 18 views
15

¿Alguien sabe qué # en, por ejemplo, Root[-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1] significa en Mathematica?¿Qué significa # en Mathematica?

¿Qué significa exactamente Root[-1 - 2 #1 - #1^2 + 2 #1^3 + #1^4 &, 1]?

Gracias.

Respuesta

4

#1 representa el primer argumento en un pure function.

Si tiene múltiples argumentos #1, #2, #3 ... consulte el primer, segundo, tercer argumento y así sucesivamente.

+0

Estimado Soufiane, gracias. Entonces, ¿qué significa Root [-1 - 2 # 1 - # 1^2 + 2 # 1^3 + # 1^4 &, 1] exactamente? – user376089

31

Es un marcador de posición para una variable.

Si desea definir una y (x) = x^2 función, usted podría hacer:

f = #^2 & 

El & "bombas de" la variable en el signo #. Esto es importante para emparejar & y # cuando tiene funciones anidadas.

In: f[2] 
    Out: 4 

Si usted tiene una función que opera sobre dos vars, que podría hacer:

f = #1 + #2 & 

Así

In: f[3,4] 
    Out: 7 

O usted puede tener una función que opera en una lista, por lo que:

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

Así:

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

Sobre Root[]

De acuerdo con Mathematica ayuda:

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

tanto, si su poli es x^2 - 1, con lo que vimos anteriormente:

 f = #^2 - 1 & 

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

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

Y

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

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

Pero si tratamos con un polinomio de orden superior:

  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] 

Eso significa Mathematica no sabe cómo caculate resultado simbólico. Es solo la primera raíz del polinomio. Pero sí sabe cuál es su valor numérico:

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

Out[7]= -2.13224 

Así, Root[f,k] es un tipo de escritura taquigráfica de las raíces de los polinomios con el fin> 3. Yo te salvará de una explicación acerca de los radicales y la búsqueda de raíces polinómicas ...para el mejor, creo

9

Cómo averiguar lo que cualquier incorporado en la sintaxis significa en Mathematica:

  1. expresión Copia
  2. Do TreeForm [Hold [pegar la expresión aquí]].
  3. partes ratón por encima del árbol para identificar la sintaxis de que se trata, en este caso la ranura
  4. Enter "? Ranura"
+5

O tal vez más fácil: 1) Resalte 2) Presione F1 3) ¿Beneficio? – Janus

+0

Eso probablemente funcione la mayor parte del tiempo.Un ejemplo donde TreeFor es mejor es cuando el contexto es importante, por ejemplo, si selecciona & al final de la función, le dará ayuda para BitAnd, Y y la función –

6

notación # es (como se indica más arriba) utilizan para significar "una variable va aquí "en una función pura (" cierre "para los desarrolladores tradicionales). Siempre debe seguirse al final por &.

El mejor ejemplo es este: f[x_]:=x+5. Esto crea un conjunto diferido, que cada vez que se pasa un valor a una referencia de símbolo f como parámetro funcional, a ese valor se le asignará un nombre de función de contexto local específico de x (que no afecte a la definición global de x, si hay una) A continuación, la expresión x+5 se evaluará utilizando esta nueva variable/valor. El proceso anterior requiere que se inicialice el símbolo f, se cree la variable local x y la expresión x+5 permanezca en la memoria, a menos que la borre.

Nota al margen:f=5 y f[x_]:=5 tanto el trabajo con un "símbolo" f. f se puede denominar como una función, cuando los corchetes se utilizan para extraer su valor, y f[x_] puede coexistir pacíficamente con f[x_,y_] sin anularse entre sí. Uno se usará cuando se envíe un parámetro y otro cuando se envíen 2 parámetros.

Algunas veces solo necesita una función rápida y no necesita definirla y dejarla colgando. Entonces, (someValue + 5) se convierte en (#+5)&, donde & dice "Soy una función pura, y funcionará con lo que me envíe", y # dice "Soy el parámetro (o una lista de parámetros) que se envió a la función pura" . También puede usar #1, #2, #3, etc., si le envía más de 1 parámetro.

Ejemplo de múltiples parámetros pura función de uso común:

Digamos mydata es una lista de listas, que es necesario para ordenar por medio de las listas (por ejemplo, los datos de precios de viviendas de varias ciudades de Estados Unidos):

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

consejo rápido, si va a aplicar una función de un solo valor, puede parecer más ordenado y limpio, y utiliza menos datos para utilizarlo en lugar de @[], lo que significa esencialmente Prefix. No confunda con Map (/@) o Apply(@@). El comando anterior se convierte en:

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

Usted puede encadenar @ como tal: [email protected]@DeleteDuplicates[...]

+0

Esta es una excelente explicación. Gracias. (Sin embargo, los enlaces a más información sobre los diferentes significados de '@' podrían ser una buena idea, si vas a mencionar que hay varios significados confusamente diferentes y, además, algo que es bastante difícil para Google ...;) – ELLIOTTCABLE