Está en la página 1de 12

5.16) Suponga el lector que está diseñando un tanque esférico (véase la figura P5.

16) para
almacenar agua para contener se calcula con
[ 3 R−h ]
V =π h2
3
donde V = volumen [m3], h = profundidad del agua en el tanque [ m ], y R=radio del tanque
[m]

Si R = 3m, ¿a qué profundidad debe llenarse método que contenga 30m3 ? Haga tres
iteraciones con el método de la falsa posición a fin de obtener la respuesta. Determine el
error relativo aproximado después de cada iteración.
Planteamiento del problema
[ 3 R−h ]
V =π h2
3
RESOLUCION
Datos
R=3m
V=30m3

30=π h 2
[3 ( 3 )−h ]
3

f ( h )=πh2
[ 3 ( 3 )−h ] −30
3
Despejando
90
h3 −9 h2 fi
π
H F(h)

8.5 -7.477 f(a)

9 28.647f(b)

Primera iteración
i=0(8.5, 9)
h f (a )(b−a ) (−7.477)(9−805)
0 =¿ a fi =8.5 + ¿
f ( a ) −f (b) (−7.477−( 28.647 ) )
h0 =¿ 8.603 m ¿

f (h¿¿ 0)−0.7347<0 ⋯ h 0=¿a (8.603,9)¿ ¿

Segunda iteración i=1(8.603,9)


h f (a )(b−a ) (−0.7347)(9−8.603)
0 =¿ a fi =8.603 + ¿
f ( a) −f (b) (−0.7347− ( 28.647 ) )

h1=¿ 8.613m ¿

f (h¿¿ 1)−0.06123<0 ⋯ h1=¿a (8.613,9)¿ ¿

e rel = |8.613−8.603
8.613 |∗100 %=0.1161 %
Tercera iteración i=2(8.613,9)
h f (a )(b−a) (−0.06123)(9−8.613)
2=¿ a fi =8.613+ ¿
f ( a) −f (b) (−0.06123− ( 28.647 ) )

h2=¿ 8.6138m¿

f (h¿¿ 2)−0.007204< 0 ⋯ h2=¿ a(8.6138,9)¿ ¿

e rel = |8.6138−8.613
8.6138 |∗100 %=0.0092874 %
En esta tercera iteración podemos observar que el error relativo se va acercando cada vez
mas al cero para el valor de h2 =8.6138 m, por lo que podemos considerar este resultado
como solución al problema de profundidad del tanque.
Graficando para obtener los intervalos:
x f(x)
-3 83,0976
-2 16,0768
-1 -19,528
0 -30
1 -21,6224
2 -0,6784
3 26,5488
4 53,776
5 74,72
6 83,0976
7 72,6256
8 37,0208
9 -30
10 -134,72

Analizando, la raíz negativa es descartada y comenzamos a iterar con el primer intervalo


obtenido: [2;3]

5.17) La concentración de saturación de oxigeno disuelto en agua dulce se calcula con la


ecuación (APHA, 1992)
Ino 1.575701 x10 5 6.642308 x 10 7 1.243800 x10 8 8.621949 x 10 11
is=−139.34411+ − + −
Ta Ta
2
Ta
3 4
Ta
Donde O =concentración de saturación de oxigeno disuelto en agua dulce a 1 Aatm(mg/L)
Y T a= temperatura absoluta(K).

Recuerde el lector que T a=T +273.15, donde T= temperatura (°C) De acuerdo con esta
ecuación, la saturación disminuye con el incremento de la temperatura. Para aguas
naturales comunes en climas templados, la ecuación se usa para determinar que la
concentración de oxigeno varia de 14.621 mg/L a 0°C a 6.413 mg/L a 40°C. Dado un
valor de concentración de oxígeno, puede emplearse esta fórmula y el método de
bisección para resolver para la temperatura en °C.
a) Si los valores iniciales son de 0 y 40°C, con el método de la bisección. ¿Cuántas
iteraciones se requerirían para determinar la temperatura con un error absoluto de
0?05°C?
b) Desarrolle y pruebe un programa para el método de bisección a fin de determinar T
como función de una concentración dada de oxígeno, con un error absoluto
preespecifico como en el inciso a). Dadas elecciones iniciales de 0 y 40°C, pruebe
su programa para un error absoluto de 0.05°C para los casos siguientes: o=8,10 y
12mg/L. Compruebe sus resultados
a)

∆ x0 40
log 2 ( )
E ( )
=log 2
0.05
=9.6439

b)
function TC = TempEval(osf)
xl= 0+273.15;
xu=40+273.15;
if fTa)xl, osf)* fTa (xu,osf)>0
error('no bracket ')
end
xr=xl;
for i=1:10
xrold=xr;
xr=(xl+xu)/2;
if xr~=0, ea= abs((xr-xrold)/xr)*100; end
test= fTa(xl,osf)*fTa(xr,osf);
if test <0
xl=xr;
else
ea=0;
end
TC=xr-273.15;
function f=fTa(Ta,osf)
f=-139.34411+1.575701e4/Ta-6.642308e7/Taexp2;
f=f++1.2438e10/Taexpo3-8.621949e11/Taexp4;
f=f-log(osf);

Resultados
>> TempEval(8)
ans =
26.7578
<< TempEval(10)
ans =
15.3516
<< TempEval(12)
ans =
7.4609

5.18) Integre el algo que se bosquejo en la figura 5.10 en forma de subprograma completo
para el método de bisección amigable para el usuario. Entre otras cosas:
a) Construya enunciados de documentación en el subprograma a fin de identificar lo
que se pretende que realice cada sección
b) Etiquete la entrada y la salida
c) Agregue una comprobación de la respuesta, en la que se sustituya la estimación de
la raíz en la función original para verificar si el resultado final se acerca a cero
d) Pruebe el subprograma por medio de repetir los cálculos de los ejemplos 5.3 y 5.4

Option Explicit
Sub TestBisct()
Dim imax As Integer, iter As Integer
Dim x As Double, xl As Double, xu As Double
Dim es As double, ea As Double, xr As Double
Dim ROOT As Double
'input information forn the user
Sheets(''Sheetl'').Select
Ranger(''b4'').Select
xl=ActiveCell.Value
ActiveCell.Offset(1,0).Select
xu=ActiveCell.Value
ActiveCell.Offset(1,0).Select
es=ActiveCell.Value
ActiveCell.Offset(1,0).Select
imax=ActiveCell.Value
Range((''b4'').Select
IF F(X=* F(xu)< 0 then
'If the initial guesses are valid, implementr bisection
'and display results;
root=bisect(xl,xu,es,imax,imax,xr.iter,ea)
MsgBox''The root is: '' root
MsgBox''Iteratio is: '' iter
MsgBox''Estimated is: '' ea
MsgBox''f(xr) is: '' f(xr)
else
'If the initial guesses are valid, implementr
bisection
'and display results;
Function Bisect(xl,xu,es,imax,xr,iter,ea)
Dim x rold As Double, teste As Double
ite=0
do
xrold=xr
'determine new root estimate
xr=(xl+xu)/2
iter?iter+1
'determine aprproximate error
It xr <> 0 Then
ea=Abs ((xr-xrold)/xr)*100
End If
'determine new bracket
teste =f(x)*f(xr)
Tf teste <0 Then
xu=xr
Tf teste >0 Then
xl=xr
Else
ea=0
End If

Loop
Bisect : xr
End Function

Fuction f(c)
F=9.8*68.1/c*(1-Exo(-(c/68.1)*10)-40
End Function

x=0:0.01:5;
y= x.^4-8*x.^3-35*x.^2+450*x-1001';
plot(x,y)
grid on
z=0.*x;
plot(x,y,'b',x,z,'r')
grid on
xlabel('EJE X')
ylabel('EJE Y')
legend ('y= x.*^4-8*x.^3-35*x.^2+450*x-1001');
x T =5.5486702; reemplazando en la funció n f ( x ) :

f ( x )=x 4 −8 x 3−35 x 2+ 450 x−1001,

f ( 5.5486702 )=(5.5486702) 4−8 ¿

f ( 5.5486702 )=−0.42
Este valor se acerca ¿−0.4,lo cual se aproxima al cero
Xl 12
Xu 16
Es 0.01
imax 25

5.19) Desarrolle un subprograma para el método de bisección que minimice las


evaluaciones de la función, con base en el seudocódigo que se presenta en la figura 5.11.
Determine el numero de evaluaciones de la función(n) para el total de iteraciones. Pruebe
el programa con la repetición del ejemplo 5.6
Option Explicit
Sub TestBisectMin ()
Dim Imax As Interger, Iter As Inter
Dim x As Double, xl As Double, xu As Double
Dim es As Double, ea As Double, xr As Double
Dim root As Double
‘input information from the user
Sheets (“Sheetl”). Select
Range (“b4”), Select
xl= ActiveCell . Value
ActiveCell. OffCell (1, 0). Select
xu=ActiveCell. Value
ActiveCell. Offset (1, 0) . Select
es= ActiveCell. Value
ActiveCell.Offset (1, 0). Select
imax= ActiveCell. Value
Range (“b4”). Select
If f (xl) * f (xu) < 0 Then
‘if the initial guesses are valid, implement bisection
‘and display results
root= BisectMin(xl, xu, es, imax, xr, iter, ea)
MsgBox “the root is:” & root
MsgBox “Iterations:” & iter
MsgBox “Estimated error:” & ea
MsgBox “f(xr) = ” & f(xr)
Else
‘if the initial guesses are invalid,
‘display an error message
MsgBox “No sing change between initial guesses”
End If
End Sub
Function BisectMin (xl, xu, es, imax, xr, iter, ea)
Dim xrold As Double, test As Double, fl As Double, fr
As Double
iter = 0
fl = f(xl)
Do
xrold = xr
‘determine new root estimate
xr = (xl + xu)/ 2
fr = f(xr)
iter = iter + 1
‘determine new bracket
test = fl * fr
If test < 0 Then
xu = xr
ElseIf test > 0 Then
xl= xr
fl = fr
Else
ea = 0
End If
‘terminate computation if stopping criterion is met
‘or máximum iterations are exceded
If ea < es Ori ter >= imax Then Exit Do
Loop
BisectMin = xr
End Function
Function f(x)
f = x ^ 10 – 1
End fuction

Xl 0
Xu 1.3
Es 0.01
imax 25

5.20) Desarrolle un programa amigable para el usuario para el método de la falsa posición.
La estructura del programa debe ser similar al logaritmo de la bisección que se bosquejo
en la figura.
Con el método de la falsa posición determine la raíz de la misma ecuación analizada en:
Utilice el método gráfico para determinar el coeficiente de arrastre c necesario para que un
paracaidista de masa m = 68.1 kg tenga una velocidad de 40 m/s después de una caída
libre de t = 10 s. Nota: La aceleración de la gravedad es 9.8 m/s2
667,38
f ( c) = . ( 1−e−0.141684 c ) −40
c
a) GRÁFICAMENTE, los valores iniciales 𝒙𝒊 = 14 y 𝒙𝒖 = 16, y ejecuta iteraciones
hasta que el error 𝜺𝒔= 0,1% o el número de iteraciones es 5.
Grafica
x=8:0.01:20;
y=((666.38)./(x)).*(1-exp(-0.141684.*x))-40;
grid on
z=0.*x;
plot(x,y,x,z,'r')
grid on
xlabel('eje x')
ylabel('eje y')
title('((666.38)/(x)) (1-ℯ^(-0.141684 x))-40')
ylim([-10 10])
b) Programar un código amigable al usuario para el método de la falsa posición. La
estructura del programa debe ser similar al algoritmo de la bisección
FALSA POSICION
function [fp,x,incr,iter]= chaprafposicion(f,xi,xu,es,imax)
%ejemplo. [fp,x,incr,iter]= chaprafposicion('funcionesnolineales',1,2,0.005,25)
fxi=feval(f,xi);
fxu=feval(f,xu);

if fxi*fxu>0
disp('cambiar el intervalo, no existen raices en esos puntos') return
end
iter=0;
x=[];
incr=(xu-xi)/xu;

while incr>es & iter<imax


xr=xu-((fxu*(xu-xi))/(fxu-fxi)); x=[x,xr];%
fxr= feval(f,xr); if
fxr==0
xi=xr; xu=xr; else if
fxi*fxr<0 xu=xr;
fxu=fxr; else
xi=xr; fxi=fxr; end
incr=xu-xi;
iter=iter+1;
end
fp=xr;
end

Función
function [f]=funcionesnolineales(x)
%f=log(x.^2+1)-exp(x/2).*cos(pi.*x);
f=((666.38)./(x)).*(1-exp(-0.141684.*x))-40;
end
Excel Falsa Posición

Criterio
MÉTODO DE REGLA Valor
de
FALSA Real
parad
a
Error Error
i xi xu xr f(xi) f(xu) f(xr) MENSAJ 0,0000 14,5347
retaliv Aproxim
E 05% 95
o% ado
1 14 16 14,5649 1,05013 - - 0,21%
859 211 2,66724 0,05800
27 54
2 14 14,56498 14,5354 1,05013 - - 0,00% 0,002034 CONTI
59 117 211 0,05800 0,00118 63 NUA
54 48
3 14 14,53541 14,5348 1,05013 - -2,417E- 0,00% 4,1514E- CONTI
17 083 211 0,00118 05 05 NUA
48
4 14 14,53480 14,5347 1,05013 -2,417E- -4,93E- 0,00% 8,4682E- CONTI
83 96 211 05 07 07 NUA
5 14 14,5347 14,5347 1,05013 -4,93E- -1,006E- 0,00% 1,7274E- TERMIN
96 957 211 07 08 08 ADO
Matlab Falsa Posición

[fp,x,incr,iter]= chaprafposicion('funcionesnolineales',14,16,0.005,5)

fp =
14.5348

x=
14.5650 14.5354 14.5348 14.5348 14.5348
incr =
0.5348
Iter=
5

También podría gustarte