Documentos de Académico
Documentos de Profesional
Documentos de Cultura
29 de setembro de 2011
Resumo
Este documento busca auxiliar os alunos de disciplinas que usem os programas Mathworks Matlab e GNU Octave como ferramentas de resoluo de exerccios numricos como Sinais e Sistemas, Processamento Digital de Sinais, Anlise de Sinais Aleatrios e Identicao de Sistemas, entre outros. A inteno apresentar os fundamentos matemticos que orientam as funcionalidades desses softwares em conjunto com vrios exerccios para que o aluno compreenda qual a melhor forma de resolver seus problemas atravs desses softwares. Assume-se de antemo que o aluno no tem qualquer conhecimento dessas ferramentas, mas tem o segundo grau completo, est fazendo graduao e sabe rudimentos de programao convencional. Para este aluno: boa sorte!
Sumrio
1 Introduo
1.1 Computao Numrica
Simblica . . . . . . . . . . . . . . . . 1
2 Linha de Comando
2.1 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
4
5 6
6 8 8 9 10 10 10 11 12 12
13 15
15 18 18 18
7 Textos e Grcos
7.1 7.2 Textos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Grcos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
20 21
8 Programas
8.1 8.2 8.3 8.4 8.5 Novos operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . Aplicaes teis Anlise de Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
24 26 26 26 27 27
ii
iii
8.5.2 8.5.3
28 28
9 Concluso
29
Captulo 1
Introduo
Preliminarmente pensamos em desenvolver uma apostila genrica para apresentar o programa Mathworks Matlab. Uma rpida busca na internet revelou que vrios professores e pesquisadores acabam desenvolvendo uma apostila para seus cursos. Ou seja, seria reescrever a roda mais uma vez. cial (www.mathworks.com) um grande nmero de documentos referentes a cada funo do programa Matlab. A justicativa para escrever esta apostila apresentar no apenas o Matlab como ferramenta computacional para problemas de matemtica numrica (nosimblica), mas tambm softwares livres como GNU Octave (e outros a medida que este projeto evolua). Assim, este documento contemplar os aspectos matemticos (ligados fundamentalmente algebra linear) das ferramentas, bem como o uso de exerccios para permitir que alunos de graduao em engenharia (e outros interessados, mas fundamentalmente aqueles que jamais usaram tais ferramentas computacionais) possam descrever seus problemas na linguagem dessas ferramentas. A possibilidade de apresentar tais ferramentas em conjunto se deve a similaridade entre suas linguagens matemticas. oportunamente no presente documento. Basicamente elas tm a mesma raiz, que a linguagem do Mathworks Matlab. As diferenas sero apontadas Adicionalmente a prpria fabricante (Mathworks) mantm em seu site o-
(1.1)
onde
qualquer (como
a R). f (x)
realizado simbolicamente, por regras bem
O processo de clculo de
ex sen(x) no integrando).
de operaes matemticas possveis para uma determina situao simblica. Ao nal do clculo simblico, teremos um resultado tambm simblico
f (x) =
Pode-se ento aplicar (ou seja,
(1.2) a integral de
g ( x)
f (x))
para um problema quando usamos tais softwares. Pode-se resolver sistemas de equaes lineares, equaes diferenciais ordinrias, diferenciao, etc. Wolfram Mathematica, Maplesoft Maple e PTC MathCad so exemplos de softwares capacitados para computao simblica; entretanto, eles no sero objeto de estudo neste documento. J os programas voltados computao numrica usam uma srie de algoritmos matemticos ecientes voltadas algebra linear sobre os quais se realizam operaes matemticas. ponto, o valor de Para o caso de uma integrao, no h como obter uma expresso matemtica fechada para
f (x).
f (x),
regra de Simpson, por exemplo. Enquanto a computao simblica fornece uma expresso matemtica de preciso innita, a computao numrica produz uma aproximao do resultado. Tal aproximao controlada a partir de parmetros ligados aos algoritmos de resoluo dos problemas (passo de integrao na Regra de Simpson, erro de aproximao no mtodo de Newton-Raphson, passo de integrao no mtodo de Runge-Kutta, etc). Note que h um grande nmero de algoritmos para soluo nmerica de problemas matemticos distintos. Na computao simblica no h tal diversidade, pois as regras de substituio simblica no so controladas pelo usurio.
Captulo 2
Linha de Comando
As ferramentas utilizadas so baseadas em comandos. Tais comandos so digitados em linhas de comando, que so executadas imediatamente pela ferramenta. Assim, a cada comando digitado, a ferramenta interpreta o que foi escrito e executa alguma ao, gerando um resultado (que pode ser apenas um retorno para que o usurio digite novos comandos. Exemplos de comandos:
frisar:
as ferramentas fazem distino entre maisculas e minsculas sin). O mesmo vlido para variveis (descritas na seqncia).
Note que a cada comando, a ferramenta emite uma resposta. Para os dois primeiros comandos, a ferramenta indicou que as atribuies foram efetivadas. mando, indicando assim um erro.
a = 5
b = 4
built-in.
busca em uma srie de diretrios (congurveis) e o executa imediatamente. Caso ainda no o encontre, a ferramenta ento emite uma mensagem adequada de erro. Note que nas atribuies, a ferramenta emite um indicativo de sua ao. possvel impedir tal impresso. Isto feito colocando-se um
virgula
ponto-e-
a = 7; b = 9 teste;
2.1 Exerccios
1. Digite os seguintes comandos e pondere os resultados obtidos: (a) (b) (c) (d)
Captulo 3
help.
Geralmente estaremos
interessados em uma funo matemtica especca (como as funes de Bessel) ou em conhecer como a ferramenta realiza determinada operao (como a resoluo de sistemas de equaes lineares), e at em saber quais os parmetros necessrios de um procedimento interno (como os parmetros para plotagem grca).
Captulo 4
Representao de Nmeros
importante compreender como as ferramentas representam nmeros, pois a forma que os representamos pode signicar maior ou menor ecincia na resoluo dos problemas. Lembre-se sempre que tais ferramentas possuem algoritmos especializados para clculos de lgebra linear. Assim, naturalmente lidaremos como escalares, vetores e matrizes. Aproveitaremos para falar de variveis. As ferramentas associam nmeros a smbolos (variveis) para facilitar a construo de algoritmos matemticos para soluo de problemas. Tal associao feita pelo smbolo
=.
Do lado esquerdo
indicamos qual o smbolo (seqncia alfanumrica iniciada por uma letra, no conter alguns caracteres especiais em sua constituio, como ponto, vrgula, smbolo de igualdade, operadores matemticos de soma, subtrao, multiplicao e diviso, dentre outros). Mais detalhes sobre a constituio de variveis pode ser encontrada com
help.
4.1 Escalares
Os escalares so nmeros, que podem ser reais ou imaginrios (formalmente
x|x R x C).
i=j=
a bj
ou
a bi,
onde
a, b R. i
possvel intercambiar
sem problemas.
notao, para evitar confuso. Importante: observe que a parte imaginria colocada So exemplos de escalares complexos
antes
de
(ou
j ).
10 + 5j 10 + j5 - 3j 1.5 - 0.001j
Em termos de atribuies, podemos fazer mltiplas atribuies, com dife-
rentes representaes numricas, a um mesmo smbolo/varivel. A ferramenta manter a associao da atribuio mais recente. Diferente de linguagens de programao convencionais (como C ou Pascal), as ferramentas no exigem prvia denio de tipos para variveis. So exemplos de atribuies envolvendo escalares:
a a b b
= = = =
5 j 7 0 1.5
+ 0.1j
Para conhecer qual o valor atualmente atribudo uma varivel, basta digitar o nome da varivel sem o ponto-e-vrgula. Caso a ferramenta no conhea essa varivel, trata-la- como um comando externo e tentar execut-lo, como vimos anteriormente.
a b c pi
Note que o valor de pi ( ) uma varivel interna mantida pela ferramenta. possvel realizar operaes matemticas sem atribuir o resultado uma
varivel. Quando isso acontece, as ferramentas automaticamente atribuem o resultado uma varivel chamada
ans
dessa varivel em operaes matemticas, lembrando-se apenas que o seu contedo pode ser sobre-escrito a qualquer momento por uma nova operao sem atribuio.
quais so mantidas pela ferramenta em um dado instante. feita pelos operadores varivel.
who
whos.
Tal vericao
a = 7; b = pi;
que a ferramenta no reconhecer mais aquele smbolo como um repositrio de nmeros. Isso feito pelo operador
clear <variavel>,
variavel
indica
clear
elimina
clear all,
,
todas
as variveis do
alm de eliminar
todas as variveis, tambm reinicia denies de variveis internas da ferramenta (isso signica que voc pode redenir o valor de eliminadas); cabe ento uma olhada em por exemplo). Cada ferramenta eliminar mais ou menos informaes (certamente as variveis sero
help clear
4.1.1
Exerccios
1. Digite os seguintes comandos e pondere os resultados obtidos: (a) (b) (c) (d)
a = b =
10 7.0j 0.01
largura_casa =
4.2 Vetores
Como falamos anteriormente, as ferramentas contem algoritmos especializados para operaes de lgebra linear. Dessa forma, necessrio representar vetores (e, conseqentemente, matrizes) a partir da linha de comando. Lembrando
apenas que um vetor pode ser do tipo linha ou do tipo coluna. Tal diferenciao pode ser feita no momento de sua construo. O vetor construdo usando-se uma seqncia de escalares (reais ou complexos) separados por espao em branco ou por ponto-e-vrgula, e que esto entre dois colchetes ([
]).
a = [ 10 5 2 b = [ 5 + 12j
3 3
8] 4j
10 - 7j
Note que a ferramenta compreende a diferena entre espaos entre escalares e espaos internos relativos aos escalares complexos. Para facilitar a visualizao, podemos escrever valores escalares complexos entre chaves. So vetores do tipo coluna:
a = [ 1 ; b = [ +1;
Tanto os espaos, quanto os ponto-e-vrgulas, permitem concatenao de vetores, gerando vetores maiores. Com base na orientao dos vetores, podemos estend-los conforme nossas necessidades. Veja os exemplos abaixo:
a a b b
= = = =
4.2.1
posio
vetor(posio),
onde
importante
a respeito de vetores (e matrizes): o ndice do primeiro elemento de um vetor sempre 1. A ferramenta emite mensagem de erro em qualquer tentativa de acesso a um elemento cujo ndice extrapole o intervalo fechado o tamanho do vetor.
[1, N ]
onde
[1, N ]).
um vetor de interesse. No caso, o retorno ser no mais um escalar mas outro vetor, contendo apenas aqueles elementos de interesse.
10
4.2.2
size()
4.2.3
possvel reorganizar os elementos dentro de um vetor. Uma das reorganizaes mais comuns a operao de transposio de vetores. Isso feito atravs do operador
',
4.3 Matrizes
Finalmente, temos as denies de matrizes. Este arranjo bidimensional de valores escalares (reais ou complexos) construdo expandindo o conceito de separao de escalares com espaos e ponto-e-vrgula. Basicamente deniremos um conjunto de linhas separadas por ponto-e-vrgula, e dentro dessas linhas separaremos os escalares com espaos. So matrizes:
a = [ 1 2 3; 4 5 6; 7 8 9 ] b = [ j 0; 0 -j] c = [ 1 2 ; 3 4 5 ; 6 7 8 9 ]
11
Na denio de matrizes, importante que o nmero de escalares entre os ponto-e-vrgula sejam iguais; caso contrrio a ferramenta apresentar indicativo de erro. No nal, percebemos que as ferramentas efetivamente lidam com matrizes de escalares, sendo vetores e escalares variaes de matrizes quanto a sua denio. Podemos construir matrizes a partir de vetores, de modo anlogo expanso de vetores feitas na seo anterior.
a a b b
= = = =
[ 1 2 3 ] [a ; a ; a] [ 1 2 3 ] [ b b b ]
Analogamente, pode-se concatenar matrizes para aumento do tamanho das matrizes. Em lgebra linear as matrizes que compem a matriz maior so chamadas de sub-matrizes.
a = [1 2; 3 4; 5 6] a = [a a; a a]
importante que exista coerncia entre as sub-matrizes durante a concatenao, pois as ferramentas emitem mensagem de erro em caso de discrepncia entre nmero de linhas e colunas das sub-matrizes.
4.3.1
Acessando elementos
matriz(linha, coluna), linha um valor inteiro entre 1 e o nmero de linhas da matriz, inclusive (veja como obter o tamanho de uma matriz no Captulo 5) e coluna um valor
Caso usemos
matriz(ndice)
(onde
ndice
nmero total de elementos da matriz, inclusive), a ferramenta considerar que a matriz como um grande vetor, formado pela concatenao de todas as suas colunas, e ento fornecer o elemento desejado.
ndice pode ser uma matriz de ndices (desde que seus elemen-
tos
[1, N ]).
de uma matriz de interesse. No caso, o retorno ser no mais um escalar mas outra matriz, contendo apenas aqueles elementos de interesse.
a = [1 2 3; 4 5 6; 7 8 9] indices = [1 2; 3 4]
12
4.3.2
As ferramentas possuem dois operadores para determinar as dimenses de uma matriz. O operador Outro operador (length()) retorna um escalar contendo a quantidade de
a = [1 2 3; ones(1, 3); zeros(1, 3)] size(a) length(a) a = [1 j; 2+j 3-j] size(a) length(a)
Reorganizao
4.3.3
possvel reorganizar os elementos dentro de uma matriz. Uma das reorganizaes mais comuns a operao de transposio de matrizes. Isso feito atravs do operador ' , que aplicado aps a matriz (ou a varivel que a contm).
simples sobre tal matriz produz a matriz conjugada transposta. Para se obter apenas a matriz transposta (mesmo para matrizes escalares complexas), usamos o operador .'.
Captulo 5
Nmeros especiais
As ferramentas dispem de um conjunto adicional de variveis e operaes para gerar vetores e matrizes de modo eciente. As operaes
zeros()
ones()
a b c d
= = = =
vetores seqenciais (reais) atravs do operador :. Sua sintaxe a:b:c e que representa o vetor descrito caso vetor.
[a, a + b, a + 2b, a + 3b, . . . c]. Note que c pode nunca ser a + (n 1)b < c < a + nb, mas serve como limite para gerao do b = 1.
a b c d e
= = = = =
iniciais, de passo e nais na denio do operator : induzam no-gerao de qualquer elemento. Considerando esses vetores sequenciais, podemos us-los para acessar um bloco contnuo de vetores ou matrizes (conforme visto nas Sees 4.2.1 e 4.3.1).
a = [ones(1, 10) zeros(1, 10) ones(1,10)]; a(12:2:24) a(:) a = [1 2 3 4; 5 6 7 8; 9 10 11 12] a(2, :) a(:, 1:2)
13
14
sozinho
Com o emprego do operador :, podemos fazer atribuies alterando porExige-se apenas que a dimenso do sub-vetor do
Captulo 6
Operaes Matemticas
Existe um grande nmero de operaes matemticas que as ferramentas podem desempenhar. comando Focaremos nas principais, relacionadas com os tipos de nmeOperaes especializadas podem ser consultadas atravs do da ferramenta (veja Captulo 3. ros disponveis.
help
a = 0.1 b = 10 + a * j a + b (a + pi) ^ 2
A soma (ou subtrao) entre escalar e vetor/matriz foge um pouco das re-
gras conhecidas, sendo anloga a multiplicao entre escalar e vetor/matriz: adiciona-se (ou subtrai-se) o escalar a todos os elementos do vetor/matriz.
a = [1 2 3] b = [4 5; 6 7; 8 9] pi + a a + pi j + b b + (-j)
15
16
soma
e subtrao
linhas e colunas, respectivamente, deve ser igual para dois vetores ou matrizes que sejam somados ou subtrados.
a b a a c a a b a
= = + = + = = +
[1 2 3] [2 3 4] b b [2 4 5 6] b - c [1 2; 3 4; 5 6] ones(2, 3); b
a = [1 2 3] b = [4; 5; 6] pi * a a * pi j * b b * (-j)
Para a
multiplicao
a a a a a
b, b, b, b, b,
respectivamente de tamanhos
am am am am am
b n, b n, b n, a n, b m,
m n;
e
respectivamente de tamanhos
m n;
e
respectivamente de tamanhos
a b;
a b c a a a b b c
= = = * * * * * *
17 Existem dois operadores para diviso: \ e / . Devemos entender diviso do ponto de vista da multiplicao entre um nmero e o inverso de outro nmero. O clculo efetivo realizado pela ferramenta :
a\b, ao invs de calcular a matriz inversa de a, as ax = b (pois x = b\a) de modo a obter ecincia via O(n2 ))
ao invs de inverso de matriz
algoritmos de resoluo de sistemas de equaes lineares (mtodos diretos ou iterativos, que atingem complexidade (cuja ecincia
O(n )).
de um problema
ax = b x = b\a
Para matrizes, deve-se considerar que a exponenciao um conjunto de produtos envolvendo uma matriz. Logo, as regras de multiplicao de matrizes so aplicadas no processo de exponenciao. Conseqentemente, no h exponenciao para vetores.
18
de
mesma
c = a .op b a b c d a a b a c d
angle().
6.4 Funes
Alm de operaes aritmticas e de lgebra linear, as ferramentas possuem um conjunto de funes que podem ser aplicadas aos nmeros. Diferente de linguagens de programao, as funes podem ser aplicadas a vetores e matrizes, e em muitos casos, retornam vetores e matrizes. Citaremos apenas algumas funes matemticas que podem ser usadas. As funes
cosseno e tangente de um nmero (considerando esse nmero em radianos). Quando aplicado sobre vetores ou matrizes, as ferramentas aplicam a funo elemento-a-elemento, produzindo vetores ou matrizes, respectivamente.
19
teis para lidarmos com sinais peridicos. Ambas possuem perodo igual a sistemas.
So elas
square()
sawtooth(),
size()
length()).
Captulo 7
Textos e Grcos
Algumas vezes torna-se interessante produzir textos formatados ou grcos para melhor visualizao dos resultados dos clculos realizados nas ferramentas. At agora, os resultados foram apresentados explorando-se diretamente a interface de linha de comandos com o uso ou supresso de ; ao nal dos comandos.
7.1 Textos
As ferramentas possuem um tipo para armazenar textos (strings , distinto dos nmeros. Esse tipo permite armazenar sequncias de caracteres para posterior impresso, por exemplo. Um texto denido por uma seqncia de caracteres isolada por aspas simples ( ').
a = 'texto que defini' size(a) length(a) b = 'outro texto' size(b) length(b) c = [a b] d = [a'; b'] a + b
A grosso modo, um texto um vetor-linha de caracteres. Assim, a concate-
nao de texto segue as regras da concatenao de vetores-linha. A formatao de texto feita pelo operador
sprintf().
Similar linguagem
C, esse operador usa uma string de texto contendo a formatao desejada, seguido de valores ou variveis (de texto ou de nmeros) para montagem do texto formatado; ou seja:
'formato'
Lembre-se:
um texto, e pode ser substitudo por uma varivel de texto. para maiores detalhes.
Devido ao grande nmero de possibilidades, apenas alguns exemplos sero mostrados a seguir. Sugere-se acessar
sprintf('valor de pi = %d', pi) sprintf('seno de %f = %f\n', [0 pi/2 pi], sin([0 pi/2 pi]))
20
21
disp().
se deseja ver uma varivel (sem o ponto-e-vrgula no nal da linha). O objetivo desse operador organizar a sada de resultados.
disp(sprintf('valor de pi = %d', pi)); a = [1 2 3; 4 5 6; 7 8 9]; disp(a); formatacao = 'arco-tangente de %f = %f\n'; resultado = sprintf(formatacao, 4*pi, atan(4*pi)); disp(resultado);
7.2 Grcos
As ferramentas dispem de alguns comandos para representao grca dos resultados. Geralmente aplicamos esses comandos em vetores ou matrizes (considerando as matrizes como um conjunto de vetores). A operao bsica para representar gracamente um conjunto de dados (um vetor)
plot().
Uma vez executado, mostrar uma janela contendo uma curva Esta curva otimizada para que toda ela
plot(y) plot(x1, y1, ..., xn, yn) plot(x1, y1, tipo_linha1, ..., xn, yn, tipo_linhan)
O tipo da linha dene qual a cor, o tipo do tracejamento aplicado e quais os smbolos usados para marcao de pontos especcos da curva. Note que podemos traar mltiplas curvas com um mesmo comando. interessante executar
help plot xn
por e
x1
y1
x1
xn.
x1 = [0 1 2 3 9 8 7 6]; y1 = [3 2 1 0 3 2 1 0]; x2 = [0 0 10 10]; y2 = [0 10 10 0]; plot(x1, y1, 'r', x2, y2, 'b');
22
sobre-escrita. Para que possamos incluir mais curvas em uma janela de grcos
hold.
hold on:
tempo = 0:0.01:10; senoide = sin(2*pi*tempo); cossenoide = cos(2*pi*tempo); triangular = sawtooth(2*pi*tempo); plot(tempo, senoide, 'r'); hold on; plot(tempo, cossenoide, 'b'); plot(tempo, triangular, 'k'); hold off;
O operador
clf
Note que temos falado em janela tanto, todos os operadores ponibilizam o operador
atual
criar outra janela de grcos, tornando esta a janela atual, as ferramentas dis-
figure.
tempo = 0:0.01:10; senoide = sin(2*pi*tempo); cossenoide = cos(2*pi*tempo); triangular = sawtooth(2*pi*tempo); plot(tempo, senoide, 'r'); figure; plot(tempo, cossenoide, 'b'); figure; plot(tempo, triangular, 'k');
Os operadores
uma olhada no
plot() e figure possuem valores de retorno. Recomenda-se help das ferramentas para maiores detalhes sobre o uso do valor
So eles, respectiva-
de retorno desses operadores. Alguns operadores permitem a incluso de textos nas janelas de grcos, como ttulo e textos referentes abscissa e ordenada. mente,
sprintf(),
23
plot(tempo, senoide, 'r'); hold on; plot(tempo, triangular, 'k'); hold off; title('Grficos'); xlabel('tempo (s)'); ylabel('amplitude');
Um detalhe importante: note que os grcos produzidos para funes trigo-
nomtricas (usadas como exemplo) no suave, mas quebradio. Isso porque o passo entre amostras da curva no contnuo, mas sim, discreto. Isso enfatiza a diferena entre ferramentas de computao numrica (caso presente) das ferramentas de computao simblica. No exemplo anterior, um aumento no passo (de
0,01
para
0,001)
subplot().
Outra opo interessante para apresentao de resultados o operador Ele permite que mltiplos grcos sejam colocados em uma mesma
janela, alm de denir qual rea da janela ser atualizada. Tal rea denida pelo parmetro do operador.
tempo = 0:0.01:10; senoide = sin(2*pi*tempo); cossenoide = cos(2*pi*tempo); triangular = sawtooth(2*pi*tempo); quadrada = square(2*pi*tempo); figure; subplot(2, 2, 1); plot(tempo, senoide); title('Seno'); xlabel('tempo (s)'); ylabel('amplitude'); subplot(2, 2, 2); plot(tempo, cossenoide); title('Cosseno'); xlabel('tempo (s)'); ylabel('amplitude'); subplot(2, 2, 3); plot(tempo, triangular); title('Triangular'); xlabel('tempo (s)'); ylabel('amplitude'); subplot(2, 2, 4); plot(tempo, quadrada); title('Quadrada'); xlabel('tempo (s)'); ylabel('amplitude');
Uma variao do operador
plot
o operador
stem.
plot.
praticamente inteiros.
Captulo 8
Programas
possvel armazenar todos os operadores digitados na linha de comandos em arquivos de texto e solicitar que as ferramentas executem essa lista de operadores, como se fossem digitados na linha de comando, um a um. Efetivamente tais arquivos funcionam como lista de comandos (popularmente conhecidos como batch les), cujas linhas so executadas sequencialmente. Esses arquivos geralmente possuem extenso especca e dependente da ferramenta. Devido a popularidade da ferramenta Mathworks Matlab, a extenso geralmente adotada
.m, e deve ser gravado no diretrio corrente usado pela fergrafico.m cd <caminho>).
ramenta, ou em algum dos diretrios referenciados para busca pela ferramenta (para trocar de diretrio corrente, basta usar o operador
grafico
Em caso de erro, a ferramenta apontar o nome do operador defeituoso, bem como a linha onde o problema ocorreu e um explicativo sucinto para facilitar sua correo.
function.
25
saida1
ber;
parmetros de sada.
[a, b] = funcao_a a = 3 b = 4
Note que a funo o valor mais atual de
funcao_a.m
funcao_a
a
e
a = 0 [a, b] = funcao_a
Note que no necessrio fazer atribuio prvia dos parmetros de sada (o mesmo vale para os parmetros de entrada) quando se chama uma funo. A ferramenta faz a iniciao (sempre com escalar zero) para as parmetros usadas nas funes.
stat.m function [media, desvio] = stat(x) n = length(x); media = sum(x)/n; desvio = sqrt(sum((x-mean).^2/n));
Como em linguagens de programao convencionais, h o conceito de varivel
stat,
a varivel
seu contedo visvel apenas pela funo que a criou. No h como acess-la em outro nvel ou escopo (linha de comando ou programa chamador). A ferramenta produzir erro (se no conhec-la no nvel do chamador, ou acessar o contedo de uma varivel que tenha o mesmo nome.
[mean, stdev] = stat([12.7 45.4 98.9 26.6 53/1]) [mean] = stat([0 1 2]) [mean, stdev] = stat
Qual a diferena entre um programa e uma funo, do ponto de vista da ferramenta? Uma delas seria o isolamento das variveis locais, reduzindo o nmero de variveis globais mantidas pela ferramenta (basicamente evita que ns, usurios, faamos confuso... a ferramenta no faz confuso, pois suas aes so determinsticas).
26
fftshift.
fft
resultado de
fft
(ou
fftshift)
x[n].
operadores calculam a Transformada Rpida de Fourier, que apenas um procedimento eciente de clculo da Transformada Discreta de Fourier (ou DFT). Considere um sinal comprimento Sendo peridico (T0 ) e selecionando um trecho de
N,
sua SF ser:
tempo = 0:0.01:4; trecho_do_sinal = sin(2*pi*tempo); tam_do_trecho = length(trecho_do_sinal); fft_do_sinal = fft(trecho_do_sinal)/tam_do_trecho; help para compreenso das nuanas desses operadofftshift uma verso transladada em freqncia de fft. Enquanto o nvel DC apresentado na amostra zero de fft, o mesmo nvel DC apresentado na amostra N/2 em fftshift. fftshift til pelo seu carter didtico. De modo anlogo, fft e fftshift, que calculam a Transformada Inversa
Cabe uma olhada em O operador res. Discreta de Fourier (IDFT), podem ser empregadas para o clculo da inversa da SF e TF. Devemos nos reportar sempre teoria para compreender corretamente os efeitos produzidos pela incorporao de zeros na representao de sinais noperidicos, os efeitos da periodicidade nos coecientes obtidos tanto para SF quanto para FT usando a DFT.
27
coeciente associado
xN
x0 ,
polinomio = [1 2 3]; raizes = roots(polinomio) polinomio = [2 0 0]; raizes = roots(polinomio) polinomio = [1 5]; raizes = roots(polinomio)
Pode-se obter o polinmio a partir de suas razes usando o operador o polinmio a partir do produto dos fatores
poly.
(x rn )
onde
rn
a n-sima raz.
sistema_2 so objetos.
sistema_1
A partir de um objeto sistema, possvel determinar sua resposta ao impulso rapidamente, atravs do operador
impulse.
28
8.5.2
Resposta ao degrau
A partir de um objeto sistema, possvel determinar sua resposta ao degrau rapidamente, atravs do operador
step.
impulse.
8.5.3
Resposta em freqncia
A resposta em freqncia de um sistema (cujos coecientes esto descritos pelo seu objeto) pode ser obtida a partir de uma varredura em freqncia. feito atravs do operador
bode.
Isso
bode(sistema_1) bode(sistema_2) [mag_1, fase_1] = bode(sistema_1); [mag_2, fase_2] = bode(sistema_2); bode(sistema_1, sistema_2);
Quando no especicamos uma varivel para receber o resultado da operao, o operador apresenta a magnitude (em
dB)
e a fase (em
graus).
O ltimo
caso mostra que as respostas em freqncia de vrios sistemas podem ser apresentadas em um nico grco (com parametrizao equivalente ao operador
plot)
No caso de haver varivel para receber o resultado da operao, a magnitude adimensional, exigindo a operao O operador
pzmap
pzmap(sistema_1) pzmap(sistema_2) [polos_1, zeros_1] = pzmap(sistema_1); [polos_2, zeros_2] = pzmap(sistema_2); pzmap(sistema_1, sistema_2);
Quando no especicamos uma varivel para receber o resultado da operao, o operador apresenta os plos e zeros no plano s. O ltimo caso mostra os plos e zeros de vrios sistemas podem ser apresentadas em um nico grco (com parametrizao equivalente ao operador escolhidas pela ferramenta).
plot
Captulo 9
Concluso
Esta apostila teve como objetivo apresentar as ferramentas de computao numrica usadas tanto em ambiente acadmico, como em ambiente de pesquisa e desenvolvimento (seja pblico ou privado). Espera-se que o aluno possa, sozinho ou sob orientao, conseguir construir programas nessas ferramentas para solucionar seus problemas matemticos. Com essa premissa, procurou-se ento assumir que o aluno nunca teve contato com tais ferramentas, mas tm conhecimento de programao bsica. Existe muito trabalho para ampliao desse manual, focando sempre na generalizao das ferramentas de computao numrica para alunos de graduao. Os autores esperam receber crticas e sugestes (quaisquer que sejam elas).
29
ndice Remissivo
stem,
23 operador operador acessando elementos de matrizes, 11 acessando elementos de vetores, 9 atribuies, 7 conjugado transposto, 12 extenso operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador operador
.m,
24
[ ], 9 abs, 18 angle, 18 ans, 7 bode, 28 cd, 24 clear, 8 clf, 22 cos, 18 disp, 21 exp, 19 fft, 26 fftshift, 26 figure, 22 function, 24 help, 5 hold, 22 ifft, 26 ifftshift, 26 imag, 18 impulse, 27 length, 10, 12 log, 19 ones, 13 plot, 21 poly, 27 pzmap, 28 real, 18 roots, 26 sawtooth, 19 sin, 18
30
size, 10, 12 sprintf, 20 square, 19 stem, 23 step, 28 subplot, 23 tan, 18 tf, 27 title, 22 who, 7 whos, 7 xlabel, 22 ylabel, 22 zeros, 13
operador de exponenciao, 17 operador de multiplicao, 16 operador dois-pontos, 13 operador ponto-e-vrgula, 3 operador transposto, 10, 12 operadores aritmticos, 15 operadores de diviso, 17 operadores de soma e subtrao, 15 operadores ponto-a-ponto, 18 strings, 20 variveis, 6