viernes, 26 de abril de 2013

Calcular derivadas en MATLAB


Comenzaremos por definir una variable simbólica, puesto que MATLAB no soporta por default el cálculo simbólico y para ello hay que hacer uso del Symbolic Math Toolbox, específicamente usando la instrucción "syms", por ejemplo si en nuestros procedimientos usaremos la variable "x", entonces la definiremos como sigue:

>> syms x

Con lo anterior Matlab crea una variable llamada "x" de tipo simbólico y ahora podemos ejecutar las operaciones de cálculo que nos interesan.

Derivación

Para calcular la derivada de una función se utiliza el comando "diff". Supongamos que necesitamos obtener la derivada de la función $y=x^2+3x-1$, entonces la instrucción en MATLAB sería de la siguiente manera:

>> diff(x^2+3*x-1,x)
ans =
                                    2 x + 3

Como puede apreciarse, Matlab nos devuelve el resultado esperado. veamos algunos ejemplos más:

>> diff(sin(x),x)
ans =
                                    cos(x)
>> diff(tan(x)-1,x)
ans =
                                            2
                                  1 + tan(x)
>> diff(cot(x),x)
ans =
                                            2
                                 -1 - cot(x)
>> diff(x*log(x),x)
ans =
                                  1 + log(x)




Inversa de una matriz en MATLAB


Comenzaremos por definir una matriz A de 2x2.

>> A=[1 5;-3 2]

A =

     1     5
    -3     2

Enseguida, lo único que debemos hacer es utilizar el comando "inv" y Matlab nos devolverá en la línea de comandos la matriz inversa de A, claro, siempre y cuando la matriz sea invertible.

>> Inv_A=inv(A)

Inv_A =

    0.1176   -0.2941
    0.1765    0.0588

En este caso hemos guardado en "Inv_A" la matriz inversa de A. 

A modo de comprobación, recordar que dada una matriz $A$, el producto $A\,A^{-1}=I$, donde $I$ es la matriz identidad de las dimensiones correspondientes. Ejecutaremos este producto en la línea de comandos y podremos comprobar que efectivamente Matlab nos devuelve ese resultado:

>> A*Inv_A

ans =

    1.0000    0.0000
         0    1.0000





lunes, 22 de abril de 2013

Método de bisección en MATLAB


Entrada en revisión, gracias por vuestra compresión.



El clásico "hola mundo" en MATLAB


Veremos como imprimir la cadena de caracteres "Hola mundo" en la linea de comandos al ejecutar el "script". Para ello abrimos un nuevo "script" y le guardamos bajo el nombre que querramos, dentro de este pondremos las siguientes lineas:


clear;
clc;

disp('Hola mundo')

Las primeras dos lineas únicamente sirven para limpiar el "Command window" y borrar las variables existentes, no son necesarias. Y bueno, lo único que se hace es imprimir con el comando "disp" una cadena de texto entre comillas simples para que MATLAB lo interprete como tal.

domingo, 21 de abril de 2013

Número Par e Impar en MATLAB


Este sencillo "script" permite identificar si un número que se ha ingresado es "par" o "impar", para ello hace uso del operador "rem", el cual calcula el residuo de la división entera entre dos números dados, la estructura básica de rem es la siguiente:

>> rem(a,b)

Lo anterior calcula como ya os he mencionado el residuo de la división $a/b$. Con ello y sabiendo que para cualquier número par divido entre "2" necesariamente el residuo es cero, y para los impares un numero diferente de cero, siendo así podemos implementar el código siguiente:


%Numeros Pares e Impares 

clear;clc;

a=input('Escriba un número: ');

if rem(a,2)==0
disp('El número es Par')
else
disp('El número es Impar')
end


Además de la anterior, existe otra manera de determinar si un número es par, esta se basa en la idea de las potencias pares e impares de la unidad negativa, para lo cual se cumple que:

$$(-1)^m=1$$
$$(-1)^n=-1$$

Si y sólo si $m$ es un número entero par positivo y $n$ un impar. Por lo cual podemos utilizar también el siguiente código:


N=input('Escriba un número: ');

if ((-1)^N) == 1
disp('Número Par');
else
disp('Número Impar');
end

Operaciones básicas con matrices en MATLAB


Antes de comenzar se deben tener en cuenta las propiedades básicas de las matrices y todas esos fundamentos que alguna vez se aprendieron en el curso de precálculo o de álgebra lineal.

Bueno, considerando que se han tomado las precauciones necesarias, comenzaremos por definir dos matrices A y B, ambas con las mismas dimensiones, usaremos el caso más sencillo (matrices de 2x2). Sean entonces A y B las que se definen enseguida:

>> A=[-1 3;2 5]

A =

    -1     3
     2     5

>> B=[0 2;4 1]

B =

     0     2
     4     1



+++ SUMA DE MATRICES +++

Calcular la suma de ambas matrices en Matlab es tan sencillo como solo adicionar el operador  "+" entre el nombre de ambas matrices, tal como se muestra enseguida:


>> A+B

ans =

    -1     5
     6     6


Incluso podemos guardar la matriz resultante en una nueva variable, por ejemplo:

>> Suma=A+B

Suma =

    -1     5
     6     6



--- RESTA DE MATRICES ---

Como posiblemente se intuye, la ejecución de la resta es similar a la suma, claro recordando que A-B difiere de B-A, tal como se muestra:

>> Resta1=A-B

Resta1 =

    -1     1
    -2     4


>> Resta2=B-A

Resta2 =

     1    -1
     2    -4


*** MULTIPLICACIÓN DE MATRICES ***

Creo que ya resulta un poco obvio que para efectuar la multiplicación de matrices habrá que usar el operador "*" tal como se hizo para la suma y resta, veamos el ejemplo:

>> Mult=A*B

Mult =

    12     1
    20     9

^^^ POTENCIACIÓN ^^^

Para poder elevar una matriz a una potencia determinada habrá de recordarse que está debe ser cuadrada, puesto que implica una multiplicación sucesiva por ella misma. La manera de indicar a Matlab que necesitamos elevar a una potencia a una matriz determinada es usando el operador de potenciación "^" tal como si fuese un numero cualesquiera, veamos algunos ejemplos:


>> Pot2=A^2

Pot2 =

     7    12
     8    31

>> Pot7=A^7

Pot7 =

       27089       93369
       62246      213827



Con esto se concluye esta entrada de operaciones básicas, posteriormente se verá como calcular determinantes e inversa de una matriz.

Ingresar una matriz en MATLAB



Es bien sabido que Matlab basa sus cálculos en matrices, de hecho de ahí su nombre. Una forma de ingresar una matriz en la "ventana de comandos" de Matlab es la siguiente:

>> A=[1 -2 3;2 3 9;-10 0 5]

A =

     1    -2     3
     2     3     9
   -10     0     5


La instrucción anterior nos guarda en la variable A una matriz de 3x3 en este caso y nos arroja un resultado como el mostrado. Podemos ahora definir una nueva matriz B de igual dimensión que A, por ejemplo:


>> B=[5,3,1;-8,13,7;9,-1,0]

B =

     5     3     1
    -8    13     7
     9    -1     0

Nótese que la manera de ingresar la matriz difiere un poco, de lo cual podemos intuir que la separación entre elementos de una misma fila podemos hacerla mediante "espacios" o bien poniendo "comas" entre cada uno de ellos, y claro, para insertar una nueva fila es necesario  escribir el punto y coma como se ve para cada caso.





viernes, 19 de abril de 2013

Ciclo for en MATLAB


La sintaxis general de un bucle for se muestra enseguida:

for i=inicio:incremento:fin
   % Instrucciones...
end

El valor inicio es a partir del cual se ejecutará el ciclo, el incremento es la
cantidad que varía en cada paso de ejecución, y el valor de final establece el
último valor que  tomará el ciclo.

El siguiente código muestra un ciclo for muy básico, el cual simplemente muestra
en consola el valor actual adquirido por la variable.

for i=1:10
   fprintf('Valor actual: %g \n',i);
end

Cuando no se especifica el incremento, como el caso anterior, MATLAB asume que es unitario.

Es posible utilizar ciclos for anidados, por ejemplo para cuando se requiere
recorrer una matriz en sus dos dimensiones y ejecutar operaciones elemento
por elemento. Véase el siguiente ejemplo:

A=round(rand(5)*10);
for i=1:5
   for j=1:5
       disp(A(i,j));
   end
end

Condicional IF en MATLAB


La sentencia if se utiliza  como bifurcación simple por sí sola, es decir, en aquellas situaciones en las cuales se requiera evaluar solamente una condición, por ejemplo, suponga que tiene dos números a y b y necesita comprobar si son iguales y ejecutar una acción, para ello bastaría con una sentencia if simple:

if a==b
   disp('a es igual a b');
end

A  diferencia del caso anterior hay situaciones que requieren la ejecución de una acción cuando la condición se cumpla y de otra en caso contrario, entonces puede utilizarse una bifurcación doble formada por las sentencias  if-else. Retomando el ejemplo para la bifurcación if simple, podríamos modificarlo de tal manera que envíe también un mensaje (ejecute una acción) para cuando la condición no se cumple:

if a==b
   disp('a es igual a b');
else
   disp('a es diferente de b');
end

Ahora imagine que para los ejemplos anteriores  se necesita especificar si  a=b, si a>b o bien si a<b, lo cual implicaría tener una sentencia de selección múltiple if-elseif-else que permite escoger entre varias opciones, evaluándose en orden descendente, por ejemplo refiérase a la siguiente estructura:

if cond1
   % Instrucciones
elseif cond2
   % Instrucciones
elseif cond3
   % Instrucciones
   .
   .
   .
elseif condN
   % Instrucciones
else
   % Instrucciones
end

MATLAB evalúa primeramente la condición 1 contenida en la sentencia if (cond1) y en el caso de no cumplirse evalúa la siguiente condición de forma sucesiva (cond2, cond3, …); finalmente y en el caso de que ninguna de las opciones evaluadas se cumpla, se ejecuta la instrucción contenida en la sentencia else. A continuación se muestra el ejemplo de una bifurcación múltiple para la situación descrita al principio:

if a==b
   disp('a es igual que b');
elseif a>b
   disp('a es mayor que b');
elseif a<b
   disp('a es menor que b');
end