Você está na página 1de 2

Roteiro e Funo no Matlab

O Matlab, como outras linguagens de programao, possui duas formas de criao de


programas: roteiro (script) e funo (function). Na aula passada, vimos um exemplo prtico de
criao de um roteiro que executava uma seqncia de comandos Matlab para o ajuste de curvas
(linear, polinomial e no-linear). Quando um programa executa uma seqncia de comandos que
pode ou no retornar parmetros na janela de comandos do Matlab, ento esse programa denomina-
se roteiro no Matlab. Em ingls, roteiro chamado script, termo esse que tambm usado na
lngua portuguesa para descrever uma seqncia de eventos.
Entretanto, muitas vezes necessitamos de um programa na forma de funo. Uma funo
um roteiro que retorna um valor (ou parmetro). Por exemplo, quando realizamos o clculo de
valores numricos de funes trigonomtricas no Matlab utilizamos funes intrnsecas (isto ,
funes j existentes no Matlab). Por exemplo, para calcular o seno de um ngulo de 5 radianos,
utilizamos o comando:

>> y = sin(5)
y =
-0.9589

O valor de sen 5 gravado na varivel y. Note a sintaxe da funo matemtica sin(5), na
qual utiliza-se a sintaxe na lngua inglesa (sin) da funo seno, por se tratar de uma funo
intrnseca do Matlab e segundo, o argumento da funo, isto , o valor de x para o qual queremos
determinar o valor do seno est colocado entre parentsis.
Quando desejamos um programa que funcione como uma funo, ento o roteiro chamado
function. Para ilustrar a diferena entre roteiro e funo, vamos calcular a funo e
x
na forma de
roteiro (aula2c):

% aula2c Calculo da funcao exponencial por serie de Taylor

x = input('Valor de x: ');
n = input('Numero de termos: ');
funcao = 0;
for k = 1:n
termo = x.^k/fatorial(k);
funcao = funcao + termo;
end
disp(['exp(' num2str(x) ') = ' num2str(funcao) ' com ' num2str(n) ' termos']);

Neste roteiro, o valor de x informado atravs de uma instruo input. O mesmo ocorre
para o nmero n de termos da srie. Lembrando que a funo exponencial na forma de srie de
Taylor descrita pela equao:

=
=
0 k
k
x
! k
x
e

observamos que o lao for-end executa o clculo de cada termo da srie (varivel termo) para
depois ser somada na varivel soma. No final do roteiro, o resultado exibido na janela de comando
do Matlab usando a instruo disp. Observar que utilizamos no clculo do termo da srie de
Taylor, uma funo extrnseca chamada fatorial que no existe no Matlab, que foi criada na aula
prtica e reproduzida a seguir:

function f = fatorial(n)
f = 1;
for k = 1:n
f = f*k;
end

Observar que numa funo, a primeira linha deve obrigatoriamente conter a declarao

function f = fatorial(n)

e que o nome declarado nesta declarao deve ser o mesmo do programa Matlab, ou seja,
fatorial.m.
Se quisermos criar uma funo para o clculo da funo exponencial, ela ser constituda
pelas seguintes instrues (func0):

function f = func0(x,n)
% Funcao para o calculo de exp x por serie de Taylor
% Devem ser fornecidos dois argumentos: x e o numero de termos n

f = 0;
for i = 1:n
k = i - 1;
f = f + x^k/fatorial(k);
end

Observe as diferenas entre a funo func0 e o roteiro aula2c. Ambos os programas
calculam a funo e
x
por srie de Taylor. A funo func0 tem dois parmetros de entrada: a
varivel x e o nmero de termos n, por isso eles so passados dentro do parentsis separados por
vrgula: func0(x,n). O valor da funo e
x
retorna pela varivel f declarada no cabealho do
programa.
A vantagem da funo que ela pode ser usada como uma funo intrnseca do Matlab.
Como exemplo da aplicao da funo func0, vamos calcular o valor do nmero de Euler e
1

utilizando essa funo com nmero de termos variando de um a dez e comparando o resultado com
o valor exato dado pela funo intrnseca do Matlab exp(1):

% aula3 Roteiro para o calculo do numero de Euler por serie de Taylor
% com numero de termos de um a dez e calculo do respectivo erro de
% truncamento

x = 1;
for i = 1:10
exprox(i) = func0(x,i);
end
erro = abs(exprox - exp(1));
result = [exprox' erro'];
disp([' exp erro'])
disp(result)

Você também pode gostar