PDF de programación - Lista de problemas: ciclos y funciones en el lenguaje MATLAB

Imágen de pdf Lista de problemas: ciclos y funciones en el lenguaje MATLAB

Lista de problemas: ciclos y funciones en el lenguaje MATLABgráfica de visualizaciones

Publicado el 17 de Agosto del 2018
1.431 visualizaciones desde el 17 de Agosto del 2018
125,7 KB
5 paginas
Creado hace 7a (26/11/2016)
Lista de problemas:

ciclos y funciones en el lenguaje MATLAB

Esta lista de problemas está compuesta para probar si el estudiante tiene ciertas

habilidades básicas de programación con arreglos, funciones y ciclos for y while.

En cada uno de los problemas hay que escribir una función que regrese lo que se pide
y que no escriba nada en la pantalla. Se puede usar la sintaxis del lenguaje Matlab o de
sus análogos libres (GNU Octave, Scilab, FreeMat). En los ejemplos se usa la sintaxis de
GNU Octave.

1. Ejemplo. Escribir una función log7 de un argumento x que calcule el logaritmo de x
en base 7.
Entrada: un número x (se supone que x > 0).
Salida: log7(x).
Ejemplo: log7(49) debe regresar 2.

Solución. La solución es un archivo log7.m en el formato “texto simple”. El archivo puede
tener el siguiente contenido:

function y = log7(x)

y = log(x) / log(7);

endfunction

2. Ejemplo. Escribir una función factorials que construya y regrese el vector que
consista de los factoriales de los números 1, . . . , n.
Entrada: un número n (se supone que n es entero y n ≥ 1).
Salida: un vector que consiste de los factoriales de los números 1, . . . , n.
Ejemplo: factorials(5) debe regresar el vector [1; 2; 6; 24; 120].

Solución. Una solución posible se puede escribir en el archivo factorials.m de la si-
guiente manera:

function f = factorials(n)

f = ones(n, 1);
for j = 2 : n,

f(j) = f(j - 1) * j;

endfor

endfunction

Otra solución de este mismo problema sería el comando factorial(1 : n)’. El propósito
de esta lista de problemas es probar si el estudiante sabe programar funciones con ciclos,
por eso se pide una solución similar a la primera, y la segunda se puede indicar como algo
adicional.

Ciclos y funciones en el lenguaje MATLAB, página 1 de 5

Ciclo for

3. Problam (sumarray). Escribir una función sumarray que calcule la suma de las
componentes del vector dado. El sentido de este problema es practicar la programación
con ciclos.
Entrada: un vector a.

n

Salida: la suma de los elementos de a:

ak, donde n es la longitud de a.

Ejemplo: sumarray([5; -1; 7; 2]) debe devolver 13.

k=1

4. Problema (mydotproduct). Escribir una función mydotproduct que calcule el pro-
ducto punto de dos vectores dados. El sentido de este problema es practicar la programa-
ción con ciclos.
Entrada: dos vectores a y b reales de la misma longitud (no es necesario verificar que
tienen la misma longitud).
Salida: el producto interno canónico de los vectores a y b.
Ejemplo: mydotproduct([3; 4; 5], [11; 12; 13]) debe regresar 146.

5. Problema (accumulate). Escribir una función accumulate que calcule las sumas
parciales de las entradas del vector dado.
Entrada: un vector a.
Salida: un vector b de la misma longitud que a y tal que para cada k ∈ {1, . . . , n} la
k-ésima entrada de b es la suma de las primeras k entradas del vector a.
Ejemplo: accumulate([7; -2; 8]) debe regresar el vector [7; 5; 13].

6. Problema (factorial). Escribir una función fa que calcule el factorial del número
dado.
Entrada: un número n; se supone que n es entero y no negativo.
Salida: el número n!.
Ejemplo: fa(4) debe regresar 24.

7. Problema (fib). Escribir una función fib que calcule los primeros n elementos de la
sucesión de Fibonacci, empezando con 0 y 1.
Entrada: un número entero positivo n (n ≥ 2).
Salida: un vector v de longitud que n cuyos elementos son los primeros n elementos de
la sucesión de Fibonacci, esto es,

v1 = 0;
v2 = 1;
vk = vk−1 + vk−2

(k ≥ 3).

Ejemplo: fib(7) debe regresar el vector [0; 1; 1; 2; 3; 5; 8].

Ciclos y funciones en el lenguaje MATLAB, página 2 de 5

8. Problema (mulpolbinom). Calcular los coeficientes c1, . . . , cn+1 del producto de un
polinomio por un binomio mónico:

(a1 + a2x + . . . + anxn−1)(b + x) = c1 + c2x + . . . + cn+1xn.

Entrada: un vector a y un número b (suponemos que el binomio es mónico, por eso sólo
pasamos a la función el coeficiente de x0).
Salida: el vector c de los coeficientes del producto.
Ejemplo: mulpolbinom([3; -5; 1], 2) debe regresar el vector [6; -7; -3; 1] por-
que (3 − 5x + x2)(2 + x) = 6 − 7x − 3x2 + x3.

9. Problema (poleval). Calcular el valor del polinomio
f (t) = a1 + a2t + ··· + antn−1

en el punto dado b.
Entrada: un vector a y un número b.
Salida: el número a1 + a2b + ··· + anbn−1.
Ejemplo: poleval([4; -1; -6; 3], 3) debe regresar el número 28.

10. Problema (poleval, versión vectorial). Calcular los valores del polinomio

f (t) = a1 + a2t + ··· + antn−1

en cada elemento del vector dado b.
Entrada: dos vectores a y b.
Salida: el vector con las componentes f (b1), . . . , f (bm), donde m es la longitud de b.
Ejemplo: poleval([4; -1; -6; 3], [3; -2; 7] debe devolver [28; -42; 96].

11. Problema (myproductmatvec). Escribir una función myproductmatvec que cal-
cule el producto de una matriz por un vector. Se puede suponer (y no comprobar) que la
longitud del vector dado coincide con el número de columnas de la matriz dada. Hay que
escribir su propia realización de la operación a ∗ b.
Entrada: una matriz a y un vector b; se supone que la longitud de b coincide con el
número de columnas de a.
Salida: el producto de la matriz a por el vector b.
Ejemplo: myproductmatvec([3, 5, -1; 2, 0, 6], [-3; 7; 4]) debe devolver el vec-
tor [22; 18].

Ciclos y funciones en el lenguaje MATLAB, página 3 de 5

12. Problema (vandermatrix). Escribir una función vandermatrix que construya y re-
grese la matriz de Vandermonde de tamaño n×n asociada a los números dados x1, . . . , xn.
Entrada: un vector x.
Salida: la matriz de Vandermonde cuadrada asociada al vector x.
Ejemplo: vandermatrix([3, -2, 0, 5]) debe regresar la matriz

 1

9
27
3
4 −8
1 −2
0
1
0
0
5 25 125
1

 .

13. Problema (solvelt1). Escribir una función solvelt1 que resuelva el sistema Lx = b
con una matriz L unitriangular inferior. Una matriz cuadrada se llama unitriangular
inferior si es triangular inferior y todas sus entradas diagonales son iguales a uno.
Entrada: una matriz unitriangular inferior L y un vector b cuya longitud coincide con
el orden de la matriz L.
Salida: un vector x tal que Lx = b.
Ejemplo: solvelt1([1, 0, 0; -2, 1, 0; 3, -1, 1], [4; -7; 8]) debe regresar el

vector [4; 1; -3] porque 1

 4

1−3

 =

 4−7

 .

8

0 0
−2
1 0
3 −1 1

14. Problema (solveut). Escribir una función solveut que resuelva el sistema U x = b,
donde U es una matriz cuadrada triangular superior con entradas diagonales no nulas.
Entrada: una matriz cuadrada triangular superior U y un vector b cuya longitud coincide
con el orden de la matriz U .
Salida: un vector x tal que U x = b.
Ejemplo: solveut([3, -1, 5; 0, -2, 5; 0, 0, 4], [3; -8; -8]) debe regresar el

vector [4; -1; -2] porque 3 −1 5

0 −2 5
0 4
0

 4−1−2

 =

 3−8−8

 .

Ciclos y funciones en el lenguaje MATLAB, página 4 de 5

Ciclo while

Se recomienda resolver los siguientes problemas usando el ciclo while.

15. Problema (sumdigits). Escribir una función sumdigits que calcule la suma de los
dígitos decimales del número dado.
Entrada: un número entero x.
Salida: la suma de los dígitos decimales de x.
Ejemplo: sumdigits(365) debe regresar 14.
Antes de escribir esta función, se recomienda probar los comandos idivide(20, 3) y
rem(20, 3).

16. Problema (gcd). Escribir una función mygcd que calcule el máximo común divisor
de dos números enteros dados. Si ambos números son 0, hay que devolver 0.
Entrada: dos números enteros a y b.
Salida: el máximo común divisor de a y b; se puede suponer que a ≥ 0 y b ≥ 0.
Ejemplo: mygcd(30, 80) debe devolver 10.
Ejemplo: mygcd(0, 12) debe devolver 12.
Ejemplo: mygcd(0, 0) debe devolver 0.

17. Problema (countfirstnegatives). Escribir una función countfirstnegatives que
calcule el número de las entradas negativas (seguidas) en el inicio del vector dado.
Entrada: un vector a.
Salida: max{j ∈ {1, . . . , n} :
Ejemplo: countfirstnegatives([-7; -5; -5; 4; -6]) debe regresar 3.
Ejemplo: countfirstnegatives([4; -1; -6; -8; -2]) debe regresar 0.
Ejemplo: countfirstnegatives([-1; -1; -3; -6]) debe regresar 4.

∀k ∈ {1, . . . , j} ak < 0}, donde n es la longitud de a.

18. Problema (myfixedpoint). Escribir una función myfixedpoint que resuelva con
el método del punto fijo (llamado también el método de iteración simple) la ecuación
x = a exp(−x), donde a es un parámetro positivo.
Entrada: un número positivo a.
Salida: un número positivo x tal que x = a exp(−x).
Ejemplo: myfixedpoint(2.0) debe regresar 0.85261.

19. Problema (solvemyeq). Escribir una función solvemyeq que resuelva con el método
de la bisección (o de la regla falsa) la ecuación cos(x) − ax = 0 en el intervalo de 0 a π/2.
Entrada: un número positivo a.
Salida: un número x ∈ (0, π/2) tal que cos(x) − ax = 0.
Ejemplo: solvemyeq(2.0) debe regresar 0.45018.
Ejemplo: solvemyeq(0.5) debe regresar 1.0299.

Ciclos y funciones en el lenguaje MATLAB, página 5 de 5
  • Links de descarga
http://lwp-l.com/pdf13032

Comentarios de: Lista de problemas: ciclos y funciones en el lenguaje MATLAB (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad