Está en la página 1de 12

Universidad del Magdalena

Facultad de Ingeniería

Asignatura: Análisis numéricos

Presentado a:
Mag Álvaro Espinoza Pérez

Presentado por:
Lina Mercedes Boto Calero (2021115067)
Derlys Julieth Gómez Silva (202111508524)
Valeria Isabel Monsalve Soto (2020215049)

Santa Marta DCTH


1. Escriba las siguientes expresiones en el prompt de comando de OCTAVE y muestre los resultados:

a. 5 + 3 ∗ 2
b. 2.54 ∗ 8/2.6
c. 2 + 3^2
d. 𝑠𝑞𝑟𝑡(2.5)+ 𝑙𝑜𝑔(3.7)+ 𝑒𝑥𝑝(5.4)

Solución:

% a. 5 + 3 * 2
resultado_a = 5 + 3 * 2

% b. 2.54 * 8 / 2.6
resultado_b = 2.54 * 8 / 2.6

% c. 2 + 3^2
resultado_c = 2 + 3^2

% d. sqrt(2.5) + log(3.7) + exp(5.4)


resultado_d = sqrt(2.5) + log(3.7) + exp(5.4)

resultado a: 11
resultado b: 7.8154
resultado c: 11
resultado d: 224.30

2. Crea y pruebe la sintaxis en OCTAVE para evaluar las siguientes expresiones y luego verifique sus respuestas
con una calculadora de mano:
% Expresión a
resultado_a = (3^4) + (4 / (4^5 + 2^5));

% Expresión b
resultado_b = (3 + 6 * (4/9) - 3^4)/((2/5) * (8/(5 - 2)));

% Expresión c
resultado_c = 3^(4^2);

% Definir variables
a = 2;
b = 3;
c = 4;

% Expresión d
resultado_d = 2/(3^2+4^2);
;

% Mostrar resultados
fprintf('Resultado de la expresión a: %f\n', resultado_a);
fprintf('Resultado de la expresión b: %f\n', resultado_b);
fprintf('Resultado de la expresión c: %f\n', resultado_c);
fprintf('Resultado de la expresión d: %f\n ', resultado_d);

Solución:

Resultado a: 81.004
Resultado b: -70.625
Resultado c: 43046721
Resultado d: 0.08000

3. Conforme realice los siguientes cálculos, recuerde la diferencia entre los operadores usados en OCTAVE: ∗ y .∗,
así como los operadores / y ./ y entre ^ y . ^:

a. Defina la matriz 𝐴 = [2.3 5.8 9] como una variable en OCTAVE.


b. Encuentre el 𝑠𝑒𝑛𝑜 de 𝐴.
c. Sume 3 a cada elemento en 𝐴.
d. Defina la matriz 𝐵 = [5.2 3.14 2] como una variable en OCTAVE.
e. Sume cada elemento de la matriz 𝐴 y la matriz 𝐵.
f. Multiplique cada elemento en 𝐴 por el correspondiente elemento en 𝐵.
g. Eleve al cuadrado cada elemento en la matriz 𝐵.
h. Cree una matriz llamada 𝐶 de valores igualmente espaciados, desde 0 hasta 10, con un incremento de 1.
i. Use la función 𝒍𝒊𝒏𝒔𝒑𝒂𝒄𝒆 para crear una matriz de seis valores igualmente espaciados, desde 10 hasta 20.

Solución:

% a. Definir la matriz A
A = [2.3, 5.8, 9];

% b. Encontrar la suma de los elementos de A


suma_A = sum(A);

% c. Sumar 3 a cada elemento en A


A_sumado_3 = A + 3;

% d. Definir la matriz B
B = [5.2, 3.14, 2];

% e. Sumar cada elemento de la matriz A y la matriz B


suma_AB = A + B;

% f. Multiplicar cada elemento en A por el correspondiente elemento en B


multiplicacion_AB = A .* B;

% g. Elevar al cuadrado cada elemento en la matriz B


B_cuadrado = B .^ 2;

% h. Crear una matriz llamada C de valores igualmente espaciados, desde 0 hasta 10, con un incremento de 1
C = 0:10;

% i. Usar la función linspace para crear una matriz de seis valores igualmente espaciados, desde 10 hasta 20
D = linspace(10, 20, 6);

Resultados:

A: [ 2.3000, 5.8000,9]
A Sumado 3 : [ 5.3000, 8.8000, 12]
B: [ 5.2000, 3.1400, 2]
B cuadrado: [ 27.040, 9.8596, 4]
C: 0:10
D: [ 10, 12, 14, 16, 18, 20]
Multiplicación AB: [11.960, 18.212, 18]
Suma A: 17.100
Suma AB: [ 7.5000, 8.9400, 11]
4. Cree una tabla de conversión en OCTAVE de pies a metros. Comience la columna pies en 0, incremente
en 1 y termine en 10 pies. (Busque el factor de conversión en un manual o en línea.)
Resultados:
% Definir el rango de pies
pies = 0:10;

% Factor de conversión de pies a metros


factor_conversion = 0.3048; % 1 pie = 0.3048 metros

% Calcular la conversión de pies a metros para cada valor de pies


metros = pies * factor_conversion;

% Mostrar los resultados en una tabla


fprintf('Pies | Metros\n');
fprintf('-------------\n');
for i = 1:length(pies)
fprintf('%4d | %6.2f\n', pies(i), metros(i));
end

5. La ecuación general para la distancia que recorre un cuerpo en caída libre (ignorando la fricción del aire)
es: 𝑦 = 1 2 𝑔𝑡 2 Suponga que 𝑔 = 9.8 𝑚/𝑠 2 .
Genere una tabla en OCTAVE de tiempo contra distancia recorrida para valores de tiempo de 0 a 10
segundos. Elija un incremento de 0.5 para su variable tiempo.

Resultados:

% Definimos constante de gravedad


g = 9.8; % m/s^2
% se define el intervalo de tiempo y el incremento
tiempo = 0:0.5:10; % segundos

% Calcular la distancia recorrida para cada valor de tiempo


distancia = 0.5 * g * tiempo .^ 2;

% Mostrar los resultados en una tabla


fprintf('Tiempo (s) | Distancia recorrida (m)\n');
fprintf('------------------------------------\n');
for i = 1:length(tiempo)
fprintf('%8.1f | %8.2f\n', tiempo(i), distancia(i));
end

6. La figura muestra una masa 𝑚 en reposo sobre una superficie sin rozamiento. La masa está
conectada a dos muros por muelles con constantes elásticas 𝑘1 𝑦 𝑘2 . El periodo de este sistema
viene dado por la expresión: 𝑇 = 2𝜋√ 𝑚 𝑘1+ 𝑘2 Escribe un programa OCTAVE llamado muelles
que pida al usuario los valores de 𝑚, 𝑘1 𝑦 𝑘2 y que calcule y muestre el periodo 𝑇.
% Solicitar al usuario los valores de m, k1 y k2
m = input("Ingrese la masa (m): ");
k1 = input("Ingrese la constante elástica del primer muelle (k1): ");
k2 = input("Ingrese la constante elástica del segundo muelle (k2): ");

% Calcular el período usando la fórmula que nos dieron


T = 2 * pi * sqrt(m / (k1 + k2));

% Muestra del resultado


fprintf("El período del sistema es: %.2f\n", T);
7. . Use el comando for y while en la consola de OCTAVE, y muestre los resultados en pantalla.

a. Utilizando el comando for/end, calcular el volumen de cinco esferas de radio 1, 2, 3, 4 y 5 se hace:


>> 𝒇𝒐𝒓 r = 1: 5 vol = (4/3) ∗ pi ∗ r^3; 𝒅𝒊𝒔𝒑([r, vol]) 𝒆𝒏𝒅
b. Los ciclos pueden hacerse anidados de la siguiente manera. >> 𝒇𝒐𝒓 𝑟 = 1: 5 𝒇𝒐𝒓 𝑠 = 1: 𝑟 𝑣𝑜𝑙 = (4/3)
∗ 𝑝𝑖 ∗ (𝑟^3 − 𝑠^3); 𝒅𝒊𝒔𝒑([𝑟, 𝑠, 𝑣𝑜𝑙]) 𝒆𝒏𝒅 𝒆𝒏𝒅
c. Podemos utilizar el comando break para detener la ejecución de un ciclo >> 𝒇𝒐𝒓 𝑖 = 1: 4 𝒇𝒐𝒓 𝑗 = 1:
10 𝒊𝒇 𝑗 > 2 ∗ 𝑖; 𝒃𝒓𝒆𝒂𝒌; 𝒆𝒏𝒅 𝒅𝒊𝒔𝒑([𝑖,𝑗]) 𝒆𝒏𝒅 𝒆𝒏𝒅
d. Podemos implementar con los ciclos while/end un pequeño programa que imprima los números del
1 al 20 >> 𝑥 = 1; >> 𝒘𝒉𝒊𝒍𝒆 𝑥 <= 20 𝑥 𝑥 = 𝑥 + 1; 𝒆𝒏𝒅
e. El ejemplo para desplegar el volumen de una esfera con radios de 1, 2, 3, 4 y 5 queda. >> 𝑟 = 0; >>
𝒘𝒉𝒊𝒍𝒆 𝑟 < 5 𝑟 = 𝑟 + 1; 𝑣𝑜𝑙 = (4/3) ∗ 𝑝𝑖 ∗ 𝑟^3; 𝒅𝒊𝒔𝒑([𝑟, 𝑣𝑜𝑙]) 𝒆𝒏𝒅;
Otra forma de hacer el ejemplo anterior: 𝑟 = 0 >> 𝒘𝒉𝒊𝒍𝒆 𝑟 < 10 𝑟 = 𝑖𝑛𝑝𝑢𝑡(′𝑇𝑒𝑐𝑙𝑒𝑒 𝑒𝑙 𝑟𝑎𝑑𝑖𝑜: ′); 𝒊𝒇 𝑟
< 0 𝒅𝒊𝒔𝒑(′𝑆𝑎𝑙𝑖𝑠𝑡𝑒 𝑑𝑒𝑙 𝑝𝑟𝑜𝑔𝑟𝑎𝑚𝑎′); 𝒃𝒓𝒆𝒂𝒌; 𝒆𝒏𝒅 𝑣𝑜𝑙 = (4/3) ∗ 𝑝𝑖 ∗ 𝑟 ∗ 3; 𝒇𝒑𝒓𝒊𝒏𝒕𝒇(′𝑣𝑜𝑙𝑢𝑚𝑒𝑛 =
%7.3𝑓\𝑛′, 𝑣𝑜𝑙) 𝒆𝒏𝒅
f. Calculamos la suma de los diez primeros términos de la sucesión { 1 2 𝑛 }. >> 𝑠𝑢𝑚𝑎 = 0; >> 𝒇𝒐𝒓 𝒏
= 1: 10 𝑠𝑢𝑚𝑎 = 𝑠𝑢𝑚𝑎 + 1/2^𝑛; 𝒆𝒏𝒅 >> 𝑠𝑢𝑚�
Resultados:

a.
for r = 1:5
vol = (4/3) * pi * r^3;
disp(['Para r = ', num2str(r), ', el volumen de la esfera es ', num2str(vol)]);
end

b.
for r = 1:5
for s = 1:r
vol = (4/3) * pi * (r^3 - s^3);
disp([r, s, vol]);
end
end

disp('Fin del primer bucle anidado');

for r = r + 1:5
vol = (4/3) * pi * r^3;
disp([r, vol]);
end

c.
for i = 1:4
for j = 1:10
if j > 2 * i
break;
end
disp([i, j]);
end
end

d.
x = 1;
while x <= 20
disp(x);
x = x + 1;
end

e.
r = 1;
while r <= 5
vol = (4/3) * pi * r^3;
disp(['Volumen para r = ', num2str(r), ': ', num2str(vol)]);
r = r + 1;
end

f.
r = 0;
while r < 10
r = input('Ingrese el radio: ');
if r < 0
disp('Saliste del programa');
break;
end
vol = (4/3) * pi * r^3;
fprintf('Volumen = %7.3f\n', vol);
end

g.
suma = 0;
for n = 1:10
suma = suma + 1/2^n;
end
suma

Muestre en consola los resultados de estos programas:

1. Este programa permita imprimir un triángulo rectángulo formado por asteriscos.


1) 𝑓𝑜𝑟 𝑘 = 1: 7
2) 𝑓𝑜𝑟 𝑙 = 1: 𝑘
3) 𝑓𝑝𝑟𝑖𝑛𝑡𝑓(′ ∗ ′)
4) 𝑒𝑛𝑑
5) 𝑓𝑝𝑟𝑖𝑛𝑡𝑓(′\𝑛′)
6) 𝑒𝑛𝑑

Resultados:

2. Este programa permita imprimir un rectángulo de base 6 y altura 7.


1) 𝑓𝑜𝑟 𝑘 = 1: 7
2) 𝑓𝑜𝑟 𝑙 = 1: 6
3) 𝑓𝑝𝑟𝑖𝑛𝑡𝑓(′ ∗ ′)
4) 𝑒𝑛𝑑
5) 𝑓𝑝𝑟𝑖𝑛𝑡𝑓(′\𝑛′)
6) 𝑒𝑛𝑑

3. Este programa permita imprimir un pino utilizando un solo carácter (*):


1) 𝑎 = 10;
2) 𝑛 = 12;
3) 𝑡 = 3;
4) 𝑑 = 4;
5) 𝑓𝑜𝑟 𝑖 = 1: 𝑎
6) 𝑐𝑙𝑒𝑎𝑟 𝑐𝑎𝑑2 𝑐𝑎𝑑1
7) 𝑛𝑢𝑚_𝑎𝑠𝑡 = 2 ∗ 𝑖 − 1;
8) 𝑛𝑢𝑚_𝑒𝑠𝑝 = 𝑛 − 𝑖;
9) 𝑐𝑎𝑑1(1: 𝑛𝑢𝑚_𝑒𝑠𝑝) = ′ ′;
10) 𝑐𝑎𝑑2(1: 𝑛𝑢𝑚_𝑎𝑠𝑡) = ′ ∗ ′;
11) 𝑓𝑝𝑟𝑖𝑛𝑡𝑓(′%𝑠%𝑠\𝑛′, 𝑐𝑎𝑑1, 𝑐𝑎𝑑2)
12) 𝑒𝑛𝑑
13) 𝑐𝑙𝑒𝑎𝑟 𝑐𝑎𝑑2 𝑐𝑎𝑑1
14) 𝑛𝑢𝑚_𝑎𝑠𝑡 = 𝑑;
15) 𝑛𝑢𝑚_𝑒𝑠𝑝 = 𝑛 − 𝑑/2;
16) 𝑐𝑎𝑑1(1: 𝑛𝑢𝑚_𝑒𝑠𝑝) = ′ ′;
17) 𝑐𝑎𝑑2(1: 𝑛𝑢𝑚_𝑎𝑠𝑡) = ′𝐼′;
18) 𝑓𝑜𝑟 𝑖 = 1:𝑡
19) 𝑓𝑝𝑟𝑖𝑛𝑡𝑓(′%𝑠 %𝑠\𝑛′, 𝑐𝑎𝑑1, 𝑐𝑎𝑑2)
20) 𝑒𝑛d

4. Este programa permita imprimir el triángulo de Pascal.


1) 𝑐𝑙𝑐; 𝑐𝑙𝑒𝑎𝑟;
2) 𝑓𝑝𝑟𝑖𝑛𝑡𝑓(′\𝑛\𝑛′)
3) 𝑑𝑖𝑠𝑝(′ === 𝐸𝑙 𝑡𝑟𝑖𝑎𝑛𝑔𝑢𝑙𝑜 𝑑𝑒 𝑃𝑎𝑠𝑐𝑎𝑙 === ′)
4) 𝑛𝑟 =
𝑖𝑛𝑝𝑢𝑡(′𝐼𝑛𝑑𝑖𝑞𝑢𝑒 𝑒𝑙 𝑛𝑢𝑚𝑒𝑟𝑜 𝑑𝑒 𝑟𝑒𝑛𝑔𝑙𝑜𝑛𝑒𝑠 𝑑𝑒𝑙 𝑇𝑟𝑖𝑎𝑛𝑔𝑢𝑙𝑜: ′);
5) 𝑓𝑝𝑟𝑖𝑛𝑡𝑓(′\𝑛′)
6) 𝑛 = 15; % Numero de espacios en blanco antes del vértice.
7) 𝑥(1) = 1;
8) 𝑐𝑎𝑑1(1: 𝑛) = ′ ′;
9) 𝑓𝑝𝑟𝑖𝑛𝑡𝑓(′%𝑠%3.0𝑓\𝑛\𝑛′, 𝑐𝑎𝑑1, 𝑥(1));
10) 𝑓𝑜𝑟 𝑘 = 2: 𝑛𝑟;
11) 𝑐𝑙𝑒𝑎𝑟 𝑐𝑎𝑑1 𝑐𝑎𝑑2
12) 𝑛𝑢𝑚_𝑒𝑠𝑝 = 𝑛 − 2 ∗ 𝑘 + 1;
13) 𝑐𝑎𝑑1(1: 𝑛𝑢𝑚_𝑒𝑠𝑝) = ′ ′;
14) 𝑐𝑙𝑒𝑎𝑟 𝑥
15) 𝑥(1) = 1;
16) 𝑓𝑜𝑟 𝑐 = 2: 𝑘;
17) 𝑥(𝑐) = 𝑥(𝑐 − 1) ∗ (𝑘 − 𝑐 + 1)/(𝑐 − 1);
18) 𝑒𝑛𝑑
19) 𝑓𝑝𝑟𝑖𝑛𝑡𝑓(′%𝑠′, 𝑐𝑎𝑑1)
20) 𝑓𝑜𝑟 𝑐 = 1: 𝑘
21) 𝑓𝑝𝑟𝑖𝑛𝑡𝑓(′ %3.0𝑓′, 𝑥(𝑐))
22) 𝑒𝑛𝑑
23) 𝑓𝑝𝑟𝑖𝑛𝑡𝑓(′\𝑛\𝑛′)
24) 𝑒𝑛𝑑

5. Escriba la siguiente rutina en Octave con precisión doble o extendida para implementar los
siguientes algoritmos para calcular 𝜋:
1) 𝑎 = 0;
2) 𝑏 = 1;
3) 𝑐 = 1/𝑠𝑞𝑟𝑡(2);
4) 𝑑 = 0.25;
5) 𝑒 = 1;
6) 𝑓𝑝𝑟𝑖𝑛𝑡𝑓(′ 𝑘 𝑓 𝐸𝑟𝑟𝑜𝑟(𝑓) 𝑔 𝐸𝑟𝑟𝑜𝑟(𝑔)\𝑛′)
7) 𝑓𝑜𝑟 𝑘 = 1: 5
8) 𝑎 = 𝑏;
9) 𝑏 = (𝑏 + 𝑐)/2;
10) 𝑐 = 𝑠𝑞𝑟𝑡(𝑐.∗ 𝑎);
11) 𝑑 = 𝑑 − 𝑒.∗ (𝑏 − 𝑎). ^2;
12) 𝑒 = 2.∗ 𝑒;
13) 𝑓 = (𝑏. ^2)/𝑑;
14) 𝑒1 = 𝑎𝑏𝑠(𝑓 − 𝑝𝑖);
15) 𝑔 = ((𝑏 + 𝑐). ^2)/(4.∗ 𝑑);
16) 𝑒2 = 𝑎𝑏𝑠(𝑓 − 𝑔);
17) 𝑓𝑝𝑟𝑖𝑛𝑡𝑓(′ %1.0𝑑 %. 15𝑓 %. 15𝑓 %. 15𝑓 %. 15𝑓 \
𝑛′, 𝑘, 𝑓, 𝑒1,𝑔, 𝑒2)
18) 𝑒𝑛𝑑
¿Cuál converge más rápidamente, 𝑓 o 𝑔? ¿Qué exactitud tienen los valores finales?
Converge más rápido g, dado que se acerca al valor de la medida, y la exactitud de valores finales es
de 3.1479 y 3.1432, 2 decimales.

También podría gustarte