Você está na página 1de 7

UNIVERSIDADE FEDERAL DE PERNAMBUCO

CENTRO DE TECNOLOGIA E GEOCINCIAS


DEPARTAMENTO DE ENGENHARIA MECNICA

Lista de exerccios 1.
Disciplina: Mtodos Numricos
Professor: Jos Carlos Charamba Dutra

AMANDA DOS SANTOS GALINDO

Recife,
Julho 2014

EXEMPLO 5.1
%Disciplina: Mtodos Numricos%%
%Professor: Jos Carlos Charamba Dutra%%
%Aluna: Amanda dos Santos Galindo%%
%Exemplo 5.1 - A abordagem grfica%%
%Determinar a massa do saltador de bungee junping com um coeficiente
de
%arraste de 0,25 kg/m para ter uma velocidade de 36 m/s aps 4s de
queda
%livre, com a acelerao da gravidade a 9,8m/s2
clc;
clear all;
%coeficiente de arraste
cd = 0.25;
%gravidade
g = 9.81;
%velocidade de queda
v = 36;
%tempo
t = 4;
%%%%%%%%%%%%%%%%%%%%%%%Soluo%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%eixo x
m = linspace(5,200);
%eixo y
fm = sqrt(g*m/cd).*tanh(sqrt(g*cd./m)*t)-v;
plot(m,fm), grid

Figura gerada: eixo x: variao da massa (kg)- zero da funo em


destaque.
%%%%%%%%%%%%%%%%%%%%%%Verificao%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%supondo m= 145 kg como raz
sqrt(g*145/cd).*tanh(sqrt(g*cd./145)*t)-v
%Calculando a velocidade para m=145Kg
sqrt(g*145/cd).*tanh(sqrt(g*cd./145)*t)

ans = 0.0456
ans = 36.0456

EXEMPLO 5.2
function xb=busca_inc(func,xmin,xmax,ns)
%func= nome da funo
%xmin e xmax = extremidades do intervalo
%ns= nmero de subintervalos
if nargin<3, error('so necessrios pelo menos 3 argumentos')
end
if nargin<4, ns=50;
end
%Busca incremental
x=linspace(xmin,xmax,ns);
f=func(x);
nb=0;xb=[]; %xb nulo a menos que seja detectada mudana de sinal
for k = 1:length(x)-1
if sign(f(k)) ~= sign(f(k+1)) %verifica se h mudana de sinal
nb=nb+1;
xb(nb,1)=x(k);
xb(nb,2)=x(k+1);
end
end
if isempty(xb) %exibe que nenhum subintervalo foi encontrado
disp('nenhum subintervalo encontrado')
disp('verifique o intervalo ou aumente ns')
else
disp('nmero de subintervalos:') %exibe o nmero de subintervalos
disp(nb)
end

-----------------------------------------------------------------------------------------------------------------------------Comand Window:
>> busca_inc(@(x) sin(10*x)+cos(3*x),3,6) ==>> Para numero padro de subintervalos (50)
nmero de subintervalos:
5
ans =
3.2449 3.3061
3.3061 3.3673
3.7347 3.7959
4.6531 4.7143
5.6327 5.6939

>> busca_inc(@(x) sin(10*x)+cos(3*x),3,6,100) ==>> Para 100 subintervalos


nmero de subintervalos:
9
ans =
3.2424 3.2727
3.3636 3.3939
3.7273 3.7576
4.2121 4.2424
4.2424 4.2727
4.6970 4.7273
5.1515 5.1818
5.1818 5.2121
5.6667 5.6970

5.4.1 Programa em MATLAB: bissec


function[raiz,fx,ea,iter ]=bissec(func,xl,xu,es,maxit,varargin)
%bissec: localizao de razes pelo mtodo da bisseco
% [raiz,fx,ea,iter]=bisect(func,xl,vu,es,maxit,p1,p2,...):
% usa o mtodo da bisseco para encontrar a raz de func entrada:
% func=nome da funo
% xl,xu = aproximaes inferior e superior
% es = erro relativo desejado (padro = 0,0001%)
% maxit = nmero mximo de iteraes permitidas (padro=50)
% p1,p2,... = parmetros adicionais usados por func sada:
% raiz = raiz real
% fx = valor da funo em raz
% ea = erro relativo aproximado (%)
% iter = nmero de iteraes
if nargin < 3, error ('so necessrios pelo menos 3 argumentos de
entrada'), end
test = func(xl,varargin{:})*func(xu,varargin{:});
if test > 0, error ('no h mudana de sinal'), end
if nargin < 4|isempty(es), es = 0.0001; end
if nargin < 5|isempty(maxit), maxit = 50; end
iter = 0; xr = xl; ea = 100;
while (1)
xr_velho = xr;
xr = (xl + xu)/2;
iter = iter + 1;
if xr ~= 0, ea = abs((xr - xr_velho)/xr)*100; end
test = func(xl,varargin{:})*func(xr,varargin{:});
if test < 0
xu = xr;
elseif test > 0
xl = xr;
else
ea = 0;
end
if ea <= es | iter >= maxit, break, end
end
raiz = xr; fx = func(xr, varargin{:});
end

-----------------------------------------------------------------------------------------------------------------------------Comand Window: (Soluo do Exemplo 5.1, pelo mtodo da bisseco)


>> fm=@(m) sqrt(9.81*m/0.25)*tanh(sqrt(9.81*0.25/m)*4)-36;
>> [massa fx ea iter]= bissec(fm,40,200)
massa =
142.7377
fx =
4.6089e-007
ea =
5.3450e-005
iter =
21

Problemas (Resoluo)
5.1) Use a bisseco para determinar o coeficiente de arraste necessrio de modo que um
saltador de bungee jumping de 80kg tenha uma velocidade de 36 m/s aps 4s de queda livre.
Observao: A acelerao da gravidade 9,81m/s2 Comece com as estimativas iniciais de
xl=0,1 e xu=0,2 e efetue os clculos at que o erro relativo aproximado caia abaixo de 2%.
Usando o algoritmo da Bisseo (Descrito em: 5.4.1 Programa em MATLAB: bissec)
-----------------------------------------------------------------------------------------------------------------------------Comand Window:
fcd=@(cd) sqrt(9.81*80/cd)*tanh(sqrt(9.81*cd/80)*4)-36;
>> [coef_arraste fx ea iter]=bissec(fcd,0.1,0.15)
coef_arraste =
0.1401

fx =
1.0250e-006

ea =
6.8063e-005

iter =
19
-----------------------------------------------------------------------------------------------------------------------------Logo, o coeficiente de arraste necessrio obtido cd= 0,1401 Kg/m. Obtido aps 19 interaes
com um erro relativo aproximado de a = 0,000068063%.

5.8) A concentrao de saturao do oxignio dissolvido em gua fresca pode ser calculada
pela equao:

Onde
a concentrao de saturao do oxignio dissolvido em gua fresca a 1 atm (mg/L)
e Ta a temperatura absoluta (K). Lembre-se Ta=T+273.15, onde T a temperatura em C. De
acordo com essa equao, a saturao diminui com o aumento da temperatura. Para guas
naturais tpicas, em climas temperados, a equao pode ser usada para determinar a variao
da concentrao de oxignio de 14,621 mg/L a 0C at 6,949mg/L a 35C. Dado um valor da
concentrao de oxignio, essa frmula e o mtodo da bisseo podem ser usados para
determinar a temperatura em graus celsius.
a) Se as aproximaes iniciais forem tomadas como 0 e 35 C, quantas iteraes da
bisseo seriam necessrias para determinar a temperatura at um erro absoluto de
0,05C?

Resposta(a):
A equao 5.6 (Chapra) pode ser usada para estimar o n de iteraes:
(

Logo, esse valor pode ser arredondado para 11 iteraes.

b) Com base em a, desenvolva e teste uma funo em MATLAB de bisseo, para


determinar T como uma funo de uma dada concentrao de oxignio. Teste sua
funo para
= 8, 10 e 14 mg/L. Verifique seus resultados.
Algoritmo desenvolvido:
function TC = TempEval(osf)
% funo para avaliar a temperatura em graus celsius
% na concentrao de saturao de oxignio para gua fresca (osf)
xl = 0 + 273.15;
xu = 35 + 273.15;
if fTa(xl,osf)*fTa(xu,osf)>0
error('erro')
end
xr = xl;
for i = 1:11
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
xu=xr;
else
ea=0;

end
end
TC = xr-273.15;
end
function f = fTa(Ta,osf)
f= -139.34411 + 1.575701e5/Ta - 6.642308e7/Ta^2;
f= f + 1.2438e10/Ta^3 - 8.621949e11/Ta^4;
f= f - log(osf);
end

Comand Window:
-----------------------------------------------------------------------------------------------------------------------------Para
= 8 mg/L:
>> TempEval(8)
ans =
17.5000
=== >> Temperatura = 17,5C
-----------------------------------------------------------------------------------------------------------------------------Para
= 10 mg/L:
>> TempEval(10)
ans =
8.7500
=== >> Temperatura = 8,5C
-----------------------------------------------------------------------------------------------------------------------------Para
= 14 mg/L:
TempEval(14)
ans =
1.0938
=== >> Temperatura = 1,0938C
------------------------------------------------------------------------------------------------------------------------------

Você também pode gostar