Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Introducción a la Programación en Matlab: Matrices y Operaciones, Esquemas y mapas conceptuales de Informática

Este documento proporciona una introducción a la programación en matlab, centrándose en la creación, manipulación y operaciones con matrices. Se explican conceptos básicos como la declaración de matrices, el acceso a submatrices, la construcción de matrices especiales y las operaciones matemáticas con matrices. El documento incluye ejemplos prácticos y ejercicios para consolidar los conocimientos adquiridos.

Tipo: Esquemas y mapas conceptuales

2023/2024

Subido el 18/03/2025

balya-grandez-santillan
balya-grandez-santillan 🇵🇪

4 documentos

1 / 49

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
ISSN 2312-4776
Documento de Trabajo
Nº 16-2015
MODELOS ECONÓMICOS BÁSICOS Y SIMULACIONES EN MATLAB
por
Alfonso Ayala
Diciembre 01, 2015
Universidad Nacional Mayor de San Marcos
Lima - Perú
Omega Beta Gamma
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31

Vista previa parcial del texto

¡Descarga Introducción a la Programación en Matlab: Matrices y Operaciones y más Esquemas y mapas conceptuales en PDF de Informática solo en Docsity!

ISSN 2312-

Documento de Trabajo

Nº 16 - 2015

MODELOS ECONÓMICOS BÁSICOS Y SIMULACIONES EN MATLAB

por

Alfonso Ayala

Diciembre 01, 2015

Universidad Nacional Mayor de San Marcos Lima - Perú

Omega Beta Gamma

Serie de Documentos de Trabajo OMEGA BETA GAMMA

El principal objetivo de la «Serie de Documentos de Trabajo OMEGA BETA GAMMA» es difundir los avances de investigaciones conducentes a futuras publicaciones de artículos científicos, así como de textos resultantes del proceso de enseñanza de los profesores del Departamento de Economía de la Facultad de Ciencias Económicas de la Universidad Nacional Mayor de San Marcos; incluyendo publicaciones de investigadores nacionales e internacionales de otras instituciones de educación superior. La «Serie de Documentos de Trabajo OMEGA BETA GAMMA» es promovida y desarrollada por un colectivo de profesores del Departamento de Economía de la Universidad Nacional Mayor de San Marcos.

COMITÉ EVALUADOR

Hugo Sánchez, DIRECTOR

Alfonso L. Ayala, Universidad Nacional Mayor de San Marcos , Perú. Juan M. Cisneros, Universidad Nacional Mayor de San Marcos , Perú. José A. Chumacero, Universidad Nacional Mayor de San Marcos , Perú. Hugo Sánchez, Universidad Nacional Mayor de San Marcos , Perú.

Documento de Trabajo OMEGA BETA GAMMA, Nro. 16-2015, diciembre 2015. International Standard Serial Number ISSN 2312-

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS Facultad de Ciencias Económicas Av. Venezuela, cuadra 34. Teléfono 619-7000, anexo 2231. Lima 01 Perú

1. Introducción.

MATLAB es un programa de amplia difusión en las ciencias “exactas” como la física, la química o las matemáticas, tiene capacidades de cálculo numérico y también simbólico que son utilizados en economía para la construcción de modelos en micro y macroeconomía, así también como en econometría y estadística, muy útiles por su flexibilidad y potencia. Si bien en principio parecería que su uso es complicado, permite reforzar muchos conceptos matemáticos, así como construir modelos en pocos pasos que formalizan la teoría económica, y probar de esta manera modelos teóricos de una manera más eficiente. En la segunda sección se introducen algunos comandos básicos en MATLAB. La tercera sección muestra cómo desarrollar programas y funciones personalizadas, principalmente aplicadas a modelos macroeconómicos, se finaliza con una aplicación de programación en modelos de la teoría económica.

2. COMANDOS BASICOS EN MATLAB

Interface de Matlab

Cuando se inicia el programa Matlab se muestra tres ventanas:

 Command Window: es la ventana central, aquí se ingresan las órdenes al programa, en esta ventana se observa el símbolo del sistema: ≫ llamado prompt.  Current Folder: muestra los archivos presentes en el directorio por defecto, o directorio de trabajo del programa.  Workspace: muestra las variables en memoria, estos pueden ser constantes, vectores, arrays, variables binarias, estructuras, etc.

Figura Nº 1. Interface del programa Matlab (R2015a).

En la ventana Workspace se muestran los símbolos de los elementos creados en la sesión actual del programa. Algunos de estos se muestran en la Tabla No. 1.

Tabla No. 1. Símbolos de las principales variables de uso en Matlab.

Símbolo Tipo Ejemplo

Array Cadena de texto Función anónima Función personalizada

Se presentan a continuación algunos comandos básicos para el manejo de variables y

matrices.

Almacenar las operaciones ejecutadas en la sesión

Previamente al estudio de los comandos, muchas veces es útil almacenar las órdenes ejecutadas y resultados de la sesión actual en un registro fácil de revisar posteriormente. Para guardar los comandos y resultados ejecutados en MATLAB se puede utilizar el comando^1 :

diary NombredelArchivo.txt

Se inicializará el registro de los comandos ejecutados en el programa, el “diario” se

agregará en la ventana Current Folder, y se puede revisar (después de cerrarlo) con

un editor de textos común.

Para desactivar el grabado de los comandos (y resultados) se utiliza el comando:

diary off

Formatos de salida de datos

Dependiendo del tipo de aplicación que se está desarrollando, es conveniente efectuar

cambios en la forma en que se muestran los cálculos realizados. Por ejemplo los

formatos en que se muestra pi bajo el formato short, long, rat y bank son:

format short 3. format long 3. format rat 355/ format bank 3.

Construcción de matrices

La forma más sencilla de declarar una matriz compuesta por un array o arreglo es

declarar sus elementos uno por uno entre brackets [] (Alt+91, Alt+93). Para

separar los elementos de la misma fila se usan espacios o comas, para separar filas de

una matriz se usa punto y coma (;).

(^1) El archivo generado se grabará en el directorio de trabajo actual y se mostrará en la ventana Current

Folder.

clear x

Para eliminar todas las variables de la memoria se utiliza clear.

Manejo y consulta de matrices

Accediendo a sub-matrices

Para acceder o referenciar los elementos de una matriz de n dimensiones se necesitan

n índices, en este caso un matriz de 2 dimensiones (fila y columna) necesita 2 índices,

el índice de fila y el de columna (en ese orden).

Creamos dos matrices A y B de valores aleatorios tomados entre 0 y 1:

A = rand(6,6) B = rand(6,4) A = 0.7943 0.6541 0.9133 0.4427 0.8687 0. 0.3112 0.6892 0.1524 0.1067 0.0844 0. 0.5285 0.7482 0.8258 0.9619 0.3998 0. 0.1656 0.4505 0.5383 0.0046 0.2599 0. 0.6020 0.0838 0.9961 0.7749 0.8001 0. 0.2630 0.2290 0.0782 0.8173 0.4314 0.

B = 0.5797 0.5132 0.2400 0. 0.5499 0.4018 0.4173 0. 0.1450 0.0760 0.0497 0. 0.8530 0.2399 0.9027 0. 0.6221 0.1233 0.9448 0. 0.3510 0.1839 0.4909 0.

Se desea acceder a los primeros tres elementos de la cuarta columna de A, nótese que

Matlab devuelve un vector columna:

A(1:3,4)

ans =

Se desea acceder a las primeras cuatro entradas de la tercera columna de B:

B(1:4,3)

ans =

Obtenemos los elementos de la tercera columna de A:

A(:,3)

ans =

Obtenemos las primeras cuatro filas de A, en este caso se muestra una matriz de 4x6:

A(1:4,:)

ans = 0.7943 0.6541 0.9133 0.4427 0.8687 0. 0.3112 0.6892 0.1524 0.1067 0.0844 0. 0.5285 0.7482 0.8258 0.9619 0.3998 0. 0.1656 0.4505 0.5383 0.0046 0.2599 0.

La matriz formada por la columna 2 y 3 de A:

A(:,[2 3])

ans = 0.6541 0. 0.6892 0. 0.7482 0. 0.4505 0. 0.0838 0. 0.2290 0.

Reemplazar las columnas 2, 4 y 6 de la matriz A con las columnas 1 a 3 de la matriz B:

A(:,[2 4 6]) = B(:,1:3)

A =

Reemplazar las columnas 2, 4 y 6 de la matriz A con las columnas 1, 3 y 4 de la matriz

B:

A(:,[2 4 6]) = B(:,[1 3 4])

A =

N = randi([1 7],[3,2]) N = 5 1 3 4 7 3

randn() Crea matrices de números aleatorios de la función de distribución

normal con media 0 y varianza 1.

randn(3,3) L = 2.7694 0.7254 -0. -1.3499 -0.0631 -0. 3.0349 0.7147 1.

M = randn(3,6) M = 1.4090 - 1.2075 0.4889 - 0.3034 0.8884 - 0. 1.4172 0.7172 1.0347 0.2939 -1.1471 -2. 0.6715 1.6302 0.7269 -0.7873 -1.0689 1.

rand(4) ans = 0.6797 0.4984 0.2238 0. 0.6551 0.9597 0.7513 0. 0.1626 0.3404 0.2551 0. 0.1190 0.5853 0.5060 0.

eye() Crea una matriz identidad cuadrada (cuyos elementos de la diagonal principal

son 1).

eye(5) C = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1

Nótese que se pueden construir "matrices identidad" no cuadradas, por ejemplo:

eye(5,4) ans = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0

zeros() Crea una matriz de elementos cero.

Crear una matriz de ceros de 3x

C=zeros(3,4) C = 0 0 0 0 0 0 0 0 0 0 0 0

Crear una matriz de ceros de 1x

C=zeros(1,4) C = 0 0 0 0

ones() Crea una matriz de elementos uno.

Crear una matriz de unos de 3x

o = ones(3,1) o = 1 1 1

diag() Extrae o crea una matriz diagonal.

Dada una matriz A, diag(A) extrae la diagonal de A:

A = [1,2,3; 4,5,6; 7,8,9]

A =

diag(A) ans = 1 5 9

diag(diag(Matriz)) crea una matriz diagonal con la diagonal de matriz:

diag(diag(A)) ans = 1 0 0 0 5 0 0 0 9

Otra forma de crear una matriz con el comando diag , es incluir en el comando un

vector (no una mattriz), se crea una matriz cuadrada con la diagonal declarada.

randn(size(A)) ans = -1.4916 2.3505 -0.

  • 0.7423 - 0.6156 0. -1.0616 0.7481 -0.

eye(size(A)) ans = 1 0 0 0 1 0 0 0 1

Utilizando la forma de unir matrices del acápite anterior:

[eye(4) diag([1 2 3 4])] ans = 1 0 0 0 1 0 0 0 0 1 0 0 0 2 0 0 0 0 1 0 0 0 3 0 0 0 0 1 0 0 0 4

B = [zeros(3,4) ones(3,3)] ans = 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1

En la primera fila, obtener los elementos desde la tercera hasta la última columna

B(1,3:end) ans = 0 0 1 1 1

En la tercera fila, obtener los elementos desde la segunda columna hasta la última

B(3,2:end) ans = 0 0 0 1 1 1

En la última columna obtener los elementos de la misma, excepto el último

B(1:end-1,end) ans = 1 1

Obtener todas las filas de la columna 4 de la matriz B:

B(:,4)

ans = 0 0 0

<!> (Los dos puntos (:) en el comando funcionan como: “todos los elementos de esta

dimensión”, en este caso la columna).

Si quisiera obtener los elementos de la segunda fila de B:

B(2,:)

ans = 0 0 0 0 1 1 1

Si quisiera obtener los 4 primeros elementos comenzando en la primera columna:

B([1 2 3 4])

ans = 0 0 0 0

<!> (Note que la “salida” es un array “plano”, es decir un vector fila).

Todos los elementos en un vector columna:

B(:)

En la fila 1, se asigna valores uno.

B(1,:) = ones(1,7) B = 1 1 1 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1

En la columna 4, se asigna valores -1.

B(:,4) = -

B = 1 1 1 -1 1 1 1 0 0 0 -1 1 1 1 0 0 0 -1 1 1 1

Si en la operación anterior se hubiese colocado la columna 8, la matriz B se expande.

B(:,8) = -

B =

Matriz de elementos 1s y 0s que se genera si los elementos de la matriz F cumplen la

condición de que sean iguales a 0:

F>

ans = 0

Obtener los elementos que cumplen la condición anterior:

F(ans) ans = []

Se puede obtener directamente los elementos de F mayores a 2 (Note que obtenemos

un vector):

find(F>2) ans = 2 3

Ejercicios 1.

Definir una matriz A de números aleatorios enteros entre 2 y 9, de 5x5, y obtener:

El máximo de la segunda columna de A.

El máximo de la segunda fila de A.

El máximo de todas las columnas de A.

Cree una matriz fila A, a partir de un array de 1x6 en el que cada elemento es igual al

anterior + 7, asuma que el primer elemento es 3.

A = [3:7:38]

Cree una matriz fila B, a partir de un array de 1x6 en el que cada elemento es igual al

anterior + 4, asuma que el primer elemento es 5.

B = [5:4:26]

Una las matrices A y B anteriores, tal que las filas de A estén “encima” de las de B.

C = [A; B]

Elimine las columnas 2 a 4 de C.

C(:,2:4) = []

Cree una matriz con los elementos de las columnas 1, 3 y 5 de la segunda fila de A y la

primera fila de B.

Cree una matriz de 9x9 que tenga como diagonal principal unos, luego mediante

operaciones apropiadas haga que la matriz se convierta en:

𝐵 =

[

2 2 2 0 5 5 5 2 2 2 0 5 5 5 3 3 3 0 5 5 5 0 0 0 1 0 0 0 4 4 7 0 9 9 9 4 4 7 0 9 9 9 4 4 4 0 9 9 9]

Usando la instrucción zeros() y ones(), cree una matriz de 3x5 en la cual, la primera,

segunda y quinta columnas sean ceros y la segunda y cuarta sean unos.

Crear una matriz A de 3x3 en la cual todos los elementos son 1, y otra matriz B de 2x

en la que todos los elementos sean 5. Luego sume elementos a la matriz A agregando

los de la matriz B tal que A sea:

𝐴 =

[

1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 0 0 0 5 5 0 0 0 5 5]

Escriba el siguiente vector fila [1 2 3 ... 28 29 30 30 29 28 ... 3 2 1], con los

arrays correspondientes.

Cree las siguientes matrices:

Dado el siguiente array: array1 = [5 6.5 2.1 4 9 pi], (a) obtener otro array que

contenga el primer y cuarto elemento del array 1, (b) obtener otro array que contenga

el primer, tercer y quinto elemento del array 1.

Dada la siguiente matriz:

𝐴 =

[

1 2 1 0 3 10 3 1 4 0 − 5 14 0 0 − 1 − 2 21 0 2 5 3 − 8 0 5 𝑝𝑖 ]

(a) Obtener una matriz que contenga la primera, tercera y quinta columna de A, (b)

Obtenga una matriz que incluya los elementos de la primera fila de A, (c) Obtenga una

matriz que incluya los elementos de la segunda fila de A, desde la segunda columna

hasta la quinta, (d) Obtenga una matriz que incluya los elementos de la cuarta

columna, de las filas 1, 3 y 5. (e) Obtenga una matriz que incluya los elementos de la

segunda columna, desde la primera hasta la última fila.

Definir el Sistema de ecuaciones y resolver el sistema.

A =

B =

x = A\B

También se puede resolver invirtiendo A y multiplicando por B.

Hallar la inversa de G = [2 5; 1 3] por el método de Gauss-Jordan.

Primero se plantea la matriz aumentada.

H = [G eye(2)] H = 2 5 1 0 1 3 0 1

o alternativamente:

H = [G diag([1 1])] H = 2 5 1 0 1 3 0 1

Para hallar la inversa multiplicamos la primera fila por ½:

H(1,:) = 0.5*H(1,:)

H =

A la segunda fila se le suma el negativo de la primera:

H(2,:) = H(2,:) - H(1,:)

H =

A la segunda fila se le multiplica por 2:

H(2,:) = 2*H(2,:)

H =

Finalmente a la primera fila se le resta 5/2 de la segunda fila:

H(1,:) = (-5/2)*H(2,:) + H(1,:)

H =

Ejercicios 2.

Sean las siguientes matrices, hallar la matriz inversa:

A = [4 -2 1; 7 3 0; 2 0 1]

B = [1 -1 2; 1 0 3; 4 0 2]

Hallar utilizando el método de eliminación de filas de Gauss, si existe la matriz inversa

de:

𝐴 = [

0 −2 − 1 3 3 −1 −2 −

] 𝐵 = [

1 2 3 −1 0 4 0 2 2

] 𝐶 = [

1 2 − −3 4 5 −4 2 6

]

𝐷 = [

4 −2 1 7 3 0 2 0 1

] 𝐸 = [

1 0 0 0 0 1 0 1 0

] 𝐹 = [

1 −1 2 1 0 3 4 0 2

]

Operador :

El operador : produce una serie numérica, normalmente se usa en un array, el primer

elemento es el que está a la izquierda de :, y el último a la derecha, por ejemplo:

x = 1: x = 1 2 3 4 5 6 7 8

La opción por defecto para el incremento de la serie es 1, sin embargo se puede

cambiar incluyendo entre dos :, el incremento determinado:

x = 1:2: x = 1 3 5 7

<!> Observe que el quinto elemento del nuevo array sería 9, sin embargo dado que el

número máximo determinado fue 8, y este mismo número no está en la nueva serie,

no se incluye ambos números en el nuevo array.

Otra forma de obtener un array es a través del comando linspace, que crea un array

de una fila, “igualmente espaciado entre dos números. Por ejemplo:

x = linspace(2,9,5) x = 2 3.75 5.5 7.25 9

Cuando el número de elementos del array a crear es alto convendrá incluir un ; al final

de linspace, para no llenar la pantalla.

Ingreso de variables y mensajes al usuario

Para obtener un mensaje al usuario en MATLAB se utiliza fprintf(‘Mensaje %tipo

de datos’ \n), donde %tipo de datos puede ser %d ó %f siendo la primera una

variable entera y %f una variable real. \n agrega un salto de línea al mensaje.