Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Materiales de Construcción
Programa de Ingeniería Civil, Universidad del Norte
Ejercicio #1: Implementar los algoritmos en Matlab que dado un número en base 15 mostrarlo en las
siguientes bases:
• Binario • Base 30
• Octal • Base 31
• Hexadecimal
- Código:
clear all
clc
b10= base2dec(b15,15);
disp(b10);
b8=dec2base(b10,8);
disp(b8);
b16=dec2hex(b10);
disp(b16);
b30=dec2base(b10,30);
disp(b30);
b31=dec2base(b10,31);
disp(b31);
1
- Prueba de escritorio:
Digite un número en base 15 a convertir:
'8754C'
Conversión a
decimal:
429822
Conversión a octal:
1507376
Conversión a base
30:
FRHC
Conversión a base
31:
ED87
2
Ejercicio #2: Dado un valor en base 8, mostrar su respectiva representación en formato IEEE 754 y
viceversa, con los respectivos errores absoluto y relativo generados.
- Código:
clc
clear all
valorIEEE=dec2bin(typecast(single(ValorDecimal),'uint32'),32);
disp('el valor IEEE es: ')
disp(valorIEEE)
valorDecimall = typecast(uint32(bin2dec(valorIEEE)),'single');
teorico = ValorDecimal
experimental = valorDecimall
erelativo=(abs(teorico-experimental)/teorico)*100;
eabsoluto=abs(teorico-experimental);
disp('El error relativo es: ')
disp(erelativo)
- Prueba de escritorio:
'34566637424232524'
01011000011001011101101100111111
teorico =
1.010919275574612e+15
experimental =
single
1.0109193e+15
5.2645828e-07
5322068
3
Ejercicio #3: Implementar los algoritmos de derivación numérica en Matlab para calcular la
primera, segunda, tercera y cuarta derivada, mostrando en cada caso, el valor teórico,
experimental, error absoluto y error relativo para aproximaciones a la derivada con
diferencias finitas divididas hacia adelante. Graficar cada uno de los datos, usando colores
distintos y una leyenda en la figura.
- Código:
clc
clear all
format long
syms x
f=input('Digite una función: ');
h=input('Digite un valor para h: ');
xi=input('Digite un valor para xi: ');
colores={'b','g','r','c','m','y','k'};
vr1=double(subs(diff(f),xi));
disp('Valor real de la primera derivada: ')
disp(vr1);
va1=(-3*subs(f,xi)+4*subs(f,xi+h)-subs(f,xi+2*h))/(2*h);
va1 = double(va1);
disp('Valor aproximado de la primera derivada: ');
disp(va1);
ea1=abs(vr1-va1);
disp('Error absoluto de la primera derivada: ');
disp(ea1);
er1=abs(ea1/vr1);
disp('Error relativo de la primera derivada: ');
disp(er1);
vr2=double(subs(diff(f,2),xi));
disp('Valor real de la segunda derivada: ')
disp(vr2);
va2=(2*subs(f,xi)-5*subs(f,xi+h)+4*subs(f,xi+2*h)-subs(f,xi+3*h))/(h^2);
va2 = double(va2);
disp('Valor aproximado de la segunda derivada: ');
disp(va2);
ea2=abs(vr2-va2);
disp('Error absoluto de la segunda derivada: ');
disp(ea2);
er2=abs(ea2/vr2);
disp('Error relativo de la segunda derivada: ');
disp(er2);
vr3=double(subs(diff(f,3),xi));
disp('Valor real de la tercera derivada: ')
disp(vr3);
4
va3=(-5*subs(f,xi)+18*subs(f,xi+h)-24*subs(f,xi+2*h)+14*subs(f,xi+3*h)-
3*subs(f,xi+4*h))/(2*h^3);
disp('Valor aproximado de la tercera derivada: ');
va3 = double(va3);
disp(va3);
ea3= abs(vr3-va3);
disp('Error absoluto de la tercera derivada: ');
disp(ea3);
er3= abs(ea3/vr3);
disp('Error relativo de la tercera derivada: ');
disp(er3);
vr4= double(subs(diff(f,4),xi));
disp('Valor real de la cuarta derivada: ')
disp(vr4);
va4=(3*subs(f,xi)-14*subs(f,xi+h)+26*subs(f,xi+2*h)-
24*subs(f,xi+3*h)+11*subs(f,xi+4*h)-2*subs(f,xi+5*h))/(h^4);
disp('Valor aproximado de la cuarta derivada: ');
va4 = double(va4);
disp(va4);
ea4= abs(vr4-va4);
disp('Error absoluto de la cuarta derivada: ');
disp(ea4);
er4= abs(ea4/vr4);
disp('Error relativo de la cuarta derivada: ');
disp(er4);
fig1=ezplot(f);
set(fig1,'color','g')
hold on
fig2=ezplot(diff(f));
set(fig2,'color','m')
hold on
fig3=ezplot(diff(f,2));
set(fig3,'color','b')
hold on
fig4=ezplot(diff(f,3));
set(fig4,'color','c')
hold on
fig5=ezplot(diff(f,4));
set(fig5,'color','k')
hold on
legend('f(x)','f1(x)','f2(x)','f3(x)','f4(x)')
5
- Prueba de escritorio:
6
Valor real de la cuarta derivada:
55.744075592614678
7
Ejercicio #4: Construir una función en Matlab que muestre haciendo uso del método de
Secante: la raíz, No. De iteraciones, Error absoluto, error relativo y la gráfica de la función
que incluya la respectiva raíz y el tiempo de procesamiento.
- Código:
function [raiz,ciclo, error] = punto4(f, a , b , tol)
fb = double (subs (f,b)) ;
k= 0 ;
tic
while(abs(fb) > tol )
fa= double (subs (f,a )) ;
xm= (a * fb -b * fa ) / (fb - fa) ;
a = b ;
b = xm ;
raiz = xm
ciclo = k
error = fb
ezplot (f)
hold on
plot (xm , 0 ,'*b')
hold on
toc
end
8
- Prueba de escritorio:
>> punto4(x^3 + 2*x^2 + 10*x -20 , 0 , 1 , 10^(-3))
raiz =
1.3688
ciclo =
4
error =
1.0086e-04
Elapsed time is 0.320464 seconds.
ans =
1.3688
9
Ejercicio #5: Presentar un problema de Ingeniería afín a la que estudia el grupo, en la que tengan que
resolver una ecuación no lineal. Dada una función, el intervalo y una tolerancia, mostrar todas las
raíces que se encuentran en ese intervalo aplicando el método Regula Falsi Modificado. Impleméntalo
en Matlab y póngalo a prueba en un problema afín a la Ingeniería que estudia el grupo.
- Código:
clear all
clc
syms x
a = input ('Digite el valor de a: ');
B = b;
inc = 0.1;
contA = a;
contB= a + inc;
a = contA;
b = contB;
while sw
a = contA;
10
b = contB;
if (b >= B)
break;
end
xm = (a*fxb - b*fxa)/(fxb-fxa);
fxm = subs(f, xm);
er = 1;
while(er > tol)
if(fxa * fxm > 0)
a = xm;
else
b = xm;
end
fxb = subs(f, b);
end
if( xm > contA && xm < contB)
disp(double(xm))
end
11
contA = contA + inc;
0.1571
La raiz aproximada es:
0.4713
La raiz aproximada es:
0.7854
1.4137
La raiz aproximada es:
1.7279
La raiz aproximada es:
2.0420
2.3562
2.6704
12
La raiz aproximada es:
2.9845
3.6128
Digite el valor de a: 1
Digite el valor de b: 2
13