Res vecmat8

54
Vectores y Matrices CAPITULO 8 Ing. Mary Dunnia López N. UNIVERSIDAD AUTONOMA GABRIEL RENE MORENO Facultad Ciencias Exactas y Tecnología Semestre I/2015

Transcript of Res vecmat8

Vectores y Matrices

CAPITULO 8

Ing. Mary Dunnia López N.

UNIVERSIDAD AUTONOMA GABRIEL RENE MORENOFacultad Ciencias Exactas y Tecnología

Semestre I/2015

Dados 50 números enteros, obtener el promedio de ellos y encontrar los números que fueron mayores que el promedio.

Intente resolver el siguiente problema

• Una de las principales dificultades que se observan con estos problemas es que para la resolución de ambos es necesario almacenar la totalidad de los datos a procesar.

• No sería eficiente crear N cantidad de variables para guardar estos datos.

Es posible resolver estos problemas?

Por qué?

Como ?

Es una forma particular de organizar datos en una computadora para que pueda ser utilizado de manera eficiente.

Estructura de Datos

Vectores

1. Introducción• Definición• Estructura Vector

2. Algoritmos Típicos

• Cargar un Vector• Mostrar un Vector

3. Algoritmos útiles

• Ordenar un Vector• Buscar en un Vector.

4. Ejercicios• Ejercicio1• Ejercicio2

Mi vector

Nombre de la variable

9 35 4 826

Elementos

Posición : 0Contenido : Mi vector[0] = 9

1. Introducción

Un vector es una estructura de datos que puede almacenar un conjunto de datos de un mismo tipo.

1.1 Definición

Características:

• Se identifica con un único nombre de variable.

• Cada elemento se almacena en posiciones uno a lado de la otra.

• Se accede a cada uno de sus elementos por la posición que ocupa

Como se dijo anteriormente, los arreglos son estructuras de datos, por lo tanto las mismas deben ser declaradas.

1.2 La estructura vector

Dim

nombre_del_vector (tamaño) as tipo_dato

Dim• nombreVector () as tipoDato…• Redim nombreVector(10)

1. Asignación de valores

Alumnos(3) = “Juan Perez”Precios(0) = “23.50”

2. En un vector los datos son todos del mismo tipo

23.5 00 0 0Juan Perez

0

2. Algoritmos Típicos

Option explicit onDim vec() as integer Dim n as integer

Sub CarVec() Dim x as string, i as integer N= TextBox.Text Redim Vec(N)

for i:= 0 to N-1 do x=Grid1.item(i,0).value vec(i)=cint(x)

next i End Sub

2.1 Cargar un Vector

Option Explicit onDim vec() as integerDim n as integer

Sub MosVec() Dim i as integer, x as string Redim vec(n) for i:= 0 to n-1 do

x= cstr(vec(i) )Grid1.Item(i,0).value=x

next i End Sub

2.2 Mostrar un vector

Ordenar un vector de N elementos Pasos para resolver este problema:

• Leer un vector de N elementos• Ordenar el vector por un método Conocido• Mostrar el Vector ordenado

3. Algoritmos Útiles

Buscar un “valor en un vector de N elementos. Pasos para resolver este problema:

• Leer un vector de N elementos• Ordenar el vector por el método Burbuja• Buscar un elemento (X) entre todos los elementos

del vector• Si encuentra el valor mostrar la posición que

ocupa en el vector.

3.1 Ordenación por Burbuja

123 50 25 60 10 120 1 2 3 4 5

Primero

0 1 2 3 4 550 123 25 60 10 12Segundo

25 123 50 60 10 120 1 2 3 4 5

Tercero

0 1 2 3 4 525 123 50 60 10 12Cuarto

0 1 2 3 4 510 123 50 60 25 12Quinto

0 1 2 3 4 510 123 50 60 25 12N-1

Primer pasada y el primero

mas pequeño

ahora esta en la

primer posición.

Burbuja

For i=0 to n-2

For j=i+1 to n-1

Vec(i) > Vec(j)

aux = Vec(i) Vec(i) = Vec(j)

Vec(j) = aux

j

i

Fin

VF

textBox2

Grid1

Label3

Button1

Option Explicit onDim Vector1() as integer‘Grid1 es el objeto DataGrid del formulario

'El SUB CarVec copia Grid1 al vector de programa llamado Vec1Sub CarVec()

Dim n as integer, pos As Integer 'Obteniendo la dimensión del vector n = CInt(text2.Text) ReDim Vector1(n) For pos = 0 To n - 1 Vector1(pos) = Grid1.Item(pos,0) Next pos

End Sub

Dele 2 Click sobre el boton en el Formulario Suba a la linea 1 del archivo y escriba las siguientes instrucciones

Private Sub Button1_Click() Call CarVec Call OrdVecPro Call MosVecEnd Sub

Avance con el cursor hasta la línea dentro del Button1_Click

• 'Ordenando por método de la burbuja• Sub OrdVecPro()

• Dim i As Integer, j As Integer• Dim aux As Integer, n As Integer• n = CInt(Text2.Text)• 'Comienza a recorrer el vector y ordenar• For i = 0 To n - 2• For j = i + 1 To n - 1• If (Vector1(i) > Vector1(j)) Then• aux = Vector1(i)• Vector1(i) = Vector1(j)• Vector1(j) = aux• End If• Next j• Next i

• End Sub

'Mostrando el vector ordenado Sub MosVec()

Dim n As Integer, pos As Integer n = CInt(Text2.Text) For pos = 0 To n - 1 Grid1.Item(pos,0) = Vector1(pos) Next pos

End Sub

3.2 Búsqueda Binaria

PrecondiciónEl vector debe estar ordenado

Algoritmo Se compara el dato buscado con el elemento en

el centro del vector. Si coinciden, el dato ha sido encontrado Si el dato es mayor que el elemento central del

vector, se tiene que buscar el dato en segunda mitad del vector.

Si el dato es menor que el elemento central del vector, se tiene que buscar el dato en la primera mitad del vector.

textBox2Grid1

Label3

Button1TextBox3

TextBox4

Cargar 10 elementos en un vector,sumarlos y mostrar el resultado enpantalla.

Pasos para resolver este problema:

• Leer un vector de 10 elementos• Sumar los elementos• Mostrar el resultado de la suma en pantalla

Ejemplo 1

Ejemplo 1

Muestra resultados

Lectura delvector

Suma de los elementos

Pasos para resolver este problema:1. Crear un nuevo proyecto con: TextBox1 (N),

DataGridView1 (Vector), Button (boton).2. Haga 2click sobre el boton Button1.

– Private SUB Button1_Click()» CALL Sumar()

» End sub3. Declarar el vector como Variable Global debajo de

la instrucción Public Class Form1

Dim sumandos() as integer4. Luego Crear el proceso Sumar.

Ejemplo1: Solución

Sub Sumar() Dim suma as integer, N as integer, i as integer, x as string, mensage as string

N = CInt(Text2.Text) ReDim sumandos(N) suma = 0 For i = 0 To N - 1 ‘Grid1 es el nombre objeto tipo DataGrid del Formulario x = Grid1.Item(i,0).value sumandos(i) = CInt(x) suma = suma + CInt(x) Next i mensage = "La suma total es: " + CStr(suma) MsgBox («TOTAL»,VBOkOnly,mensage)

End Sub

Lectura desde el DataGrid

Suma de los elementos

Muestra resultados

Dimension del vector

Dados 15 números enteros, obtener el promedio de ellos. Mostrar por pantalla dicho promedio y los números ingresados que fueron mayores que el promedioPasos para resolver este problema:

• Leer un vector de 15 elementos• Acumular en S la sumar los elementos• Dividir S entre 15• Mostrar el Promedio• Recorrer el vector buscando y

mostrando los que sean mayor que el promedio.

Ejemplo 2

Introducción• Definición• Características

Tipos de Matriz• Matriz cuadrada• Matriz Traspuesta• Otras

Operaciones• Suma• Producto

Ejercicios• GenMat1• GenMat2

Matrices

“Su principal aplicación práctica esta en la solución de sistemas de

ecuaciones lineales”

1. Introducción

Definición

Llamaremos matriz de orden (nXm) sobre el cuerpo de los números reales a un conjunto de números reales dispuestos en n filas y m columnas de la siguiente forma:

1. Un nombre2. La dimensión u orden de una matriz, está dado

por la cantidad de filas (n) y la cantidad de columnas (m) que esta tenga y se denota por

(nxm).3. Cada elemento de la matriz corresponde a un

número real representado de la forma (aij) donde 

i corresponde a la posición de fila y  j corresponde

a la posición de la columna dentro de la matriz.

(A2,3)4. La cantidad de elementos de la matriz se

determina multiplicando la cantidad de filas por la cantidad de columnas. (A(2X3) => Tiene 6 elementos (2X3) )

Características

MATRICES - DECLARACIÓN

Como se dijo anteriormente, los arreglos son estructuras de datos, por lo tanto las mismas deben ser declaradas.

Dimnombre_matriz (columna,fila) as tipo_dato

Dimnombre_matriz () as tipo_dato

Redim nombre_matriz(10,10)

Manejo de índices en matrices

• Asignación de valoresAlumnos(1,1) = 5

Alumnos(3,0) = 2• Los valores de la matriz son todos del

mismo tipo

9 35 4 826

9 35 4 826

9 35 4 826

Alumnos

Cargar una Matriz

Option Explicit onDim Mat() as integerDim n as integer, m as integer

Sub CarMat() Dim x as string, i as integer Dim j as integer Redim Mat (n,m) for i:= 0 to n-1 do

for j=0 to m-1 do x=Grid1.Item(j,i) Mat(i,j)=cint(x)next j

next iEnd Sub

DF ?

MOSTRAR UNA MATRIZ

Option Explicit onDim Mat() as integerDim n as integer, m as integer

Sub CarMat() Dim x as string, i as integer Dim j as integer Redim Mat (n,m) for i:= 0 to n-1 do

for j=0 to m-1 do x = cstr(Notas(i,j))

Grid1.Item(i,j)=xnext j

next iEnd Sub

DF ?

“La sencillez de la matriz y el hecho de que las matrices organicen información numérica (y también de otros tipos) permite que sean utilizadas en casi todos los ámbitos del saber científico: física, sociología, astronomía, ingeniería y tantos otros mas.”

2. Tipos de Matrices

Tipo de Matriz Ejemplo1. Matriz FIla: Es la que tiene una sola fila. A(1 x M)

2. Matriz Columna: Es la que tiene una sola columna . A (N x 1)

3. Matriz nula si: Aij =0  i => 1 <= i <= n ;  j =>  1 <= j <= m.

4. A será llamada matriz cuadrada si: n=m.

5. Matriz diagonal si:   n = m => Igual Nro. Filas y Columnas

Aij =0 => Donde i <> j

Tipo de Matriz Ejemplo6. A será llamada matriz identidad si:

  n = m => Igual Nro. Filas y Columnas

Aij =0 => Donde i <> jAij =1 => Donde i = j

7. Matriz triangular superior si:   n = m => Igual Nro. Filas y Columnas

Aij =0 => Donde i >= j

8. Mmatriz triangular inferior  si   n = m => Igual Nro. Filas y Columnas

Aij =0 => Donde i <= j

9. Matriz simétrica   n = m => Igual Nro. Filas y Columnas

Aij = Aji

Matriz cuadrada

10 20 102

50 35 36

52 74 32

El numero de Filas es IGUAL al

numero de Columnas

Matriz traspuesta

10 20 102

50 35 36

52 74 32

Resulta de Intercambi

ar el elementos en las filas

por las columnas y viceversa

La matriz debe ser

cuadrada

10 50 52

20 35 74

102 36 32

X=Mat(j,i)

Mat(j,i)=Mat(i,j)

Mat(i,j)=x

Matriz Nula

0 0 0

0 0 0

0 0 0

Todos sus elemento

s son nulos

Diagonal Principal

10 20 102

50 35 36

52 74 32

Matriz cuadrada donde sus elementos

Fila = columna

‘Este pedazo de código ‘muestra los elementos de la ‘diagonal principal de la ‘matriz Mat.

For i = 0 To n - 1

For j = 0 To n - 1

If (i = j) Then

msgbox(Mat(i,j))

End If

Next j

Next i

Diagonal Secundaria

10 20 102

50 35 36

52 74 32

Matriz cuadrada. Observe las posiciones donde :

Fila+columna= Dimension-1‘Este pedaso de código ‘muestra los elementos de la ‘diagonal secundaria de la ‘matriz Mat.

Col=n-1

For i = 0 To n - 1

MsgBox(Mat(i,col))

Col=col-1

Next i

Matriz Triangular Superior

1 5 80

0 10 50

0 0 1

Matriz Cuadrada cuyos elementos debajo la diagonal principal son todos

CERO

Dim i,j,n as integer

i=o

n=cint(text1.text) – 1

Error=false

While(i<=n AND error=false)

j=0

while(j<=n and error=false)

if (i > j)then

if (mat (i,j) <> 0)then

error = true

end if

end if

j=j+1

wend

i=i+1

Wend

If(error = true)then

msgbox(“No es triangular superior”)

Else

msgbox(“Es triangular superior)

End if

“La utilización de matrices (arrays) constituye actualmente una parte esencial de los lenguajes de programación, ya que la mayoría de los datos se introducen en los ordenadores como tablas organizadas en filas y columnas : hojas de cálculo, bases de datos,....”

3. Operaciones Matriciales

Suma de Matrices

10 20

50 35

52 4

Las matrices deben ser de igual

dimensión

10 50

20 35

10 36

El resultado de la SUMA ira en una

tercer matriz

+

=20 70

70 70

62 40

Tan solo avanzar en la matriz resultante

Ve1Ve2

Ve3

Producto de Matrices

10 20

50 35

52 4

10 5 2 1

20 2 1 0* =

500 90 40 10

1200 320 135 50

600 268 108 52

El Numero de COLUMNAS de la primer matriz debe ser igual que el Numero de filas de la segunda matriz

(Matriz1 (Matriz

2

(Matriz3

(2,0)(0,2)

(2,2)

(2,1)(1,2)

Matriz3(0,0)= [Matriz1(0,0)*Matriz2(0,0)]+[Matriz1(0,1)*Matriz2(1,0)]

Matriz3(0,0)= [10*10]+[20*20]

10 20

50 35

52 4

10 5 2 1

20 2 1 0* =

500

(0,0)

(0,0) (0,0)

(Matriz1 Matriz2

(Matriz3

Matriz3(fil0,col0) = ∑ matriz1(fila 0) *

matriz2(columna 0)

Producto de Matrices

Matriz3(1,2)= [Matriz1(1,0)*Matriz2(0,2)]+[Matriz1(1,1)*Matriz2(1,2)]

Matriz3(1,2)= [50*2]+[35*1]

10 20

50 35

52 4

10 5 2 1

20 2 1 0* =

500

135

(1,0)(0,2)

(1,2)

(Matriz1Matriz2

(Matriz3

Matriz3(fila 1,columna 2) = ∑ matriz1(fila 1) *

matriz2(columna 2)

Producto de Matrices

ProdMat

For fil=0 to n-1

For col=0 to m-1

Sum=0

col

fil

Fin

For pos=0 to p-1

pos

sum = sum + (mat1(fil, pos) * mat2(pos, col))

Mat3(fil,col) = sum

Ve2

Ve3

Ve1

Command1

Text1 Text2 Text3

Label5

“Generar matrices es muy similar a generar series numéricas”

4. Ejercicios

Para tomar en cuenta !!!

Para resolver matrices se debe siempre tratar

de :

Mapear la Matriz. En cada posición poner que fila y

que columna ocupa el elemento

Identificar las posiciones de los elementos a

analizar

Encontrar la relación Fila Versus Columna para

cada elemento que se esta analizando en la matriz. Esto

es la clave para ver como es mas conveniente moverse

en la matriz:

Por fila y columnas ó por columna y luego filas.

Ejercicio 3:

• Una universidad necesita controlar los resultados de los alumnos en las distintas materias de la facultad de Ingeniería.

• El programa debe ingresar las calificaciones de los alumnos y visualizar en pantalla la media de notas por alumno y la media de notas por materia.

• Las asignaturas están codificadas de 1 a 6 y hay 30 alumnos.

Ejercicio 4:

• Generar la siguiente matriz

Ejercicio 5:

• Generar la siguiente matriz