CAv_1718_Practica1

hace 12 días por sevillad1718

Práctica 1 de Cálculo Avanzado 2017-18

Límite de entrega de esta práctica: ver tarea en Moodle o calendario de la asignatura. Hasta una semana de retraso: cuenta hasta el 50% de la nota. Más de una semana de retraso: no cuenta para la nota.

Instrucciones:

  1. Haz una copia de la hoja pública y renómbrala: si tu correo es usuario@alumnos.unex.es añade al final del título _usuario, por ejemplo CAv_1314_Practica7_sevillad.
    • Para cambiar el nombre pulsa en el título de la hoja (arriba del todo, entre el logo de Sage y el menú "File...")
  2. Comparte la hoja de trabajo con el usuario sevillad1718 mediante el botón Compartir de arriba a la derecha.
  3. Trabaja la práctica: los ejercicios opcionales son solo para subir nota.
  4. Cuando hayas terminado, haz una copia en un fichero PDF y ponlo en el campus virtual. Esa será la versión que se evaluará. La hoja no se considera entregada si no se ha compartido (punto 2).
    • Para generar el PDF lo más sencillo es usar Imprimir arriba e imprimir la nueva página a fichero.
    • Una alternativa es hacer capturas de pantalla (JPG, PNG...) y convertirlas a un único fichero PDF.

 

Con Sage podemos hacer todo tipo de cosas con números complejos.

z = 3-4*i w = -6-7*i z; w 
       
-4*I + 3
-7*I - 6
-4*I + 3
-7*I - 6
z*w; z/w 
       
3*I - 46
9/17*I + 2/17
3*I - 46
9/17*I + 2/17
z.conjugate(); z.real(); z.imag() 
       
4*I + 3
3
-4
4*I + 3
3
-4

Desgraciadamente, con esta sintaxis básica no tenemos todas las funciones que esperaríamos:

z.abs() 
       
5
5
z.arg() 
       
Traceback (click to the left of this block for traceback)
...
AttributeError: 'sage.symbolic.expression.Expression' object has no
attribute 'arg'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "_sage_input_7.py", line 10, in <module>
    exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("ei5hcmcoKQ=="),globals())+"\\n"); execfile(os.path.abspath("___code___.py"))
  File "", line 1, in <module>
    
  File "/tmp/tmpxxojSi/___code___.py", line 2, in <module>
    exec compile(u'z.arg()
  File "", line 1, in <module>
    
  File "sage/structure/element.pyx", line 420, in sage.structure.element.Element.__getattr__ (/home/sage1516/sage-7.0/src/build/cythonized/sage/structure/element.c:4675)
  File "sage/structure/misc.pyx", line 259, in sage.structure.misc.getattr_from_other_class (/home/sage1516/sage-7.0/src/build/cythonized/sage/structure/misc.c:1771)
AttributeError: 'sage.symbolic.expression.Expression' object has no attribute 'arg'

Más abajo veremos otra manera que nos permite hacer más cosas.

 

Ejercicio 1. Calcula el argumento del número $w$ de arriba como hemos hecho en clase (puedes usar la función atan2 de Sage). Después calcula la forma normal a partir del argumento y el módulo.

 
       
 
       

Por supuesto también podemos calcular potencias, exponenciales y logaritmos, etc. En los ejemplos siguientes lo hacemos de manera aproximada para mayor claridad, pero desde luego se puede trabajar de manera exacta.

z = 8-4*i z 
       
-4*I + 8
-4*I + 8
w = z^(1/3).n() w; w^3 
       
2.05104044063858 - 0.319534803939818*I
8.00000000000000 - 4.00000000000000*I
2.05104044063858 - 0.319534803939818*I
8.00000000000000 - 4.00000000000000*I
w = exp(z).n() w; log(w) 
       
-1948.48417229226 + 2255.99644300128*I
8.00000000000000 + 2.28318530717959*I
-1948.48417229226 + 2255.99644300128*I
8.00000000000000 + 2.28318530717959*I

Ejercicio 2. El último resultado calculado es $log(exp(z))$, que debería ser igual a $z$, pero no nos ha salido eso. ¿Por qué? Pista: calcula la diferencia entre los dos valores.

 
       

Si vas a calcular frecuentemente con números complejos en Sage, hay una manera ligeramente diferente de hacerlo. Es solo un tecnicismo inicial: definimos $I$ (es decir, la $i$ mayúscula) como sigue, y la usamos para definir nuestros complejos.

I = CC.0 I 
       
1.00000000000000*I
1.00000000000000*I
z = 2*I+5 z.arg() 
       
0.380506377112365
0.380506377112365

Se pueden dibujar números complejos de manera muy sencilla.

plot(z,figsize=3) 
       

Ejercicio 3. Calcula varios valores de $1-2i$ elevado a $1/5+i/7$. Dibújalos todos juntos (puedes ver el ejemplo anterior al ejercicio 5).

 
       
 
       

Por supuesto, también podemos calcular funciones trigonométricas complejas.

z = 4-I sin(z) 
       
-1.16780727488952 + 0.768162763456573*I
-1.16780727488952 + 0.768162763456573*I

Ejercicio 4. En los reales, el seno y coseno están acotados por $-1$ y $1$, pero en los complejos no: encuentra un número complejo $z$ tal que su seno tenga módulo igual al año de tu nacimiento (aproximadamente vale, pero es preferible de manera exacta).

 
       
 
       

A continuación un ejemplo de dibujo de puntos, que además ilustra la propiedad geométrica de las raíces de un complejo. Generamos una lista de raíces quintas de un número dado. Con un bucle mostramos cada punto (numérica y gráficamente). Para terminar, sumando la lista obtenemos la unión de los gráficos.

I = CC.0 z = 5*I+6 z5 = z.nth_root(5,all=True) z5 
       
[1.49391910479587 + 0.208922809765785*I,
 0.262948991972889 + 1.48536219816413*I,
 -1.33140769044910 + 0.709081514303902*I,
 -1.08580419755343 - 1.04712572153007*I,
 0.660343791233776 - 1.35624080070374*I]
[1.49391910479587 + 0.208922809765785*I,
 0.262948991972889 + 1.48536219816413*I,
 -1.33140769044910 + 0.709081514303902*I,
 -1.08580419755343 - 1.04712572153007*I,
 0.660343791233776 - 1.35624080070374*I]
p = [ plot(zz,color='red',size=50,aspect_ratio=1,figsize=2) for zz in z5 ] sum(p).show(figsize=5) 
       

Ejercicio 5. Dibuja un hexágono regular de raíces, de manera que haya alguna raíz en el eje vertical (ojo, no basta con que en el dibujo parezca que lo está).

 
       
 
       

(Lo que sigue es opcional)


Sage también puede dibujar funciones complejas. En cada punto $z$ del dominio (una región plana) se representa $f(z)$, que es un número complejo (un objeto bidimensional), mediante colores:

  • La intensidad del color representa $|f(z)|$: los números de módulo pequeño son oscuros y los de módulo grande son claros.
  • El color representa $arg(f(z))$: el rojo es un real positivo; según aumenta el argumento siguen el naranja, amarillo...

Las dos gráficas siguientes representan la función identidad, es decir, en cada punto $z$ hemos codificado el mismo $z$ con colores. A la izquierda números cercanos al origen y a la derecha números de módulo más grande.

var('x') p1 = complex_plot(x, (-1, 1), (-1, 1), figsize=[6,6]) p2 = complex_plot(x, (-100, 100), (-100, 100), figsize=[6,6]) graphics_array([[p1,p2]]).show(frame=True, axes=False) 
       

La siguiente gráfica es la de la función $f(z)=z+3$. Observa dónde vale la función cero.

var('x') complex_plot(x+3, (-5, 5), (-5, 5), figsize=[4,4]) 
       

                                
                            

                                

Las dos gráficas siguientes representan las funciones valor absoluto (módulo) y argumento respectivamente.

N = 100 var('x') p1 = complex_plot(abs(x), (-N, N), (-N, N), figsize=[4,4]) p2 = complex_plot(arg(x), (-N, N), (-N, N), figsize=[4,4]) graphics_array([[p1,p2]]).show(frame=True) 
       

Gráfica de la izquierda: es todo rojo porque los valores son reales positivos. Cerca del centro el módulo se acerca a cero (más oscuro), lo contrario al alejarse.

Gráfica de la derecha: en la mitad superior el argumento es real positivo (rojo), y abajo es real negativo (azul). Cuanto más cerca del semieje derecho, más oscuro porque el módulo es más cercano a cero. Es discontinuo en el semieje izquierdo (cambia bruscamente de $\pi$ a $-\pi$).


Ejercicio 6 (opcional). Dibuja la gráfica de $e^z$ en la región donde las partes real e imaginaria están entre $-10$ y $10$. Explica todos los detalles que puedas de la gráfica.

 
       
 
       

Ejercicio 7 (opcional). Apoyándote en la fórmula de de Moivre, explica la gráfica de la función $f(z)=z^5$ que está a continuación. Luego cambia el exponente a 100 y explica la diferencia.

 
       
 
       
 
       

Te sugiero que experimentes con las gráficas de otras funciones complejas habituales para familiarizarte con ellas. Puedes cambiar las opciones de visualización (ver sintaxis de los comandos de arriba) para ayudarte.