Você está na página 1de 10

1 Resolvendo Integrais e Derivadas usando o MatLAB

Tutorial para a resoluo de


Integrais e Derivadas usando o
MatLAB

Aluno: Orlindo Wagner Soares Pereira


Matrcula: 20131026009

Professor: Libardo Gonzles Torres


Curso: Engenharia Mecnica - ICT - UFVJM

Diamantina
Novembro - 2014

Vibraes Mecnicas
2 Resolvendo Integrais e Derivadas usando o MatLAB

Sumrio

Introduo ............................................................................................................................................... 3
Objetivos ................................................................................................................................................. 3
Derivando e Integrando com o MatLAB .................................................................................................. 3
Obteno de resultados na forma analtica ........................................................................................ 3
Obteno de resultados na forma numrica ...................................................................................... 6
Integrao........................................................................................................................................ 6
Diferenciao................................................................................................................................... 8
Concluso .............................................................................................................................................. 10
Referncias Bibliogrficas...................................................................................................................... 10

Vibraes Mecnicas
3 Resolvendo Integrais e Derivadas usando o MatLAB

Introduo

A integrao e derivao so ferramentas fundamentais no Clculo. Em termos prticos a integrao


calcula a rea debaixo de uma curva e a diferenciao descreve a inclinao ou o gradiente de uma
funo. O MatLAB inclui funes para aproximar numericamente a integral e a inclinao de uma
funo. Essas aproximaes tambm podem ser obtidas quando a funo tabulada em pontos
igualmente espaados sobre a regio de interesse.

Objetivos

Descobrir e fazer o uso de algumas ferramentas do MatLAB para efetuar-se uma integrao ou uma
derivao, apresentando os resultados e explicando os pontos importantes ao se executar esse tipo
de tarefa. Seja pela a anlise de uma funo conhecida ou a partir de pontos obtidos
experimentalmente.

Derivando e Integrando com o MatLAB

O MatLAB pode ser usado tanto para auxiliar o usurio nos clculos analticos quanto na
aproximao numrica usando mtodos apropriados.

Obteno de resultados na forma analtica

Para obter os resultados na forma analtica seja por integrao ou diferenciao, preciso utilizar a
ferramenta syms do MatLAB, ao consultar a ajuda tem-se:

>> help sym

sym Construct symbolic numbers, variables and objects.

S = sym(A) constructs an object S, of class 'sym', from A. If the


input argument is a string, the result is a symbolic number or variable.
If the input argument is a numeric scalar or matrix, the result is a
symbolic representation of the given numeric values. If the input is a
function handle the result is the symbolic form of the body of the
function handle.

Ou seja, o MatLAB entende que a varivel em questo do tipo simblica. Consequantemente o


resultado, tambm, ser do tipo simblico.

Vibraes Mecnicas
4 Resolvendo Integrais e Derivadas usando o MatLAB

Para ficar mais fcil o entendimento, utilizemos a funo para que seja possvel integr-la
analiticamente:

Figura 1: Funo humps(x)1

Suponha que seja desejada a integral indefinida dessa funo, ento o cdigo ser escrito no matlab
seria:

% declarao de x como uma varivel simblica


syms x;

% uso da funo diff para encontrar a derivada da funo


derivada = diff( (1/((x-0.3).^2+0.01)) + (1/((x-0.9).^2+0.04)) - 6)

% uso da funo int para encontrar a derivada da funo


integral = int( (1/((x-0.3).^2+0.01)) + (1/((x-0.9).^2+0.04)) - 6)

ao apertar a tecla Enter:

derivada =

- (2*x - 9/5)/((x - 9/10)^2 + 1/25)^2 - (2*x - 3/5)/((x - 3/10)^2 +


1/100)^2

integral =

10*atan(10*x - 3) - 6*x + 5*atan(5*x - 9/2)

1
A funo humps uma funo j implementada no MatLAB que serve como exemplo para fins didticos.

Vibraes Mecnicas
5 Resolvendo Integrais e Derivadas usando o MatLAB

Ao fazer este clculo manualmente o resultado :

Figura 2: Soluo analtica da funo humps

Deste modo foi possvel utilizar o MatLAB para derivar e integrar uma funo analiticamente.

NOTA: importante ressaltar que o software faz uso de recursos numricos para chegar estes
resultados.

Este recurso pode ser muito til para conferir resultados de operaes matemticas feitas
manualmente ou para ganhar tempo quando no possvel realizar o clculo rapidamente, ou at
mesmo quando no lembramos um dado mtodo para sair de uma integral ou derivada muito
complicada.

Se por exemplo, deseja-se a derivada no ponto ou a integral definida em um dado intervalo basta
acrescentar os valores separando-os por vrgulas, no parnteses onde vo os parmetros da funo:

% declarao de x como uma varivel simblica


syms x;

% derivada da funo humps no ponto x = 0


Derivada_x0 = diff( (1/((x-0.3).^2+0.01)) + (1/((x-0.9).^2+0.04)) - 6, 0)

% Integral da funo humps no intervalo [-1,2]


Integral_x1_x2 = int( (1/((x-0.3).^2+0.01)) + (1/((x-0.9).^2+0.04)) - 6,-
1,2)

RESULTADO:

Derivada_x0 =

1/((x - 9/10)^2 + 1/25) + 1/((x - 3/10)^2 + 1/100) - 6

Vibraes Mecnicas
6 Resolvendo Integrais e Derivadas usando o MatLAB

Integral_x1_x2 =

14*pi + atan(1470053833920256146312/3874205111257197316909) - 18

Note que o resultado ainda analtico, ou seja no um valor numrico j calculado. No caso da
integral por exemplo, basta copiar e colar2 na prpria janela de comando e ser possvel achar o valor
correspondente rea debaixo da curva:

>> 14*pi + atan(1470053833920256146312/3874205111257197316909) - 18

ans =

26.34

Obteno de resultados na forma numrica

Integrao

O MatLAB contm trs funes para calcular a integral de funes descritas por arquivos M ou
funes in-line: quad, quadl e dblquad.

Para ilustrar a integrao, considere a funo humps(x), mostrada na Figura 1. Ento a soma das
reas trapezoidais se aproxima da integral da funo. Evidentemente que medida que o nmero de
trapzios aumenta, o ajuste entre os trapzios e a funo torna-se melhor, resultando a uma
aproximao mais precisa da integral ou da rea.

Figura 3: Integrao numrica pelo mtodo da soma das reas dos trapzios

O script abaixo calcula a integral da funo humps no intervalo [-1,2] usando: trapz(x,y),
cumtrapz(x,y), quad(@humps,-1,2) e quadl(@humps,-1,2).

2
Particularmente estou procurando uma maneira mais interessante de fazer isso, ou seja, passar de variveis
simblicas para variveis numricas sem haver a necessidade de copiar e colar

Vibraes Mecnicas
7 Resolvendo Integrais e Derivadas usando o MatLAB

clear;clc; %(Ateno!) Apaga tudo e limpa a janela de comandos


x = -1:.17:2;
y = humps(x);
area1 = trapz(x,y)

subplot(1,3,1);
plot(x,y);
title('Funo humps incremento de 0.17' );
xlabel('x');
ylabel('humps(x)');
grid on;

x = linspace(-1,2,100); % exige pontos igualmente espaados


y = humps(x);
% format long
area2 = trapz(x,y)

subplot(1,3,2);
plot(x,y);
title('Funo humps 100 pontos regulares' );
xlabel('x');
ylabel('humps(x)');
grid on;

z = cumtrapz(x,y); %vetor correspondente soma cumulativa da funo humps


area3 = z(end)
subplot(1,3,3);
plot(x,y,x,z);
title('Funo humps e integral cumulativa de humps' );
xlabel('x');
ylabel('humps(x)');
grid on;

area4 = quad(@humps,-1,2)
area5 = quadl(@humps,-1,2)

Resultados:

area1 = 25.92
area2 = 26.34
area3 = 26.34
area4 = 26.34
area5 = 26.34

Figura 4: Integrao Numrica da funo humps(x)

Vibraes Mecnicas
8 Resolvendo Integrais e Derivadas usando o MatLAB

Dependendo das propriedades da funo em questo, pode ser difcil determinar uma largura tima
de trapzio. bvio que se fosse possvel variar as larguras individuais dos trapzios a fim de adequ-
los s caractersticas da funo, uma preciso bem maior poderia ser obtida.

As funes quad e quadl, que se baseiam no conceito matemtico de quadratura, usam essa
estratgia. Essas funes de integrao funcionam da mesma maneira. Ambas calculam a funo a
ser integrada usando intervalos com comprimentos adequados para obter resultados precisos. Alm
disso a funes fazem aproximaes de ordem mais elevada que a de um simples trapzio, sendo
quadl mais rigorosa que quad.

Diferenciao

Comparada integrao, a diferenciao numrica muito mais difcil, uma vez que a diferenciao
muito mais sensvel pequenas variaes na forma de uma funo que a integrao. Como a
diferenciao descreve a inclinao de uma funo no ponto, qualquer mudana pequena em uma
funo pode gerar grandes alteraes em sua inclinao, nas proximidades de onde ocorreu a
mudana3.

Quando possui-se apenas alguns pontos, torna-se interessante realizar um ajuste de curva
polinomial, usando o mtodo dos mnimos quadrados e derivar o polinmio resultante. Ou ajustar
splines cbicas e encontrar a representao por splines das derivadas. Ou seja, costuma-se encontrar
uma melhor funo de interpolao antes de aplicar a derivada.

O script abaixo descreve a interpolao polinomial e em seguida a sua derivada:

clear;clc; % Ateno para no apagar suas vriveis no Matlab


x = [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1];
y = [-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];

n = 2; % ordem do ajuste

p = polyfit(x,y,n); % encontra os coeficientes do polinmio


xi = linspace(0,1,100);
yi = polyval(p,xi); %calcula o polinmio

subplot(1,2,1);
plot(x,y,'o',xi,yi,'--');
xlabel('x');
ylabel('y = f(x)');
title('Ajuste da curva de segunda ordem');

dp = polyder(p);
dyp = polyval(dp,x); % avalia o polinmio derivada para comparao
dy = diff(y)./diff(x); %calcula as diferenas e usa a diviso vetorial
xd = x(1:end-1); %xd um novo vetor para o eixo x
%j que dy tem comprimento menor que y

3
Devido a essa dificuldade inerente, a diferenciao numrica evitada sempre que possvel, principalmente
se os dados a serem derivados so obtidos experimentalmente.

Vibraes Mecnicas
9 Resolvendo Integrais e Derivadas usando o MatLAB

subplot(1,2,2);
plot(xd,dy,x,dyp,':');
xlabel('x');
ylabel('dy/dx');
title('Derivada por diferentes mtodos');
legend('polyder','diff');

RESULTADOS:

Polinmio de interpolao: y = f(x) = -9.8108x^2 + 20.1293x 0.0317


Derivada: dy/dx = -19.6217x + 20.1293

Figura 5: Funo interpolada e sua derivada por diferentes mtodos

Comparando a derivada encontrada utilizando a funo diff com a obtida por aproximao
polinomial, bastante evidente que a aproximao da derivada por diferenas finitas pode conduzir
resultados ruins, principalmente se os dados foram obtidos experimentalmente ou partir de
medidas imprecisas. No entanto o uso de qualquer um dos mtodos pode ser interessante para fins
de visualizao.

Evidentemente calcular a derivada de uma funo polinomial de ordem n fcil tanto analiticamente
quanto numericamente. Numericamente a dificuldade est em encontrar o melhor polinmio que se
adequa aos pontos em questo. Por outro lado, hesitem outros mtodos de interpolao. Todavia
estes problemas parecidos podem ocorrer.

Vibraes Mecnicas
10 Resolvendo Integrais e Derivadas usando o MatLAB

Concluso

O presente trabalho apresentou, brevemente, tcnicas para resolver integrais e derivadas de forma
analtica e/ou numrica com o auxlio do MatLAB. Alm disso, foi discutido algumas particularidades
de cada mtodo utilizado.

Foi possvel observar que os casos que envolvem diferenciao so muito mais complicados que os
que envolvem integrao. De modo que uma escolha inadequada de um determinado mtodo, pode
conduzir resultados ruins.

Enfim, foi possvel aprender algumas novas tticas de programao no MatLAB, de modo tornar
possvel a sua utilizao para a resoluo de problemas diversos de engenharia.

Referncias Bibliogrficas

HASELMAN, D.; LITTERFIELD, B.. Matlab 6: Curso Completo Integrao e Diferenciao. So Paulo:
Ed. Pearson Prentice hall, 2003. p.269-279.

WOLFRAM|ALPHA: Computational Knowledge Engine

Disponvel em: < http://www.wolframalpha.com/ > Acessado em 09/10/2014

Vibraes Mecnicas