Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sesion 9
Sesion 9
Introducción
Sage[1] es un sistema de software matemático que integra diversas funcionalidades: manipulación
simbólica, análisis numérico, gráficos, operaciones con matrices y funciones especiales, entre otras. Se
trata de software de código abierto para cuyo uso basta con aceptar las condiciones de la licencia GPL
bajo las cuales se distribuye.
Sage se puede instalar en Linux, Android, Microsoft Windows y otros sistemas operativos. Puedes
utilizar Sage a través de las siguientes páginas web:
Servidor web https://grupo1.qfa.uam.es:8000 de la UAM.
«PC virtuales» de la UAM, disponibles en la página https://pc-virtual.uam.es.
Usar Sage desde un «Live USB», que te puedes descargar desde la página web de Sage.[2].
Instalar una versión para Microsoft Windows. Puedes descargarte el instalador desde la página
web de Sage.[3].
En general Sage funciona con los navegadores Firefox y Chrome, pero no se puede utilizar con
Internet Explorer.
9.1.1. Variables
Cualquier letra, combinación de letras o combinación de letras y números puede usarse como variable
(el primer carácter debe ser siempre una letra). Las variables sirven para almacenar datos o para definir
funciones.
La asignación de datos a una variable se hace mediante el signo =, escribiendo a la izquierda el
nombre de la variable y a la derecha el valor que se le asigna. En la variable ww vamos a asignar la
fracción 34
ww=4/3
Aplicaciones Informáticas en Química 2
vv=3*pi
ww
print "Los valores de las variables ww y vv son ", ww, " y ", vv
show(ww)
vv.show()
Esta última instrucción, como casi todas las de Sage, se puede usar de dos maneras. En la primera
se incluye como argumento la variable que queremos mostrar, como en show(ww). En la segunda se
añade la instrucción a la variable mediante un «punto», como en vv.show().
9.1.2. Ayuda
Podemos obtener las opciones de las instrucciones con la instrucción help, que se puede usar de
dos maneras. Por ejemplo, para obtener la ayuda sobre la instrucción show se puede teclear
show?
help(show)
2 + 3 * 6
( 2 + 3 ) * 6
1o de Grado en Química
Aplicaciones Informáticas en Química 3
+ suma
− diferencia
∗ producto
/ división
∧ potencia
∗∗ potencia
// división entera
% resto de una división entera
9.1.4. Ejercicio 1
Realiza las siguientes operaciones:
2+3
=
5
3
2+ =
5
2
=
3+5
7 + 161/4 =
r
3 36
2+ =
3·2
(1)
Fíjate en la importancia de usar paréntesis para obtener el resultado correcto.
9.1.6. Ejercicio 2
Obtén el valor numérico, con 6 dígitos, de las siguientes operaciones:
2+3
=
5
3
2+ =
5
2
=
3+5
1o de Grado en Química
Aplicaciones Informáticas en Química 4
cient = exp(-20)
cient.n()
Fíjate que en notación científica la expresion e − 9 significa ×10−9 . Esto se puede ver si usamos la
instrucción show(), por ejemplo, para obtener el valor con cinco cifras significativas
show(cient.n(digits=5))
Fíjate en la necesidad de usar el operador para la multiplicación *. Para evaluar una función en un punto,
basta con asignar valores a sus variables. Por ejemplo, vamos a evaluar la función f (x) para el valor
x = 1/2
f(1/2)
1o de Grado en Química
Aplicaciones Informáticas en Química 5
Como ves, por defecto, Sage usa «fórmulas simbólicas». En este ejemplo el resultados es cos(1). Si
evaluas la función en x = π/2, el resultado, cos(π) se convierte en −1. Fíjate que el argumento de las
funciones trigonométricas está expresado en radianes y no en grados sexagesimales.
f(pi/2)
Como vimos con las fracciones, en ocasiones los resultados quedan en forma simbólica sin evaluar.
Recuerda que si se desea obtener un valor numérico, basta con añadir .n() al final de la instrucción
(para mostrar N dígitos, con la opción .n(digits = N)).
f(1/2).n()
Vamos a definir una nueva función de una variable, en este caso la función f 2(x) = log(x/3).
Fíjate que Sage usa tanto ln como log para definir el logaritmo neperiano. Si queremos definir la
función g(x) = log10 (x/3), entonces tenemos que usar
g(30)
También se pueden definir funciones más complejas. Por ejemplo, si queremos definir la función
p
func(x) = exp − x + 5x2 cos3 (4x + 5x2 + 6)
9.1.9. Ejercicio 3
Define la función h(x) = log2 (8x3 ) y obtén el valor de dicha función para los valores x = 1, x = −1
y x = 0.
1o de Grado en Química
Aplicaciones Informáticas en Química 6
h.show()
h.plot()
Si se desea cambiar los valores inicial y final de la variable en la gráfica o las demás opciones,
los valores deseados deben proporcionarse dentro del paréntesis. Las opciones de la instrucción plot
pueden verse tecleando plot? o help(plot).
h.plot((x,-3/2,5),color="red",thickness=3)
plot?
Para dibujar varias funciones en una misma gráfica se usa el operador +. Nótese la diferencia entre
utilizar el operador + de Sage para representar dos funciones h(x) y r(x) en la misma gráfica con la
instrucción h(x).plot() + r(x).plot(), y utilizar el operador matemático + para representar una única
función, la suma de f (x) y g(x), con la instrucción plot( f (x) + g(x)).
h(x).plot() + r(x).plot(color="red")
(h(x) + r(x)).show()
(h(x) + r(x)).plot()
Las figuras también pueden asignarse a variables, lo que permite combinarlas de diversas maneras
sin necesidad de recalcularlas cada vez.
figh = h(x).plot()
figr = r(x).plot(color="red")
figh + figr
donde variable es la variable donde se ha guardado la representación que se quiere modificar, text
es la instrucción que permite añadir el texto “etiquetas”, posicionándolo en las coordenadas dadas
por (posición x, posición y).
1o de Grado en Química
Aplicaciones Informáticas en Química 7
Se puede elegir el color de las etiquetas de los ejes, así como el texto con las instrucciones
figh.axes_label_color("red")
figh.axes_labels(["Eje X", "Eje Y"])
figh
figh.show(xmin=-0.5,xmax=0.5,ymin=-0.5,ymax=0.5)
f1(x) = sin(x)^2
f2(x) = exp(x)
g1(x).plot()+g2(x).plot(color="red")
diff(función, variable)
pol(x)=3*x^5+4*x^4+x^3+x^2-2*x+6
show(pol(x))
pol(x).diff(x)
1o de Grado en Química
Aplicaciones Informáticas en Química 8
pol(x).diff(x).show()
También se pueden obtener las derivadas de orden mayor. Por ejemplo, la derivada segunda de pol(x)
d2
pol(x)
dx2
se obtiene con
pol(x).diff(x,2)
pol(x).diff(x,2).show()
Vamos a probar a derivar las funciones g1(x) y g2(x) que hemos definido antes.
g1(x).show()
g1(x).diff(x)
g1(x).diff(x).show()
g2(x).show()
g2(x).diff(x)
g2(x).diff(x).show()
Al igual que en el caso del polinomio, también podemos obtener las derivadas de orden mayor. Por
ejemplo, la derivada segunda de g1(x) se obtiene con
g1(x).diff(x,2)
9.3.2. Ejercicio 4
Obtén la primera derivada de las siguientes funciones:
1o de Grado en Química
Aplicaciones Informáticas en Química 9
integrate(función, variable)
En este caso Sage expresa la solución como un número complejo, en la forma (a, b), donde a representa
la parte real y b la parte imaginaria, es decir (a, b) = a + b · i.
Como un primer ejemplo vamos a integrar el polinomio definido en la sección anterior
pol(x).show()
pol(x).integrate(x).show()
f(x).integrate(x)
f(x).integrate(x).show()
f(x).integrate(x,-1,1)
1o de Grado en Química
Aplicaciones Informáticas en Química 10
f(x).integrate(x,-1,1).show()
f(x).integrate(x,-1,1).n()
numerical_integral(f(x),-1,1)
9.3.4. Ejercicio 5
Calcula las siguientes integrales:
Z
arc cos(x) dx
Z
x e x dx
Z ∞
2
e−x dx
0
f(x) = exp(-x)*sin(x)
hasta grado 5. Para ello, definimos una función desarrollo(x) con el desarrollo en serie en torno a
π hasta grado 5,
desarrollo(x)=f(x).taylor(x,pi,5)
Para comprobar la bondad del desarrollo, podemos representar la función y el desarrollo, por ejemplo,
en el intervalo [π/2, 3π/2],
figfuncion=f(x).plot((x,pi/2,3*pi/2))
figtaylor = desarrollo(x).plot((x,pi/2,3*pi/2) ,color="red")
figfuncion + figtaylor
1o de Grado en Química
Aplicaciones Informáticas en Química 11
9.3.6. Ejercicio 6
Desarrolla la función u(x) = sen(x) en serie de potencias en torno al punto x = 0, hasta quinto grado.
Representa la función y su desarrollo en el intervalo [−π, π].
El desarrollo en serie nos proporciona un método simple para obtener el valor aproximado de una
función. De hecho es el método que se usa en calculadoras para obtener los valores de las funciones
trigonométricas. Calcula el valor de sen(1) y compáralo con el valor que se obtiene con el desarrollo en
serie hasta quinto grado.
f(x).plot(xmin=0,xmax=10)
Lo que nos permite acotar las regiones en las que se encuentran las raíces. Por ejemplo, en el intervalo
(2, 4) podemos encontrar una raíz,
f(x).find_root(2,4)
f(x).plot(xmin=4,xmax=8)
f(x).find_root(5,7)
f(x).plot(xmin=7,xmax=10)
f(x).find_root(7,10)
Fíjate que si usamos un intervalo más amplio, una vez que encuentra una raíz no busca más.
f(x).find_root(3,10)
f(x)=x-cos(x); plot(f)
f(x).find_root(0,1)
1o de Grado en Química
Aplicaciones Informáticas en Química 12
9.3.8. Ejercicio 7
Representa el siguiente polinomio y obtén los ceros:
9.3.9. Ejercicio 8
En este ejercicio hay que resolver uno de los problemas propuestos en la asignatura de Matemáticas
I. En concreto el problema 5 de la hoja 1.7 de Aproximación de funciones. Desarrollos de Taylor. En
este problema se pide:
ln(x2 + 1)
1. Construir la serie de potencias centrada en 0 de la función f (x) = . Para ello vamos a
x2
definir los polinomios de Taylor de orden 8, T8,c (x), de orden 10, T10,c (x), y de orden 12, T12,c (x),
para c = 0.
2. Representar f (x) y los polinomios de Taylor de orden 8, 10 y 12 que has obtenido en el primer
apartado. Comprueba que, como el radio de convergencia es 1, la serie diverge para valores de
x fuera de ese intervalo. Representa también las diferencias entre la función y sus desarrollos en
serie: f (x) − Tn,0 (x), para n = 8, 10 y 12.
Referencias
[1] La página principal es http://www.sagemath.org/
1o de Grado en Química