Está en la página 1de 13

SOLUCIONES COMPUTACIONALES A PROBLEMAS EN INGENIERÍAS PRIMER

LABORATORIO #1 IST 4360


Daniela Ortega, Luis Felipe Rocha, Laura Valencia,
Juan Diego Monsalve, Juan Camilo Martínez.

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

b15=input('Digite un número en base 15 a convertir:');

b10= base2dec(b15,15);

disp('Conversión a decimal: ');

disp(b10);

b8=dec2base(b10,8);

disp('Conversión a octal: ');

disp(b8);

b16=dec2hex(b10);

disp('Conversión a hexadecimal: ');

disp(b16);

b30=dec2base(b10,30);

disp('Conversión a base 30: ');

disp(b30);

b31=dec2base(b10,31);

disp('Conversión a base 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

valor = input ('Digite el valor en sistema de base 8 a convertir: ');


ValorDecimal = base2dec('valor',8);

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)

disp('El error absoluto es: ')


disp(eabsoluto)

- Prueba de escritorio:

Digite el valor en sistema de base 8 a convertir:

'34566637424232524'

el valor IEEE es:

01011000011001011101101100111111

teorico =

1.010919275574612e+15

experimental =

single

1.0109193e+15

El error relativo es:

5.2645828e-07

El error absoluto es:

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:

Digite una función:


sin(x)-log(cos(x-4))
Digite un valor para h:
0.2
Digite un valor para xi:
5
Valor real de la primera derivada:
1.841069910118128

Valor aproximado de la primera derivada:


1.392955680999216

Error absoluto de la primera derivada:


0.448114229118913

Error relativo de la primera derivada:


0.243398812101687

Valor real de la segunda derivada:


4.384443095477899

Valor aproximado de la segunda derivada:


-6.243310917905966 +78.539816339744831i

Error absoluto de la segunda derivada:


79.255611195989431

Error relativo de la segunda derivada:


18.076551450224873

Valor real de la tercera derivada:


10.386196759512091

Valor aproximado de la tercera derivada:


1.105127325870865e+03 - 2.159844949342983e+03i

Error absoluto de la tercera derivada:


2.421443442447168e+03

Error relativo de la tercera derivada:


2.331405324311341e+02

6
Valor real de la cuarta derivada:
55.744075592614678

Valor aproximado de la cuarta derivada:


-2.284341024122933e+04 + 2.945243112740431e+04i

Error absoluto de la cuarta derivada:


3.730706324196692e+04

Error relativo de la cuarta derivada:


6.692561109921713e+02

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 ;

fb = double (subs (f,b) ) ;


subs (f,xm) ;
k= k+1 ;
end

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.

Planteamiento del problema aplicado:


Se sabe que un gas se considera ideal cuando su viscosidad es 0 o se aproxime a 0, esto se presenta a
temperaturas muy bajas. Para un gas ideal, se presenta a continuación su función de viscosidad:
F(x) = Ln (0.75 x)
Siendo x la temperatura en °C. Hallar a qué temperatura este gas puede ser considerado como ideal
ideal.

- Código:
clear all

clc

syms x
a = input ('Digite el valor de a: ');

b = input ('Digite el valor de b: ');


tol = input ('Digite el valor de la tol: ');

f = input ('Digite la función: ');


sw = true;

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

fxb = subs(f, b);

fxa = subs(f, a);

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);

fxa = subs(f, a);


xmant = xm;
xm = (a*fxb - b*fxa)/(fxb-fxa);

fxm = subs(f, xm);


er = abs((xm-xmant)/xmant);

end
if( xm > contA && xm < contB)

disp('La raiz aproximada es: ');

disp(double(xm))

end

11
contA = contA + inc;

%fprintf('\nCont A: %d \n', contA);

contB = contB + inc;


%fprintf('\nCont B: %d \n', contB);
End

- Prueba de escritorio con función de múltiples raíces :


Digite el valor de a: 0
Digite el valor de b: 4

Digite el valor de la tol: 0.01

Digite la función: cos(10*x)


La raiz aproximada es:

0.1571
La raiz aproximada es:
0.4713
La raiz aproximada es:
0.7854

La raiz aproximada es:


1.0996

La raiz aproximada es:

1.4137
La raiz aproximada es:

1.7279
La raiz aproximada es:

2.0420

La raiz aproximada es:

2.3562

La raiz aproximada es:

2.6704

12
La raiz aproximada es:

2.9845

La raiz aproximada es:


3.2987
La raiz aproximada es:

3.6128

- Prueba de escritorio con función de problema aplicado:

Digite el valor de a: 1
Digite el valor de b: 2

Digite el valor de la tol: 0.01


Digite la función: log (0.75 *x)
La raiz aproximada es:
1.3333

13

También podría gustarte