Diferencia entre revisiones de «Ejercicios 5: Programación»
De Software Libre para la Enseñanza y el Aprendizaje de las Matemáticas (2010-11)
(→Ejercicio 3.3.) |
(→Ejercicio 4.1.) |
||
Línea 90: | Línea 90: | ||
'''Solución:''' | '''Solución:''' | ||
+ | Goldbach(n):=block([lista,k], | ||
+ | lista: [k], | ||
+ | for k from 2 thru n do | ||
+ | (if primep(n-x) then lista: cons(k,lista))) | ||
=== Ejercicio 4.2. === | === Ejercicio 4.2. === |
Revisión del 13:28 11 abr 2011
Ejercicio 1
Ejercicio 1.1.
Definir la función tangente tal que tangente(f,a) es la ecuación de la tangente a la función f en el punto de abscisa a. Por ejemplo,
(%i1) (f(x):=x^3, tangente(f,2)); (%o1) y=12*(x-2)+8
Solución:
Ejercicio 1.2.
Calcular la tangente a f(x)=ln(tan(|x|) en el punto de abscisa -pi/12.
Solución: tangente(ln(tan(abs(x)),-%pi/12);
Ejercicio 2
Ejercicio 2.1.
Definir el procedimiento signosTrinomio tal que signosTrinomio(a,b,c) es la tabla de la variación de los signos del trinomio ax^2+bx+c. Por ejemplo,
(%i1) signosTrinomio(1,-2,1); (%o1) [[[-inf,1],+],[1,0],[[1,inf],+]] (%i2) signosTrinomio(-1,2,-1); (%o2) [[[-inf,1],-],[1,0],[[1,inf],-]] (%i3) signosTrinomio(1,-3,2); (%o3) [[[-inf,1],+],[1,0],[[1,2],-],[2,0],[[2,inf],+]] (%i4) signosTrinomio(-1,3,-2); (%o4) [[[-inf,2],-],[2,0],[[2,1],+],[1,0],[[1,inf],-]] (%i5) signosTrinomio(1,0,1); (%o5) [[[-inf,inf],+]] (%i6) signosTrinomio(-1,0,-1); (%o6) [[[-inf,inf],-]]
Se supone que a es distinto de cero.
Solución:
Ejercicio 2.2.
Calcular la tabla de la variación de los signos del trinomio -6x^2-3x+14/3
Solución:
Ejercicio 3
Se lanza un dado cúbico equilibrado hasta que se obtiene la cara 6 por primera vez. Se designa por X la variable aleatorio que cuenta el número de lanzamientos efectuados. Se dice que X es el tiempo de espera del primer 6.
Ejercicio 3.1.
Definir el procedimiento X() que simule una serie de lanzamientos del dado y devuelva el número de lanzamientos realizados para obtener el 6 por primera vez.
Solución: X(n):=block( if random(7)=6 print(“Se ha obtenido el valor 6”) else n=n+1 print(n,”número de lanzamientos hasta el momento));
Ejercicio 3.2.
Con la ayuda del bucle for, definir el procedimiento simulacion(n) que simule una serie de n lanzamientos y devuelva la lista de frecuencia de los eventos [X=i] para 1 <= i <= 60. Por ejemplo,
(%i1) simulacion(1000); (%o1) [0,145,115,104,88,61,65,53,51,50,40,28,30,29,27,13,21,18,10,6,8,4,9,3, 5,1,2,4,3,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 0,0,0]
Solución: simulación(n):=block([lista,k], lista : [], for k from 1 thru n do
(if random(k) then lista : cons(k,lista)))$
Ejercicio 3.3.
Definir la función media tal que media(n) es el valor medio de X en n lanzamientos. Calcular tres veces media(1000).
Solución: media(n):=block([lista,k], lista: [] for k from 1 thru n do (if random(k) then lista: cons(k,lista))$ mean(lista))$
Ejercicio 4
La conjetura de Goldbach afirma que todo número natural par mayor que 3 se puede escribir como la suma de dos números primos. Por ejemplo,
- 4 = 2 + 2, 20 = 3 + 17, 50 = 3 + 47
Solución:
Ejercicio 4.1.
Definir la función goldbach tal que goldbach(n) es una descomposición de n como suma de dos números primos. Por ejemplo,
(%i1) goldbach(20); (%o1) [3,17]
Indicación: Iterar los primos desde x=2 hasta n/1 hasta que n-x sea primo.
Solución: Goldbach(n):=block([lista,k], lista: [k], for k from 2 thru n do (if primep(n-x) then lista: cons(k,lista)))
Ejercicio 4.2.
Descomponer 2010 como suma de dos primos.
Solución:
Ejercicio 4.3.
Definir la función goldbachTodas tal que goldbachTodas(n) es la lista de todas las descomposiciones de n como suma de dos números primos x e y con x<=y. Por ejemplo,
(%i1) goldbachTodas(20); (%o1) [[7,13],[3,17]]
Solución:
Ejercicio 4.4.
Calcular el número de descomposiciones de 2010 como suma de dos primos.
Solución: