Вы находитесь на странице: 1из 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 denominase 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 x function. Para ilustrar a diferena entre roteiro e funo, vamos calcular a funo e 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:

ex =

xk k! k =0

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 ex 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 ex 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 e1 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)

Вам также может понравиться