Matlab Dia2
Matlab Dia2
Matlab Dia2
- Programacin en MATLAB.
- Ejercicios.
Matemtica Simblica
El toolbox de matemtica simblica es una coleccin de
herramientas para MATLAB que se usan para manipular y
resolver expresiones simblicas.
Las expresiones simblicas son cadenas de caracteres, o
arreglos de cadenas de caracteres que representan
nmeros, funciones, operadores y variables.
f1 = '1/(2*x^2n)'
f2 = '1/sqrt(2*x)'
f3 = 'cos(x^2) - sen(2*x)'
M = sym('[a, b; c, d]')
M=
[ a, b]
[ c, d]
ans =
a*d-b*c
Variables simblicas
El comando symvar, se utiliza para averiguar la variable
simblica en la expresin.
symvar('a*x+y')
symvar('a*t+s/(u+3)')
symvar('sin(omega)')
symvar('3*i+4*j')
symvar('y+3*s', 't')
a = sym('a');
b = sym('b');
x = sym('x');
f = a*x^2/(b-x)
[n m] = numden(f)
[n m] = numden(f)
clear;
display('suma'); f+g
display('resta');f-g
x = sym('x');
f = 2*x^2+3*x-5
g = x^2-x+7
display('multiplicacion');f*g
display('division'); f/g
suma
3*x^2+2*x+2
resta
x^2+4*x-12
multiplicacin
(2*x^2+3*x-5)*(x^2-x+7)
divisin
(2*x^2+3*x-5)/(x^2-x+7)
Sustitucin de variables
Para remplazar el valor de una variable por otra
variable o nmero, utilizamos el comando subs()
a = sym('a');
b = sym('b');
c = sym('c');
x = sym('x');
f = a*x^2+b*x+ c
Poniendo la funcin
char(ans), nos devolver el
valor nuevamente en string
Imprimir en consola
Buscar un index
Declaracin de un campo de
tipo cadena
Declaracin de un campo de
tipo numerico
Declaracin una
estructura
Estructuras anidadas
Un Array de 1 x 2
Aadir un
elemento al
array
Array 1 x 3
Conversin a struct
De vuelta a celdas 3
x1
Transpuesta a 1 x 3
disp
Esta funcin permite imprimir en pantalla un
mensaje de texto o el valor de una matriz,
pero sin imprimir su nombre. En realidad,
disp siempre imprime vectores y/o matrices:
las cadenas de caracteres son un caso
particular de vectores.
Ejemplo: disp('El programa ha terminado');
Programacin- ciclos
Sentencia If:
En su forma ms simple, la sentencia if se
describe como sigue:
if condicion
sentencias
End
Observe que la condicin no va encerrada
entre parntesis.
bloque 2
elseif condicion3
bloque 3
else % opcin por defecto para cuando no se cumplan las otras
condiciones.
bloque 4
end
Ejemplo de uso de if
nro = input('Ingrese un nmero positivo: ');
if mod(nro,2)==0 disp('es par');
else disp('es impar');
end
Ciclo for
En este tipo de ciclo, ya se sabe cuntas veces se
realizar el bucle, es decir, cuntas veces se ejecutar
el conjunto de instrucciones dentro del ciclo. La
cantidad de veces est determinada en la seccin de
decisin del ciclo. La sintaxis del ciclo for en Matlab es
la siguiente:
for variable=valor_inicial:incremento:valor_final
conjunto_sentencias
end
suma=suma+i*x^(i-1);
end
disp('El valor pedido es')
disp(suma)
Ejemplos
Ciclo while
En este tipo de ciclo, NO se sabe cuntas veces se
realizar el bucle, es decir, cuantas veces se
ejecutar el conjunto de instrucciones dentro del
ciclo. La cantidad de veces NO est determinada en
la seccin de decisin del ciclo. En esta seccin se
determina la condicin, que deber ser verdadera,
para que el ciclo siga funcionando. La sintaxis del
ciclo while en Matlab es la siguiente:
while condicion
sentencias
end
Ciclo While
Las sentencias se siguen ejecutando mientras haya
elementos distintos de cero en condicin, es decir,
mientras haya algn o algunos elementos true. El
bucle se termina cuando todos los elementos de
condicin son false (es decir, cero).
%escribe nmeros
menores a 5
a=3;
while a < 5
disp ('a es menor que 5
ya que vale')
disp (a)
a = a + 1;
end
switch
Esta sentencia realiza la funcin anloga a un conjunto
if...elseif concatenados. Su forma general es:
switch switch_expresion
case case_expr1,
bloque 1
case {case_expr2, case_expr3, case_expr4, ...},
bloque 2
...
otherwise,
bloque 3
end
Construccin de funciones
La primer lnea de un archivo llamado ejemplo.m que
define una funcin tiene la forma:
function [lista de valores de retorno] = ejemplo (lista
de argumentos) donde ejemplo es el nombre de la
funcin.
Entre corchetes y separados por coma van los valores
de retorno (siempre que haya ms de uno), y entre
parntesis tambin separados por comas los
argumentos.
Ejemplo de funciones
% funcin que retorna la divisin y el resto de
la misma de dos nmeros dados
%USO:
function [] = factorial(n);
if n < 0
disp('Ingrese un nmero positivo !')
return;
end;
if n==0 | n==1
disp('El factorial de ');
disp(n);
disp('es 1');
return;
end;
mult = 1;
for i = 1:n;
mult = mult * i;
end;
disp('El factorial de '); disp(n); disp('es: '); disp(mult);
anidada
Formato de datos:
%d Enteros.
%f Reales con punto fijo.
%e Reales con formato exponencial.
Ejemplo:
Creamos un fichero ASCII de nombre resultados que
contiene los valores de la
funcin exponencial para valores de la variable entre 0 y 1
separados una dcima y lo representamos en la pantalla.
>>x=0:.1:1
>>y=[x;exp(x)];
>>fid=fopen(resultado.txt,w);
>> fprintf(fid,%6.2f %12.8f \n, y);
Comando fscanf
La lectura de datos a partir de un fichero ASCII se realiza
mediante los
comandos:
[A,cont]=fscanf(fid,formato) que lee datos con el formato
especificado del fichero abierto con el identificador fid, en
un vector columna de nombre A. cont es el nmero de datos
ledos.
[A,cont]=fscanf(fid,formato,size) que lee datos con el
formato especificado del fichero abierto con el identificador
fid y los escribe en la matriz A de tamao size. cont es el
nmero de datos ledos.
Ejemplo:
Se supone que en la carpeta de trabajo de Archivos: que yo
genere, se encuentra un archivo, de nombre datos.txt, cuyo
contenido es:
12345
6 7 8 9 10
>>fid=fopen(datos.txt,r)
>>[A,cont]=fscanf(fid,%d)
La salida es el vector columna de contenido:1 2 3 4 5 6 7 8 9
10 y cont=10.
Otra posibilidad:
>>[A,cont]=fscanf(fid,%d,[2,5])
A=
13579
2 4 6 8 10
cont=10
Otras posibilidades:
>>[A,cont]=fscanf(fid,%d,[3,3])
>>[A,cont]=fscanf(fid,%d,[4,4])
>>[A,cont]=fscanf(fid,%d,[4,inf])
>> %se est fijando como nmero de columnas de la matriz el
valor mnimo que permita la lectura de todos los datos del
fichero. La salida es la misma que en el caso anterior.
Esto nos obliga a que los nmeros estn definidos en Excel como en Matlab, por
ejemplo, los decimales con puntos y no con comas.
Ejercicios
1. Dada una recta ax+by+c=0, crear un programa que nos diga si un
punto (x,y) pertenece a dicha recta, est por encima o por debajo de
ella.
2. Suponga que en un estado de Estados Unidos la edad legal para beber
es 21. Escriba y pruebe una funcin para determinar si una persona es lo
suficientemente madura para beber.
3. Crear un archivo de funcin cuya entrada sea una matriz la x y cuyas
salidas sean la media de x y su desviacin tpica.
4. En un comercio se venden cajas de tornillos. Su precio depende del
nmero de cajas comprados: hasta 100 cajas el precio de la caja es de 2
euros, desde 101a 200 cajas el precio es 1,5 euros y, a partir de 201
cajas el precio es de 1 euro. Elaborar un programa que pregunte el
nmero de cajas demandadas y que indique el precio de la unidad y el
coste total del pedido.