Sei sulla pagina 1di 9

UNIVERSIDADE FEDERAL DE PERNAMBUCO

PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA MECÂNICA


MÉTODOS NUMÉRICOS – 2018.2

LISTA DE EXERCÍCIOS

Resumo

Este documento contém os códigos de resolução dos problemas elencados pelo


professor, como exigência da disciplina de Métodos Numéricos 2018.2. As questões
foram selecionadas do Livro “STEVEN C. CHAPRA, "Métodos Numéricos Aplicados com
Matlab para Engenheiros e Cientistas", 3a Ed., Bookman, 2013” e foi utilizado o Matlab
R2014b (8.4.0.150421).
PROBLEMA 2.6
Geração de um gráfico da carga no capacitor q(t) como função do tempo para um circuito RLC:

% MÉTODOS NUMÉRICOS 2018.2

% QUESTÃO 2.6

q0 = 10; % carga inicial


R = 60; % resistência
L = 9; % indutância
C = 0.00005; % capacitância

t = 0:0.01:0.8; % vetor temporal

% carga no capacitor q(t) como uma função do tempo:


q = q0*exp(-R*t/(2*L)).*cos(sqrt((1/(L*C))-(R/(2*L))^2)*t);

plot(t,q)
title('Gráfico de carga no capacitor q(t) como função do tempo')
xlabel('tempo')
ylabel('carga no capacitor')
grid
PROBLEMA 5.14
Cálculo da taxa de juros de um empréstimo utilizando a função bissec:

% MÉTODOS NUMÉRICOS 2018.2

% QUESTÃO 5.14

clc
clear

P = 35000.00; % valor atual do veículo


n = 7; % número de anos
A = 8500.00; % pagamentos anuais

syms i
f = @(i) P*i*(1+i)^n/((1+i)^n-1)-A; % Fórmula

% Chamada da Função do Método da Bissecção


[xr,ea,iter]=bissec(f,0.01,0.5,0.0005);

fprintf ('\nTaxa de Juros: %1f\n',xr);

% Função apresentada na Fig 5.7 e utilizada no Problema 5.14

function [raiz,fx,ea,iter]=bissec(func,xl,xu,es,maxit,varargin)
% bissec: localização de raízes pelo metodo da bissecção
% [raiz,fx,ea,iter]=bisect(func,xl,xu,es,maxit,p1,p2,...):
% usa o metodo da bissecção para encontrar a raiz de FUNC
% entrada:
% func = nome da função
% xl, xu = aproximações inferior e superior
% es = erro relativo desejado (padrão = 0.0001%)
% maxit = numero maximo de interações permitidas(Padrão = 50)
% p1,p2,... = parametros adicionais usados por FUNC
% Saida:
% Raiz = raiz real
% fx = valor da função em raiz
% ea = erro relativo aproximado (em %)
% iter = numero de interações
if nargin<3,error('Precisa ter pelo menos 3 argumentos de
entrada.'),end
test = func(xl,varargin{:})*func(xu,varargin{:});
if test>0,error('Não há mudança 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)
x_velho = xr;
xr = (xl + xu)/2;
iter = iter + 1;
if xr ~= 0,ea = abs((xr - x_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{:});

PROBLEMA 5.18
Cálculo do fator de atrito de Fanning pela equação de von Karman, utilizando o método da
bissecção:

% MÉTODOS NUMÉRICOS 2018.2

% QUESTÃO 5.18

clc
clear
fprintf ('PROBLEMA 5.18\n');
format bank

Eab = 0.000005; % erro absoluto


Re = input ('\nInforme o Número de Reynolds (2.500 < Re < 1.000.000):
');

% Equação de von Karman


vk=@(f,Re) 4*log10(Re*sqrt(f))-0.4-1/sqrt(f);

% Chamada da função para cálculo de f que usa a bissecção


f1=Fanning(vk,0.001,0.01,Re);

fprintf ('\nFator de Atrito de Fanning: %f\n',f1);

% Fanning pelo Método de Bissecção

function f=Fanning(func,xl,xu,varargin)
% func = nome da função
% xl, xu = aproximações inferior e superior
% re = números de reynolds
test = func(xl,varargin{:})*func(xu,varargin{:});
if test>0,error('sem mudança de sinal'),end
for i = 1:11 %limite de iterações vai de 1 a 11 pelo cálculo feito
pela equação 5.6
xr = (xl + xu)/2;
test = func(xl,varargin{:})*func(xr,varargin{:});
if test < 0
xu = xr;
elseif test > 0
xl = xr;
else
break
end
end
f=xr;

PROBLEMA 6.11
Avaliação da convergência do método de Newton-Raphson para a função:

𝑓(𝑥) = 𝑡𝑎𝑔ℎ(𝑥 2 − 9)

A fórmula de Newton-Raphson para esta função é:

𝑡𝑎𝑔ℎ(𝑥𝑖 2 − 9)
𝑥𝑖+1 = 𝑥𝑖 −
2𝑥𝑖 𝑠𝑒𝑐ℎ²(𝑥𝑖 2 − 9)

% MÉTODOS NUMÉRICOS 2018.2


% QUESTÃO 6.11

clc
clear

x=3.2; % aproximação inicial


v_x=zeros(1,4);
v_ea=zeros(1,4);
v_x(1)=x;

for i=1:3
x_ant = x;
x = x-tanh(x^2-9)/(2*x*sech(x^2-9)^2);
ea = abs((x - x_ant)/x) * 100 ;

v_x(i+1)=x;
v_ea(i+1)=ea;
end

subplot(1,2,1);plot(0:3,v_x)
title('(a)')
xlabel('iteração')
ylabel('xi')
subplot(1,2,2);plot(0:3,v_ea)
title('(b)')
xlabel('iteração')
ylabel('ea')

Como é possível observar, o método não convergiu para sua raiz real.
PROBLEMA 6.13

PROBLEMA 6.15

PROBLEMA 9.5

PROBLEMA 9.7

PROBLEMA 9.8

PROBLEMA 12.2

PROBLEMA 12.6

PROBLEMA 12.7
PROBLEMA 12.8

PROBLEMA 12.11

PROBLEMA 15.8

PROBLEMA 15.17

PROBLEMA 18.8

PROBLEMA 19.7

PROBLEMA 19.9

Potrebbero piacerti anche