8 votos

Las variables locales cuando la definición de la función en Mathematica

He definido una función en Mathematica. Es una función de n, entonces f[n_]:=, pero en la definición, he utilizado una suma, $\sum_{k=0}^n$. Así, el $k$ es sólo una variable de índice para la suma y el no $k$ se muestra en la respuesta final. Como yo estaba usando esta función traté de evaluar f[k-1] y tiene un extraño respuesta, 0. Finalmente me di cuenta de que Mathematica estaba tratando de hacer la suma de $\sum_{k=0}^{k-1}$, o eso supongo. Entonces, mi pregunta es, hay alguna manera de hacer que el $k$ local para que este error nunca se produce? Mi revisión por ahora era cambiar de $k$$index$, y probablemente no utilice f[índice] en cualquier punto.

7voto

Fabian Puntos 12538

La función que está buscando se llama Módulo. Así se puede definir f[n_]:=Module[{k},Sum[a[k],{k,0,n}] y, a continuación, la evaluación f[k-1] es posible.

7voto

pointernil Puntos 136

Block podría ser mejor que Module -- cuando se utiliza la recursividad, una variable local definida en Module será compartido a través de los marcos de pila, Block tendrá una versión independiente de la variable en cada llamada

3voto

Kevin Loney Puntos 163

Una alternativa a Module o Block es para uso Formal de Símbolos. Esto permite que el código más limpio.

Uno todavía puede ejecutar en problemas dependiendo de cómo usted elige utilizar Formal de símbolos en otros lugares, pero si usted nunca usa \[FormalK] en el argumento f de que son seguros.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X