1 of 75

Programación para ingeniería.

Reinel Tabares Soto.

Maestría en Ingeniería.

Cel: 3103475798

Correo: rtabares@autonoma.edu.co

Universidad Autónoma de Manizales.

Manizales 2023.

1

2 of 75

  1. Introducción.
  2. Números y operaciones.
  3. Vectores.
  4. Matrices.
  5. Manejo de archivos.
  6. Polinomios.
  7. Variables simbólicas.
  8. Cálculo vectorial.
  9. Solución de sistemas de ecuaciones no lineales.
  10. Algunas funciones de optimización.
  11. Graficas en 2D y 3D.
  12. Estructuras de control condicionadas.
  13. Datos de entrada y salida, ficheros y funciones.
  14. Análisis numérico.
  15. Ecuaciones diferenciales.
  16. Transformadas.
  17. Simulink.
  18. Guide.
  19. Toolboxes (Optimization, Curve Fiting, Classification Learner, System Identification, PDE, Image Acquistion).
  20. Comunicación guide, workspace, simulink.
  21. Python
  22. Aplicaciones en Esteganografía e Inteligencia Artificial

2

CONTENIDO.

Maestría en Ingeniería – Programación para ingeniería

3 of 75

Introducción.

3

Maestría en Ingeniería – Programación para ingeniería

Lenguajes de programación:

4 of 75

Introducción.

4

  • ¿Qué es Matlab?, MATrix LABoratory

  • Es una plataforma que utiliza una adaptación del lenguaje C para realizar cálculos numéricos con vectores y matrices. Como caso particular puede también trabajar con números escalares, tanto reales como complejos.

  • Cuenta con paquetes de funciones especializadas.

Maestría en Ingeniería – Programación para ingeniería

5 of 75

Introducción.

5

  • Command Windows: Donde se ejecutan todas las instrucciones y programas. Se escribe la instrucción o el nombre del programa y se da a Enter.

  • Command History: Muestra los últimos comandos ejecutados en Command Windows. Se puede recuperar el comando pulsando las teclas de arriba o abajo en el Command Windows.

  • Current directory: Situarse en el directorio donde se va a trabajar.

  • Help: (también se puede usar desde Command Windows) .

  • Workspace: Para ver las variables que se están usando, el tipo y sus dimensiones (si son matrices) .

  • Editor del Matlab: Todos los ficheros de comandos Matlab deben de llevar la extensión .m y nombrarlos sin espacios.

Maestría en Ingeniería – Programación para ingeniería

Elementos básicos del escritorio de Matlab

6 of 75

Introducción.

6

Maestría en Ingeniería – Programación para ingeniería

Elementos básicos del escritorio de Matlab

7 of 75

Introducción.

7

  • Se pueden recuperar instrucciones con las teclas ↓↑.

  • Se puede mover por la línea de comandos con las teclas → ←. Ir al comienzo de la línea con la tecla Inicio y al final con Fin. Con Esc se borra toda la línea.

  • Se puede cortar la ejecución de un programa con Ctrl+C

Maestría en Ingeniería – Programación para ingeniería

Algunos comentarios sobre la ventana de comandos

8 of 75

Introducción.

8

Maestría en Ingeniería – Programación para ingeniería

Tipos de datos:

Data Type

Description

int8

8-bit signed integer

uint8

8-bit unsigned integer

int16

16-bit signed integer

uint16

16-bit unsigned integer

int32

32-bit signed integer

uint32

32-bit unsigned integer

int64

64-bit signed integer

uint64

64-bit unsigned integer

single

single precision numerical data

double

double precision numerical data

logical

logical values of 1 or 0, represent true and false respectively

char

character data (strings are stored as vector of characters)

cell array

array of indexed cells, each capable of storing an array of a different dimension and data type

structure

C-like structures, each structure having named fields capable of storing an array of a different dimension and data type

9 of 75

Introducción.

9

Maestría en Ingeniería – Programación para ingeniería

Ejemplo:

>> en8=int8(10);

>> en8s=uint8(10);

>> en16=int16(10);

>> en16s=uint16(10);

>> en32=int32(10);

>> en32s=uint32(10);

>> en64=int64(10);

>> en64s=uint64(10);

>> ps=single(3.2);

>> ps=double(3.2);

>> ch='s';

>> str='hola’;

>> strcat=('hola’, ‘rey’) %concatenar Strings

>> vect=[1 2 3];

>> persona=struct('nombre',{'rey','juan','cris'},'edad',{15,17,18});

>> myCell = {1, 2, 3;'text', rand(5,10,2), {11; 22; 33}};

>> realmin(‘double’) %valor más pequeño en double

>> realmax(‘simple’) %valor más grande en simple

>> intmin('int32')% valor más pequeño en int32

>> intmax('int32')% valor más grande en int32

>> ischar(ch)% Determina si el valor es char

>> isfloat(ps)% Determina si el valor es flotante

>> isinteger(en8)%Determina si el valor es entero

10 of 75

Introducción.

10

Maestría en Ingeniería – Programación para ingeniería

Conversión de tipos de datos:

Function

Purpose

char

Convert to character array (string)

int2str

Convert integer data to string

mat2str

Convert matrix to string

num2str

Convert number to string

str2double

Convert string to double-precision value

str2num

Convert string to number

native2unicode

Convert numeric bytes to Unicode characters

unicode2native

Convert Unicode characters to numeric bytes

base2dec

Convert base N number string to decimal number

bin2dec

Convert binary number string to decimal number

dec2base

Convert decimal to base N number in string

dec2bin

Convert decimal to binary number in string

dec2hex

Convert decimal to hexadecimal number in string

hex2dec

Convert hexadecimal number string to decimal number

hex2num

Convert hexadecimal number string to double-precision number

num2hex

Convert singles and doubles to IEEE hexadecimal strings

cell2mat

Convert cell array to numeric array

cell2struct

Convert cell array to structure array

cellstr

Create cell array of strings from character array

mat2cell

Convert array to cell array with potentially different sized cells

num2cell

Convert array to cell array with consistently sized cells

struct2cell

Convert structure to cell array

11 of 75

Introducción.

11

  • Set/Clear breakingpoint: Coloca o borra un punto de ruptura

en la línea en que está colocado el cursor.

  • Clear all breakingpoints:Borra todos los puntos de ruptura
  • Step: Avanza un paso en el programa .
  • Step in: Avanza un paso en el programa y si en ese paso se llama a una función, entra en dicha función .
  • Step: Avanza un paso en el programa y si en ese paso se llama a una función, NO entra en dicha función.
  • Continue: Continua ejecutando hasta el siguiente punto de ruptura .
  • Quit debugging: Termina la ejecución del debugger

Maestría en Ingeniería – Programación para ingeniería

Debugger

12 of 75

Números y operaciones.

12

No hace falta definir variables enteras, reales, entre otras. Como en otros lenguajes.

  • Números enteros : a=2
  • Números flotantes: x=2.32
  • Notación exponencial:

Máximo 19 cifras significativas

Maestría en Ingeniería – Programación para ingeniería

Datos numéricos:

Precisión y formatos: Por defecto tiene un formato corto, pero

se pueden usar otros.

>> format long (14 cifras significativas)

>> format short (5 cifras significativas)

>> format short e (notación exponencial)

>> format long e (notación exponencial)

>>format rat (aproximación racional ‘fracción’)

>> fomat bank (redondea a dos decimales)

 

13 of 75

Números y operaciones.

13

 

Maestría en Ingeniería – Programación para ingeniería

Datos numéricos:

14 of 75

Números y operaciones.

14

  • Suma: + , Resta: -

  • Multiplicación: * , División: /

  • Potencias: ^

  • Orden de prioridad: signos de agrupación, funciones matemáticas, potencias y raíces, multiplicación y división, por último sumas y restas. Usar () para cambiar la prioridad.

Maestría en Ingeniería – Programación para ingeniería

Operaciones aritméticas elementales:

15 of 75

Números y operaciones.

15

 

Maestría en Ingeniería – Programación para ingeniería

Funciones de Matlab:

16 of 75

Vectores.

16

  • Vectores fila; elementos separados por blancos o comas

>> v =[2 3 4]

  • Vectores columna: elementos separados por punto y coma (;)

>> w =[2;3;4;7;9;8]

  • Dimensión de un vector w: length(w)

Generación de vectores fila:

  • Especificando el incremento h de sus componentes v=a:h:b
  • Especificando su dimensión n: linspace(a,b,n) (por defecto n=100)
  • Componentes logarítmicamente espaciadas logspace(a,b,n) (n puntos logarítmicamente espaciados entre 10^a y 10^b. Por defecto n=50)

Maestría en Ingeniería – Programación para ingeniería

Definición de vector:

17 of 75

Vectores.

17

v: vector, k: escalar:

  • v+k adición o suma
  • v-k sustracción o resta
  • v*k multiplicación
  • v/k divide cada elemento de v por k
  • k./v divide k por cada elemento de v
  • v.^k potenciación de cada componente de v a k
  • k.^v potenciación k elevado a cada componente de v

Maestría en Ingeniería – Programación para ingeniería

Operaciones de un vector por un escalar:

18 of 75

Vectores.

18

v y w: vectores

  • sum(v) suma los elementos de un vector
  • prod(v) producto de los elementos de un vector
  • dot(v,w) producto escalar de vectores
  • cross(v,w) producto vectorial de vectores
  • mean(v) (hace la media)
  • norm(v) (norma de un vector)
  • diff(v) (vector cuyos elementos son la resta de los elemento de v)
  • [y,k]=max(v) valor máximo de las componentes de un vector (k indica la posición), min(v) (valor mínimo). El valor máximo de una matriz M se obtendría como max(max(M)) y el mínimo min(min(v))

Aplicadas algunas de estas funciones a matrices, realizan dichas operaciones por columnas.

Maestría en Ingeniería – Programación para ingeniería

Operaciones entre vectores:

19 of 75

Matrices.

19

  • No hace falta establecer de antemano su tamaño (se puede definir un tamaño y cambiarlo posteriormente).

  • Las matrices se definen por filas; los elementos de una misma fila están separados por blancos o comas. Las filas están separadas por punto y coma (;).

>>M=[3 4 5; 6 7 8; 1 -1 0]

  • Matriz vacía: M=[ ];
  • Información de un elemento: M(1,3), de una fila M(2,:), de una columna M(:,3).
  • Cambiar el valor de algún elemento: M(2,3)=1;
  • Eliminar una columna: M(:,1)=[ ], una fila: M(2,:)=[ ];

Maestría en Ingeniería – Programación para ingeniería

Definición de matriz:

20 of 75

Matrices.

20

  • Generación de una matriz de ceros, zeros(n,m)
  • Generación de una matriz de unos, ones(n,m)
  • Inicialización de una matriz identidad eye(n,m)
  • Generación de una matriz de elementos aleatorios rand(n,m)
  • Concatenar matrices: [X Y] columnas, [X; Y] filas
  • Matrices multidimensionales a(:,:,1)=[1 2; 3 4] a(:,:,2)=[5 6;7 8]

Maestría en Ingeniería – Programación para ingeniería

Generación de matrices

21 of 75

Matrices.

21

  • + adición o suma
  • – sustracción o resta
  • * multiplicación matricial
  • .* producto elemento a elemento
  • ^ potenciación
  • .^ elevar a una potencia elemento a elemento
  • / división-derecha %M/W M*inv(W)
  • \ división-izquierda %M\W inv(M)*W
  • ./ y .\ división elemento a elemento
  • matriz traspuesta: B=A’ (en complejos calcula la traspuesta conjugada, sólo la traspuesta es B=A.’)

Maestría en Ingeniería – Programación para ingeniería

Operaciones entre matrices:

22 of 75

Matrices.

22

  • [n,m]=size(M) da el número de filas y columnas
  • matriz inversa: B=inv(M)
  • Determinante: B=det(M)
  • rango: rank(M)
  • diag(M): Obtención de la diagonal de una matriz.
  • sum(diag(M)) calcula la traza de la matriz A.
  • diag(M,k) busca la k-ésima diagonal.
  • norm(M) norma de una matriz (Calcula la norma euclidiana de la matriz A).
  • flipud(M) reordena la matriz, haciendo la simétrica respecto de un eje horizontal.
  • fliplr(M) ) reordena la matriz, haciendo la simétrica respecto de un eje vertical
  • [V, landa]=eig(M) da una matriz diagonal landa con los autovalores y otra V cuyas columnas son los autovectores de M
  • cat(dim,a,b)= concatena matrices en cualquier cantidad de dimensiones

Maestría en Ingeniería – Programación para ingeniería

Funciones de Matlab para matrices:

23 of 75

Matrices.

23

Maestría en Ingeniería – Programación para ingeniería

Solución de sistemas de ecuaciones lineales:

 

 

 

  • Ejemplo: Resuelva el sistema de ecuaciones

24 of 75

Manejo de archivos.

24

Maestría en Ingeniería – Programación para ingeniería

Guardar en ficheros y recuperar datos:

  • save nombre_fichero nombre_matriz1, nombre_matriz2

  • load nombre_fichero nombre_matriz1, nombre_matriz2

  • save nombre_fichero nombre_matriz1 –ascii (guarda 8 cifras decimales)

  • save nombre_fichero nombre_matriz1 –ascii –double (guarda 16 cifras decimales)

25 of 75

Manejo de archivos.

25

Maestría en Ingeniería – Programación para ingeniería

Lectura de archivos:

  • fopen(‘nombre o path’,’w 0 r’): abre o crea un archivo

  • importdata(filename, delimiterIn, headerlinesIn): importa datos de un archivo

  • feof (archivo): indica fin de archivo

  • fgets (archivo): lee una sola línea del archivo

  • fscanf(archivo, ‘%s,%d,%f….’): lee todo el archivo

  • fprintf(archivo, ‘información o %s,%f…..’,datos): Escribe en un archivo

26 of 75

Manejo de archivos.

26

Maestría en Ingeniería – Programación para ingeniería

Lectura de archivos alto nivel:

clc

clear all

close all

filename = 'prueba.txt';

delimiterIn = ' ';

headerlinesIn = 1;

A = importdata(filename,delimiterIn,headerlinesIn);

% View data

for k = [1:7]

disp(A.colheaders{1, k})

disp(A.data(:, k))

disp(' ')

end

27 of 75

Manejo de archivos.

27

Maestría en Ingeniería – Programación para ingeniería

Lectura de archivos bajo nivel:

clc

clear all

close all

%FORMA 1

z=fopen('prueba.txt'); % abrir archivo

while(~feof(z))% hacer lectura mientras no llegue al final

line= fgets(z)% Lectura de toda la linea

end

fclose(z); % cerrar archivo

%FORMA 2

z=fopen('prueba.txt'); % abrir archivo

M1=fscanf(z,'%s') % Lectura de todo el archivo

fclose(z); % cerrar archivo

28 of 75

Manejo de archivos.

28

Maestría en Ingeniería – Programación para ingeniería

Escritura de archivos:

% create a matrix y, with two rows

x = 0:10:100;

y = [x; log(x)];

% open a file for writing

fid = fopen('logtable.txt', 'w');

% Table Header

fprintf(fid, 'Log Function\n\n');

% print values in column order

% two values appear on each row of the file

fprintf(fid, '%f %f\n', y);

fclose(fid);

% display the file created

type logtable.txt

29 of 75

Polinomios.

29

Maestría en Ingeniería – Programación para ingeniería

 

Definición y funciones de polinomios:

30 of 75

Polinomios.

30

Maestría en Ingeniería – Programación para ingeniería

  • Calcular el valor de un polinomio p en un punto dado x: polyval

>>y=polyval(p,x)

  • Multiplicar y dividir polinomios: conv(p,q) y deconv(p,q)

  • Calcular el polinomio derivada: polyder(p)

  • Calcular la integral del polinomio: polyint(p)

  • Regresión polinomial por mínimos cuadrados: polyfit(x,y,n)

31 of 75

Variables simbólicas.

31

Maestría en Ingeniería – Programación para ingeniería

Matlab es una herramienta que trabaja con dos tipos de datos en general: vectorial y simbólica.

Vectorial: solo sirve para polinomios

Simbólica: sirve para cualquier tipo de función

Nota: las funciones que sirven para variables simbólicas no sirven para variables vectoriales y viceversa.

Tipos de variables en Matlab:

32 of 75

Variables simbólicas.

32

Maestría en Ingeniería – Programación para ingeniería

>>syms x y z %definición de variables simbólicas

>>y=x^2+5*x+6 %un ejemplo de función

>>diff(y) %deriva

>>diff(y,2) %segunda derivada

>>int(y) %integra

>>z=(x - 1)*(x - 2)*(x + 3)%polinomio literal

>>expand(z) %expande el polinomio

>>factor(y) %factoriza

>>pretty(y) %vuelve bonito los polinomios

>>simplify(z) %simplifica las expresiones

>>ezplot(z) %grafica

>>limit(log(x)/(sqrt(x)), x, inf) %calcular un limite

>>int(y,x,0,pi/2) %integrar con limites

>>solve(y==0) %resuelve una ecuación

>>eval(y) %evalúa la función definiendo su valor previo

>>solve('x-5+y=0','x’) %despeja x

>>subs(y,x,0) %substitución simbólica

Funciones para variables simbólicas:

33 of 75

Cálculo vectorial.

33

Maestría en Ingeniería – Programación para ingeniería

>>syms x y z % Definición de variables simbólicas

>>z=x^2+5*x*y^4+6*log(x*y^5) % Función escalar

>>diff(z,y) %deriva z con respecto a y

>>diff(z,x,2) %segunda deriva z con respecto a x

>>int(z,x) %integra

>>gradient(z) % vector gradiente

>>hessian(z) %matriz hessiana

>>f=[x*y*z, y^2, x+z]%Función vectorial

>>jacobian(f) %Matriz Jacobian

>>jacobian(gradient(z))%Otra forma de calcular Hessiana

Funciones:

34 of 75

Solución de sistemas de ecuaciones�No lineales.

34

Maestría en Ingeniería – Programación para ingeniería

%Sistema de ecuaciones no lineales

function [f]=noLineal(x)

f(1) = exp(-exp(-(x(1)+x(2)))) - x(2)*(1+x(1)^2);

f(2) = x(1)*cos(x(2)) + x(2)*sin(x(1)) - 0.5;

end

%Principal

clc

clear all

close all

x0=[1000 1000];

[x,fval,exitflag,output,jacobian] = fsolve('noLineal',x0);

Utilizando la función “fsolve”:

35 of 75

Solución de sistemas de ecuaciones�No lineales.

35

Maestría en Ingeniería – Programación para ingeniería

Utilizando la función “solve”:

clc

clear all

close all

syms x1 x2

f(1) = exp(-exp(-(x1+x2))) - x2*(1+x1^2);

f(2) = x1*cos(x2) + x2*sin(x1) - 0.5;

z=solve(f(1),f(2))

Nota: La función fsolve genera mejores criterios de convergencia que el solve .

36 of 75

Algunas funciones para �optimización.

36

Maestría en Ingeniería – Programación para ingeniería

  • fzero(‘nombre_funcion’,x0): Calcula el cero de una función más próximo al valor de la variable x0.

  • fminsearch(‘funcion’,x0): calcula el mínimo relativo de una función más próximo a x0.

  • fminbnd(‘funcion‘,a,b): calcula un mínimo de la función en el intervalo [a,b].

37 of 75

Gráficos en 2D y 3D.

37

Maestría en Ingeniería – Programación para ingeniería

  • plot() crea un gráfico a partir de vectores con escalas lineales sobre ambos ejes,

>> plot(X,Y,’opción’) (opción: permite elegir color y trazo de la curva).

  • hold on: permite pintar más gráficos en la misma figura (se desactiva con hold off).
  • grid activa una cuadrícula en el dibujo. Escribiendo de nuevo grid se desactiva.
  • loglog() escala logarítmica en ambos ejes, semilogx(): escala lineal en el eje de ordenadas y logarítmica en el eje de abscisas, semilogy(): escala lineal en abscisas y logarítmica en ordenadas.
  • subplot(n,m,k) subdivide una ventana gráfica se puede en n particiones horizontales y m verticales y k es la subdivisión que se activa.
  • polar(ángulo,r) para pintar en polares. polar(t,sin(2*t).*cos(2*t))
  • fill(x,y,’opción’) dibuja una curva cerrada y la rellena del color que se indique en ‘opción’ .

Gráficos en 2D:

38 of 75

Gráficos en 2D y 3D.

38

Maestría en Ingeniería – Programación para ingeniería

Elección de la escala de los ejes:

  • axis([x0 x1 y0 y1]) (2D), axis([x0 x1 y0 y1 z0 z1]) (3D)
  • axis auto: devuelve la escala a la de defecto
  • axis off: desactiva los etiquetados de los ejes desapareciendo los ejes, sus etiquetas y la malla, axis on: lo activa de nuevo
  • axis equal: los mismos factores de escala para los dos ejes
  • axis square: cierra con un cuadrado la región delimitada por los ejes de coordenadas actuales.
  • Para elegir las etiquetas y escala que aparecen en los ejes:

set(gca, ‘XTick’,-pi:pi/2:pi)

set(gca, ‘XTicklabel’,({‘-pi’,’-pi/2’,0,’pi/2’,’pi’})

39 of 75

Gráficos en 2D y 3D.

39

Maestría en Ingeniería – Programación para ingeniería

Funciones para añadir títulos:

  • title('título') añade un título al dibujo. Para incluir en el texto el valor de una variable numérica es preciso transformarla mediante :

int2str(n) convierte el valor de la variable entera n en carácter

num2str(x) convierte el valor de la variable real o compleja x en carácter. Ejemplo: title(num2str(x)).

  • xlabel(‘texto’) añade una etiqueta al eje de abscisas. Con xlabel off desaparece. Lo mismo ylabel(‘texto’) o zlabel(‘texto’).
  • text(x,y,'texto') introduce 'texto' en el lugar especificado por las coordenadas x e y. Si x e y son vectores, el texto se repite por cada par de elementos.
  • gtext('texto') introduce texto con ayuda del ratón.

40 of 75

Gráficos en 2D y 3D.

40

Maestría en Ingeniería – Programación para ingeniería

Funciones Matlab para gráficos 2D y 3D :

  • Imprimir gráficos: Print (botón File en ventana gráfica).
  • Guardar gráficos: Save (botón File en ventana gráfica): Se crea un fichero .fig que podrá volver a editarse y modificarse.
  • Exportar gráficos: Export (botón File en ventana gráfica).
  • figure(n): Llamar una nueva figura o referirnos a una figura ya hecha.
  • close all borra todas las figuras, close(figure(n)) una en concreto.
  • plot3 es análoga a su homóloga bidimensional plot.

>> plot3(X,Y,Z, ’opción’).

41 of 75

Gráficos en 2D y 3D.

41

Maestría en Ingeniería – Programación para ingeniería

Ejemplos:

  • Representar las funciones:

y1= sin(3πx)/e^x

y2=cos(3πx)/e^x

con x variando entre 0 y 3 π,obteniendo una única figura de la forma:

  • Graficar :

x=sin(t)

y=cos(t)

z=t con t=0:pi/50:10*pi;

42 of 75

Gráficos en 2D y 3D.

42

Maestría en Ingeniería – Programación para ingeniería

Representación grafica de superficies:

  • Creación de una malla a partir de vectores [X, Y]=meshgrid(x,y)
  • Gráfica de la malla construida sobre la superficie Z(X,Y): mesh(X,Y,Z), meshc(X,Y,Z) (dibuja además líneas de nivel en el plano z=0)
  • Gráfica de la superficie Z(X,Y): surf(X,Y,Z), surfc(X,Y,Z)
  • contour(X,Y,Z,v) y contour3(X,Y,Z,v) generan las líneas de nivel de una superficie para los valores dados en v. Para etiquetar las líneas, primero cs=contour(Z) (para saber los valores del contorno) y luego clabel(cs) o directamente clabel(cs,v)
  • surf – dibuja una superficie compuesta de parches de colores que dependen de la magnitud z
  • mesh – dibuja parches de superficies blancas que se definen por su contorno. Los colores de las líneas de los parches se determinan por la magnitud de z

43 of 75

Gráficos en 2D y 3D.

43

Maestría en Ingeniería – Programación para ingeniería

Ejemplo de una grafica de una superficie:

  • Graficar la superficie y curvas de nivel de la siguiente función

f(x,y)=16-x^2-y^2

>>x=-100:0.1:100 %vector de tabulación en el eje x

>>y=-100:0.1:100 %vector de tabulación en el eje y

>>[X Y]=meshgrid(x,y)%creación de la malla

>>Z=16-X.^2-Y.^2 %tabulación

>>meshc(X,Y,Z) % Grafica de la superficie

  • Graficar la siguiente función f(x)=x^2+5*x+6, calcular las raíces y los puntos críticos y mostrar los resultados en el grafico.

44 of 75

Gráficos en 2D y 3D.

44

Maestría en Ingeniería – Programación para ingeniería

Representación grafica de superficies:

Diferentes formas de representar los polígonos coloreados:

  • shading flat: sombrea con color constante para cada polígono.
  • shading interp: sombrea calculado por interpolación de colores entre los vértices de cada polígono
  • shading faceted: sombreado constante con líneas negras superpuestas (opción por defecto)
  • hidden off (desactiva la desaparición de líneas escondidas), hidden on (lo activa)

Manipulación de gráficos

  • view(azimut, elev), view([xd,yd,zd])
  • rotate(h,d,a) o rotate(h,d,a,o), ‘h’ es el objeto, ‘d’ es un vector que indica la dirección, ‘a’ un ángulo y ‘o’ el origen de rotación
  • En ventana gráfica: View (camera toolbar)

45 of 75

Gráficos en 2D y 3D.

45

Maestría en Ingeniería – Programación para ingeniería

Transformación de coordenadas :

  • [ang,rad]=cart2pol(x,y), de cartesianas a polares
  • [ang,rad,z]=cart2pol(x,y,z), de cartesianas a cilíndricas

  • [x,y]=pol2cart(ang,rad), de polares a cartesianas
  • [x,y,z]=pol2cart(ang,rad,z), de cilíndricas a cartesianas

  • [angx,angz,rad]=cart2sph(x,y,z), de cartesianas a esféricas
  • [x,y,z]=aph2cart(angx,angz,rad), de esféricas a cartesianas

Ejemplo: Tabular una circunferencia en coordenadas cartesianas, posteriormente pasarla a coordenadas polares y graficar.

46 of 75

Gráficos en 2D y 3D.

46

Maestría en Ingeniería – Programación para ingeniería

Creación de películas:

  • Una película se compone de varias imágenes (frames)
  • getframe se emplea para guardar todas esas imágenes. Devuelve un vector columna con la información necesaria para reproducir la imagen que se acaba de representar, por ejemplo con la función plot. Esos vectores se almacenan en una matriz M.
  • movie(M,n,fps) representa n veces la película almacenada en M a una velocidad de fps imágenes por segundo

x=0:0.01:2*pi; %vector de tabulación

for j=1:10

plot(x,sin(j*x)/2); %frame simple

M(j)=getframe; %almacenamiento de todos los frames

end

movie(M,4,6) %reproducir películas

47 of 75

Estructuras de control condicionadas.

47

Maestría en Ingeniería – Programación para ingeniería

Operaciones lógicas:

  • >, <, >=,<=,== (igual) ,| (or), &(and) ,~ (no), ~= (no igual)

Condicionales:

  • if operación lógica

sentencia

end

------------------------

  • if operación lógica

sentencia

else

sentencia

end

------------------------

  • if operación lógica

sentencia

elseif operación lógica

sentencia

else

sentencia

end

Estructuras cíclicas:

  • for k=n1:incre:n2

sentencia

end

-------------------------

  • for k=vector

sentencia

end

-------------------------

  • while operación lógica

sentencia

end

48 of 75

Datos de entrada y salida, �ficheros y funciones.

48

Maestría en Ingeniería – Programación para ingeniería

Ficheros de Matlab:

  • Ficheros de programa: Se construyen mediante una secuencia de comandos. El fichero principal se llamará main_nombre.m
  • Ficheros de función: para crear funciones propias. Son llamados por los ficheros de programa.

La primera línea es ejecutable y empieza por la palabra function de la forma:

function arg_salida=funcion_nombre(arg_entrada, parametros)

El fichero se debe guardar como funcion_nombre.m

  • Comandos de entrada y salida:

input: permite introducir datos: x=input(‘Teclee valor de a’);

disp: muestra un texto por pantalla: disp(‘El algoritmo no ha convergido’)

fprintf: muestra datos con texto: fprintf(‘texto %f’,dato)

49 of 75

Análisis numérico.

49

Maestría en Ingeniería – Programación para ingeniería

Interpolación

1D:

  • Se define un polinomio de un cierto grado (ejemplo, n=2, ax^2+bx+c), para hacer la interpolación: p=polyfit(x,y,n). Si se quiere la interpolación en ciertos valores ’xi’: yi=polyval(p,xi).

  • yi = interp1(x,y,xi,metodo). Métodos: ‘linear’ (interpolación lineal), ’cubic’ (cúbica), ’spline’ (spline cúbica)

X = 0:10; V = sin(X); Xq = 0:.25:10;

Vq = interp1(X,V,Xq,'linear’); plot(X,V,'o',Xq,Vq,':.')

2D:

  • matriz_Z=interp2(X,Y,Z,matriz_X,matriz_Y,metodo).

Métodos: ’bilinear’ (interpolación lineal), ’bicubic’ (cúbica)

[X,Y,V] = peaks(10); [Xq,Yq] = meshgrid(-3:.1:3,-3:.1:3);

Vq = interp2(X,Y,V,Xq,Yq); mesh(Xq,Yq,Vq)

50 of 75

Análisis numérico.

50

Maestría en Ingeniería – Programación para ingeniería

Integración:

  • 1D: quad, quadl: integran una función en un intervalo [a,b]

quad(‘funcion’,a,b)

  • 2D: dblquad: integran una función en un Intervalo [xmin,xmax]x[ymin,ymax]

dblquad('y*sin(x)+x*cos(y)',xmin,xmax,ymin,ymax)

51 of 75

Optimización irrestricta de N-Variables.

51

Maestría en Ingeniería – Programación para ingeniería

Optimización en 1 variable

 

Pasos para calcular Max o Min en 1 variable

Sea f(x) una función continua y derivable

  1. Hallar los puntos críticos con f’(x)=0
  2. Definir si los puntos críticos son máximos o mínimos con:

f’’(xi)<0 (Max) f’’(xi)>0 (Min) f’’(xi)=0 (P.I)

 

52 of 75

Optimización irrestricta de N-Variables.

52

Maestría en Ingeniería – Programación para ingeniería

Optimización en N- Variables

 

53 of 75

Optimización irrestricta de N-Variables.

53

Maestría en Ingeniería – Programación para ingeniería

Optimización en N- Variables

 

54 of 75

Optimización irrestricta de N-Variables.

54

Maestría en Ingeniería – Programación para ingeniería

Optimización en N- Variables

  • Maximos y mínimos en N variables: sea P(a,b) un punto critico
  • Si todos los valores propios de la matriz H(a,b)>0 entonces hay un Min relativo.
  • Si todos los valores propios de la matriz H(a,b)<0 entonces hay un Max relativo.
  • Si todos los valores propios de la matriz H(a,b)+ y - entonces hay un Punto Silla.
  • Si todos los valores propios de la matriz H(a,b)=0 entonces el criterio falla.

55 of 75

Método de búsqueda directa.

55

Maestría en Ingeniería – Programación para ingeniería

Método de la Bisección.(Raíz)

 

56 of 75

Método de búsqueda directa.

56

Maestría en Ingeniería – Programación para ingeniería

Método de la Falsa Posición.(Raíz)

 

57 of 75

Método de búsqueda directa.

57

Maestría en Ingeniería – Programación para ingeniería

Método de Newton Raphson.(Raíz)

 

58 of 75

Método de búsqueda directa.

58

Maestría en Ingeniería – Programación para ingeniería

Método de la Secante.(Raíz)

 

59 of 75

Método de búsqueda directa.

59

Maestría en Ingeniería – Programación para ingeniería

Método de la Sección dorada.(Optimo)

 

60 of 75

Método de búsqueda directa.

60

Maestría en Ingeniería – Programación para ingeniería

Método de la Interpolación Cuadrática.(Optimo)

 

61 of 75

Métodos de descenso.

61

Maestría en Ingeniería – Programación para ingeniería

Método del descenso.

 

62 of 75

Métodos de Newton Multivariado.

62

Maestría en Ingeniería – Programación para ingeniería

Método de Newton multivariado

 

63 of 75

Integración.

63

Maestría en Ingeniería – Programación para ingeniería

Regla Trapezoidal

  • La regla trapezoidal aproxima la integral a un polinomio de grado 1

 

Error:

 

64 of 75

Integración.

64

Maestría en Ingeniería – Programación para ingeniería

Regla Trapezoidal múltiple

Mejora la regla trapezoidal simple con el fin de partir el intervalo de integración en varios segmentos y aplicar la regla trapezoidal varias veces para dar mayor precisión. Tarea: Programar el método de Simpson 1/3 simple y multiple

Error:

 

 

h=ancho del segmento

n=numero de segmentos

 

 

65 of 75

Ecuaciones diferenciales.

65

Maestría en Ingeniería – Programación para ingeniería

Método de Euler

es un procedimiento de integración numérica para resolver ecuaciones diferenciales ordinarias (EDO) a partir de un valor inicial dado. 

 

Pasos

66 of 75

Ecuaciones diferenciales.

66

Maestría en Ingeniería – Programación para ingeniería

Método de Rujen Kutta

  • Solución de problemas de valores iniciales para ecuaciones

diferenciales ordinarias (ODEs)

  • [T,Y]=solver(‘F’,tspan,Y0)
  • solver: algoritmo de resolución de ODEs, ode45, ode23, ode113, ode15s,ode23s.
  • F: función que contiene las ecuaciones diferenciales en forma matricial
  • Tspan: vector de tiempos [t0 tfinal] de integración.
  • X0: vector de condiciones iniciales en t0

clc

clear all

close all

global R L C Vi

R=1;L=1;C=1;Vi=1;

tspan=[0 20];

x0=[0.1 0.1];

[t,x]=ode45(@fun1,tspan,x0)

plot(t,x(:,1))

figure

plot(t,x(:,2))

function dx=fun1(t,x)

global R L C Vi

dx=zeros(2,1);

dx(1)=-R/L*x(1)-1/L*x(2)+1/L*Vi;

dx(2)=1/C*x(1);

end

67 of 75

Ecuaciones diferenciales.

67

Maestría en Ingeniería – Programación para ingeniería

Forma analítica “dsolve”

  • Solución de problemas de valores iniciales para ecuaciones

diferenciales ordinarias (ODEs) .

  • dsolve(equ,con)

clc

clear all

close all

syms x(t)

D2x=diff(x,t,2);

Dx=diff(x,t);

equ=D2x+Dx+x==1;

con=[x(0)==0.1 Dx(0)==0.1];

w=dsolve(equ,con)

68 of 75

Ajuste de curvas.

68

Maestría en Ingeniería – Programación para ingeniería

Regresión lineal

  • Consiste en ajustar un conjunto de datos a una línea recta.

 

Aproximación lineal

 

Optimizando

 

 

69 of 75

Tarea

69

Maestría en Ingeniería – Programación para ingeniería

  1. Implementar todos los algoritmos vistos en la clase de programación sin restricciones tanto en una variable como en varias variables.
  2. Los algoritmos utilizados para hallar raíces, hacerles las respectivas modificaciones para que calculen óptimos.

70 of 75

Transformadas

70

Maestría en Ingeniería – Programación para ingeniería

Consiste en pasar del dominio del tiempo al dominio de la frecuencia.

Transformada de Laplace

syms a s t w x F(t)

laplace(t^5) returns 120/s^6

laplace(exp(a*s)) returns -1/(a-z)

laplace(sin(w*x),t) returns w/(t^2+w^2)

laplace(cos(x*w),w,t) returns t/(t^2+x^2)

laplace(x^(3/2),t) returns (3*pi^(1/2))/(4*t^(5/2))

laplace(diff(F(t))) returns s*laplace(F(t),t,s) - F(0)

Transformada inversa de Laplace

Examples:

syms s t w x y f(x)

ilaplace(1/(s-1)) returns exp(t)

ilaplace(1/(t^2+1)) returns sin(x)

ilaplace(t^(-5/2),x) returns (4*x^(3/2))/(3*pi^(1/2))

ilaplace(y/(y^2 + w^2),y,x) returns cos(w*x)

ilaplace(laplace(f(x),x,s),s,x) returns f(x)

71 of 75

Simulink

71

Maestría en Ingeniería – Programación para ingeniería

Simulink es un entorno de diagrama de bloques para Model-Based Design. Soporta simulación, generación automática de código y pruebas continuas de sistemas embebidos.

Es un entorno de programación visual, que funciona sobre el entorno de programación Matlab. Es un entorno de programación de más alto nivel de abstracción que el lenguaje interpretado Matlab (archivos con extensión .m).

>>simulink

72 of 75

Simulink

72

Maestría en Ingeniería – Programación para ingeniería

73 of 75

Guide.

73

Maestría en Ingeniería – Programación para ingeniería

74 of 75

Guide.

74

Maestría en Ingeniería – Programación para ingeniería

Algunos comandos:

  • Obtener información: get(handles.edit2,'String’)

  • Asignar información: set(handles.edit4,'String’,dato)

  • Conversión de tipo de datos: str2num, num2str

  • Asignar datos a una tabla: set(handles.uitable1,'Data’,datos)

  • Obtener datos de una tabla: get(handles.uitable1,'Data’)

  • Enviar valores desde el GUI al workspace: assignin ('base','name’,dato)

75 of 75

Gracias por su atención.

75

Maestría en Ingeniería – Programación para ingeniería