Você está na página 1de 6

Métodos Numéricos e Estatísticos Exercícios para o Matlab

Integração em MatLab

1. Dada a função a função f(x) definida pontualmente através da seguinte tabela:

xi -1.0 0.5 0.0 0.5 1.0

f(xi) -2 12 -6 10 11

1
e I=
∫ f ( x)dx
−1
o valor da sua integral:

a) Escreva um programa em Matlab para determinar um valor aproximado de I


pela regra dos trapézios.
Sug: Utilize a função do Matlab trapz

Nota: este exercício corresponde ao ex 4. FP3

2. Escreva em Matlab a função trapezio(f,a,b,n) que aproxima o valor da integral


duma função f(x) no intervalo [a,b] usando a regra dos trapézios composta
com n subintervalos

3. Escreva um programa em Matlab que dada uma função f(x), um intervalo [a,b]
e um número n de subintervalos:
(a) usando a regra dos trapézios composta com n subintervalos determina um
valor aproximado para:
b
I = ∫ f ( x ) dx
a
(b) determine o valor exacto desta integral, o erro absoluto e erro relativo
desta aproximação.

Sug: Utilize a função trapezio(f,a,b,n) do exercício 2 para determinar o valor


aproximado da integral e a função int(f,a,b) de computação simbólica para determinar o
valor exacto.

4. Escreva em Matlab um programa para determinar um valor aproximado da


seguinte integral usando a regra de Simpson:

0 .5
I = ∫ cos( x ) − e − x dx (exerc. 2 FP3)
0

Sug: Utilize a função quad(f,a,b) do Matlab para determinar o valor aproximado da


integral e a função int(f,a,b) de computação simbólica para determinar o valor exacto.

5. Escreva em Matlab a função simpson(f,a,b,n) que aproxima o valor da integral


duma função f(x) no intervalo [a,b] usando a regra de Simpson com n
subintervalos.

6. Escreva um programa em Matlab que dada uma função f(x), um intervalo [a,b]
e um número de subintervalos n:
Métodos Numéricos e Estatísticos Exercícios para o Matlab

(a) usando a regra de Simpson com n subintervalos determina um valor


aproximado para:
b
I = ∫ f ( x ) dx
a
(b) determine o valor exacto desta integral, o erro absoluto e erro relativo
desta aproximação.

Sug: Utilize a função simpson(f,a,b,n) do exercício 2 para determinar o valor


aproximado da integral e função int(f,a,b) de computação simbólica para
determinar o valor exacto.

7. Utilize os programa do exercício 3 e do exercício 5 para determinar um valor


aproximado para as seguintes integrais usando a regra dos trapézios e a regra
de Simpson:
1
(a) I = ∫ 1 − x 2 dx (exerc. 1 FP3)
0
1
(b) I = ∫ x sin( x ) dx (exerc. 3 FP3)
0
1
I = ∫ e − x dx (exerc. 5 FP3)
2
(c)
0
Compare ambos os resultados e identifique a melhor aproximação em cada
caso.

Notas sobre as funções do Matlab:

Integração Numérica

 função TRAPZ: numericamente avalia um integral usando a regra dos


Trapézios
(Esta função encontram-se no Data Analysis and Fourier Transformation toolbox)

T=TRAPZ (X,Y) – aproxima a integral duma função definida pelos pontos com
abcissas X e ordenadas Y usando a regra dos trapézios

Resolução exercício 1 no modo imediato do Matlab

» X= [-1,-0.5,0,0.5,1]
X=
-1.0000 -0.5000 0 0.5000 1.0000

» Y=[-2,12,-6,10,11]
Y=
-2 12 -6 10 11

» i=trapz(X,Y)
i=
10.2500 !!! resultado

 função QUAD: numericamente avalia um integral usando a regra de Simpson


(Esta função encontram-se no Function and ODE Solvers toolbox)
Métodos Numéricos e Estatísticos Exercícios para o Matlab

Q=QUAD (‘f’ , A, B ) - aproxima a integral de F(x) no intervalo [A,B] usando a


regra de Simpson com um erro relativo no ordem de 10-3

Para utilizar a função quad primeiramente a função f(x) deverá ser definida
num ficheiro externo.

Para o exercício 4 foi criado o ficheiro f2.m que define a função:

function y=f(x)
y=cos(x)-exp(-x);

Para obter o valor aproximado da integral deverá ser executado o seguinte


comando do matlab:

» quad('f2',0,0.5) % o nome da função é passado como string


ans =
0.0860

Computação simbólica

 função INT: Determina o valor exacto da integral duma função

INT(f) – determina o integral indefinido referente à variável simbólica


INT(f,a,b) - determina o valor da integral num intervalo [a,b] referente à
variável simbólica.

Exemplo 1: Determinar I = ∫ 1 − x 2 dx
» syms x

» i=int(sqrt(1-x^2))
i=
1/2*x*(1-x^2)^(1/2)+1/2*asin(x)

» pretty(i)
1/2
1/2 x (1 - x 2) + 1/2 asin(x)

1
Exemplo 2: Determinar I = ∫ 1 − x 2 dx
0
» syms

» int(sqrt(1-x^2),0,1)

ans =

1/4*pi
Métodos Numéricos e Estatísticos Exercícios para o Matlab

Resoluções dos exercícios:

1.

format long;
X= [-1,-0.5,0,0.5,1];
Y=[-2,12,-6,10,11];
i=trapz(X,Y);
disp('O valor que aproxima a integral pelo método dos trapezios
é:'), disp(i)

2.
function s = trapezio(f,a,b,n)
%------------------------------------------------------------------
% Esta função implementa a Regra do Trapézio Composta que aproxima o
% valor da integral duma função num intervalo dado
% I ≈ h/2 [f(x0)+ 2f(x1) + 2f(x2) + ... + 2f(xn-1) + f(xn-1)
%
% Para executar chamar:
% s = trapezio(f,a,b,n)
% Parâmetros de entrada
% f - a função deve ser introduzida como string
% a,b - intervalo [a,b]
% n - número de subintervalos
% Parâmetros de saída
% s - o valor aproximado da integral obtido pela regra do trapézio
composto
%--------------------------------------------------------------------------

h =(b-a)/n; % determina o incremento para n subintervalos


x=a; % define o primeiro ponto
y=eval(f); % avalia a função para o primeiro ponto
s = h/2 * y; % inicializa a soma para o primeiro ponto
for k=1:(n-1); % para os restantes pontos até n-1:
x = a + h*k; % calcula o ponto seguinte
y=eval(f); % avalia a função neste ponto
s = s + h*y; % incrementa a soma
end
x=b; % define o último ponto
y=eval(f); % avalia a função para o último ponto
s =s+ h/2 * y; % adiciona o último termo à soma

Como executar:
» s=trapezio('sqrt(1-x^2)',0,1,5)

s=

0.75926220722089
Métodos Numéricos e Estatísticos Exercícios para o Matlab

3.

%--------------------------------------------------------------
% Este programa dada uma função f(x), um intervalo [a,b] e um
% número n de subintervalos determina um valor aproximado para
% a integral da função usando a regra dos trapézios
%--------------------------------------------------------------
echo off;
format long;
fun=input('Introduza a função (como string): ');
disp('Introduza o intervalo para x:');
a=input('a='); b=input('b=');
n=input('Introduza o número de subintervalos: ');
s=trapezio(fun,a,b,n);
disp('O valor aproximado da integral: '), disp(s);
syms x;
i=int(fun,a,b);
i=double(i); % converte de simbólico a double
erroabs=i-s;
errorel=erroabs/abs(i);
disp('O valor exacto da integral: '), disp(i);
format short e;
disp('O erro absoluto:' ), disp(erroabs);
disp('O erro relativo:' ), disp(errorel);
format short;

Como executar:
» int3
Introduza a função (como string): 'sqrt(1-x^2)'
Introduza o intervalo para x:
a=0
b=1
Introduza o número de subintervalos: 5
O valor aproximado da integral:
0.75926220722089

O valor exacto da integral:


0.78539816339745

O erro absoluto:
2.6136e-002

O erro relativo:
3.3277e-002

4.
1º. Definir na função num m ficheiro. Neste caso foi definida em f2.m

function y=f(x)
y=cos(x)-exp(-x);

2º. Usar esta função como parâmetro de entrada da função quad do Matlab

echo off;
format long
fun=input('Introduza o nome da função (como string): ');
disp('Introduza o intervalo para x:');
a=input('a='); b=input('b=');
s=quad(fun,a,b);
disp('O valor aproximado da integral é'), disp(s);
Métodos Numéricos e Estatísticos Exercícios para o Matlab

5.

function s = simpson(f,a,b,n)
%--------------------------------------------------------------
% Esta função implementa a Regra de Simpson que aproxima o
% valor da integral duma função num intervalo dado
% Para executar chamar:
% s = simpson(f,a,b,n)
% Parâmetros de entrada
% f - a função deve ser introduzida como string
% a,b - intervalo [a,b]
% n - número de subintervalos
% Parâmetros de saída
% s - o valor aproximado da integral obtido pela regra de
% simpson composto
%--------------------------------------------------------------
if mod(n,2)~=0
disp ('O número de intervalos tem de ser par');
else
format short;
h=(b-a)/n; % determina o incremento para n subintervalos
disp(['O incremento: ',h]);
x= zeros(1,n+1);
% calcular os pontos
disp(n);
x(1)=a;
x(n+1)=b;
for k=2:n
x(k)=x(k-1)+ h;
end

% avaliar a função nestes pontos


y=eval(f);
disp('x= '), disp(x);
disp('f(x)= '), disp(y);

% construir a fórmula de Simpson

s=y(1) + 4* y(2); % inicializa a soma com os dois


primeiros termos
for k=3:(n-1); % para os restantes pontos até n-1
s = s + 2* y(k); % incrementa a soma avaliando este ponto
end

s = s + 4* y(n) + y(n+1); % adiciono os dois últimos termos

format long;
s =h/3 *s % multipica a soma por h/3 para obter o resultado
end

Como executar:

» s= simpson('cos(x)-exp(-x)',0,0.5,4)

O incremento:
4

x=
0 0.1250 0.2500 0.3750 0.5000

f(x)=
0 0.1097 0.1901 0.2432 0.2711

s=

0.08595631710502

Você também pode gostar