Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ON DE MATEM
ATICAS (2
o
Ing. de Telecomunicacion y Aeronautica)
Departamento de Matematica Aplicada II. Universidad de Sevilla
CURSO ACAD
EMICO 2008-2009
lractica \l Iuncioncs dc una variac comjc,a
Las herramientas que desarrollaremos en esta practica relativas a la transformacion
de una curva o un recinto mediante una funcion compleja w = f(z) seran facilmente
adaptables a la transformacion de una curva o un recinto mediante una funcion vectorial
f : R
2
R
2
denida sobre un recinto plano.
` umcros comjc,os
En MATLAB la unidad imaginaria se denota, por defecto, mediante i o j siempre y
cuando dicha letra no sea utilizada para denotar una variable/ndice/funcion/..., es decir,
si tenemos que trabajar con expresiones complejas, no podemos utilizar la letra i o la
letra j (la que usemos para denotar la unidad imaginaria) como un ndice, un contador
de un bucle, un vector, etc., puesto que al ser usada como variable pierde su valor como
unidad imaginaria.
Cuando i o j son usadas como tal (unidad imaginaria), no es necesario indicar la
operacion mutiplicaci on para obtener un m ultiplo, las dos ordenes
>> 2-3i
>> 2-3*i
dan lugar al mismo resultado.
En la ayuda de Matlab, puedes consultar la sintaxis de las siguientes ordenes rela-
cionadas con los n umeros complejos:
real parte real de un dato complejo
imag parte imaginaria de un dato complejo
complex dato complejo construido a partir de sus partes real e imaginaria
abs modulo de un dato complejo, valor absoluto de un dato real
conj complejo conjugado de un dato complejo
angle Argumento principal de un dato complejo
sign Funcion signo. Para un dato complejo z, no-nulo,
z
|z|
.
isreal determina si un dato es real o complejo
1
De las ordenes anteriores, merece especial atencion angle que, aplicada a un n umero
complejo z, proporciona su argumento principal Arg(z) (, ] (medido en radianes).
Si separamos las partes real x e imaginaria y de z, la orden atan2 aplicada a (y,x)
proporciona el mismo valor. Por ejemplo,
>> t1=angle(-3), t2=atan2(0,-3)
t1 =
3.1416
t2 =
3.1416
>> s1=angle(-1+2i), s2=atan2(2,-1)
s1 =
2.0344
s2 =
2.0344
Aunque desde cierto punto de vista trabajar con n umeros/vectores/matrices comple-
jos, en MATLAB, es similar a trabajar con n umeros/vectores/matrices reales, hay que
tener siempre presente que mientras que con un n umero real representamos un punto de
una recta, con un n umero complejo representamos un punto de un plano. Por ejemplo,
esta situacion queda patente cuando se hace uso del comando plot.
Ejercicio 1. (Resuelto).- Obtener una particion del intervalo [0, 1] y los valores de la
funcion y = f(x) = x
2
en los puntos de dicha particion. Almacenando los puntos y valores
obtenidos en dos vectores-la x e y respectivamente, aplicar la orden plot a x,y como:
(a) pareja de vectores-la, (b) un unico vector-la, (c) una matriz con dos las y (d)
vector complejo con parte real x y parte imaginaria y.
Generamos los vectores reales
>> x=[-1:0.05:1];
>> y=x.^2;
y el vector complejo
>> z=complex(x,y)
cuya parte real es x y cuya parte imaginaria es y. Observa las diferencias y las analogas
de las gracas que se obtienen al ejecutar las siguientes ordenes:
>> subplot(2,2,1), plot(x,y) % dos vectores-fila, dibuja abscisas-ordenadas
>> subplot(2,2,2), plot([x,y])
% un unico vector-fila, dibuja indice-entradas del vector
>> subplot(2,2,3), plot([x;y])
% una matriz con dos filas, dibuja cada columna
>> subplot(2,2,4), plot(z)
% un vector-fila complejo, dibuja parte real-parte imaginaria
2
1 0.5 0 0.5 1
0
0.2
0.4
0.6
0.8
1
0 20 40 60 80 100
1
0.5
0
0.5
1
1 1.2 1.4 1.6 1.8 2
1
0.5
0
0.5
1
1 0.5 0 0.5 1
0
0.2
0.4
0.6
0.8
1
mediante las cuales se obtiene una ventana graca en la que aparecen cuatro gracas (no
superpuestas). Consulta la ayuda sobre la orden subplot para conocer sus caractersticas.
Notemos que si tenemos datos reales (n umeros, vectores, matrices, funciones, ...) di-
chos datos pueden ser tratados como complejos con parte imaginaria nula y al aplicarles
algunas ordenes pueden obtenerse resultados distintos seg un sean tratados como reales o
como complejos. Si, por ejemplo, tenemos un vector real x, mediante la instruccion
> z=complex(x)
queda almacenado en z como vector complejo con parte imaginaria nula.
Ejercicio 2. Genera, mediante rand, un vector x aleatorio de 20 coordenadas. Almacena
dicho vector en z como vector complejo. Ejecuta las ordenes
>> figure(1), plot(x)
>> figure(2), plot(z)
y explica el signicado de cada graca.
Para pasar de coordenadas polares a coordenadas cartesianas podemos usar la orden
de Matlab, pol2cart. Para pasar de coordenadas cartesianas a coordenadas polares
podemos usar la orden de Matlab, cart2pol, teniendo en cuenta que el argumento que
se obtiene es el argumento principal, es decir, el que pertenece al intervalo (, ].
3
Lcnicion dc tuncioncs comjc,as
La denicion, con MATLAB, de funciones complejas w = f(z) de una variable com-
pleja z y la obtencion de los valores de una funcion en las entradas de un vector o una
matriz complejos, no es distinta a lo que ya conocemos del caso real: denicion simb olica
mediante el comando inline, denicion mediante un archivo .m de funcion, obtencion
de los valores mediante feval, .... Obviamente, lo que no puede ser similar es la repre-
sentaci on graca. Para tener una imagen graca de la accion de una funcion de variable
compleja, en las siguientes secciones recurrimos a transformar curvas y recintos.
Las funciones elementales:
Polinomios, racionales,... se manipulan de forma analoga al caso real.
Funciones exponenciales, trigonometricas e hiperbolicas (directas):
exp(z), cos(z), sin(z), tan(z), cosh(z), . . .
se manipulan como en el caso real ya que estan predenidas para valores complejos.
Funciones que tienen varias ramas: logaritmo, potencias fraccionarias, funciones
trigonometricas e hiperbolicas inversas, ... Hay que tener en cuenta que MATLAB
trabaja, de forma predeterminada con la rama principal de dichas funciones.
En lo que respecta a la funcion logaritmo (neperiano), la funcion log predenida en
MATLAB es la funcion compleja de variable compleja: Logaritmo principal,
0 = z C w = log(z) = log |z| + iArg(z), < Arg(z) ,
es decir, siendo z = re
i
, r > 0, < su logaritmo denido en Matlab es
log(z) = log(r) + i.
As, en terminologa Matlab:
z=abs(z)*exp(i*angle(z)) log(z) = log(abs(z))+i*angle(z).
En lo que respecta a las potencias fraccionarias cabe decir algo similar, el calculo
de, por ejemplo, la raz c ubica de un n umero complejo (no nulo) z no es el calculo
de sus tres races c ubicas sino el de una de ellas, en concreto la que se obtiene a
partir del argumento principal = Arg(z) (, ] de z mediante
z = |z| e
i
z =
3
|z| e
i
3
.
As, en terminologa Matlab:
z=abs(z)*exp(i*angle(z))} ---->
----> z^(1/3) = (abs(z))(1/3)*exp(i*angle(z)/3).
4
Por ejemplo, para calcular
3
z z
0
z z
1
=
> 0) en otra circunferencia generalizada.
Conserva la simetra respecto de una circunferencia generalizada.
Para mas detalles sobre estas propiedades, y en particular sobre el concepto de simetra
respecto de una circunferencia, consultar casi cualquier texto sobre un primer curso de
variable compleja.
Ejercicio 11. (Resuelto) Vamos a construir una funcion Matlab que calcule los coe-
cientes a, b, c, d C de la funcion
w = f(z) =
az + b
cz + d
sabiendo que transforma, respectivamente, tres puntos distintos z
1
, z
2
, z
3
C dados en
otros tres puntos distintos dados w
1
, w
2
, w
3
C. Cada una de las ecuaciones
az
1
+ b
cz
1
+ d
= w
1
,
az
2
+ b
cz
2
+ d
= w
2
,
az
3
+ b
cz
3
+ d
= w
3
,
se puede expresar como una ecuacion lineal homogenea con incognitas a, b, c, d C.
Esto nos lleva a un sistema lineal homogeneo de tres ecuaciones con cuatro incognitas
z
1
a + b z
1
w
1
c w
1
d = 0
z
2
a + b z
2
w
2
c w
2
d = 0
z
3
a + b z
3
w
3
c w
3
d = 0
cuya matriz A =
z
1
1 z
1
w
1
w
1
z
2
1 z
2
w
2
w
2
z
3
1 z
3
w
3
w
3
tiene rango 3. Para resolver este sistema homogeneo vamos a usar la orden null que,
aplicada a una matriz, proporciona una base del conjunto solucion del sistema homogeneo
asociado.
En un archivo .m de funcion, que llamaremos mobius1.m grabamos las siguientes
ordenes:
function [a,b,c,d]=mobius1(z1,z2,z3,w1,w2,w3)
A=[z1, 1, - z1*w1, - w1;
z_2, 1, - z2*w2, - w2;
z_3, 1, - z3*w3, - w3];
sol=null(A,r);
a=sol(1);
b=sol(2);
c=sol(3);
d=sol(4);
11
Al ejecutar, por ejemplo
>> [a,b,c,d]=mobius1(1,2-3i,-2-2i,0,3+i,4i)
se obtienen los coecientes
a =
1.0378 - 0.6270i
b =
-1.0378 + 0.6270i
c =
-0.0108 - 0.5351i
d =
1
de la transformacion de Mobius w = f(z) =
az + b
cz + d
que cumple que
f(z1) = w1, f(z2) = w2 y f(z3) = w3.
Se deja como ejercicio:
(a) Incluir, en el chero mobius1.m, unas lneas de ayuda describiendo lo que hace la
funcion y las limitaciones que tiene.
(b) Incluir, en el chero mobius1.m, unas lneas mediante las cuales se compruebe si
los argumentos de entrada dados (z1,z2,z3,w1,w2,w3) verican las condiciones
descritas y, en caso de que no se cumplan, muestre un mensaje de error.
12