Programación en Sage

Un script es un conjunto de comandos de Sage guardados en un fichero .sage para ser ejecutados posteriormente. Por ejemplo, imaginemos que queremos representar funciones con plot al tiempo que se salvan en un fichero; podemos guardar la función plotNsave en el fichero my_plots.sage:

def plotNsave(f, a, b, file):
    """
    Aqui se pone la descripcion de plotNsave
    Esta informacion se muestra al escribir:  plotNsave?
    """
    p = plot(f, (a, b))
    p.show()
    p.save(file)

Este script puede cargarse en una sesión de Sage:

sage: os.getcwd() # muestra la carpeta de trabajo actual
'/home/user'
sage: os.chdir('/home/user/Escritorio') # cambio a otra carpeta
sage: os.listdir('.') # listado del contenido de la carpeta actual
['my_plots.sage']
sage: load('my_plots.sage')

Cuando se trabaja con Sage a través de la terminal, los comandos anteriores del paquete os pueden sustituirse por pwd, cd y ls, respectivamente. Usando attach en vez de load, la sesión de Sage reconocerá automáticamente los cambios que hagamos en el fichero con un editor externo. Una vez cargado, su contenido puede ser usado normalmente:

sage: sage: f(x) = x^2
sage: plotNsave(f,1,2,'p.png')

Funciones lambda

Las funciones lambda permiten crear funciones anónimas compuestas de una única expresión. Son, básicamente, una forma escueta de definir una función:

sage: h = lambda x,y: (x^2,y^2)
sage: h(1,2)
(1, 4)

Estructuras de control de flujo

El bucle for ejecuta una serie de comandos para todos los valores de una lista:

fact = 1
for i in [2..10]:
    fact = fact*i

Al final del bucle, fact contendrá 10!. Los comandos internos al bucle deben sangrarse obligatoriamente. Los bucles pueden anidarse con sangrado creciente.

El bucle while ejecuta una serie de comandos mientras se dé una condición:

n = 1
sum = 0.
while 1/n^4 > 1e-14:
   sum = sum + 1/n^4 # alternativamente, sum += 1/n^4
   n = n+1 

Al final del bucle, sum contendrá una aproximación de  \displaystyle \sum_{n=1}^{\infty}\frac 1{n^4}.

Las estructuras if permiten decidir en función de una o varias condiciones:

i = 0 # asignar a i un valor
if i>0:
    print 'positivo'
elif i<0:
    print 'negativo'
else:
    print 'nulo'

El bloque elif y else son opcionales. Puede haber varios bloques elif.

Otros comandos

El comando break interrumpe la ejecución del bucle for o while más interno. Véase por ejemplo, la búsqueda del índice de la posición del primer elemento negativo de la lista x:

x = [1,0,-1, 2]
for i in range(len(x)):
    if x[i]<0:
        break
print 'El indice es '+str(i)

El comando return termina la ejecución de una función e indica el valor de su respuesta, como puede verse en la defición de la función f en esta entrada.

Advertisements
Esta entrada foi publicada en Sage. Ligazón permanente.

One Response to Programación en Sage

  1. Pingback: Expresiones simbólicas en Sage | fundmat

Deixar unha resposta

introduce os teu datos ou preme nunha das iconas:

Logotipo de WordPress.com

Estás a comentar desde a túa conta de WordPress.com. Sair / Cambiar )

Twitter picture

Estás a comentar desde a túa conta de Twitter. Sair / Cambiar )

Facebook photo

Estás a comentar desde a túa conta de Facebook. Sair / Cambiar )

Google+ photo

Estás a comentar desde a túa conta de Google+. Sair / Cambiar )

Conectando a %s