Está en la página 1de 15

MÉTODOS NUMÉRICOS

Universidad de Cuenca,
Facultad de Ciencias Químicas, Carrera de Ingeniería Química.
Cuenca-Ecuador
Violeta Molleturo Bermeo
Trabajo No. 4
Fecha de recepción: 29 de Noviembre de 2017

LIBRO: ANÁLISIS NUMÉRICO Y VISUALIZACIÓN GRÁFICA CON MATLAB


Raíces de ecuaciones no lineales - Capítulo 7 (Pares)

1. Encuentre de forma aproximada todas las soluciones positivas de las siguientes


ecuaciones utilizando el método gráfico:
a) tan(x) – x + 1 = 0, 0 <x <3π
b) sen(x) – 0.3ex = 0, x>0
c) 0.1x3 – 5x2 – x + 4 + e-x = 0
d) log(x) -0.2x2 – 1 = 0
e) x + x2 + 3x-1 – 40 = 0
Código de MATLAB 7.2 (a)
%Problema 7.2

clc;
clear;
x=linspace(0,3*pi,1000);
y=tan(x)-x+1;
plot(x,y);
grid on
axis([0 10 -10 10])
ylabel('Eje y')
xlabel('Eje x')

Raíces aproximadas de x=1.6, 4.2, 4.9, 7.8, 7.9

1
Código de MATLAB 7.2 (b)
%Problema 7.2 (b)

clc;
clear;
x=linspace(0,50,1500);
y=sin(x)-0.3.*exp(x);
plot(x,y);
ylabel('Eje y')
xlabel('Eje x')
grid on
axis([0 2 -1 1]);

Raíces aproximadas de x= 0.5, 1.1


Código de MATLAB 7.2 (c)
%Problema 7.2 (c)

clc;
clear;
x=linspace(-10,60,1500);
y=0.1.*x.^3-5.*x.^2-x+4+exp(-x);
plot(x,y);
ylabel('Eje y')
xlabel('Eje x')
grid on
axis([-10 60 -2000 2000])

2
Raíces aproximadas de x=-5.8, 50
Código de MATLAB 7.2 (d)
%Problema 7.2 (d)

clc;
clear;
x=linspace(0,10,1500);
y=log(x)-0.2.*x.^2+1;
plot(x,y);
ylabel('Eje y')
xlabel('Eje x')
grid on
axis([0 4 -1 1])

Raíces aproximadas de x=0.3, 3.3

Código de MATLAB 7.2 (e)


%Problema 7.2 (e)

clc;
clear;
x=linspace(-10,10,1500);
y=x+x.^2+3.*x.^-1-40;
plot(x,y);
ylabel('Eje y')
xlabel('Eje x')
grid on
axis([-7 6 -50 10])

3
Raíces aproximadas de x=-7, 0.1, 5.8
2. Repita el problema 7.1 con el método de la bisectriz.
Código de MATLAB
%Problema 7.4

% bisec_g(Nombre_f, a,c, xmin, xmax, n_puntos)


% METODO DE LA BISECTRIZ CON GRÁFICA
% a, c: extremos del intervalo inicial
% xmin and xmax: coordenadas n mínima y máxima de la gráfica
% n_points: número de puntos utilizados para trazar la curva
function bisec_g(f_name, a,c, xmin, xmax, n_points)
% it_limit: límite del número de iteraciones
% Y_a, Y_c: valores y de los extremos actuales
% fun_f(x): valor funcional en x
clf, hold off; hold on
clear Y_a, clear Y_c
wid_x = xmax - xmin; dx = (xmax- xmin)/n_points;
xp=xmin:dx:xmax; yp=feval(f_name, xp);
plot(xp,yp); xlabel('x');ylabel('f(x)');
title('Método de la bisectriz')
ymin=min(yp); ymax=max(yp);wid_y = ymax-ymin;
yp=0.*xp; plot(xp,yp)
fprintf( 'Bisection Scheme\n\n' );
tolerance = 0.000001; it_limit = 30;
fprintf( ' It. a b c f(a) ');
fprintf( ' f(c) abs(f(c)-f(a))/2\n' );
it = 0;
Y_a = feval(f_name, a ); Y_c = feval(f_name, c );
plot([a,a],[Y_a,0]); text(a,-0.1*wid_y,'x=a')
plot([c,c],[Y_c,0]); text(c,-0.1*wid_y,'x=c')
if ( Y_a*Y_c > 0 ) fprintf( ' f(a)f(c) > 0 \n' );
else
while 1
it = it + 1;
b = (a + c)/2; Y_b = feval(f_name, b );
plot([b,b],[Y_b,0],':'); plot(b,0,'o')
if it<4, text(b, wid_y/20, [num2str(it)]), end
fprintf('%3.0f %10.6f, %10.6f', it, a, b );
fprintf('%10.6f, %10.6f, %10.6f', c, Y_a, Y_c );
fprintf( ' %12.3e\n', abs((Y_c - Y_a)/2));

4
if ( abs(c-a)<=tolerance )
fprintf( ' Tolerance is satisfied. \n' );break
end
if ( it>it_limit )
fprintf( 'Iteration limit exceeded.\n' ); break
end
if( Y_a*Y_b <= 0 ) c = b; Y_c = Y_b;
else a = b; Y_a = Y_b;
end
end
fprintf('Final result: Root = %12.6f \n', b );
end
x=b;
plot([x x],[0.05*wid_y 0.2*wid_y])
text( x, 0.25*wid_y, 'Final solution')
plot([x (x-wid_x*0.004)],[0.05*wid_y 0.09*wid_y])
plot([x (x+wid_x*0.004)],[0.05*wid_y 0.09*wid_y])

a) 0.5exp(x/3) – sen(x) = 0, x>0

0<x <1
ε = 0.001
n=10
Raíz x=0,67675781

i a b c f(a) f(b) f(c)


1 0 0,5 1 0,5 0,11125467 -0,14366477
2 0,5 0,75 1 0,11125467 -0,03962605 -0,14366477
3 0,5 0,625 0,75 0,11125467 0,03071455 -0,03962605
4 0,625 0,6875 0,75 0,03071455 -0,00583127 -0,03962605
5 0,625 0,65625 0,6875 0,03071455 0,01210998 -0,00583127
6 0,65625 0,671875 0,6875 0,01210998 0,00305489 -0,00583127
7 0,671875 0,6796875 0,6875 0,00305489 -0,0014095 -0,00583127
8 0,671875 0,67578125 0,6796875 0,00305489 0,00081739 -0,0014095
9 0,67578125 0,67773438 0,6796875 0,00081739 -0,00029739 -0,0014095
10 0,67578125 0,67675781 0,67773438 0,00081739 0,00025967 -0,00029739

b) log(1+x) – x2 =0
0<x <0.5
ε = 0.001
5
n=9
Raíz x=0,37011719

I a b c f(a) f(b) f(c)


1 0 0,25 0,5 0 0,03441001 -0,07390874
2 0,25 0,375 0,5 0,034410013 -0,0023223 -0,07390874
3 0,25 0,3125 0,375 0,034410013 0,02044306 -0,0023223
4 0,3125 0,34375 0,375 0,020443062 0,01015441 -0,0023223
5 0,34375 0,359375 0,375 0,010154415 0,00418889 -0,0023223
6 0,359375 0,3671875 0,375 0,004188888 0,00100142 -0,0023223
7 0,3671875 0,37109375 0,375 0,001001419 -0,00064342 -0,0023223
8 0,3671875 0,36914063 0,37109375 0,001001419 0,00018326 -0,00064342
9 0,369140625 0,37011719 0,37109375 0,000183256 -0,00022902 -0,00064342

3. Un ingeniero de diseño necesita encontrar las coordenadas de las intersecciones de


la superficie de ala NACA 0012(dada en el problema anterior) y la curva por:
𝑦(𝑥) = 0.2𝑥(𝑥 − 0.6)

Calcule el valor por el método que prefiera.

Código de MATLAB
%Problema 7.6

clc;
clear;
x=linspace(0,1,1000);
y1=0.2969.*(sqrt(x))-0.126.*x-0.3516.*x.^2+0.2843.*x.^3-0.1015.*x.^4;
y2=-0.2969.*sqrt(x)+0.126.*x+0.3516.*x.^2-0.2843.*x.^3+0.1015.*x.^4;
y3=0.2.*x.^2-0.12.*x;
hold on
plot(x,y1,'r')
plot(x,y2,'b')
plot(x,y3,'g')
ylabel('Eje y')
xlabel('Eje x')
axis([0 1 -.2 .2])
grid on
hold off
6
Función para calcular raíces

%PROBLEMA 7.6
%interseccion de dos puntos
function Resp=interc(f1,f2,a,c) %ingresar funciones en texto
f1=inline(f1);
f2=inline(f2);
r=1
format long
while r>=0.00001
b=(a+c)/2;
if abs(f1(a)-f2(a))>abs(f1(c)-f2(c))
a=b;
r=abs(f1(a)-f2(a));
aux=0;
else
c=b;
r=abs(f1(c)-f2(c));
aux=1;
end
end
if aux==0
Resp=[a f2(a)];
else
Resp=[c f2(c)];
end

7
Raíces x1=0.8297 x2=0.03812411

4. Encuentre las raíces positivas de las siguientes funciones por iteración de Newton:
𝑥
𝒂) 𝒇(𝒙) = 0.5𝑒𝑥𝑝 ( ) − 𝑠𝑒𝑛(𝑥), 𝑥>0
3
𝒃) 𝒇(𝒙) = 𝑙𝑜𝑔(1 + 𝑥) − 𝑥 2
𝒄) 𝒇(𝒙) = 𝑒𝑥𝑝(𝑥) − 5𝑥 2
𝒅) 𝒇(𝒙) = 𝑥 3 + 2𝑥 − 1
𝒆) 𝒇(𝒙) = √𝑥 + 2 − 𝑥

Código de MATLAB (a)


%Problema 7.8 (a)

clear;
clc;
fa=inline('0.5*exp(x/3)-sin(x)');
fb=inline('log(1+x)-x^2');
fc=inline('exp(x)-5*x^2');
fd=inline('x^3+2*x-1');
fe=inline('sqrt(x+2)-x');
disp('ECUACIÓN a')
Newt_n(fa,0.1);
disp('ECUACIÓN b')
Newt_n(fb,0.1);
disp('ECUACIÓN c')
Newt_n(fc,0.1);
disp('ECUACIÓN d')
Newt_n(fd,0.1);
disp('ECUACIÓN e')
Newt_n(fe,0.1);

8
5. Dos elipses tienen entre cero y cuatro intercepciones, como se muestra en la figura
7.11. Las siguientes ecuaciones representan dos elipses. Encuentre las coordenadas
de las intercepciones, primero con un método gráfico y luego por la iteración de
Newton. Sugerencia: Elimine x o y. Y trabaje con una sola incógnita

(𝑥 − 2)2 + (𝑦 − 3 + 2𝑥)2 = 5

2(𝑥 − 3)2 + (𝑦/3)2 = 4

Código de MATLAB (a)


%Problema 7.10
%Método gráfico
clc;
clear;
x=linspace(-1,5,1000);
y1=3.*(4-2.*(x-3).^2).^.5;
9
y11=-3.*(4-2.*(x-3).^2).^.5;
y2=3-2.*x+(5-(x-2).^2).^.5;
y22=3-2.*x-(5-(x-2).^2).^.5;
hold on
plot(x,y1,'m');
plot(x,y2,'b');
plot(x,y11,'m');
plot(x,y22,'b');
ylabel('Eje y')
xlabel('Eje x')
axis([-1 5 -6 6])
grid on
hold off

6. Una mezcla equimolar de monóxido de carbono y oxígeno debe alcanzar el


equilibrio a 3000 K y un presión de 5 bar. La reacción teórica es:
1
CO + ( ) O2 ↔ CO2
2

La reacción química real se escribe asi:


CO + O2 → xCO + (1⁄2)(1 + x)O2 + (1 − x)CO2
La ecuación de equilibrio químico para determinar la fracción CO restante, o sea
x, esta dad por:

(1 − x) √3 + x
kp = , 0<x<1
x√1 + x √P/Po

Donde Kp=3.06 es la constante de equilibrio para CO + (1/2)O2=CO2 a 300K,P=5


bar y Po=1 bar. Determine el valor de x por iteración de Newton.

10
Código de MATLAB (c)
%Problema 7.12

clear;
clc;
f='(((1-x).*(sqrt(3+x)))./(x.*(sqrt(1+x)).*(sqrt(5))))-3.06';
f=inline(f);
x=linspace(-3,10,100);
plot(x,f(x))
Newt_n(f,0.1)
grid on

7. La ecuación x2-2x-3=0 puede reformularse para el método de sustituciones


sucesivas como sigue:
𝒂) 𝒙 = (𝑥 2 − 3)/2
𝒃) 𝒙 = √2𝑥 + 3
𝒄) 𝒙 = (2𝑥 + 3)/√𝑥
𝒂) 𝒙 = 𝑥 − 0.2(𝑥 2 − 2𝑥 − 3)

Las raíces de la ecuación son x=3 y x=-1. Determine gráficamente cuales de las
formulas anteriores convergen cuando se utilizan para encontrar la raíz x=-1 por
sustitución sucesiva. Verifique los resultados del enfoque gráfico con el criterio de
la ecuación 7.5.3. Repita el análisis para x=3.

11
Código de MATLAB
%Problema 7.14

clc;
clear;
x=linspace(-2,4,100);
y1=(x.^2-3)./2;
y2=sqrt(2.*x+3);
y3=(2.*x+3)./sqrt(x);
y4=x-.2.*(x.^2-2.*x-3);
figure(1)
plot(x,y1)
ylabel('Eje y')
xlabel('Eje x')
figure(2)
plot(x,y2)
ylabel('Eje y')
xlabel('Eje x')
figure(3)
plot(x,y3)
ylabel('Eje y')
xlabel('Eje x')
figure(4)
plot(x,y4)
ylabel('Eje y')
xlabel('Eje x')
axis auto

%Problema 7.14
%método sustitución sucesiva
function A=sustsuc(f,x)
f=inline(f);
for i=1:10000
x=f(x);
end
A=x;

x=-1

>> sustsuc(y1,-0.5)
ans=
-0.985821845040695 -1

x=3

>> sustsuc(y1,3.5)
ans=
Inf

12
x=-1

>> sustsuc(y2,-1.5)
ans=
3

x=3

>> sustsuc(y2,2.5)
ans=
3

x=-1

>> sustsuc(y3,-0.5)
ans=
6.178127809565643 –
0.000000000000000i

x=3

>> sustsuc(y3,2.5)
ans=
6.178127809565643

x=-1

>> sustsuc(y4,-1.5)
ans=
Inf

x=3

>> sustsuc(y4,2.5)
ans=
3

13
8. El factor de fricción f para los flujos turbulentos en la tubería está dada por:

1 e 9.35
= 1.14 − 2 log 10 [ + ]
√f D R e √f

Llamada correlación de Colebrook, donde Re es el número de Reynolds, e es la aspereza


de la superficie de la tubería y D es el diámetro de la tubería. a) Escriba un programa
de computadora que resuelva la ecuación para f utilizando el método de las sucesiones
sucesivas.

Código de MATLAB
%Problema 7.16

clear;
clc;
function f=friccion(D,e,R,f1)
D=input('EL DIAMETRO (D):');
e=input(' ASPEREZA DE LA SUPERFICIE DE LA TUBERIA (e) :');
Re=input('NÚMERO DE REYNOLDS(Re) :');
x=-3:0.1:2;
y=(1.14-2.*log10(e./D+9.35./(Re.*(x.^0.5)))).^(-2)-x;
plot(x,y)
grid on
xlabel('f'); ylabel('f');
f1=input('INGRESE UNA APROXIMACION INICIAL:');
for i=1:100
f1=(1.14-2*log10(e/D+9.35/(Re*(f1^0.5))))^(-2);
end
f=f1;

b) Evalue f ejecutando el programa para los sigueintes casos:

D=0.1 m, e=0.0025 m, Re=3x104

14
D=0.1 m, e=0.0001 m, Re=5x106

15