viernes, 16 de diciembre de 2011

COMO GRAFICAR EN MATLAB

Una de las funciones más importantes en Matlab es la función plot.  Plot también parece ser una de las más sencillas funciones para aprender a usar. La sintaxis básica de la función es escribir el siguiente comando en la ventana de comandos del Matlab o en un archivo-m.
 plot(x,y)
Este comando planteará los elementos del vector x en el eje horizontal de una figura, y los elementos del vector y en el eje vertical de la figura. Por defecto, cada vez que se use el comando plot, se borrará la figura que estaba, quedando solo la nueva; discutiremos cómo forzar esto más abajo. Si quisiéramos graficar la sencilla fórmula lineal:
     y=3x
Deberíamos crear un archivo-m con las siguientes líneas de código:
     x = 0:0.1:100;
     y = 3*x;
     plot(x,y)
Lo que generará la figura siguiente,
Una cosa a tener en cuenta cuando se usa el comando plot es que los vectores x e y deben ser la misma longitud. La otra dimensión puede variar. Matlab puede graficar un vector 1 x n versus un vector n x 1, ó un vector 1 x n versus una matriz 2 x n, (obtendrá dos líneas), el largo n es el mismo para ambos vectores.
El comando plot puede también usarse con solamente un vector como entrada o parámetro. En ese caso las columnas del vector se grafican versus sus índices (el vector 1:1: n se usará para el eje horizontal). Si el vector de entrada contiene números complejos, Matlab dibuja la parte real de cada elemento (en el eje x) versus la parte imaginaria (en el eje y).
LA ESTÉTICA DE LOS GRÁFICOS
El color y el marcador de un gráfico se pueden cambiar agregando un tercer parámetro (entre apóstrofo 'esto') al comando plot.  Por ejemplo, para graficar la función de arriba con una línea punteada roja, debería cambiarse el archivo-m a:
     x = 0:0.1:100;
     y = 3*x;
     plot(x,y,'r:')
Ahora el gráfico se ve:
La tercera entrada consiste de uno a tres caracteres que especifican un color y/o o un tipo de marcador. La lista de colores y marcadores es como sigue:
     y     amarillo      .     punto
     m     violeta       o     circulo
     c     celeste       x     cruz x
     r     rojo          +     suma
     g     verde         -     solido
     b     azul          *     estrella
     w     blanco        :     punteado
     k     negro         -.    punto y raya
                         --    a trazos
Se puede graficar más de una función en la misma figura. Digamos que quisiera graficarlas ondas seno y coseno en el mismo conjunto de ejes, usando diferentes colores y marcadores para cada una. Puede usarse el siguiente archivo-m para lograrlo:
     x = linspace(0,2*pi,50);
     y = sin(x);
     z = cos(x);
     plot(x,y,'r', x,z,'gx')
Obtendrá la figura siguiente de las ondas seno y coseno, con el seno en rojo sólido y el coseno en verde con cruces:
Agregando más juegos de parámetros al comando plot, puede graficar tantas funciones en la misma figura como se m quiera. Cuando plotea muchas cosas en el mismo gráfico es útil diferenciar las diferentes funciones mediante color y marcadores. Puede lograrse el mismo efecto usando los comandos hold on y hold off. Una figura como la que se muestra abajo puede generarse mediante el siguiente archivo-m:
     x = linspace(0,2*pi,50);
     y = sin(x);
     plot(x,y,'r')
     z = cos(x);
     hold on
     plot(x,z,'gx')
     hold off
Recuerde que siempre que use el comando hold on, todas las figuras serán generadas en un conjunto de ejes, sin borrarse la figura anterior, hasta que se aplique el comando hold off.
MÁS DE UN GRÁFICO EN UNA VENTANA (SUBPLOT)
En una misma figura puede ponerse más de una línea empleando el comando subplot. El comando subplot le permite separar la figura en tantas figuras como se quiera, y ponerlas todas en una figura. Para usar este comando, Copie la siguiente línea de código e insértela en la ventana de comandos del Matlab o en un archivo-m:
     subplot(m,n,p)
Este comando divide la figura en una matriz de m renglones y n columnas, por lo tanto crea mxn gráficos en una figura. TEl p-ésimo gráfico es seleccionado como el gráfico activo (solo hay uno a la vez por figura). Por ejemplo, suponga quisiera ver una senoide, un coseno, y una onda tangente graficadas en la misma figura, pero no en los mismos ejes. El siguiente archivo-m lo hará:
     x = linspace(0,2*pi,50);
     y = sin(x);
     z = cos(x);
     w = tan(x);

     subplot(2,2,1)
     plot(x,y)
     subplot(2,2,2)
     plot(x,z)
     subplot(2,2,3)
     plot(x,w)
CAMBIANDO LOS EJES
Ahora que ha encontrado diversos modos de graficar funciones, puede personalizar sus ploteos para lograr lo que desea. El modo más frecuente de hacerlo es mediante el comando axis. El comando axis cambia los ejes del diagrama actual, de modo que se muestra sólo la parte del eje que se desea. El comando axis se usa ingresando el siguiente comando justo después del comando plot (o cualquier comando que tiene un plot como una de sus salidas):
     axis([xmin, xmax, ymin, ymax])
Por ejemplo, suponga querer ver un gráfico de la función y=exp (5t)-1. Si entra lo siguiente al Matlab

t=0:0.01:5;
y=exp(5*t)-1;
plot(t,y)
Debería tener la figura siguiente:
Como puede ver, el gráfico tiende a infinito. Atendiendo al eje y (escala: 8e10), es claro que no puede verse mucho en este gráfico. Para tener una mejor idea de lo que está pasando en el ploteo, miremos el primer segundo de esta función. Escriba el siguiente comando en la ventana de comandos del Matlab.

viernes, 9 de diciembre de 2011

SISTEMA DE ECUACIONES LINEALES

ECUACIONES CON DOS INCÓGNITAS
En este apartado vamos a tratar con ecuaciones con dos incógnitas. Por ejemplo, 2x - 5y = 7 es una ecuación con dos incógnitas.
El par de valores x = 6, y = 1 es solución de esta ecuación porque 2 · 6 - 5 · 1 = 7.
Definición: Llamamos solución de una ecuación con dos incógnitas a todo par de valores que hacen cierta la igualdad. Cabe destacar que si sólo tenemos una ecuación con dos incógnitas, tendremos infinitas soluciones.
Las ecuaciones lineales se representan mediante rectas
Para obtener las soluciones de dos incógnitas se despeja una de ellas y se le dan valores a la otra. Si representamos las dos ecuaciones que forman un sistema como dos rectas, se puede observar que el punto donde se cortan dichas rectas (si se cortan) es la solución al sistema.

 x+y=5
2x-y=7
EJEMPLO:
 y=5-x
y=2x-7
SISTEMAS DE ECUACIONES
Definición: Dos ecuaciones forman un sistema cuando lo que pretendemos de ellas es encontrar su solución común. Cuando dos ecuaciones con dos incógnitas forman un sistema, las ponemos de esta forma:
ax+by=c
a´x+b´y=c´
Se llama solución de un sistema de ecuaciones a la solución común de ambas.
SISTEMAS EQUIVALENTES
Definición: Dos sistemas de ecuaciones se dicen equivalentes cuando tienen la misma solución.
NÚMERO DE SOLUCIONES DE UN SISTEMA LINEAL
Sistemas sin solución
Hay sistemas cuyas ecuaciones dicen cosas contradictorias. Por ejemplo:
2x+3y=15
2x+3y=9
En este caso, nos dice por una parte que 2x+3y=15 y por otra que 2x+3y=9 y eso es absolutamente imposible porque para eso tendrían que adoptar las incógnitas valores distintos en cada ecuación y entonces no sería un sistema de ecuaciones.
Así sacamos la conclusión de que el sistema no tiene soluciones comunes y entonces se dice que el sistema es incompatible.
Sistemas con infinitas soluciones
Hay sistemas cuyas ecuaciones dicen lo mismo o que una ecuación es proporcional a la otra, es decir, tenemos dos veces la misma ecuación.
Veamos un ejemplo:
1) 2x+3y=15
    2x+3y=15
2) 2x+3y=15
    4x+6y=30
En el ejemplo (2) tenemos que la segunda ecuación es la misma, pero multiplicada por 2, entonces si dividimos toda la ecuación por 2, obtendremos de nuevo que tengamos dos ecuaciones idénticas.
En este caso el sistema se llamará compatible determinado, porque tiene soluciones, pero éstas son infinitas.
MÉTODOS DE RESOLUCIÓN DE SISTEMAS DE ECUACIONES
Método de sustitución
Este método de resolución de un sistema de ecuaciones consiste en despejar una incógnita en una de las ecuaciones y sustituir en la otra.
Describamos los pasos que conviene dar para aplicar este método:
1º. Se despeja una incógnita en una de las ecuaciones.
2º. Se sustituye la expresión de esta incógnita en la otra ecuación, obteniendo una ecuación con una sola incógnita.
3º. Se resuelve esta ecuación.
4º. El valor obtenido se sustituye en la ecuación en la que aparecía la incógnita despejada.
5º. Se ha obtenido, así, la solución.
Método de igualación
Éste método consiste en despejar la misma incógnita en ambas ecuaciones e igualar las expresiones resultantes.
Describamos los pasos que conviene dar para aplicar este método:
1º. Se despeja la misma incógnita en ambas ecuaciones.
2º. Se igualan las expresiones, lo cual da lugar a una ecuación con una incógnita.
3º. Se resuelve esta ecuación.
4º. El valor obtenido se sustituye en cualquiera de las dos expresiones en las que aparecía despejara la otra incógnita.
5º. Se ha obtenido así la solución.
Método de reducción
Este método consiste en preparar las dos ecuaciones para que una de las incógnitas tenga el mismo coeficiente en ambas. Restando las ecuaciones resultantes, miembro a miembro, se obtiene una ecuación con sólo una incógnita (se ha reducido el número de incógnitas).
Resumamos los pasos que debemos dar:
1º. Se preparan las dos ecuaciones (multiplicándolas por los números que convenga).
2º. Al restarlas desaparece una de las incógnitas.
3º. Se resuelve la ecuación resultante.
4º. El valor obtenido se sustituye en una de las iníciales y se resuelve.
5º. Se obtiene, así, la solución.
Reglas prácticas para resolver sistemas de ecuaciones lineales
Si una o las dos ecuaciones del sistema tienen un aspecto externo complicado, se empieza por “arreglarlas” hasta llegar a la expresión ax+by=c.
Recordemos las ventajas de cada uno de los tres métodos aprendidos:
* El método de sustitución es especialmente útil cuando una de las incógnitas tiene coeficiente 1 ó -1 en alguna de las ecuaciones.
* El método de reducción es muy cómodo de aplicar cuando una de las incógnitas tiene el mismo coeficiente en las dos ecuaciones o bien sus coeficientes son uno múltiplo del otro.
* Si queremos evitar las operaciones con fracciones, podemos conseguirlo aplicando dos veces el método de reducción para despejar, así, una y otra incógnita. Este consejo es especialmente útil cuando los coeficientes de las incógnitas son números grandes.




En el ejemplo (1) tenemos que las dos ecuaciones son idénticas.

viernes, 2 de diciembre de 2011

OPERACIONES CON POLINOMIOS

MatLab nos brinda una serie de funciones para trabajar con los polinomios.
Aquí los polinomios se representan como vectores, por ejemplo.
                                       p(x) = 8x4 - 5x3 + x2 + 3x + 4
En Matlab debemos ingresar a p de la siguiente manera
                                    >> p = [ 8 - 5 1 3 4 ] p = 8 - 5 1 3 4
Observe que Matlab al responder no reescribe los corchetes. De ahora en adelante utilizaremos los términos vector y polinomio indistintamente para referirnos al mismo concepto.
FUNCIONES BÁSICAS:
Roots (p): Obtiene raíces de un polinomio dado.
 Calcula las raíces de un polinomio cuyos coeficientes son los elementos del vector p.
Si p tiene N+1 componentes, el polinomio es p(1)*X^N + ... + p(N)*X + p(N+1).
>> q = [ 1 - 5 6 ] q = 1 - 5 6
>> roots(q) ans = 3 2
Poly (v): Construye un polinomio a partir de sus raíces
Retorna un vector (polinomio) cuyos elementos son los coeficientes del polinomio cuyas raíces son los elementos de v.
Puede apreciarse que roots y poly son funciones inversas.
>> v = roots(q) v = 3 2
>> q =poly(v) q = 1 - 5 6
O si desea verlo un poco más claro note que:
>> poly(roots(q)) ans = 1 - 5 6
>> roots(poly(v)) ans = 3 2
Polyval (p, x): Evalúa un polinomio en un punto dado
Si p tiene N+1 elementos, retorna el valor del polinomio al evaluarlo en x.
Es decir y = p(1)* xN + p(2)*xN-1 + ... + p(N)*x + p(N+1)
Conv (p, q): Multiplicación de polinomios conv viene de convolución, en el caso de los vectores convolucionar dos vectores es equivalente a multiplicarlos.
El resultado es un vector de longitud = longitud(p)+longitud(q)-1
Veamos un ejemplo:
Sean p(x) = 2x + 1 y q(x) = 3x + 4
>> p = [ 2 1 ] p = 2 1
>> q = [ 3 4 ] q = 3 4
>> r = conv(p, q) r = 6 11 4
Observe que retorna el polinomio r(x) = 6x2 + 11x + 4, y que la longitud del vector resultado es
3 = 2 + 2 -1.
Deconv (p, q): División entre polinomios. Se utiliza de la siguiente manera
>> [Q, R] = deconv(p, q);
El resultado de la división de p por q queda almacenado en la variable Q, y el resto de esta operación en la variable R.
Ejemplo:
>> r r = 6 11 4
>> p p = 2 1
>> [Q, R] = deconv(r, p);
>> Q Q = 3 4
>> R R = 0 0 0
Verifiquemos este resultado con la fórmula r = Q*p + R:
>> conv(Q, p) + R ans = 6 11 4
>> r r = 6 11 4
Suma y resta:
Uno desearía poder sumar y restar polinomios de manera ágil y sencilla, lo óptimo sería utilizar los
símbolos + y -, nada más.
Veamos que sucede:
>> p = [ 2 1 0 5 ];
>> q = [ 3 4 ];
>> p + q;
??? Error using ==> + Matrix dimensions must agree.
En castellano: Error usando ==> + Las matrices deben tener la misma dimensión.
Lo anterior nos informa que ocurrió un error al momento de utilizar el símbolo +, lo que sucede es que
estos vectores (los vectores son un caso particular de matriz) no poseen la misma dimensión (cantidad
de elementos).
La primer opción que tenemos para sortear este obstáculo es completar el vector p o q con tantos ceros
a la izquierda como sean necesarios, de esta manera conseguimos un par de vectores que continúan
representando los polinomios que teníamos inicialmente.
Nota: q(x) = 3x + 4 = 0x3 + 0x2 + 3x + 4 = 0xn + 0xn-1 +... + 0x3 + 0x2 + 3x + 4
En nuestro caso:
>> p = [ 2 1 0 5 ];
>> q = [ 0 0 3 4 ];
>> p + q ans = 2 1 3 9
Otra posibilidad es crear una función que suma o resta correctamente, sin necesidad de que nosotros
modifiquemos manualmente los vectores; si bien es una tarea más compleja, el esfuerzo se hará una
única vez y luego siempre utilizaremos la función creada, además es una buena excusa para ponrese a
programar. La idea es que esta función haga el "relleno" con ceros apropiado y nos retorne la suma o
resta.
Factorización:
Supongamos que queremos factorizar un cierto polinomio p dado por la siguiente ecuación:
p(x) = (x2 + 1) (x7- (1 + i)x4 + ix)
Vamos a obtener todas las raíces de este polinomio.
La tarea de mostrar la factorización del polinomio, previo cálculo de sus raíces se puede efectuar
mediante una función.
Comenzamos introduciendo el polinomio, observe que es un producto de dos polinomios y recuerde
que el producto se realiza con la función conv y que los polinomios se representan con vectores.
(x2 + 1) 􀃆 [1 0 1]
(x7- (1 + i)x4 + ix) 􀃆 [1 0 0 -1-i 0 0 i]
Con la siguiente instrucción representamos a p.
>> p = conv([ 1 0 1 ], [ 1 0 0 -1-i 0 0 i 0 ]);
Ahora obtengamos sus raíces.
>> roots(p) ans = - 0.5000 - 0.8660i 0.0000 - 1.0000i - 0.0000 - 1.0000i
1.0000 + 0.0000i 0.8660 + 0.5000i - 0.8660 + 0.5000i
0.0000 + 1.0000i - 0.5000 + 0.8660i 0