“Universidad Nacional Santiago Antúnez de Mayolo” “Año del Fortalecimiento de la Soberanía Nacional” FACULTAD DE INGENIERÍA CIVIL Escuela Profesional de Ingeniería Civil LISTA DE EJERCICIOS N°01 ALUMNO: MORALES ÑIVIN, Phaliña Jhanmil (201.0906.032) CURSO: MÉTODOS NUMÉRICOS DOCENTE: ASÍS LOPEZ, Maximiliano Epifanio AÑO ACADÉMICO: 2022 – I SEMESTRE: V PROBLEMA N°01 (Algoritmo usando la sentencia IF anidada) Enunciado: Hacer un programa que calcule el total que una persona debe pagar en un almacén por comprar llantas. El precio de cada llanta es de 80 soles y de 70 soles si se compra 5 y más. Solución: Programado en Octave: Algoritmo: function pago=compra(N) if N<5 pago=80*N; else pago=70*N; end end Al ejecutar con pago=compra (6) resulta: >> pago=compra(6) pago = 420 >> 1 PROBLEMA N°02 (Algoritmo usando el bucle FOR y la sentencia IF) Enunciado: Calcule los valores de la sucesión 𝑥0 = 1, 𝑥𝑛+1 = 𝑥𝑛 2 + 1 𝑥𝑛 con n desde 1 al 100, modifique el programa para que se detenga en el momento que |𝑥𝑛+1 − √2| < 10−7. Solución: Programado en Octave: Algoritmo: x0=1, for k=1:100 x(k)=x0/2+1/x0; disp ([k x(k)]) if abs (x(k)-sqrt(2))<10^(-7) break end x0=x(k); end Al ejecutar resulta: >> Lista1problema2 x0 = 1 1.0000 1.5000 2.0000 1.4167 3.0000 1.4142 4.0000 1.4142 2 PROBLEMA N°03 (Algoritmo usando el bucle FOR y la sentencia IF) Enunciado: Realice un programa que encuentre todos los divisores positivos de un entero no negativo n e imprima el numero de divisores que posee. Solución: Programado en Octave: Algoritmo: function CuentaDivisores(n) numdiv=0; for i=1:n if rem(n,i)==0 disp(i) numdiv=numdiv+1; end end fprintf('%d tiene %d divisores\n',n,numdiv) end Al ejecutar con CuentaDivisores(7) resulta: >> CuentaDivisores(7) 1 7 7 tiene 2 divisores >> 3 PROBLEMA N°04 (Algoritmo usando el bucle WHILE y la sentencia IF) Enunciado: Sea n un numero entero. Si n es par, divídalo entre 2, sino lo es multiplíquelo por 3 súmale 1. Repite este proceso hasta que el número obtenido sea 1. Realice un programa en el que implemente dicho proceso. Solución: Programado en Octave: Algoritmo: clear all; n=input('Ingrese n:'); while n~=1 disp(n) if rem(n,2)==0 n=n/2 else n=3*n+1 end end Aldisp(n) ejecutar con Ingrese n:8 resulta: >> Numeros Ingrese n:8 8 n=4 4 n=2 2 n=1 1 >> 4 PROBLEMA N°05 (Algoritmo usando el bucle WHILE y la sentencia IF) Enunciado: Realizar un programa que decida si un número natural es primo. Solución: Programado en Octave: Algoritmo: n=input('Numero natural que deseas saber si es primo:'); i=2; primo=1; while i<=sqrt(n) if rem(n,i)==0 % Resto de dividir n entre i primo=0; break end i=i+1; end if primo disp('El numero dado es primo.') else disp('De hecho, es divisible por:') disp(i) end 5 Al ejecutar con los números 10, 68, 97, 1027 resulta: >> NumeroPrimo Numero natural que deseas saber si es primo:10 De hecho, es divisible por: 2 >> NumeroPrimo Numero natural que deseas saber si es primo:68 De hecho, es divisible por: 2 >> NumeroPrimo Numero natural que deseas saber si es primo:97 El numero dado es primo. >> NumeroPrimo Numero natural que deseas saber si es primo:1027 De hecho, es divisible por: 13 >> 6