Escolar Documentos
Profissional Documentos
Cultura Documentos
1 Apresentao
1.1 Soluo de Problemas . . . . . . . .
1.1.1 Enunciado do Problema . . .
1.1.2 Descrio Entrada/Sada . .
1.1.3 Exemplo Manual . . . . . . .
1.1.4 Soluo MATLAB . . . . . .
1.1.5 Testando . . . . . . . . . . .
1.2 Apresentao . . . . . . . . . . . . .
1.2.1 Ambiente de Trabalho . . . .
1.2.2 Editor de Linhas de Comando
2 Introduo
2.1 Introduo a Matrizes Simples . . .
2.2 Elementos de Matrizes . . . . . . .
2.3 Declarao de Variveis . . . . . . .
2.4 Informaes sobre a rea de Trabalho
2.5 Nmeros e Expresses Aritmticas . .
2.6 Nmeros e Matrizes Complexas . . .
2.7 Formatao de Sada . . . . . . . .
2.8 Utilizao do comando help . . . . .
2.9 Utilizao do comando lookfor . . . .
2.10 Funes . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
5
5
5
6
7
7
8
10
10
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
13
13
15
16
17
17
18
19
20
21
21
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
23
23
23
24
24
25
25
25
25
26
26
26
26
27
28
28
28
29
30
. . . .
. . . .
. . . .
. . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3.5.1
3.5.2
3.5.3
3.5.4
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
30
31
31
32
4 Funes
4.1 Funes Escalares . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Funes Vetoriais . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3 Funes Matriciais . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
33
33
34
5 Polinmios
35
6 Anlise Polinomial
6.1 Avaliao do polinmio .
6.2 Comando polyval . . . . .
6.3 Operaes Aritmticas .
6.3.1 Soma e subtrao
6.3.2 Multiplicao . . .
6.3.3 Diviso . . . . . .
6.4 Razes de polinmios . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
37
37
37
38
38
39
39
39
7 Grficos
7.1 Grficos X-Y . . . . . . . . . . .
7.1.1 Acessrios para os Grficos
7.1.2 Nmeros Complexos . . . .
7.2 Grficos Polares . . . . . . . . . .
7.3 Grficos 3D . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
42
42
44
46
46
46
.
.
.
.
.
.
.
.
.
51
51
51
52
52
53
54
55
55
56
.
.
.
.
58
58
59
60
60
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
8 Programao
8.1 Arquivo.m . . . . . . . . . . . .
8.2 Operadores Lgicos e Relacionais
8.2.1 Operadores Relacionais .
8.2.2 Operadores Lgicos . . .
8.3 Comandos For, While e If . . . .
8.3.1 Ciclo For . . . . . . . . .
8.3.2 Comando If . . . . . . .
8.3.3 Ciclo While . . . . . . . .
8.4 Declarando Funes . . . . . . .
9 Sistemas de Equaes Lineares
9.1 Interpretao grfica . . . . .
9.2 Soluo usando operao com
9.3 Diviso de matrizes . . . . .
9.4 Matriz inversa . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . .
matrizes
. . . . .
. . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
10 Clculo
10.1 Zeros de Funes . . . . . . . . . . . . . . .
10.2 Minimizao de Funes . . . . . . . . . . . .
10.3 Limites . . . . . . . . . . . . . . . . . . . . .
10.4 Limites esquerda e direita . . . . . . . . .
10.5 Integrao . . . . . . . . . . . . . . . . . . .
10.5.1 Soluo Simblica . . . . . . . . . . .
10.5.2 Soluo Numrica . . . . . . . . . . .
10.6 Diferenciao . . . . . . . . . . . . . . . . . .
10.6.1 Derivao por expresses de diferenas
10.6.2 Comando diff . . . . . . . . . . . . . .
10.6.3 Derivadas de ordem superior . . . . . .
10.6.4 Derivadas Trigonomtricas: . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
61
61
61
62
63
63
63
64
67
68
69
70
71
11 Ajuste de Curvas
72
11.1 Ajuste de Curvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
11.2 Interpolao Unidimensional . . . . . . . . . . . . . . . . . . . . . . . . 73
12 Transformadas
12.1 Funes Degrau e Impulso . . . . . . . . . . . . . . . . . .
12.2 Transformada de Laplace . . . . . . . . . . . . . . . . . .
12.3 Transformada de Fourier . . . . . . . . . . . . . . . . . . .
12.4 Transformada Z . . . . . . . . . . . . . . . . . . . . . . .
12.5 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . .
12.5.1 Exerccio 1: Sistemas Lineares . . . . . . . . . . . .
12.5.2 Exerccio 2: Equaes Diferenciais e Transformadas
12.5.3 Exerccio 3: Transformada de Fourier . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
76
76
77
77
78
78
78
79
81
13 SIMULINK
13.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.1.1 Diagrama de Blocos . . . . . . . . . . . . . . . . . . . . . .
13.1.2 Smbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.2 Conhecendo o Simulink . . . . . . . . . . . . . . . . . . . . . . . .
13.2.1 Iniciando o Simulink . . . . . . . . . . . . . . . . . . . . . .
13.2.2 Construindo e analisando um modelo simples . . . . . . . . .
13.2.3 Exemplo: Modelo de um processo biolgico . . . . . . . . . .
13.3 Principais blocos do Simulink e suas funes . . . . . . . . . . . . .
13.3.1 Principais Fontes(Sources): . . . . . . . . . . . . . . . . . .
13.3.2 Principais blocos usados na modelgem de sistemas dinmicos
13.3.3 Verificao do modelo . . . . . . . . . . . . . . . . . . . . .
13.3.4 Blocos de sadas(Sinks) . . . . . . . . . . . . . . . . . . . .
13.3.5 Criando blocos de sub-sistemas . . . . . . . . . . . . . . . .
13.3.6 Blocos condicionais . . . . . . . . . . . . . . . . . . . . . .
13.3.7 Personalizando o modelo e manipulando Blocos . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
85
86
86
87
87
87
88
90
96
98
98
98
99
99
99
99
14 Referncias Bibliogrficas
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
103
1
1.1
Apresentao
Soluo de Problemas
1.1.1
Enunciado do Problema
1.1.2
Descrio Entrada/Sada
1.1.3
Exemplo Manual
O terceiro passo trabalhar o problema manualmente ou com uma calculadora, usando um pequeno grupo de dados. um passo muito importante e no deve ser ignorado
por mais simples que seja o problema. um item no qual voc trabalha os detalhes da
soluo do problema. Se voc no pode pegar um simples grupo de nmeros e calcular
a sada (seja manualmente ou com uma calculadora), ento voc no est pronto para
executar o prximo passo; voc deve reler o problema e talvez consultar material de
referncia. Uma vez que pode trabalhar o problema de um simples grupo de dados,
ento voc est pronto para desenvolver um algoritmo ou um esboo passo a passo da
soluo. Este esboo convertido para os comandos MATLAB para que possamos usar
o computador para fazer todos os clculos. O exemplo manual para este exemplo
mostrado a seguir:
Suponha que os pontos p1 e p2 tenham as seguintes coordenadas:
p1 = (1, 5)
p2 = (4, 7)
Queremos calcular a distncia entre dois pontos, que a hipotenusa de um tringulo
retngulo, conforme mostra a Figura 2. Usando o Teorema de Pitgoras, podemos calcular a distncia d com a seguinte equao:
d=
d=
S12 + S22
(4 1)2 + (7 5)2
d=
13
d = 3.61
1.1.4
Soluo MATLAB
%
% Este programa calcula e imprime
% distncia, em linha reta, entre dois pontos.
p1 = [1,5]; % ponto 1 inicial
p2 = [4,7]; % ponto2 inicial
d = sqrt (sum ((p2-p1).^2)) % calcular distncia
1.1.5
Testando
O passo final em nosso processo de soluo de problemas testar a soluo. Primeiramente, devemos testar a soluo com os dados do exemplo manual, j que calculamos
a soluo. Quando os comandos MATLAB na soluo so executados, o computador
mostra a seguinte sada:
d = 3.6056
Esta sada coincide com o valor que calculamos no exemplo manual. Se a soluo
MATLAB no coincidir com o exemplo manual, devemos rever ambas solues a fim
de encontrar o erro. Uma vez que a soluo trabalha com o exemplo manual, devemos
tambm test-la com vrios grupos de dados para certificar que a soluo vlida para
outras sries de dados.
7
1.2
Apresentao
R
O MATLAB
pode ser usado como uma linguagem de programao ou como uma
ferramenta de clculo interativa. Em ambos os casos, o ambiente MATLAB permite a
realizao de clculos, visualizao de resultados e desenvolvimento de algoritmos usando
uma sintaxe muito prxima da notao matemtica usual.
O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de
funcionamento. Todas as variveis so definidas de forma matricial, o que faz com
que este ambiente seja ideal para resolver problemas de clculo envolvendo matrizes e
vetores.
Um arquivo de programa MATLAB recebe a extenso .m e, por isso, tambm
chamado de m-file ou arquivo .m. Ele pode ser criado e/ou modificado no editor prprio
do MATLAB - MATLAB Editor/Debugger - que possui caractersticas que auxiliam
bastante na edio de programas como auto-colorizao de palavras de acordo com a
sintaxe e interao com o ambiente de clculo do MATLAB. Existem tambm os arquivos
.mat que so arquivos binrios que contm as variveis da Workspace. Estes arquivos
so gerados indo em
Biblioteca de blocos do SIMULINK que possibilita a modelagem e simulao de sistemas mecnicos, tais como: componentes mecnicos (corpos e juntas), simulao de
movimentos, etc.
1.2.1
Ambiente de Trabalho
Quando o MATLAB inicializado, trs janelas so exibidas: a Workspace, a Command History e a Janela de Comando (Command Window). Na aba Workspace aparecem
as variveis, seu tamanho e valor atual, as variveis so arrays onde cada elemento tem
8 bytes e podem ser editadas utilizando o Array Editor atravs de um clique duplo no
nome da varivel. Na janela Command History so armazenados todos os comandos j
utilizados, sendo que estes podem ser reescritos na Command Window apenas utilizando
as teclas UP e DOWN do teclado, sem necessidade de serem digitados novamente. Por
sua vez, a Janela de Comando a parte principal do MATLAB, onde sero escritos os
cdigos, funes e demais comandos. Nessa janela, o prompt padro (>>) exibido
na tela e, a partir deste ponto, o MATLAB espera as instrues do utilizador. Para
introduzir uma pequena matriz, por exemplo, utiliza-se:
>> A = [1 2 3; 4 5 6; 7 8 7]
Colocam-se colchetes em torno dos dados e separam-se as linhas por ponto e vrgula.
Quando se pressiona a tecla <enter> o MATLAB responde com:
A =
1 2 3
4 5 6
7 8 7
Para inverter esta matriz, utiliza-se:
>> B = inv(A)
B =
-2.1667 1.6667 -0.5000
2.3333 -2.3333 1.0000
-0.5000 1.0000 -0.5000
1.2.2
As setas para cima e para baixo do teclado podem ser usadas para navegar entre
comandos usados anteriormente, para nova execuo ou reedio. No caso de pretender
10
log
!
tan
>> z = 3 + 4*i
z =
3.0000 + 4.0000i
>> Inf
ans =
Inf
>> 0/0
Warning: Divide by zero.
ans =
NaN
O termo NaN significa, em ingls, Not-a-Number (smbolo de indeterminao) e
resulta de operaes
de valor indeterminado. Inf representa + e pi representa . A
pode ser usada em vez de i nas operaes aritmticas com nmeros complexos por
aqueles que a preferem. Estas variveis predefinidas podem ser redefinidas. claro
que elas podem ser redefinidas intencionalmente a fim de liberar o nome da varivel
para outros usos. Por exemplo, pode-se querer usar i como inteiro e reservar j para
a aritmtica com nmeros complexos. Seja cauteloso e deixe estes nomes de variveis
predefinidas intocados, pois h uma infinidade de nomes alternativos que podem ser
usados. As variveis predefinidas podem ser realocadas aos seus valores default usando
o comando clear nome da varivel (por exemplo, clear pi).
12
Introduo
2.1
>> A=[1 2 3; 4 5 6; 7 8 7]
A =
1 2 3
4 5 6
7 8 7
A matriz A guardada na memria RAM do computador, ficando armazenada para
uso posterior. As matrizes podem, tambm, ser introduzidas linha a linha, o que indicado para matrizes de grande dimenso. Por exemplo:
A=
[1 2 3
4 5 6
7 8 7]
Outra maneira para introduzir matrizes no MATLAB atravs de um arquivo no
formato texto com extenso .m. Por exemplo, se um arquivo chamado matriz.m
contiver estas trs linhas de texto:
13
A=
[1 2 3
4 5 6
7 8 7]
Ento a expresso matriz ler o arquivo e introduzir a matriz A.
>>matriz
O comando load pode ler matrizes geradas pelo MATLAB e armazenadas em arquivos
binrios ou matrizes geradas por outros programas armazenadas em arquivos ASCII. Assim, para ler um arquivo .mat chamado matriz.mat segue-se a seguinte estrutura: load
matriz.mat, e as variveis salvas no arquivo binrio matriz.mat sero carregadas na
Workspace.
NOTA: Em todos os exemplos, m e n so inteiros positivos.
Para especificar um nico elemento da matriz utilizam-se os ndices referentes ao
nmero de linha e nmero de coluna entre parnteses da matriz onde se encontra o
elemento: A(m,n).
Outra forma de gerar matrizes atravs de ciclos for. Por exemplo, para gerar uma
matriz M com i linhas e j colunas, a seguinte estrutura pode ser utilizada:
>> M
M =
2 3 4
3 4 5
4 5 6
OBS: o ndice das matrizes comea em 1, no em 0.
14
2.2
Elementos de Matrizes
Os elementos das matrizes podem ser quaisquer expresses do MATLAB. Por exemplo:
>> r= [ 10 11 12];
>> A= [A;r]
A =
1 2 3
4 5 6
7 8 7
10 11 12
Nota-se que o vetor r no foi listado porque ao seu final foi acrescentado ;.
Podem ser extradas matrizes pequenas da matriz original utilizando :.
Por exemplo:
>> A = A(1:3,:)
A =
1 2 3
4 5 6
7 8 7
15
2.3
Declarao de Variveis
>> expressao
As expresses so compostas de operadores e outros caracteres especiais, de funes
e dos nomes das variveis. As avaliaes das expresses produzem matrizes, que so
ento mostradas na tela e atribudas s variveis para uso futuro. Se o nome da varivel
e o sinal de igualdade = so omitidos, a varivel com o nome ans, que representa a
palavra answer (resposta), automaticamente criada. Por exemplo, introduzindo a
expresso:
>> 1900/81
ans=
23.4568
Se o ltimo caractere da declarao um ponto e vrgula, ;, a impresso na tela
suprimida, mas a tarefa realizada. Esse procedimento usado em arquivos com
extenso .m e em situaes onde o resultado uma matriz de grandes dimenses e h
interesse em apenas alguns dos seus elementos.
Se a expresso to grande que no cabe em apenas uma linha, pode-se continuar
a expresso na prxima linha usando um espao em branco e trs pontos, ..., ao final
das linhas incompletas. Por exemplo:
2.4
>> who
Obtm-se uma lista das variveis armazenadas na rea de Trabalho:
>> whos
Name
A
B
ans
r
s
x
96
72
72
24
8
24
double
double
double
double
double
double
array
array
array
array
array
array
2.5
17
Potenciao
/
Diviso direita
\ Diviso esquerda
*
Multiplicao
+
Adio
Subtrao
Deve-se notar que existem dois smbolos para diviso: as expresses 1/4 e 4\1 possuem o mesmo valor numrico, isto , 0.25.
So usados parnteses na sua forma padro para alterar a procedncia usual dos
operadores aritmticos.
2.6
Os Nmeros Complexos so permitidos em todas as operaes e funes no MATLAB. Os nmeros complexos so introduzidos utilizando as funes especiais i ou j que
correspondem parte imaginria de um nmero complexo. Por exemplo:
>> z= 3 + 4*i
ou
>> z= 3 + 4*j
Sabendo que um nmero complexo constitudo por uma parte real Re e por uma
parte imaginria Im, tal que:
z = Re + Im*i
ele pode ser expresso na forma:
18
>> z= r*exp(i*theta)
em que:
>> r = abs(z)
>> theta = angle(z)*180/pi
As seguintes declaraes mostram dois caminhos convenientes para se introduzir matrizes complexas no MATLAB:
>>
A= [1 2; 3 4]+i*[5 6;7 8]
ou
>> real(A)
ans =
1 2
3 4
>> imag(A)
ans =
5 6
7 8
2.7
Formatao de Sada
O formato numrico exibido na tela pode ser modificado utilizando o comando format, que afeta somente o modo como as matrizes so mostradas, e no como elas so
calculadas ou guardadas (o MATLAB efetua todas as operaes em dupla preciso).
Se todos os elementos da matriz so inteiros exatos, a matriz mostrada num formato sem qualquer ponto decimal. Por exemplo:
19
>> x = [-1 0 1]
x =
-1 0 1
Se pelo menos um dos elementos da matriz no inteiro exato, existem vrias possibilidades de formatar a sada. O formato padro, chamado de formato short, mostra
aproximadamente 5 dgitos significativos ou usam notao cientfica. Para modificar o
formato da sada, devemos inserir o comando format. A tabela abaixo mostra os principais formatos:
short
short e
long
long e
hex
rat
bank
+
5 dgitos significativos
5 dgitos significativos em notao cientfica
15 dgitos significativos
15 dgitos significativos em notao cientfica
em sistema hexadecimal
em formato de nmero racional
duas casas aps a vrgula
Mostra o sinal do nmero sem o seu valor,
a parte imaginria do nmero ignorada
>> X = 1e20*x
X =
1.0e+020 *
1.3333 0 0.0000
Com o comando format + os smbolos +, -, e espao em branco so mostrados, respectivamente para representar elementos positivos, elementos negativos e zeros.
2.8
>> help
Para obter informaes sobre um tpico especfico, referir help tpico. Por exemplo,
20
2.9
Embora o comando help fornea permita-lhe conseguir uma ajuda, ele pode no
ser a maneira mais conveniente, a menos que voc saiba o tpico exato sobre o qual
necessita de informaes.
Para isso, o comando lookfor fornece ajuda fazendo uma busca em toda primeira
linha dos tpicos de ajuda e retornando aqueles que contm as palavras-chave que voc
especificou. O mais importante que a palavra-chave no precisa ser um comando MATLAB. Por exemplo, faz-se uma busca por funes relacionadas palavra-chave "fourier":
2.10
Funes
Matrizes elementares;
Matrizes especiais;
Decomposio e fatorao de matrizes;
Anlise de dados;
Polinmios;
Soluo de equaes diferenciais;
Equaes no-lineares e otimizao;
Integrao numrica;
Processamento de sinais;
Entre outras
22
3
Manipulao de Matrizes e Vetores
3.1
O MATLAB possui dois tipos diferentes de operaes aritmticas. As operaes aritmticas matriciais so definidas pelas regras da lgebra Linear. As operaes aritmticas
com arrays (conjuntos) so efetuadas elemento por elemento. O caractere de ponto decimal . distingue as operaes matriciais das operaes com arrays. No entanto, como
as operaes matriciais e com arrays so iguais para a soma e para a subtrao, o par
de caracteres .+ e .- no usado para estas.
As operaes com matrizes no MATLAB so as seguintes:
- Transposio;
- Adio;
- Subtrao;
- Multiplicao;
- Diviso direita;
- Diviso esquerda;
- Potenciao.
A seguir cada uma destas operaes apresentada com maior detalhe.
3.1.1
Transposio
>>Z = [1 2; 3 4] + [5 6; 7 8]*i
Z =
1.0000+ 5.0000i 2.0000+
3.0000+ 7.0000i 4.0000+
>>Z1 = Z
Z1 =
1.0000- 5.0000i 3.00002.0000- 6.0000i 4.0000-
6.0000i
8.0000i
7.0000i
8.0000i
Para obter simplesmente a transposta de Z deve-se usar Z., como mostra o exemplo:
23
>>Z2 = Z.
Z2 =
1.0000+ 5.0000i 3.0000+ 7.0000i
2.0000+ 6.0000i 4.0000+ 8.0000i
Caso desejar apenas a matriz complexa conjugada de Z deve-se usar Z.
>> Z3 = Z.
Z3 =
1.0000 - 5.0000i 2.0000 - 6.0000i
3.0000 - 7.0000i 4.0000 - 8.0000i
3.1.2
Adio e Subtrao
3.1.3
Multiplicao
24
3.1.4
Diviso
A diviso de matrizes requer especial ateno, pois existem dois smbolos para diviso
de matrizes no MATLAB \ e /". Se A for uma matriz inversvel quadrada e b for um
vetor coluna (ou linha) compatvel, ento A\b e b/A correspondero respectivamente
multiplicao esquerda e direita da matriz b pela inversa da matriz A, ou inv(A)*b
e b*inv(A), mas o resultado obtido diretamente:
X = A\b a soluo de A*X = b
X = b/A a soluo de X*A = b
Deve-se ter o cuidado de observar as dimenses das matrizes que esto envolvidas
na operao, o nmero de colunas de A deve ser igual ao nmero de linhas de b em
A\b, j em b/A o nmero de linhas de A deve ser igual ao nmero de colunas de b em
A\b. A diviso direita definida em termos da diviso esquerda por:
b/A = (A\b)
3.1.5
Potenciao
3.2
3.2.1
Adio e Subtrao
25
3.2.2
Multiplicao e Diviso
3.2.3
>> x=b./a
x =
2 2 2
Potenciao
>> 2.^x
ans =
2 4 8
3.3
Matrizes Elementares
Alm das j descritas, o MATLAB dispe de diversas funes que permitem a rpida
elaborao de matrizes padro, dentre elas:
3.3.1
Gerao de Vetores
26
>> x = 1 : 5
Gera um vetor linha contendo os nmeros de 1 a 5 com incremento unitrio. Produzindo:
x =
1 2 3 4 5
Outros incrementos, diferentes da unidade podem ser utilizados, como seja o caso
do seguinte exemplo que impe um incremento de pi/4.
>> y = 0 : pi/4 : pi
y =
0 0.7854 1.5708 2.3562 3.1416
Tambm so possveis incrementos decrescentes (negativos).
Pode-se, tambm, gerar vetores linearmente espaados fazendo uso da funo linspace.
Por exemplo,
3.3.2
Matriz Identidade
27
>> eye(m,n)
3.3.3
No caso de ser necessrio a obteno de uma matriz composta apenas por elementos
unitrios, temos que:
>> ones(m,n)
3.3.4
Matriz Nula
Para efetuar qualquer tipo de manipulao matricial, poder ser til a construo de
uma matriz composta por elementos nulos:
>> zeros(n,m)
3.3.5
Matriz Aleatria
>> rand(m,n)
onde m representa o nmero de linhas e n o nmero de colunas da matriz desejada.
No caso de se pretender uma distribuio normal dos nmeros aleatrios, com mdia
zero, varincia um e desvio padro um, a funo a ser utilizada ser:
>> randn(m,n)
Cabe salientar que em uma distribuio normal, 68% dos valores esto compreendidos
entre 1 e 1.
O comando magic(n) cria uma matriz quadrada integral de dimenses n x n (linhas
e colunas tm a mesma soma).
28
>>x=magic(4)
3.4
Elementos de Matrizes
Um elemento individual da matriz pode ser indicado incluindo os seus subscritos entre parnteses. Por exemplo, dada a matriz A:
A =
1 2 3
4 5 6
7 8 9
A declarao:
>> A(3,3)
A =
1 2
4 5
7 8
= A(1,3) + A(3,1)
3
6
10
29
A =
1 2 3 4
11 12 13 14
21 22 23 24
31 32 33 34
41 42 43 44
51 52 53 54
61 62 63 64
71 72 73 74
81 82 83 84
91 92 93 94
>> A(1:5,7:10)
ans =
7 8 9 10
17 18 19 20
27 28 29 30
37 38 39 40
47 48 49 50
5
15
25
35
45
55
65
75
85
95
6
16
26
36
46
56
66
76
86
96
7
17
27
37
47
57
67
77
87
97
8
18
28
38
48
58
68
78
88
98
9
19
29
39
49
59
69
79
89
99
10
20
30
40
50
60
70
80
90
100
uma submatriz 5x4 que consiste nas primeiras cinco linhas e nas ltimas quatro
colunas.
Utilizando os dois pontos no lugar de um subscrito denota-se todos elementos da
linha ou coluna. Por exemplo,
>> A(1:2:5,:)
ans =
1 2 3 4 5 6 7 8 9 10
21 22 23 24 25 26 27 28 29 30
41 42 43 44 45 46 47 48 49 50
uma submatriz 3x10 que consiste da primeira, terceira e quinta linhas e todas
colunas da matriz A.
3.5
Manipulao de Matrizes
3.5.1
30
>> x=[1 2 3 1
>> diag(x)
ans =
1 0 0
0 2 0
0 0 3
0 0 0
0 0 0
0 0 0
-1 4];
0 0
0 0
0 0
1 0
0 -1
0 0
0
0
0
0
0
4
Se A for uma matriz quadrada, ento diag(A) ser um vetor cujos componentes so
os elementos da diagonal de A.
3.5.2
Matrizes Triangulares
O cdigo possui duas funes que permitem a extrao das matrizes riangular superior e triangular inferior de uma matriz quadrada. So elas, espectivamente:
triu(A);
tril(A);
3.5.3
Redimensionamento de Matrizes
Dada a matriz A composta por m linhas e n colunas A(m,n), esta poder ser redimensionada, atravs do comando reshape (A,n,m), desde que o produto de mxn se
mantenha constante.
31
>>A(m,n)
>> B = reshape(A,n,m)
>> A=[1 2 3; 4 5 6]
A =
1 2 3
4 5 6
>> B=reshape(A,3,2)
B =
1 5
4 3
2 6
3.5.4
Os elementos da matriz A podero ser rodados 90o no sentido anti-horrio (ou rodados k*90o ) atravs do uso da funo:
>>rot90(A,k)
A =
1 2 3
4 5 6
>> rot90(A,1)
ans =
3 6
2 5
1 4
32
4
4.1
Funes
Funes Escalares
4.2
Exponencial;
Valor absoluto;
Logaritmo natural;
Logaritmo base 10;
Raiz quadrada;
Seno;
Arco seno;
Coseno;
Arco Coseno;
Tangente;
Arco Tangente;
Arredondamento ao inteiro mais prximo;
Arredondamento ao inteiro mais prximo na direo de menos infinito;
Arredondamento ao inteiro mais prximo na direo de mais infinito;
Resto da diviso;
Para cada elemento de x, sign(x) retorna 1 se o elemento maior
que zero, 0 se igual a zero e -1 se ele menor que zero
Funes Vetoriais
Opera com elementos de colunas desejadas, caso seja desejado operar com linhas ao
invs de colunas deve-se transpor a matriz e ento oper-la com a sua coluna que antes
era sua linha. Abaixo esto alguns exemplos de funes:
max
sum
median
any
min
prod
all
sort
std
33
4.3
Funes Matriciais
Uma boa aplicao do MATLAB suas funes matriciais. Dentre as mais usadas
esto essas:
eig
chol
svd
inv
lu
qr
hess
schur
expm
sqrtm
poly
det
size
norm
cond
rank
P=[1 0 0; 0 2 2; 2 3 1]
P =
1 0 0
0 2 2
2 3 1
inv(P)
ans =
1.0000 0 0
-1.0000 -0.2500
0.5000
1.0000 0.7500 -0.5000
poly(P)
ans =
1 -4 -1 4
size(P)
ans =
3 3
det(P)
ans =
-4
34
Polinmios
p = [1 -6 -72 -27]
p =
1 -6 -72 -27
x=roots(p)
x =
12.1229
-5.7345
-0.3884
p=poly(x)
p =
1.0000 -6.0000 -72.0000 -27.0000
No exemplo acima definimos um polinmio qualquer p sendo (p = s3 6s2 72s27)
a seguir calculamos suas razes atravs do comando roots e na seqncia pegamos os
resultados das razes e aplicamos a funo poly chegando novamente no polinmio inicial
p.
vlido relembrar de uma importante observao caso o nosso polinmio inicial
tivesse um coeficiente diferente de 1 para o maior grau (s3 ) quando aplicssemos a
funo poly sobre as razes o novo polinmio seria com coeficiente 1 para o maior grau,
o que no mudaria nada pois uma equao em que um lado tem um polinmio p e de
outro zero, logo podemos multiplicar ambos os lados por qualquer varivel.
x2 + 2x + 4 = 0
ax2 + 2ax + 4a = 0
ax2 + 2ax + 4a = 0
Alm das duas operaes j citadas h ainda as bsicas, soma, subtrao, multiplicao e diviso. Soma e subtrao faz-se normalmente sem maiores problemas, para
multiplicao usa-se conv e para a diviso deconv.
35
Exemplo:
36
6Anlise Polinomial
Este captulo traz uma srie de comandos no MATLAB para a anlise polinomial.
Primeiro vamos discutir meios de avaliar os polinmios e como trabalhar o seu comportamento. Uma aplicao deste conceito est na modelagem da altitude e velocidade
de um balo. A seguir definiremos as razes dos polinmios. Polinmios normalmente
aparecem em aplicaes da Engenharia e na Cincia em geral porque eles constituem
ainda bons modelos para representar sistemas fsicos.
6.1
Avaliao do polinmio
6.2
Comando polyval
a = [3,-0.5,0,1,-5.2];
f = polyval(a,x);
37
f = polyval([3,-0.5,0,1,-5.2],x);
O tamanho de f ter que ser igual ao tamanho de x, seja ele um escalar, vetor ou
matriz.
Supondo que queiramos o valor da funo g(x) = x5 + 3x3 2.5x2 2.5 para x
no intervalo de [0,5]:
x:0:0.025:5;
a = [-1,0,3,-2,5,0,-2.5];
g = polyval(a,x)
6.3
Operaes Aritmticas
6.3.1
Soma e subtrao
Para somar ou subtrair polinmios basta somar ou subtrair seus respectivos coeficientes. O MATLAB no apresenta um comando especfico par somar polinmios. A
soma ou subtrao padro funciona se ambos os vetores polinomiais forem do mesmo
tamanho. Somemos os polinmios a seguir:
g(x) = x4 3x2 x + 2.4
h(x) = 4x3 2x2 + 5x 16
som(x) = g(x) + h(x)
sub(x) = g(x) h(x)
38
6.3.2
Multiplicao
A multiplicao polinomial efetuada por meio do comando conv (que faz a convoluo entre dois conjuntos). A multiplicao de mais de dois polinmios requer o uso
repetido de conv.
m = conv(g,h)
6.3.3
Diviso
[q,r] = deconv(g,h)
Esse resultado nos diz que g dividido por h nos d o polinmio de quociente q e resto
r.
6.4
Razes de polinmios
a = poly ([-1,1,3]);
Exemplo 3
Determine as razes dos seguintes polinmios e plote seu grfico, com seu eixo apropriado, com o objetivo de verificar se o polinmio atravessa o eixo x bem nos locais das
razes.
a. f (x) = x3 5x2 + 2x + 8
40
b. g(x) = x2 + 4x + 4
c. h(x) = x5 + 3x4 11x3 + 27x2 + 10x 24
d. i(x) = x5 3x3 + 4x2 1
41
Grficos
7.1
Grficos X-Y
Grfico linear.
Grfico em escala logartmica.
Grfico em escala semi-logartmica (eixo x).
Grfico em escala semi-logartmica (eixo y).
Desenhar polgono 2D.
Grfico em coordenadas polar.
Grfico de barras.
Grfico de seqncia discreta.
Grfico em degrau.
Grfico do erro.
Histograma.
Histograma em ngulo.
Grfico em forma de bssola.
Grfico em forma de pena.
Grfico da funo.
Grfico com trajetria de cometa.
>>
>>
>>
>>
x = 0:0.3:30;
y1 = exp(-.01*x).*sin(x);
y2 = exp(-.05*x).*sin(.7*x);
y3 = exp(-.1*x).*sin(.5*x);
>> figure(1)
O comando figure abre uma janela grfica intitulada Figure No.1". Este comando
opcional; se no for utilizado, o MATLAB abrir uma janela grfica padro. Agora
utilizaremos a funo plot para plotar os trs grficos na mesma janela:
>> h = plot ( x , y1 , b+: , x , y2 , ro- , x , y3 , gx-. );
O terceiro, o sexto e o nono argumento representam a seqncia de propriedades:
cor, ponto e trao. Em ro-. temos uma linha vermelha com cada ponto representado
por um crculo e o espao entre ele preenchido por ponto-e-trao.
Observa-se que h uma referncia ao grfico plotado (neste caso, h um vetor de
referncias). Atravs do comando set, aps os grficos terem sido desenhados, possvel
alterar os tipos de linhas, marcadores e cores para as curvas. Por exemplo, poderamos
fazer:
>> set(h,LineWidth,2,LineStyle,--)
>> set(h,Color,r)
Se desejssemos alterar apenas uma das curvas, passaramos para o comando set
um elemento do vetor (h(2), por exemplo).
43
7.1.1
Definamos agora os limites dos eixos, pelo comando axis. Linhas em grade podem
ser ativadas pela propriedade grid:
Figura 3: Resultante
>> hold on
Dessa forma, os grficos sero sobrepostos em uma mesma janela grfica. No entanto, se no desejarmos mais essa funo ativa, basta digitar:
45
7.1.2
Nmeros Complexos
>> Z=[1+i*1;3+i*3;5+i*5;7+i*10;9+i*15];
>> plot(real(Z),imag(Z))
7.2
Grficos Polares
7.3
Grficos 3D
A rede de superfcie pode ser gerada por um conjunto de valores em uma matriz.
Cada ponta na matriz representa o valor da superfcie que corresponde ao ponto na tela.
Para gerar um arquivo que representa uma superfcie 3D, primeiramente calculamos
o conjunto dos valores de x e y que representam as variveis independentes e depois
calculamos os valores de z que representam os valores da superfcie. O comando no
MATLAB para plotar grficos 3D mesh(z).
O comando meshgrid tem os argumentos do vetor x e y, ou seja transforma o domnio
especificado pelos vetores x e y em vetores que podem ser usados em clculos de funes
46
[xgrid,ygrid]=meshgrid(-0.5:0.1:0.5,-0.5:0.1:0.5);
z=sqrt(abs(1 - xgrid.^2 - ygrid.^2));
mesh(z);
47
Figura 5: Grfico em 3D
48
49
>> [xgrid,ygrid]=meshgrid(-0.5:0.1:0.5;-0.5:0.1:0.5);
>> z=sqrt(abs)1 - xgrid.^2 - ygrid.^2));
>> mesh(z,[-37.5,-30]);
50
8
8.1
Programao
Arquivo.m
Os comandos do MATLAB so normalmente introduzidos atravs da janela de comando, onde uma nica linha de comando introduzida e processada imediatamente.
O MATLAB , no entanto, capaz tambm de executar seqncias de comandos armazenadas em arquivos.
Os arquivos que contm as declaraes do MATLAB so chamados arquivos .m,
e consistem em seqncias de comandos normais do MATLAB, possibilitando incluir
outros arquivos .m escritos no formato texto (ASCII).
Para editar um arquivo texto na janela de comando do MATLAB selecione New MFile para criar um novo arquivo ou Open M-File para editar um arquivo .m j existente,
a partir do menu File.
Os arquivos podem, tambm, ser editados fora do MATLAB utilizando qualquer
editor de texto. Para isso, basta salvar os arquivos com a extenso .m.
Para executar um programa do tipo M-File, deve-se selecionar Run Script, tambm
a partir do menu File.
Existem alguns comandos e declaraes especiais para serem usadas nos arquivos.
Alguns comandos importantes para se trabalhar com arquivos.m so:
%
clear
input
8.2
51
8.2.1
Operadores Relacionais
Smbolo
<
<=
>
>=
==
=
Descrio
Menor
Menor ou igual
Maior
Maior ou igual
Igual
Diferente
2+2 ~ = 4
ans =
0
Observao: Apenas os operadores == e = testam tanto a parte real como a
imaginria, os demais, apenas a parte real.
x=5;
y =
0
x=5;
y =
3
x=5;
y =
0
x=5;
y =
3
8.2.2
y=3*(x= =3)
y=3*(x= =5)
y=3*(x~ =5)
y=3*(x~ =3)
Operadores Lgicos
Smbolo
&
|
xor
Descrio
AND
OR
NOT
XOR
Esses operadores operam da mesma forma que os operadores relacionais, dando como
52
AND
&
0
0
0
1
OR
|
0
1
1
1
XOR
xor
0
1
1
0
A = [ 1 0 1
0 0 0
1 1 1]
A =
1 0 1
0 0 0
1 1 1
B= [ 0 1 0
0 0 1
-1 10 0]
B =
0 1 0
0 0 1
1 1 0
A&B
ans =
0 0 0
0 0 0
1 1 0
Note que foi aplicado o operador lgico AND e esse comparou cada elemento da
matriz A com cada elemento da matriz B, sendo que sua resposta pode ser apenas 0 ou
1. Sendo que qualquer nmero diferente de 0, inclusive os negativos, considerado 1
pois o MATLAB trabalha na linguagem binria.
Os operadores lgicos possuem a precedncia mais baixa relativamente aos operadores aritmticos e relacionais.
A precedncia entre os operadores lgicos se d da seguinte maneira:
NOT
AND e OR
8.3
Maior precedncia
Tm igual precedncia aps NOT
linguagem de programao C, mas com uma estrutura diferente. Nas prximas sees
deste captulo apresentaremos a estrutura de tomada de decises IF e os dois comandos
para gerar loops no MATLAB: o comando FOR e o comando WHILE.
8.3.1
Ciclo For
for i=1:5,
x(i)=i^2;
end
Pode-se notar que o ciclo for dividido em trs partes:
i =1 realizado antes do ciclo comear.
Testando a condio que controla o ciclo (i<=5). Se for o ciclo executado.
Se o teste do ciclo for falso o ciclo termina devido ao comando end.
Exemplo:
for i = 1:8
for j = 1:8,
A(i,j) = i +
B(i,j) = i end
end
C= A + B
C =
2 2 2 2 2
4 4 4 4 4
6 6 6 6 6
8 8 8 8 8
10 10 10 10 10
12 12 12 12 12
14 14 14 14 14
16 16 16 16 16
j;
j;
2
4
6
8
10
12
14
16
2
4
6
8
10
12
14
16
2
4
6
8
10
12
14
16
54
8.3.2
Comando If
Esta instruo permite que executemos um comando se a expresso lgica verdadeira e um diferente comando se a expresso falsa. A forma geral do comando if
combinada instruo else mostrada a seguir:
if expresso
grupo de comandos A
else
grupo de comandos B
end
A seguir apresentado um exemplo do uso da declarao if no MATLAB. Voc pode
faz-lo na janela de comando ou ainda atravs do mtodo .m novamente.
for i = 1:5,
for j = 1:5,
if (i == j)
A(i,j)=2;
else if (abs(i-j) == 1)
A(i,j) = -1;
else
A(i,j) = 0;
end
end
end
end
A
A =
2 -1 0 0 0
-1 2 -1 0 0
0 -1 2 -1 0
0 0 -1 2 -1
0 0 0 -1 2
Neste exemplo fizemos o uso do comando if, sendo que utilizamos, o que normal,
um dentro de outro. Sempre lembrando que no uso do comando if devemos ter uma
seqncia que executa caso a condio seja verdadeira e outra que no requerida, mas
pode-se ter tambm, que execute um outro processo caso a condio seja falsa (else).
Aps o ciclo, pediu-se o valor da varivel A para sabermos se realmente o comando
funcionou.
8.3.3
Ciclo While
No ciclo while apenas a condio testada. Vamos fazer um exemplo agora utilizando
o arquivo.m:
55
a=1;b=15;
while a<b,
clc
disp(loop em curso)
a=a+1
b=b-1
pause(2)
end
clc
disp(fim do loop)
Antes de mais nada, salve o arquivo como loop.m na mesma pasta onde voc est
rodando o programa.
Nesse comando teremos uma comparao de dados entre as variveis a e b comeando
com a valendo 1 e b valendo 15 e enquanto a for menor que b o ciclo segue e a cada
ciclo a varivel a incrementada em 1 e a b perde uma unidade, isso ocorrer at que
a fique maior que b. Tambm importante salientar o comando pause que o tempo
que o ciclo ir levar a mais que o normal, pois como sabemos o processamento se daria
em fraes de segundos e consequentemente no poderamos observar o comando, por
isso o pause de 2 segundos.
Agora volte a janela de comando e digite loop que a instruo toda ser processada.
8.4
Declarando Funes
Para criarmos funes necessitamos trabalhar na janela de M-Files, para tanto, como
voc j sabe, v em File New M File. Antes de apresentarmos vamos dar
as 3 regras principais para a criao de funes no MATLAB:
function f = hema(x)
f = x/24/30/12
Abrimos o M-File e digitamos function f e aps isso igualamos a uma funo que
criaremos, no caso hema, que significa horas em ano sendo uma transformao. Na
56
linha abaixo igualamos a funo f ao corpo da funo hema. E por ltimo temos a nossa
varivel de entrada que o x, que representa as horas. Pronto, agora basta salvar esse
arquivo com o nome idntico da funo hema, aps isso vamos janela de comando
principal e chamamos pela nova funo:
hema(8640)
f =
1
ans =
1
No caso, est digitado exatamente o valor de um ano em horas, portanto a
resposta 1.
57
9
Sistemas de Equaes Lineares
9.1
Interpretao grfica
Equaes que representam duas retas que se interceptam podem ser facilmente identificadas porque possuem diferentes coeficientes angulares.
Exemplo:
58
y = 2x 3
y = x + 3
Equaes que representam duas retas paralelas possuem o mesmo coeficiente angular
e coeficientes lineares diferentes.
Exemplo:
y = 2x 3
y = 2x + 1
Equaes que representam a mesma reta so equaes com mesmo coeficiente angular e mesmo coeficiente linear.
Exemplo:
y = 2x 3
3y = 6x 9
9.2
A = 3 2 -1
-1 3 2
1 -1 -1
x = x
y
z
B = 10
5
-1
59
9.3
Diviso de matrizes
9.4
Matriz inversa
O sistema de equaes pode ser resolvido usando matriz inversa. Por exemplo assumimos que A, x, B so matrizes definidas a seguir:
A = 3 2 -1
-1 3 2
1 -1 -1
x = x
y
z
B = 10
5
-1
X = inv(A)*B;
60
10
10.1
Clculo
Zeros de Funes
>> fzero(func1,1)
ans =
0.7854
Note que o segundo argumento, 1, um chute inicial para o clculo da raiz. Note
tambm que o valor do ngulo x que satisfaz f (x) = 0 est em radianos (0.7854 radianos
= 45 graus). No entanto, existem outros valores de x para os quais f (x) = 0, isto , a
funo f (x) tem outras razes. Dando o chute inicial 3, por exemplo, tem-se
>> fzero(func1,3)
ans =
3.9270
ou, em graus, 225 . Este comando pode ser utilizado com qualquer outra funo
escrita no MATLAB.
Os dois zeros calculados anteriormente podem ser verificados no grfico da funo.
10.2
Minimizao de Funes
funo fminbnd.
>> [xmin ymin] = fminbnd(func1,0,2*pi)
xmin =
5.49778788018538
ymin =
-1.41421356237271
10.3
Limites
Para efetuar uma operao com limites no MATLAB, o comando que se deve dar
: limit(f(x),x,a) onde f(x) a funo que se quer achar o limite, x a varivel e a o
nmero no qual o x est tendendo (x a).
Exemplo: Achar o limite abaixo:
1 + x2
x2 1 x2
lim
>> syms x
>> limit(((1+x^2)/(1-x^2)),x,2)
ans=
-5/3
62
10.4
x1
x+1
(x 1)3
lim+
x3
x
x3
>> syms x
>> limit((x/(x-3)),x,3,right)
ans=
inf
>> limit(((x+1)/(x-1)^3),x,1,left)
ans =
-inf
10.5
10.5.1
Integrao
Soluo Simblica
x(1 x)2 dx
2x4 3x3 + 5
dx
7x2
63
>> syms x
>> f=((x^1/2)*(1-x)^2);
>> int(f)
ans =
1/8*x^4-1/3*x^3+1/4*x^2
>> f=(((2*x^4)-(3*x^3)+5)/(7*x^2));
>> int(f)
ans =
2/21*x^3-3/14*x^2-5/7/x
Z 1
2x
dx
(x 3)2
(1 2x 3x2 )dx
>> syms x
>> int(((2*x)/(x-3)^2),0,2)
ans =
4-2*log(3)
>> int((1-2*x-3*x^2),0,1)
ans =
-1
10.5.2
Soluo Numrica
ba
(f (x0 ) + 2f (x1 ) + ... + 2f (xn1 ) + f (xn ))
2n
64
Z 1
2xex dx
A aproximao para esta integral pode ser calculada atravs do seguinte programa:
function I = Integral(dx);
x = 0:dx:1;
y = 2*x.*exp(-x.^2);
I = trapz(x,y);
Este programa cria um vetor x de a = 0 at b = 1, com incremento dx definido pelo
usurio, calcula os valores de f (x) nestes pontos e usa o comando trapz para aproximar
a integral de f (x). O clculo da integral feito no MATLAB, usando a recm-definida
funo Integral, da seguinte maneira.
>> integral(.1)
ans =
0.6298
Para um dx menor.
>> integral(.02)
ans =
0.6320
Observe que as aproximaes da integral para dx = 0.1 e dx = 0.02 so diferentes.
De fato, usando o incremento menor dx = 0.02 aproxima-se melhor a rea sob a curva
f(x). O valor exato desta integral
Iexato = 1 exp (1)
ou, calculando no MATLAB I = 0.63212055882856.
A figura seguinte mostra graficamente a funo para dx = 0.1 e para dx = 0.02. A
rea sob a curva a integral definida da funo f(x).
65
>> quad(func2,0,1)
ans =
0.63212053454568
66
k=
Z 1
xdx
Lembrando que uma singularidade um ponto no qual uma funo ou sua derivada
no definida ou tende para o infinito.
Tanto quad8 quanto quad8 escrevem na tela uma mensagem quando detectam uma
singularidade, mas ainda assim o valor estimado da integral retornado.
Exerccio:
Seja a funo f (x) = |x|. Resolva as integrais abaixo usando o MATLAB e compare
com os resultados obtidos a mo.
a. int[0.6,0.5] f(x) dx
b. int[0.5,-0.5] f(x) dx
c. int[0.0,-1.0] f(x) dx
10.6
Diferenciao
67
10.6.1
f 00 (x) =
f 0 (xk ) f 0 (xk 1)
xk (xk 1)
68
10.6.2
Comando diff
1
3x
>> syms x
>>diff((2*x^2)+3*x)
ans =
4*x+3
>>diff((1/(3-x)))
ans =
1/(3-x)^2
69
10.6.3
As derivadas superiores podem ser calculadas atravs do comando dif f (f (x), 2),
onde essa representao para a derivada segunda da funo f(x), para derivada terceira,
coloca-se 3 no lugar do nmero 2, para derivada quarta, o nmero 4 e assim por diante.
Exemplo: Achar a derivada segunda das seguintes funes:
f (x) =
1
3x
f (x) = x
>> syms x
>> diff((1/(3-x)),2)
ans =
2/(3-x)^3
>>diff((x-(1/x)),2)
ans =
-2/x^3
70
1
x
10.6.4
Derivadas Trigonomtricas:
>> syms x
>> diff(sin|x|)
ans =
cos(x)
>>diff(cos|2*x|)
ans =
-2*sin|2*x|
>>diff(tan|3*x+5|)
ans =
3+3*tan(3*x+5)^2
71
11Ajuste de Curvas
Em numerosas reas, precisa-se do uso de uma equao para se resolver um problema.
O que fazer se ns s estivermos com os dados na mo? Nesse caso, o uso do ajustamento
e interpolao poder nos facilitar essa resoluo.
11.1
Ajuste de Curvas
No MATLAB, a funo polyfit pode resolver quando voc tem os dados e tem que
transformar em polinmios. A ilustrao abaixo, permite-nos ver o uso dessa funo.
Depois, vamos plotar para ver se o ajustamento est certo:
x=[0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1];
y=[-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];
Para usar o comando polyfit deve-se indicar qual o grau do polinmio para se tentar
ajustar. Por exemplo, se n=1, ele tentar ajustar para uma reta.
Agora, se for n=2, como o nosso caso, ele indicar um polinmio de grau 2.
Exemplo:
n=2;
p=polyfit(x,y,n)
p =
-9.8108
20.1293
-0.0317
xi=linspace(0,1,100);
z=polyval(p,xi);
plot(x,y,o,x,y,xi,z,:)
xlabel(x),ylabel(y)
title(Ajuste para uma curva quadrtica)
72
11.2
Interpolao Unidimensional
horas=1:12;
temps=[5 8 9 15 25 29 31 30 22 25 27 24];
plot(horas,temps,horas,temps,+)
title(Temperaturas)
xlabel(Hora),ylabel(GrausCelcius)
73
Para se ter uma preciso ainda maior, deve-se usar o argumento spline.
Exemplo:
74
t=interp1(horas,temps,9.3,spline)
t =
21.8577
t=interp1(horas,temps,4.7,spline)
t =
22.3143
t=interp1(horas,temps,[3.2 6.5 7.1 11.7],spline)
t =
9.6734
30.0427
31.1755
25.3820
h=1:0.1:12;
t=interp1(horas,temps,h,spline);
plot(horas,temps,--,horas,temps,+,h,t,r)
title(Temperaturas);
xlabel(Hora),ylabel(Graus Celcius) ;
75
12
Transformadas
As transformadas so manipulaes matemticas para representar os mesmos elementos em diferentes domnios por meio de transformaes nos mesmos. Na Engenharia, elas
so usadas com muita freqncia para mudar o campo de referncia entre o domnio do
tempo e o domnio s, domnio da freqncia ou domnio Z. H muitas tcnicas para analisar estados de equilbrio e sistemas que sofrem mudanas muito suaves no domnio do
tempo, mas os sistemas complexos quase sempre podem ser analisados mais facilmente
em outros domnios.
A funo impulso (t) a derivada da funo
Degrau u(t). A funo Degrau K
R
(t-a) definida como K (t-a) = 0 para t<a e
k(t a)dt para t =a. Quando
representada em grfico ela comumente representada como uma seta de amplitude K
em t = a:
12.1
syms t k a
u = k*Heaviside(t-a)
d = diff(u)
int(d)
76
12.2
Transformada de Laplace
f (t)est dt
Para transformar f(t), no domnio do tempo, em F(s), no domnio de s. A Transformada de Laplace da funo cosseno amortecido eat cos(t) encontrada usando-se a
funo Laplace:
syms a t w
f=sym(exp(-a*t)*cos(w*t))
F= laplace(f)
pretty(F)
laplace(sym(Dirac(t)))
laplace(sym(Heaviside(t)))
As expresses podem ser transformadas novamente para o domnio do tempo, usandose a Transformada Inversa de Laplace ilaplace que realiza a operao f(t). Usando F
do exemplo acima temos:
ilaplace(F)
12.3
Transformada de Fourier
77
F (s) =
f (t) =
f (t)ejwt dt
F (w)ejwt dw
syms t
f= sym(t*exp(-t^2))
F= fourier(f)
invfourier(F)
12.4
Transformada Z
f (k)z k
k=0
,
onde z um nmero complexo.
A Transformada Z e a Transformada Inversa de Z so obtidas usando-se as funes
ztrans e iztrans. O formato similar ao das funes de Transformadas de Laplace e
Fourier.
12.5
12.5.1
Exerccios
Exerccio 1: Sistemas Lineares
O circuito mostrado abaixo possui uma fonte de tenso contnua de 60V e quatro
resistores distribudos em trs malhas. Utilize o MATLAB para resolver o sistema linear
e achar as correntes no circuito.
7I1 + 12(I1 I2 ) = 60
12(I2 I1 ) + 6(I2 I3 ) = 0
6(I2 I3 ) + 12I3 = 0
78
Aplicando as leis de Kirchhoff no circuito, tm-se trs equaes para trs incgnitas
linearmente independentes (I1 , I2 e I3 ).
19I1 12I2 = 60
12I1 + 18I2 6I3 = 0
6I2 + 18I3 = 0
Reorganizado as equaes, tem-se o sistema pronto para ser passado para forma
matricial e ento ser resolvido, sendo, no caso do sistema eltrico R3X3 .I3X1 = V3X1 .
Comandos utilizados em sistemas lineares:
x=A\B
x=B/A
inv(A)
det(A)
rank(A)
12.5.2
Achar a equao para a tenso no capacitor no circuito abaixo utilizando soluo por
equaes diferenciais considerando nulas as condies iniciais, ou seja, vC (0).
vC (t) = V (1 e RC ) (1.4)
a. Funo dsolve
A funao dsolve fornece soluo simblica para equaes diferenciais ordinrias.
Basta simplesmente entrar com uma ou mais equaes diferenciais e suas respectivas
condies iniciais que a resposta fornecida. Por exemplo, para resolver a equao
d2
y = t com condies iniciais y(0) = 2 e y 0 (0) = 0, entra-se no MATLAB com
dt2
dsolve (D2y=t,y(0)=2,Dy(0)=0)
ans =
1/6*t^3-2
Agora resolva a equao (1.3) utilizando a funo dsolve.
b. Transformada de Laplace
A seguir, tem-se uma tabela com os pares mais simples da Transformada de Laplace.
Teste alguns deles no MATLAB, sem se esquecer de declarar as variveis simblicas com
o comando sym(var1) ou syms var1 var2 var3 ....
Voltando ao exerccio 2, a soluo da equao (1.3) pode ser obtida a partir da
Transformada de Laplace da mesma, obtendo VC (S), que a tenso do capacitor no
domnio s. Utilizando a funo de laplace, tem-se o resultado em (1.5).
syms R C V
vR=R*C*diff(sym(vC(t)));
vC=sym(vC(t));
Y=laplace(vR+vC-V)
y =
R*C*(s*laplace(vC(t),t,s)-vC(0))+laplace(vC(t),t,s)-V/s
80
V
s
= 0 (1.5)
A partir dessa simples manipulao algbrica da equao para isolar a varivel VC (s)
e expanso em fraes parciais, pode-se ento aplicar a Transformada Inversa de Laplace
para achar vC (t)utilizando a funo ilaplace do MATLAB.
VC (s) =
V
s
V
1
s+ RC
(1.6)
12.5.3
81
82
83
Soluo:
84
13
SIMULINK
O que SIMULINK?
O Simulink um pacote computacional voltado para a modelagem, simulao e
anlise de sistemas dinmicos, tanto lineares quanto no-lineares, contnuos e/ou discretos no tempo.
13.1
13.1.1
Introduo
Diagrama de Blocos
86
13.1.2
Smbolos
13.2
13.2.1
Conhecendo o Simulink
Iniciando o Simulink
13.2.2
88
Arraste o bloco da onda senoidal (Sine Wave) para a janela do modelo. Uma cpia
deste bloco dever aparecer nesta janela.
Em seguida arraste o bloco integrator, presente na biblioteca continuous. Faa o
mesmo para o Scope, que est na biblioteca Sinks.
13.2.3
90
Para finalizar a configurao, deve-se definir o nmero inicial de bactrias. Para isto,
d um duplo clique no integrador e no campo "Initial condition"mude para 100, e aps
93
clique Close.
94
O modelo agora est completo e pronto para ser executado. Para salvar, v barra
de menu e selecione FILE:SAVE e entre com o nome desejado. O modelo ser salvo com
o nome digitado e a extenso .mdl, e seu nome aparecer na barra de ttulo da janela de
edio. Abra agora o SCOPE com um duplo clique e a seguir na barra de menu, clique
em SIMULATION:START para iniciar a execuo.
O SCOPE nem sempre mostra a figura numa boa escala para visualizao. O boto
Autoscale na barra de ferramentas do SCOPE redimensiona a escala para acomodar
todos os valores.
95
13.3
(t)dt = 1
Embora o impulso unitrio seja um sinal que teoricamente no existe existem boas
aproximaes do caso ideal que so muito comuns. Exemplos fsicos so colises, como
uma roda se chocando com o meio-fio ou um basto rebatendo uma bola ou ainda
mudanas instantneas de velocidade como a de uma bala sendo disparada de um rifle. Outra utilidade da funo impulso a determinao da dinmica do sistema. O
movimento causado em um sistema que sofre uma fora impulsional unitria a prpria
dinmica inerente ao sistema. Partindo disto, pode-se utilizar a resposta um impulso
unitrio de um sistema complexo para se determinar sua freqncia natural e suas caractersticas de vibrao.
Pode-se criar uma aproximao de um impulso unitrio utilizando duas fontes de
funo degrau e um bloco de soma. A idia produzir num tempo definido a um
pulso de durao muito curta d e de magnitude M, tal que M.d=1. A dificuldade
consiste em se definir um valor apropriado para d. Deve ser um valor pequeno quando
comparado mais rpida dinmica do sistema Porm, se for muito curto, podem ocorrer
problemas numricos como erros de aproximao. Se for muito longo a simulao no
ser adequada um impulso verdadeiro. Usualmente, valores adequados podem ser
determinados experimentalmente.
13.3.1
Principais Fontes(Sources):
13.3.2
13.3.3
Verificao do modelo
98
Check Static Range: - Verifica se um sinal est sempre outros dois valores estticos.
Check Static Upper Bound: Checa se um sinal menor ou igual a um limite superior.
13.3.4
Blocos de sadas(Sinks)
13.3.5
13.3.6
Blocos condicionais
possvel ainda utilizar-se de blocos condicionais, tais como o bloco If. Neste bloco
h entradas para sinais e uma comparao feita. Se for verdadeira, o bloco libera um
sinal de nvel alto na sada. Observe que este sinal no o valor da entrada do bloco
e sim um sinal que afirma se verdadeira ou falsa a afirmativa. As sadas dos blocos
condicionais podem ser conectadas aos blocos If Action Subsystem. Estes blocos so
sub-sistemas que iro atuar quando for verdadeiro o sinal presente na entrada if. Dessa
forma, necessrio editar os blocos do If Action Subsystem para que as sadas sejam as
desejadas.
Exemplo: Construa o sequinte diagrama de blocos no Simulink. Este modelo limita
o valor de uma funo qualquer, por exemplo, uma senide. O valor da senide
comparado com outro valor estabelecido no bloco if. Se a condio for verdadeira,
ento um sub-sistema acionado. Este sub-sistema nada mais que uma entrada e
uma sada, porm ele pode ser modificado a fim de atigir o resultado desejado.
13.3.7
mesmo pode ser feito para um bloco. Neste caso, clique com o boto sobre um bloco e
v em background color para mudar a cor do bloco; e em foreground color para modificar
as cores do contorno do bloco.
A tabela a seguir contm as operaes bsicas de manipulao de blocos como redimensionar, rotacionar, copiar e renomear blocos.
100
Ao
Seleo simples de objeto
Seleo mltipla de objetos
Selecionar com uma caixa de
seleo
Descrio
Clique no objeto com o boto esquerdo do mouse.
Pressione a tecla SHIFT e clique no outro objeto.
Clique com o boto esquerdo do mouse no local onde
se deseja que seja uma das quinas da caixa de seleo.
Continue com a tecla do mouse pressionada e arraste
a caixa para encobrir a rea esejada.
Copiar um bloco de uma bib- Selecione o bloco e arraste para a janela do modelo
lioteca ou de outro modelo
para a qual se quer copiar.
Inverter blocos
Selecione o bloco e no menu Format:Flip Block.
Tecla de atalho: CTRLF.
Rotacionar blocos
Selecione o bloco e no menu Format:Rotate Block.
Tecla de atalho: CTRLR.
Redimensionar blocos
Selecione o bloco e arraste o canto.
Adicionar sombra
Selecione o bloco e no menu Format:Show Drop
Shadow.
Editar o nome de um bloco
Clique no nome.
Ocultar o nome de um bloco Selecione o nome, no menu Format:Hide Name
Inverter o nome de um bloco Selecione o nome, no menu Format:Flip Name
Apagar Objetos
Selecione o objeto, no menu Edit:Clear. Tecla de
atalho: Del.
Copiar objetos para a rea de Selecione o objeto, no menu Edit:Copy. Tecla de
transferncia
atalho: CTRLC.
Recortar objetos para a rea Selecione o objeto, no menu Edit:Cut. Tecla de
de transferncia
atalho: CTRLX.
Colar objetos a partir da rea No menu Edit:Paste. Tecla de atalho: CTRLV.
de transferncia
Traar uma linha de sinal
Arrastar com o mouse da sada do bloco para a entrada do outro.
Traar uma linha de sinal em Arraste com o mouse da sada do bloco at o primeiro
segmentos
ponto. Repetir deste ponto at o seguinte e assim por
diante.
Traar uma linha ligada a Mantenha a tecla CTRL pressionada e clique sobre a
outra
linha de origem. Tecla de atalho: Clicar com o boto
direito do mouse a partir da linha de origem.
Separar uma linha
Selecione a linha. Mantendo a tecla SHIFT pressionada, clique e arraste o novo vertex para a posio
desejada.
Mover um segmento de linha Clique e arraste o segmento desejado.
Mover um vertex de um seg- Clique e arraste o vertex desejado.
mento.
Nomear uma linha de sinal
Duplo clique na linha e digite o nome.
Mover o nome de uma linha Clique e arraste o nome para a posio desejada.
de sinal
101
Ao
Copiar o nome de uma linha
de sinal
Descrio
Mantendo a tecla CTRL pressionada, arraste o nome
para a posio desejada. Tecla de atalho: clique e
arraste com o boto direito do mouse para a posio
desejada.
Sinais de propagao numa D um nome aos sinais conhecidos (entrada) com um
linha de sinal
nico caracter e nas linhas em que se deseja saber seu
contedo, deve-se digitar somente o caracter <.
Aps isso, no menu Edit:Update Diagram.
Acrescentar anotao ou ob- D um duplo clique no local em que se deseja e digite
servao no modelo
o texto.
102
14
Referncias Bibliogrficas
Curso de MATLAB for Windows, Departamento de Engenharia Mecnica, UNESP,
Campus de Ilha Solteira.
Trindade, Marcelo A. e Sampaio, Rubens, Introduo ao MATLAB, Departamento
de Engenharia Mecnica, Laboratrio de Dinmica e Vibraes, PUC-Rio.
Noes Bsicas de Utilizao e Programao em Matlab, Curso de Matemtica,
Programa de Educao Tutorial, Universidade Federal de Santa Maria, 2008.
Hey, H. L., Caderno didtico de Sistemas de Controle I, Departamento de Eletrnica
e Computao, UFSM, Santa Maria.
www.mathworks.com.
103