Exercícios para o Matlab
Integração Numérica em MatLab
Notas sobre as funções do Matlab:
‰
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 o integral duma função que passa pelos pontos
com abcissas X e ordenadas Y usando a regra dos trapézios
Exemplo:
» 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)
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 ou devemos usar a função inline para definir esta função
on-line.
Exemplo:
Para obter o valor aproximado do integral da função f(x)=cos(x)-exp(-x) em
[0, 0.5] podemos primeiramente definir a função f(x) num ficheiro externo e
logo executar o seguinte comando do matlab:
function y=f2(x)
y=cos(x)-exp(-x);
» quad(' f2 ', 0, 0.5)
ans =
0.0860
ou usar a função inline para definir a função f(x) direitamente na função quad:
» quad(inline ('cos(x)-exp(-x)'), 0, 0.5)
ans =
0.0860
Gladys Castillo. U.A.
Exercícios para o Matlab
Computação simbólica
‰
função INT: Determina o valor exacto do integral duma função
INT(f) – determina o integral indefinido referente à variável simbólica
INT(f,a,b) - determina o valor do integral num intervalo [a,b] referente à
variável simbólica.
Exemplo 1: Determinar o integral
» syms x
I = ∫ 1 − x 2 dx
» i=int(sqrt(1-x^2))
i=
1/2*x*(1-x^2)^(1/2)+1/2*asin(x)
% uma expressão simbólica
» pretty(i)
1/2
1/2 x (1 - x 2)
+ 1/2 asin(x)
1
Exemplo 2: Determinar o valor do integral
I = ∫ 1 − x 2 dx
0
» syms
» double(int(sqrt(1-x^2),0,1))
ans =
0.7854
% devolve o valor do integral no intervalo dado
Exercícios:
1. Dada a função a função f(x) definida pontualmente através da seguinte tabela:
e I=
xi
-1.0
0.5
0.0
0.5
1.0
f(xi)
-2
12
-6
10
11
1
∫ f ( x)dx
o valor do seu integral:
−1
a) Escreva um programa em Matlab para determinar um valor aproximado de I
usando a regra dos trapézios.
Sug: Utilize a função do Matlab trapz
2. Escreva em Matlab a função trapézio(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.
Gladys Castillo. U.A.
Exercícios para o Matlab
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 deste 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 do 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 do
seguinte integral:
0 .5
I = ∫ cos( x ) − e − x dx
0
usando a regra de Simpson
Sug: Utilize a função quad(f,a,b) do Matlab para determinar o valor aproximado do
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 do 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:
(a) usando a regra de Simpson com n subintervalos determina um valor
aproximado para:
b
I = ∫ f ( x ) dx
a
(b) determina o valor exacto deste integral, o erro absoluto e erro relativo
desta aproximação.
Sug: Utilize a função simpson(f,a,b,n) do exercício 5 para determinar o valor
aproximado do integral e a função int(f,a,b) de computação simbólica para
determinar o valor exacto.
7. Utilize as funções trapezio(f,a,b,n) e simpson(f,a,b,n) para determinar um
valor aproximado para as seguintes integrais usando a regra dos trapézios e a
regra de Simpson, respectivamente:
1
(a)
I = ∫ 1 − x 2 dx
0
1
(b)
I = ∫ x sin( x ) dx
0
Gladys Castillo. U.A.
Exercícios para o Matlab
1
(c)
I = ∫ e − x dx
2
0
Compare ambos os resultados e identifique a melhor aproximação em cada
caso.
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 o 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 do integral
%---------------------------------------------------------------------h =(b-a)/n;
x=a;
y=eval(f);
s = h/2 * y;
for k=1:(n-1);
x = a + h*k;
y = eval(f);
s = s + h*y;
end
x=b;
y=eval(f);
s =s + h/2 * y;
% determina o incremento para n subintervalos
% define o primeiro ponto
% avalia a função para o primeiro ponto
% inicializa a soma para o primeiro ponto
% para os restantes pontos até n-1:
% calcula o ponto seguinte
% avalia a função neste ponto
% incrementa a soma
% define o último ponto
% avalia a função para o último ponto
% adiciona o último termo à soma
Como executar:
» s=trapezio('sqrt(1-x^2)', 0, 1, 5)
s=
0.75926220722089
Gladys Castillo. U.A.
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:
» exerc3
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
Gladys Castillo. U.A.
Exercícios para o Matlab
4.
%----------------------------------------------------------------% Este programa determina um valor aproximado para o integral de
% f(x)=cos(x)-exp(-x) em [0, 0.5] usando a Regra de Simpson,
% e determina o valor exacto do integral usando computação
% simbolica
%-----------------------------------------------------------------fun = 'cos(x)-exp(-x)';
format long;
Is = quad(inline(fun), 0, 0.5);
disp('O valor aproximado do integral usando a regra de Simpson é'),
disp(Is);
syms x;
f= sym(fun); % converte fun a uma variável simbólica
I = double(int(f, 0, 0.5));
disp('O valor exacto da integral: '), disp(I);
erroabs = I-Is;
errorel = erroabs/abs(Is);
format short e;
disp('O erro absoluto da aproximação: ), disp(erroabs);
disp('O erro relativo da aproximação: ), disp(errorel);
format short;
Executar:
» exerc4
O valor aproximado da integral usando a regra de Simpson é
0.08595619828600
O valor exacto da integral:
0.08595619831684
O erro absoluto da aproximaçao:
3.0832e-011
O erro relativo da aproximaçao:
3.5869e-010
Gladys Castillo. U.A.
Exercícios para o Matlab
5.
function s = simpson(f,a,b,n)
%-------------------------------------------------------------% Esta função implementa a Regra de Simpson
%
Is=(h/3)[f(a)+4f(x1)+2f(x2)+...+4f(xN-1)+f(b)]
% que aproxima o valor do integral duma função
% num intervalo dado
% Para executar chamar:
%
s = sympson(f,a,b,n)
% Parâmetros de entrada
%
f
- a funçao como string (ex: f='exp(x^2)')
%
a,b - intervalo [a,b]
%
n
- número de subintervalos
% Parâmetros de saída
%
Is
- o valor aproximado da integral
%-------------------------------------------------------------if mod(n,2)~=0
disp ('O número de intervalos tem de ser par');
else
format long;
h=(b-a)/n;
% determina o incremento para n subintervalos
Is=0;
for k=1:2:(n-1)
x = a+h*k;
Is = Is+4*eval(f); % para os impares multiplico por 4
end
for k=2:2:(n-2)
x=a+h*k;
Is=Is+2*eval(f); para os pares multiplico por 2
end
x=a; fa= eval(f);
x=b; fb=eval(f);
Is=h*(fa + Is + fb)/3;
end
Como executar:
» s= simpson('cos(x)-exp(-x)',0,0.5,4)
s=
0.08595631710502
Gladys Castillo. U.A.
Exercícios para o Matlab
6.
%-----------------------------------------------------------------% Este programa usa a regra de Simpson composta para determinar um
% valor aproximado para o integral duma função dada num intervalo
% dado
%-----------------------------------------------------------------echo off;
format long
fun=input('Introduza a função (como string): ');
disp('Introduza o intervalo para x:');
a=input('a= '); b=input('b= ');
disp('Introduza o numero de subintervalos:');
n=input('n= ');
s=simpson(fun,a,b,n);
disp('O valor aproximado do integral usando a regra de Simpson é'),
disp(s);
syms x;
f= sym(fun); % converte fun a uma variável simbólica
i=double(int(f,a,b));
disp('O valor exacto do integral: '), disp(i);
erroabs = i-s;
errorel = erroabs/abs(i);
format short e;
disp('O erro absoluto da aproximação:' ), disp(erroabs);
disp('O erro relativo da aproximação:' ), disp(errorel);
format short;
Executar:
» exerc6
Introduza a função (como string): 'cos(x)-exp(-x)'
Introduza o intervalo para x:
a= 0
b= 0.5
Introduza o número de subintervalos:
n= 4
O valor aproximado da integral usando a regra de Simpson é
0.08595631710502
O valor exacto da integral:
0.08595619831684
O erro absoluto da aproximaçao:
-1.1879e-007
O erro relativo da aproximaçao:
-1.3820e-006
Gladys Castillo. U.A.
Download

Integração MATLAB