Programa Laboratorio Scilab Metodos 2014

          UNIVERSIDAD NACIONAL DEL COMAHUE     FACULTAD DE INGENIERÍA Asignatura: Métodos Computacionales en Ingenier

Views 71 Downloads 7 File size 109KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

     

   

UNIVERSIDAD NACIONAL DEL COMAHUE    

FACULTAD DE INGENIERÍA Asignatura: Métodos Computacionales en Ingeniería I Modulo 2 Primer Cuatrimestre 2014

Laboratorio: Programación en Scilab  

Grupo 92   

Alumno/a

Legajo Nº

Carrera

Sandro Christian González Gutiérrez María de las Mercedes Capurro 

114625 107989 

Ingeniería Química  Ingeniería Química 

Fecha de entrega: 9/05/2014 Fecha de devolución:…………….. Calificación: ……………..

1   

 Enunciado del ejercicio Nº 92 Se requiere de un programa que lea 30 números (reales en general) de un archivo secuencial. Esos números serán asignados a las componentes de un arreglo bidimensional de 5x5 y a uno unidimensional de 5, donde: 1) Los 5 mayores valores leídos serán asignados al vector previo multiplicarlos por ((-1)^(índice)) , la diagonal principal de la matriz contendrá los menores números leídos, siendo la ubicación del menor de todos ellos el que lleve los índices (1, 1) y en orden creciente en modulo los restantes hasta el (5, 5). 2) Los restantes elementos de cada una de las filas de la matriz, serán los números leídos excluyendo los mayores y los menores que han sido ubicados en el vector o en la diagonal, en el orden en que se leyeron completando primero la primer fila, luego la segunda, hasta completar el arreglo. 3) Debe mostrar por pantalla al usuario los arreglos resultantes con el formato usual de una matriz tal como se trabaja en algebra, y los datos en el orden en el que fueron leídos.

 Análisis del problema. Datos de entrada: Archivo secuencial con treinta números reales en general Datos de salida: Vector de 5 elementos, los cuales serán los 5 mayores números leídos previamente multiplicados por ((1)^(índice)) Matriz de 5 filas por 5 columnas, donde sus elementos de la diagonal son los menores números leídos ordenados en forma creciente desde la posición (1,1) hasta la (5,5) y el resto de los componentes

 Algoritmo.

Abrir el archivo datos.txt Leer los datos y asignarlo a un vector Cerrar el archivo datos.txt Buscar los 5 elementos menores Ordenar en forma creciente en modulo Ubicarlos al principio del vector El resto de los elementos se corren de lugar Buscar los 5 elementos mayores Ubicarlos al principio del vector El resto de los elementos se corren de lugar Los 5 primeros elementos se multiplican por (-1)^(índice) Asignar a un vector b estos elementos Asignar a los siguientes 5 elementos a los elementos de la diagonal de una matriz m de 5x5 Asignar a los elementos fuera de la diagonal el resto de los números leídos, en el orden en que se leyeron completando primero la primer fila, luego la segunda, hasta completar el arreglo. Mostrar por pantalla el vector de datos, el vector b y la matriz m

2   



Diagrama de fujo

 

Inicio

Leo v de un  archivo secuencial 

n=dimensión (v)  k=5        i=1  i>k        i=i+1 

menor=abs(v(i)

       s=i  s>n        s=s+1 

Abs(v(s)) n       i=i+1 

v(i)>Max  Max=v(i)  m=i 

       i=m  ik       i=i+1 

b(i)=v(i)*(‐1)^(i) 

      i=1 i>k       i=i+1

m(i,j)=v(k+1) 

       i=1  I>k       i=i+1

      j=1 j>k 

      j=j+1 

ij 

ij  a=(i+1)*k+j‐i 

a=(i+k)*k+j‐(i‐1) 

M(i,j)=v(a) 

Mostrar datos de  salida 

 

fin



 Pseudocódigo. Comienzo del programa Abro el archivo “datos.txt” Leo los datos y los asigno en un vector V=[v1,v2,……..vn] n = dimensión ( v ) Cierro el archivo “datos.txt” K=5 Repetir desde i=1 hasta k con un paso de 1 Menor = valor absoluto de v ( i) Repetir desde s=i hasta n con un paso de 1 Si valor absoluto de v ( s ) < Menor entonces Menor = valor absoluto de v ( s ) j=s Fin si Fin repetir Guardo Los Menores Encontrados auxi = v ( j ) Corro los Componentes restantes Repetir desde f =j hasta i-1con un paso de -1 V ( f ) = V ( f-1 ) Fin repetir V ( i ) = auxi Fin repetir Busco los 5 Mayores y los Ubico al Principio del vector Repetir desde j=1 hasta k con un paso de 1 Max = v ( j ) m=j Búsqueda del mayor Elemento del vector Repetir desde i=j hasta n con un paso de 1 si ( v ( i ) > Max ) Max = v ( i ) m=i fin si fin repetir Desplazo los demás Componentes del vector Repetir desde i=m hasta j+1 con un paso de -1 V (i) = v (i-1) Fin repetir El mayor valor va al Principio v ( j) = Max fin repetir Armo el vector de 5 componentes Repetir desde i=1 hasta k con un paso de 1 B ( i ) = v ( i) * (-1) ^ i Fin repetir Armo La Matriz 6   

Primero Asigno los valores a Los Elementos de la diagonal Repetir desde i=1 hasta k con un paso de 1 m (i, i) = v (k+i) fin repetir Asigno valores un los componentes Que no están en la diagonal Repetir desde i=1 hasta k con un paso de 1 Repetir desde j=1 hasta k con un paso de 1 si i < > j entonces si i < j entonces a = (i+1) * k + j-i si no a = (i+1) * k+j-(i-1) fin si m (i, j) = V (a) fin si fin repetir fin repetir mostrar ( m, " Matriz de 5x5 " , b, "vector 5x1 ", " Datos de Salida" ) fin del programa

 Código Scilab clc //abro mi archivo datos.txt y leo los datos en un vector datos=mopen("datos.txt","r") v=mfscanf(-1,datos,"%f") v=v' disp(v,"Datos de entrada") mclose(datos) n=length(v) //busco los 5 menores y los ubico al principio del vector k=5 for i=1:k n menor=abs(v(i)) for s=i:n if abs(v(s))Max) Max=v(i) m=i end end //desplazo los demás componentes del vector for i=m:-1:j+1 v(i)=v(i-1) end //el mayor valor va al principio v(j)=Max end //armo el vector de 5 componentes for i=1:k b(i)=v(i)*(-1)^i end //armo la matriz //primero asigno los valores a los elementos de la diagonal for i=1:k m(i,i)=v(k+i) end //asigno los valores a los componentes que no están en la diagonal for i=1:k for j=1:k if ij then //pregunto si j es distinto a i if i