comando sort (una parte)

3
Programación y métodos numéricos tarea 2 Kevin Steven Carrillo Reina 11 de septiembre de 2015 Índice 1. Problema 2 2. Solución 2 3. Códigos 3 1

description

comando sort para matlab

Transcript of comando sort (una parte)

Page 1: comando sort (una parte)

Programación y métodos numéricos tarea 2

Kevin Steven Carrillo Reina

11 de septiembre de 2015

Índice

1. Problema 2

2. Solución 2

3. Códigos 3

1

Page 2: comando sort (una parte)

1. Problema

El problema consiste en hacer una función que haga lo mismo que el comando SORT.

Si definimos un vector x y se necesita ordenar sus componentes, podemos hacer lo siguiente con el vector, aplicando

el comando.

>> x=[4 2 3 7 1 0]

x =

4 2 3 7 1 0

>> sort(x)

ans =

0 1 2 3 4 7

2. Solución

Para resolver el problema en cuestión, se hicieron dos funciones, de las cuales una es complemento de la otra, es

decir, existe una función que hace que la otra función pueda llevar a cabo la solución del problema; específicamente la

función solución que en este caso se llama “orden3” y la función complemento se llama “orden2”.

Para ilustrar cómo funcionan ambas funciones, véanse los siguientes ejemplos:

>> x=[4 2 3 7 1 0]

x =

4 2 3 7 1 0

>> orden2(x)

ans =

2 3 7 1 4

Lo que hace básicamente esta función es averiguar cuál es el mínimo del vector x dado, después intercambiar la

posición en donde se encuentra el mínimos y la primera posición, finalmente, considerar el vector obtenido desde la

segunda componente.

El siguiente ejemplo es la aplicación de la función orden3.

orden3(x)

h =

0 1 2 3 4 7

2

Page 3: comando sort (una parte)

3. Códigos

Consideremos primero el código de la función orden2.

function l=orden2(x)

z=size(x); (determina el tamaño del vector dado)

n=z(2);; (escoge la segunda componente del vector tamaño escogido de un vector fila)

y=min(x);; (determina el mínimo del vector dado x)

for k=1:n

if (x(k)==y) (si tomadas las componentes del vector desde 1 a n donde n es el

x(k)=x(1); el tamaño del vector, alguna de estas llega a ser igual al mínimo,

x(1)=y; entonces los valores intercambian sus posiciones y el resultado de

l=x(2:n); la función será el vector obtenido considerado desde la segunda

end componente.)

end

El código de la segunda función es un poco más complicado y es como sigue:

function orden3(x)

f=x;; (asignamos el vector a una variable)

l=orden2(x);; (evaluamos x en la funcion anterior)

z=size(l);; (determinamos el tamaño de l)

n=z(2);; (tomamos la segunda componente puesto que estamos considerando un vector fila)

h=zeros(1,n);; (determinamos el vector 0 con la misma longitud que x)

h(1)=min(f);; (asignamos a la primera componente del vector h (el vector 0) el mínimo de f)

h(2)=min(l);; (asignamos a la segunda componente del vector h el mínimo de l)

for k=1:(n-1)

h(k+2)=min(orden2(l)); (debido al hecho que ya asignamos dos componentes al vector h que es el

l=orden2(l); resultante, es necesario sumar 2 a k, para que no cambie ninguno de los valores

anteriormente fijados; de este modo asignamos a la posición el mínimo de l y

debemos tener en cuenta que el vector que consideramos como l tiene n-1 componentes,

end luego, al vector l le asignamos el vector orden2(l) lo que no es más que un ciclo que

termina hasta hacer n-1 pasos.

h (muestra finalmente el resultado)

3