103

Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis
Page 2: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Sumário

1 Apresentação 51.1 Solução de Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.1.1 Enunciado do Problema . . . . . . . . . . . . . . . . . . . . . . 51.1.2 Descrição Entrada/Saída . . . . . . . . . . . . . . . . . . . . . 51.1.3 Exemplo Manual . . . . . . . . . . . . . . . . . . . . . . . . . . 61.1.4 Solução MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . 71.1.5 Testando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.2 Apresentação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.2.1 Ambiente de Trabalho . . . . . . . . . . . . . . . . . . . . . . . 101.2.2 Editor de Linhas de Comando . . . . . . . . . . . . . . . . . . . 10

2 Introdução 132.1 Introdução a Matrizes Simples . . . . . . . . . . . . . . . . . . . . . . 132.2 Elementos de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . 152.3 Declaração de Variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . 162.4 Informações sobre a Área de Trabalho . . . . . . . . . . . . . . . . . . 172.5 Números e Expressões Aritméticas . . . . . . . . . . . . . . . . . . . . . 172.6 Números e Matrizes Complexas . . . . . . . . . . . . . . . . . . . . . . 182.7 Formatação de Saída . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.8 Utilização do comando help . . . . . . . . . . . . . . . . . . . . . . . . 202.9 Utilização do comando lookfor . . . . . . . . . . . . . . . . . . . . . . . 212.10 Funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3 Manipulação de Matrizes e Vetores 233.1 Operações com Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.1.1 Transposição . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.1.2 Adição e Subtração . . . . . . . . . . . . . . . . . . . . . . . . 243.1.3 Multiplicação . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.1.4 Divisão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.1.5 Potenciação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.2 Operações Elemento a Elemento (Conjuntos) . . . . . . . . . . . . . . 253.2.1 Adição e Subtração . . . . . . . . . . . . . . . . . . . . . . . . 253.2.2 Multiplicação e Divisão . . . . . . . . . . . . . . . . . . . . . . 263.2.3 Potenciação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.3 Matrizes Elementares . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.3.1 Geração de Vetores . . . . . . . . . . . . . . . . . . . . . . . . 263.3.2 Matriz Identidade . . . . . . . . . . . . . . . . . . . . . . . . . 273.3.3 Matriz Composta por Elementos Unitários . . . . . . . . . . . . 283.3.4 Matriz Nula . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.3.5 Matriz Aleatória . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.4 Elementos de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.5 Manipulação de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . 30

2

Page 3: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

3.5.1 Matriz Diagonal ou Diagonal de uma Matriz . . . . . . . . . . . 303.5.2 Matrizes Triangulares . . . . . . . . . . . . . . . . . . . . . . . 313.5.3 Redimensionamento de Matrizes . . . . . . . . . . . . . . . . . . 313.5.4 Rotação dos Elementos da Matriz . . . . . . . . . . . . . . . . 32

4 Funções 334.1 Funções Escalares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.2 Funções Vetoriais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.3 Funções Matriciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

5 Polinômios 35

6 Análise Polinomial 376.1 Avaliação do polinômio . . . . . . . . . . . . . . . . . . . . . . . . . . 376.2 Comando polyval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376.3 Operações Aritméticas . . . . . . . . . . . . . . . . . . . . . . . . . . 38

6.3.1 Soma e subtração . . . . . . . . . . . . . . . . . . . . . . . . . 386.3.2 Multiplicação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396.3.3 Divisão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

6.4 Raízes de polinômios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

7 Gráficos 427.1 Gráficos X-Y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

7.1.1 Acessórios para os Gráficos . . . . . . . . . . . . . . . . . . . . 447.1.2 Números Complexos . . . . . . . . . . . . . . . . . . . . . . . . 46

7.2 Gráficos Polares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467.3 Gráficos 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

8 Programação 518.1 Arquivo.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518.2 Operadores Lógicos e Relacionais . . . . . . . . . . . . . . . . . . . . . 51

8.2.1 Operadores Relacionais . . . . . . . . . . . . . . . . . . . . . . 528.2.2 Operadores Lógicos . . . . . . . . . . . . . . . . . . . . . . . . 52

8.3 Comandos For, While e If . . . . . . . . . . . . . . . . . . . . . . . . . 538.3.1 Ciclo For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548.3.2 Comando If . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558.3.3 Ciclo While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

8.4 Declarando Funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

9 Sistemas de Equações Lineares 589.1 Interpretação gráfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589.2 Solução usando operação com matrizes . . . . . . . . . . . . . . . . . . 599.3 Divisão de matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609.4 Matriz inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

3

Page 4: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

10 Cálculo 6110.1 Zeros de Funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6110.2 Minimização de Funções . . . . . . . . . . . . . . . . . . . . . . . . . . 6110.3 Limites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6210.4 Limites à esquerda e à direita . . . . . . . . . . . . . . . . . . . . . . . 6310.5 Integração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

10.5.1 Solução Simbólica . . . . . . . . . . . . . . . . . . . . . . . . . 6310.5.2 Solução Numérica . . . . . . . . . . . . . . . . . . . . . . . . . 64

10.6 Diferenciação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6710.6.1 Derivação por expressões de diferenças . . . . . . . . . . . . . . 6810.6.2 Comando diff . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6910.6.3 Derivadas de ordem superior . . . . . . . . . . . . . . . . . . . . 7010.6.4 Derivadas Trigonométricas: . . . . . . . . . . . . . . . . . . . . 71

11 Ajuste de Curvas 7211.1 Ajuste de Curvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7211.2 Interpolação Unidimensional . . . . . . . . . . . . . . . . . . . . . . . . 73

12 Transformadas 7612.1 Funções Degrau e Impulso . . . . . . . . . . . . . . . . . . . . . . . . . 7612.2 Transformada de Laplace . . . . . . . . . . . . . . . . . . . . . . . . . 7712.3 Transformada de Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . 7712.4 Transformada Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7812.5 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

12.5.1 Exercício 1: Sistemas Lineares . . . . . . . . . . . . . . . . . . . 7812.5.2 Exercício 2: Equações Diferenciais e Transformadas . . . . . . . 7912.5.3 Exercício 3: Transformada de Fourier . . . . . . . . . . . . . . . 81

13 SIMULINK 8513.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

13.1.1 Diagrama de Blocos . . . . . . . . . . . . . . . . . . . . . . . . 8613.1.2 Símbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

13.2 Conhecendo o Simulink . . . . . . . . . . . . . . . . . . . . . . . . . . 8713.2.1 Iniciando o Simulink . . . . . . . . . . . . . . . . . . . . . . . . 8713.2.2 Construindo e analisando um modelo simples . . . . . . . . . . . 8813.2.3 Exemplo: Modelo de um processo biológico . . . . . . . . . . . . 90

13.3 Principais blocos do Simulink e suas funções . . . . . . . . . . . . . . . 9613.3.1 Principais Fontes(Sources): . . . . . . . . . . . . . . . . . . . . 9813.3.2 Principais blocos usados na modelgem de sistemas dinâmicos . . 9813.3.3 Verificação do modelo . . . . . . . . . . . . . . . . . . . . . . . 9813.3.4 Blocos de saídas(Sinks) . . . . . . . . . . . . . . . . . . . . . . 9913.3.5 Criando blocos de sub-sistemas . . . . . . . . . . . . . . . . . . 9913.3.6 Blocos condicionais . . . . . . . . . . . . . . . . . . . . . . . . 9913.3.7 Personalizando o modelo e manipulando Blocos . . . . . . . . . 99

14 Referências Bibliográficas 103

4

Page 5: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

1Apresentação

1.1 Solução de ProblemasA solução de problemas é parte essencial não somente dos cursos de engenharia, mas

também dos cursos de Matemática, Física, Química e Ciência da Computação. Logo, éimportante uma base sólida em solução de problemas. Também é de grande auxílio umembasamento suficiente para trabalhar em todas estas áreas, para que não tenhamosque aprender uma técnica para problemas de matemática, e uma técnica diferente paraproblemas de física, e assim por diante.

O processo ou metodologia para resolução de problemas que usaremos ao longo dotexto possui cinco passos:

1. Enunciar o problema claramente.2. Descrever a informação de entrada e saída.3. Trabalhar o problema manualmente.4. Desenvolver uma solução MATLAB.5. Testar a solução usando uma variedade de grupo de dados.

Descreveremos cada um dos passos usando o exemplo do cálculo da distância entredois pontos em um plano.

1.1.1 Enunciado do ProblemaO primeiro passo é enunciar o problema claramente. É extremamente importante que

o enunciado seja conciso para evitar desentendimentos. Para este exemplo, o enunciadodo problema é:

Calcule a distância em linha reta entre dois pontos num plano.

1.1.2 Descrição Entrada/SaídaO segundo passo é descrever cuidadosamente a informação que é dada para resolver o

problema e então identificar os valores a serem calculados. Estes itens representam a en-trada e a saída para o problema e agregadamente podem ser chamados entrada/saída,ou I/0. Para muitos problemas, é útil usar um diagrama que mostra a entrada e asaída. Algumas vezes, este tipo de diagrama é chamado de “caixa preta” porque nãoestamos definindo para este ponto todos os passos para determinar a saída, mas es-tamos mostrando a informação que é usada para calcular a saída. Para este exemplo,poderíamos usar o diagrama na Figura 1.

5

Page 6: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Figura 1: Diagrama I/0

1.1.3 Exemplo ManualO terceiro passo é trabalhar o problema manualmente ou com uma calculadora, us-

ando um pequeno grupo de dados. É um passo muito importante e não deve ser ignoradopor mais simples que seja o problema. É um item no qual você trabalha os detalhes dasolução do problema. Se você não pode pegar um simples grupo de números e calculara saída (seja manualmente ou com uma calculadora), então você não está pronto paraexecutar o próximo passo; você deve reler o problema e talvez consultar material dereferência. Uma vez que pode trabalhar o problema de um simples grupo de dados,então você está pronto para desenvolver um algoritmo ou um esboço passo a passo dasolução. Este esboço é convertido para os comandos MATLAB para que possamos usaro computador para fazer todos os cálculos. 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 distância entre dois pontos, que é a hipotenusa de um triânguloretângulo, conforme mostra a Figura 2. Usando o Teorema de Pitágoras, podemos cal-cular a distância d com a seguinte equação:

d =√S2

1 + S22

d =√

(4− 1)2 + (7− 5)2

d =√

13

d = 3.61

6

Page 7: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Figura 2: Triangulo retângulo

1.1.4 Solução MATLABNo próximo capítulo, falaremos sobre os comandos MATLAB. Contudo da solução

você pode ver que os comandos são muito similares às equações que foram usadas noexemplo manual. O sinal de percentagem é usado para anteceder comentários que ex-plicam os comandos MATLAB.

%% Este programa calcula e imprime% distância, em linha reta, entre dois pontos.p1 = [1,5]; % ponto 1 inicialp2 = [4,7]; % ponto2 iniciald = sqrt (sum ((p2-p1).^2)) % calcular distância

1.1.5 TestandoO passo final em nosso processo de solução de problemas é testar a solução. Primeira-

mente, devemos testar a solução com os dados do exemplo manual, já que calculamosa solução. Quando os comandos MATLAB na solução são executados, o computadormostra a seguinte saída:

d = 3.6056

Esta saída coincide com o valor que calculamos no exemplo manual. Se a soluçãoMATLAB não coincidir com o exemplo manual, devemos rever ambas soluções a fimde encontrar o erro. Uma vez que a solução trabalha com o exemplo manual, devemostambém testá-la com vários grupos de dados para certificar que a solução é válida paraoutras séries de dados.

7

Page 8: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

1.2 ApresentaçãoO MATLAB R© pode ser usado como uma linguagem de programação ou como uma

ferramenta de cálculo interativa. Em ambos os casos, o ambiente MATLAB permite arealização de cálculos, visualização de resultados e desenvolvimento de algoritmos usandouma sintaxe muito próxima da notação matemática usual.

O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo defuncionamento. Todas as variáveis são definidas de forma matricial, o que faz comque este ambiente seja ideal para resolver problemas de cálculo envolvendo matrizes evetores.

Um arquivo de programa MATLAB recebe a extensão .m e, por isso, também échamado de m-file ou arquivo .m. Ele pode ser criado e/ou modificado no editor própriodo MATLAB - MATLAB Editor/Debugger - que possui características que auxiliambastante na edição de programas como auto-colorização de palavras de acordo com asintaxe e interação com o ambiente de cálculo do MATLAB. Existem também os arquivos.mat que são arquivos binários que contém as variáveis da Workspace. Estes arquivossão gerados indo em

File-> Save Workspace -> nomedoarquivo.mat

É importante diferenciar, portanto, arquivos .m dos arquivos .mat. Os arquivos .mcontém uma série de comandos que, ao serem chamados no Workspace, são executados.Já os arquivos .mat contém somente as variáveis e os seus valores armazenados.

Uma das grandes virtudes do MATLAB é que todas as suas funções são escritas emm-files, sendo que algumas delas podem ser modificadas e várias outras criadas. Estefato possibilitou a criação de diversos conjuntos de funções específicas para determi-nadas áreas, como controle, análise de sinais, finanças, entre outras. Estes conjuntos defunções, ou de m-files, são chamados de toolbox.

Toolboxes direcionados para diversas áreas são distribuídos pela The MathWorksInc. - empresa que desenvolve o software MATLAB (http://www.mathworks.com) - einúmeros outros são desenvolvidos em todo o mundo, com e sem reconhecimento daMathWorks, e podem geralmente ser encontrados na internet.

Um dos toolboxes desenvolvidos pela MathWorks é chamado Simulink. Ele é umaferramenta interativa para desenvolvimento, simulação e análise de sistemas dinâmicosatravés da criação de modelos baseados em diagramas de blocos. Conjuntos de blocospodem ser usados para modelar sistemas específicos. Esses conjuntos de blocos sãochamados Blocksets.

Assim como ocorre com os toolboxes, blocksets direcionados a várias áreas são tam-bém desenvolvidos em todo o mundo. Para ilustrar a vastidão do campo de aplicação doMATLAB, abaixo segue uma pequena listagem de toolboxes e blocksets desenvolvidospela MathWorks.

Aerospace BlocksetBiblioteca que utiliza os fundamentos do SIMULINK para prover ferramentas espe-

cializadas para o desenvolvimento de ferramentas de modelagem, integração e simulaçãode aeronaves, naves espaciais, mísseis sistemas de propulsão ou subsistemas.

Bioinformatics Toolbox

8

Page 9: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Aplicativo MATLAB que possui ferramentas especializadas para análise de genoma,visualização e normalização de micro vetores e análise das propriedades de proteínas.

Communications BlocksetAplicativo SIMULINK composto por cerca de 150 blocos do SIMULINK dedicados

às áreas de desenvolvimento de projeto, simulação e análise de sistemas de comunicaçãodigitais e analógicos.

Control System ToolboxAplicativo MATLAB para área de modelagem e análise de sistemas automáticos de

controle. Este Toolbox permite modelar, simular e analisar sistemas contínuos e discre-tos, com múltiplas entradas e múltiplas saídas (MIMO).

Data Acquisition ToolboxAplicativo MATLAB composto por funções para importação de dados obtidos a par-

tir de placas de aquisição de dados.

Curve Fitting ToolboxAplicativo MATLAB de ajuste de curvas. Este Toolbox permite modelar, simular e

analisar sofisticados métodos de ajuste de curvas de forma prática e flexível.

Financial ToolboxAplicativo MATLAB para área financeira (estudo de preços, cálculo de juros e inves-

timentos, análise de derivativos e otimização de portifólios).Statistics e Optimization Toolboxes são necessários para o funcionamento do Finan-

cial Toolbox.

Image Processing ToolboxAplicativo MATLAB para área de processamento de imagens (estudo, tratamento e

análise de sinais analógicos/digitais transformados em imagens gráficas). Signal Pro-cessing Toolbox é necessário para o funcionamento deste Toolbox.

Mapping ToolboxAplicativo MATLAB composto por funções para tratamento de mapas e informações

cartográficas (por exemplo: coordenadas cartográficas, deformações, representações tri-dimensionais).

Partial Differential Equation ToolboxAplicativo MATLAB composto por funções para resolução de equações diferenciais

parciais em espaço bidimensional utilizando método de elementos finitos.

Statistics ToolboxAplicativo MATLAB para área de estatística, incluindo além de ferramentas estatís-

ticas básicas de análise de dados, recurso de modelagem e análise estatística de modeloslineares e não-lineares.

SimMechanics

9

Page 10: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Biblioteca de blocos do SIMULINK que possibilita a modelagem e simulação de sis-temas mecânicos, tais como: componentes mecânicos (corpos e juntas), simulação demovimentos, etc.

1.2.1 Ambiente de TrabalhoQuando o MATLAB é inicializado, três janelas são exibidas: a Workspace, a Com-

mand History e a Janela de Comando (Command Window). Na aba Workspace aparecemas variáveis, seu tamanho e valor atual, as variáveis são arrays onde cada elemento tem8 bytes e podem ser editadas utilizando o Array Editor através de um clique duplo nonome da variável. Na janela Command History são armazenados todos os comandos jáutilizados, sendo que estes podem ser reescritos na Command Window apenas utilizandoas teclas UP e DOWN do teclado, sem necessidade de serem digitados novamente. Porsua vez, a Janela de Comando é a parte principal do MATLAB, onde serão escritos oscódigos, funções e demais comandos. Nessa janela, o “prompt” padrão (>>) é exibidona tela e, a partir deste ponto, o MATLAB espera as instruções do utilizador. Paraintroduzir 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 vírgula.Quando se pressiona a tecla <enter> o MATLAB responde com:

A =1 2 34 5 67 8 7

Para inverter esta matriz, utiliza-se:

>> B = inv(A)B =

-2.1667 1.6667 -0.50002.3333 -2.3333 1.0000-0.5000 1.0000 -0.5000

1.2.2 Editor de Linhas de ComandoAs setas para cima e para baixo do teclado podem ser usadas para navegar entre

comandos usados anteriormente, para nova execução ou reedição. No caso de pretender

10

Page 11: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

efetuar o cálculo de:

log

(√tan

5

))

Introduz-se na janela de comando:

>> log (sqt(tan(pi/5)))

Como para calcular a raiz quadrada o comando certo é sqrt, o MATLAB respondecom uma mensagem de erro:

??? Undefined function or variable sqt.

O comando com a resposta apropriada seria:

>> log (sqrt(tan(pi/5)))ans=

-0.1597

NOTA: Todas as funções que utilizam algum tipo de ângulo em seus argumentosinterpretam tal ângulo como sendo em radianos.

O Matlab possui diversas variáveis predefinidas, incluindo pi, Inf, NaN, i e j. Trêsexemplos são mostrados abaixo:

>> z = 3 + 4*iz =

3.0000 + 4.0000i>> Inf

ans =Inf

>> 0/0Warning: Divide by zero.

ans =NaN

O termo NaN significa, em inglês, Not-a-Number (símbolo de indeterminação) eresulta de operações de valor indeterminado. Inf representa +∞ e pi representa π . Avariável i =

√−1 é usada para representar números complexos. A variável j =

√−1

11

Page 12: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

pode ser usada em vez de i nas operações aritméticas com números complexos poraqueles que a preferem. Estas variáveis predefinidas podem ser redefinidas. É claroque elas podem ser redefinidas intencionalmente a fim de liberar o nome da variávelpara outros usos. Por exemplo, pode-se querer usar i como inteiro e reservar j paraa aritmética com números complexos. Seja cauteloso e deixe estes nomes de variáveispredefinidas intocados, pois há uma infinidade de nomes alternativos que podem serusados. As variáveis predefinidas podem ser realocadas aos seus valores default usandoo comando clear nome da variável (por exemplo, clear pi).

12

Page 13: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

2Introdução

O MATLAB trabalha essencialmente com um tipo de objeto: uma matriz numéricaretangular podendo conter elementos complexos. Observa-se que um escalar é umamatriz de dimensão 1x1 e que um vetor é uma matriz que possui somente uma linha ouuma coluna.

2.1 Introdução a Matrizes SimplesAs matrizes podem ser introduzidas no MATLAB de diferentes modos:- Introduzida na Janela de Comando (lista explícita de elementos).- Geradas por comandos e funções.- Criadas em arquivos “.m”.- Carregadas a partir de um arquivo de dados externo.

O método mais fácil de introduzir pequenas matrizes no MATLAB é utilizando umalista explícita. Os elementos de cada linha da matriz são separados por espaços embranco ou vírgulas e as colunas separadas por ponto e vírgula, colocando-se colchetesem volta do grupo de elementos que formam a matriz com o objetivo de limitá-la. Porexemplo, introduzindo-se a expressão:

>> A=[1 2 3; 4 5 6; 7 8 7]A =

1 2 34 5 67 8 7

A matriz A é guardada na memória RAM do computador, ficando armazenada parauso posterior. As matrizes podem, também, ser introduzidas linha a linha, o que é indi-cado para matrizes de grande dimensão. Por exemplo:

A=[1 2 34 5 67 8 7]

Outra maneira para introduzir matrizes no MATLAB é através de um arquivo noformato texto com extensão “.m”. Por exemplo, se um arquivo chamado “matriz.m”contiver estas três linhas de texto:

13

Page 14: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

A=[1 2 34 5 67 8 7]

Então a expressão “matriz” lerá o arquivo e introduzirá a matriz A.

>>matriz

O comando load pode ler matrizes geradas pelo MATLAB e armazenadas em arquivosbinários ou matrizes geradas por outros programas armazenadas em arquivos ASCII. As-sim, para ler um arquivo .mat chamado matriz.mat segue-se a seguinte estrutura: loadmatriz.mat, e as variáveis salvas no arquivo binário matriz.mat serão carregadas naWorkspace.

NOTA: Em todos os exemplos, m e n são inteiros positivos.

Para especificar um único elemento da matriz utilizam-se os índices referentes aonúmero de linha e número de coluna entre parênteses da matriz onde se encontra oelemento: A(m,n).

Outra forma de gerar matrizes é através de ciclos for. Por exemplo, para gerar umamatriz M com i linhas e j colunas, a seguinte estrutura pode ser utilizada:

>> for i = 1:3,for j = 1:3,M(i,j) = i+j;endend

E obtemos como resultado a matriz:

>> MM =

2 3 43 4 54 5 6

OBS: o índice das matrizes começa em 1, não em 0.

14

Page 15: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

2.2 Elementos de MatrizesOs elementos das matrizes podem ser quaisquer expressões do MATLAB. Por exem-

plo:

>> x = [-1.3 sqrt(2) ((1+2+3)*4/5)^2]x =

-1.3000 1.4142 23.0400

Um elemento individual da matriz pode ser referenciado com índice entre parênteses.Continuando o exemplo:

>> x(6) = abs(x(1))x =

-1.3000 1.4142 23.0400 0 0 1.3000

Nota-se que a dimensão do vetor x é aumentada automaticamente de 1x3 para 1x6de modo a acomodar o novo elemento, e que os elementos indefinidos do intervalo sãoestabelecidos como zero.

Matrizes de maior dimensão podem ser construídas a partir de pequenas matrizes.Por exemplo, pode-se anexar outra linha à matriz A usando:

>> r= [ 10 11 12];>> A= [A;r]

A =1 2 34 5 67 8 710 11 12

Nota-se que o vetor r não foi listado porque ao seu final foi acrescentado “;”.

Podem ser extraídas matrizes pequenas da matriz original utilizando “:”.Por exemplo:

>> A = A(1:3,:)A =

1 2 34 5 67 8 7

15

Page 16: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Seleciona da linha 1 até a linha 3 e todas as colunas da matriz A atual.

2.3 Declaração de VariáveisO MATLAB é uma linguagem de expressões. As expressões usadas são interpretadas

e avaliadas pelo sistema. As declarações no MATLAB são freqüentemente da forma:

>> variavel = expressao

Ou simplesmente:

>> expressao

As expressões são compostas de operadores e outros caracteres especiais, de funçõese dos nomes das variáveis. As avaliações das expressões produzem matrizes, que sãoentão mostradas na tela e atribuídas às variáveis para uso futuro. Se o nome da variávele o sinal de igualdade “=” são omitidos, a variável com o nome ans, que representa apalavra “answer” (resposta), é automaticamente criada. Por exemplo, introduzindo aexpressão:

>> 1900/81ans=

23.4568

Se o último caractere da declaração é um ponto e vírgula, “;”, a impressão na telaé suprimida, mas a tarefa é realizada. Esse procedimento é usado em arquivos comextensão “.m” e em situações onde o resultado é uma matriz de grandes dimensões e háinteresse em apenas alguns dos seus elementos.

Se a expressão é tão grande que não cabe em apenas uma linha, pode-se continuara expressão na próxima linha usando um espaço em branco e três pontos, “...”, ao finaldas linhas incompletas. Por exemplo:

>> s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 ...- 1/8 + 1/9 - 1/10 + 1/11 - 1/12 + 1/13;

Calcula o resultado da série, atribuindo o somatório à variável s, mas não imprime oresultado na tela.

As variáveis e funções podem ser formadas por um conjunto de letras, ou por umconjunto de letras e números, onde somente os primeiros 19 caracteres do conjunto sãoidentificados. O MATLAB faz distinção entre letras maiúsculas e minúsculas,

16

Page 17: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

assim a e A não são as mesmas variáveis, exceto para os argumentos do comandohelp . Todas as funções devem ser escritas em letras minúsculas: inv(A) calcula ainversa de A, mas INV(A) é uma função indefinida.

2.4 Informações sobre a Área de TrabalhoOs exemplos de declarações mostrados nos itens acima criaram variáveis que são

armazenadas na Área de Trabalho do MATLAB. Executando:

>> who

Obtém-se uma lista das variáveis armazenadas na Área de Trabalho:

Your variables are:A B ans r s x

que mostra as seis variáveis geradas nos exemplos, incluindo ans.Observe que o comando who está em letras minúsculas. Todo comando no MATLAB

deve ser inserido dessa forma.Uma informação mais detalhada que indica a dimensão de cada uma das variáveis

correntes é obtida com whos, que para o exemplo produz:

>> whosName Size Bytes Class

A 4x3 96 double arrayB 3x3 72 double arrayans 3x3 72 double arrayr 1x3 24 double arrays 1x1 8 double arrayx 1x3 24 double array

Grand total is 37 elements using 296 bytes

Cada elemento de uma matriz real requer 8 bytes de memória, assim a matriz A dedimensão 4x3 faz uso de 96 bytes e todas as variáveis utilizadas um total de 296 bytes.

2.5 Números e Expressões AritméticasA notação decimal convencional, com ponto decimal opcional e o sinal negativo, é

usada para números. A potência de dez pode ser incluída como um sufixo. A seguir são

17

Page 18: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

mostrados alguns exemplos de números aceitos:

3 -99 0.000019.637458638 1.602E-20 6.06375e23

As expressões podem ser construídas através dos operadores aritméticos usuais e dasregras de precedência:

1 ∧ Potenciação2 / Divisão à direita2 \ Divisão à esquerda3 * Multiplicação4 + Adição4 - Subtração

Deve-se notar que existem dois símbolos para divisão: as expressões 1/4 e 4\1 pos-suem o mesmo valor numérico, isto é, 0.25.

São usados parênteses na sua forma padrão para alterar a procedência usual dosoperadores aritméticos.

2.6 Números e Matrizes ComplexasOs Números Complexos são permitidos em todas as operações e funções no MAT-

LAB. Os números complexos são introduzidos utilizando as funções especiais i ou j quecorrespondem à parte imaginária de um número complexo. Por exemplo:

>> z= 3 + 4*i

ou

>> z= 3 + 4*j

Sabendo que um número complexo é constituído por uma parte real Re e por umaparte imaginária Im, tal que:

z = Re + Im*i

ele pode ser expresso na forma:

18

Page 19: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

>> z= r*exp(i*theta)

em que:

>> r = abs(z)>> theta = angle(z)*180/pi

As seguintes declarações mostram dois caminhos convenientes para se introduzir ma-trizes complexas no MATLAB:

>> A= [1 2; 3 4]+i*[5 6;7 8]

ou

>> A= [1+5*i 2+6*i; 3+7*i 4+8*i]

Ambas produzem o mesmo resultado.Se quisermos determinar a parte real da matriz A usamos a função real(A), já a parte

imaginária pode ser visualizada com a função imag(A) como pode ser visualizado abaixo:

>> real(A)ans =

1 23 4

>> imag(A)ans =

5 67 8

2.7 Formatação de SaídaO formato numérico exibido na tela pode ser modificado utilizando o comando for-

mat, que afeta somente o modo como as matrizes são mostradas, e não como elas sãocalculadas ou guardadas (o MATLAB efetua todas as operações em dupla precisão).

Se todos os elementos da matriz são inteiros exatos, a matriz é mostrada num for-mato sem qualquer ponto decimal. Por exemplo:

19

Page 20: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

>> x = [-1 0 1]x =

-1 0 1

Se pelo menos um dos elementos da matriz não é inteiro exato, existem várias pos-sibilidades de formatar a saída. O formato padrão, chamado de formato short, mostraaproximadamente 5 dígitos significativos ou usam notação científica. Para modificar oformato da saída, devemos inserir o comando format. A tabela abaixo mostra os princi-pais formatos:

short 5 dígitos significativosshort e 5 dígitos significativos em notação científicalong 15 dígitos significativoslong e 15 dígitos significativos em notação científicahex em sistema hexadecimalrat em formato de número racionalbank duas casas após a vírgula+ Mostra o sinal do número sem o seu valor,

a parte imaginária do número é ignorada

Com o formato short e long, se o maior elemento da matriz é superior a 1000 ouinferior a 0.001, é aplicado um fator de escala comum para que a matriz completa sejamostrada. Por exemplo:

>> X = 1e20*xX =

1.0e+020 *1.3333 0 0.0000

Com o comando format + os símbolos “+”, “-”, e “espaço em branco” são mostra-dos, respectivamente para representar elementos positivos, elementos negativos e zeros.

2.8 Utilização do comando helpO MATLAB possui um comando de ajuda: help , que fornece informações sobre a

maior parte dos tópicos:

>> help

Para obter informações sobre um tópico específico, referir help tópico. Por exemplo,

20

Page 21: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

>> help plot

fornece uma lista de todos os comandos relacionados com gráficos bidimensionais.A mesma sintaxe é usada para obter informações sobre um comando específico.

Temos como usar, além da linha de comando, o botão F1, que chama o MATLABhelp, que se localiza nos tópicos de ajuda

2.9 Utilização do comando lookforEmbora o comando help forneça permita-lhe conseguir uma ajuda, ele pode não

ser a maneira mais conveniente, a menos que você saiba o tópico exato sobre o qualnecessita de informações.

Para isso, o comando lookfor fornece ajuda fazendo uma busca em toda primeiralinha dos tópicos de ajuda e retornando aqueles que contém as palavras-chave que vocêespecificou. O mais importante é que a palavra-chave não precisa ser um comando MAT-LAB. Por exemplo, faz-se uma busca por funções relacionadas à palavra-chave "fourier":

FFT Discrete Fourier transform.FFT2 Two-dimensional discrete Fourier Transform.FFTN N-dimensional discrete Fourier Transform.IFFT Inverse discrete Fourier transform.IFFT2 Two-dimensional inverse discrete Fourier transform.IFFTN N-dimensional inverse discrete Fourier transform.lookfor laplaceDFTMTX Discrete Fourier transform matrix.SPECGRAM Spectrogram using a Short-Time Fourier Transform (STFT).TDAFDFT Transform-domain adaptive filter using discrete Fouriertransform.FFT Quantized Fast Fourier Transform.FREQS Laplace-transform (s-domain) frequency response.

2.10 FunçõesAs potencialidades do MATLAB residem no seu extenso conjunto de funções. O

MATLAB possui um grande número de funções intrínsecas que não podem ser alteradaspelo utilizador. Outras funções estão disponíveis numa biblioteca externa distribuídacom o programa original (MATLAB TOOLBOX), que são na realidade arquivos com aextensão “.m” criados a partir das funções intrínsecas. As categorias gerais de funçõesmatemáticas disponíveis no MATLAB incluem:

- Matemática elementar;- Funções especiais;

21

Page 22: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

- Matrizes elementares;- Matrizes especiais;- Decomposição e fatoração de matrizes;- Análise de dados;- Polinômios;- Solução de equações diferenciais;- Equações não-lineares e otimização;- Integração numérica;- Processamento de sinais;- Entre outras

As seções subseqüentes mostram mais detalhadamente as diferentes categorias defunções. Qualquer informação adicional sobre os conteúdos das diversas categoriaspoderá ser encontrado no arquivo de ajuda de cada função obtido digitando o comandohelp na janela de comando.

22

Page 23: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

3Manipulação de Matrizes e Vetores

3.1 Operações com MatrizesO MATLAB possui dois tipos diferentes de operações aritméticas. As operações arit-

méticas matriciais são definidas pelas regras da Álgebra Linear. As operações aritméticascom arrays (conjuntos) são efetuadas elemento por elemento. O caractere de ponto dec-imal “.” distingue as operações matriciais das operações com arrays. No entanto, comoas operações matriciais e com arrays são iguais para a soma e para a subtração, o parde caracteres “.+” e “.-” não é usado para estas.

As operações com matrizes no MATLAB são as seguintes:- Transposição;- Adição;- Subtração;- Multiplicação;- Divisão à direita;- Divisão à esquerda;- Potenciação.

A seguir cada uma destas operações é apresentada com maior detalhe.

3.1.1 TransposiçãoO caractere apóstrofo ( ’ ) indica a transposta de uma matriz, por exemplo:

>> B = A’ % A variável B recebe a matriz transposta de A

Se Z for uma matriz complexa, Z’ será a matriz conjugada complexa transposta.

>>Z = [1 2; 3 4] + [5 6; 7 8]*iZ =

1.0000+ 5.0000i 2.0000+ 6.0000i3.0000+ 7.0000i 4.0000+ 8.0000i

>>Z1 = Z’Z1 =

1.0000- 5.0000i 3.0000- 7.0000i2.0000- 6.0000i 4.0000- 8.0000i

Para obter simplesmente a transposta de Z deve-se usar Z.’, como mostra o exemplo:

23

Page 24: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

>>Z2 = Z.’Z2 =

1.0000+ 5.0000i 3.0000+ 7.0000i2.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.0000i3.0000 - 7.0000i 4.0000 - 8.0000i

3.1.2 Adição e SubtraçãoA adição e a subtração de matrizes são indicadas, respectivamente, por “+” e “-”.

As operações são definidas somente se as matrizes possuírem as mesmas dimensões.A adição e a subtração também são definidas se um dos operadores for um escalar,

ou seja, uma matriz 1x1. Neste caso, o escalar é adicionado ou subtraído de todos oselementos do outro operador. Por exemplo:

>> y = [1 2; 3 8] - 1y =

0 12 7

3.1.3 MultiplicaçãoA multiplicação de matrizes é indicada por “*”. A multiplicação x*y é definida

somente se a segunda dimensão de x for igual à primeira dimensão de y.Naturalmente, um escalar pode multiplicar ou ser multiplicado por qualquer matriz.

Por exemplo:

>> x=[-1; 0; 2];>> pi*x

ans=-3.141606.2832

24

Page 25: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Se os tamanhos das matrizes forem incompatíveis para a operação matricial, serágerada uma mensagem de erro, com exceção do caso de operações entre escalares ematrizes (para adição, subtração, divisão e multiplicação).

3.1.4 DivisãoA divisão de matrizes requer especial atenção, pois existem dois símbolos para divisão

de matrizes no MATLAB “\” e “/”". Se A for uma matriz inversível quadrada e b for umvetor coluna (ou linha) compatível, então A\b e b/A corresponderão respectivamente àmultiplicação à esquerda e à direita da matriz b pela inversa da matriz A, ou inv(A)*be b*inv(A), mas o resultado é obtido diretamente:

X = A\b é a solução de A*X = bX = b/A é a solução de X*A = b

Deve-se ter o cuidado de observar as dimensões das matrizes que estão envolvidasna operação, o número de colunas de A deve ser igual ao número de linhas de b emA\b, já em b/A o número de linhas de A deve ser igual ao número de colunas de b emA\b. A divisão à direita é definida em termos da divisão à esquerda por:

b/A = (A’\b)

3.1.5 PotenciaçãoA expressão A∧p eleva A à p-ésima potência e é definida se A é matriz quadrada

e p um escalar. Se p é um inteiro maior do que um, a potenciação é calculada comomúltiplas multiplicações.

Se A é uma matriz e a é um escalar, a∧A calcula o escalar elevado à matriz Afazendo uso dos autovalores e autovetores.

NOTA: X∧A, sendo X e A matrizes, apresenta erro.

3.2 Operações Elemento a Elemento (Conjuntos)O termo operações com conjuntos é utilizado quando as operações aritméticas são

realizadas entre os elementos que ocupam as mesmas posições em cada matriz (elementopor elemento). As operações com conjuntos são efetuadas como as operações usuais,utilizando-se os mesmos caracteres (“ * ”, “ / ”, “ \ ”, “ ∧ ” e “ ’ ”) precedidos por umponto “ . ” (“ .* ”, “ . /”, “ .\ ”, “ .∧ ” e “ .’ ”).

3.2.1 Adição e SubtraçãoPara a adição e a subtração, as operações com conjuntos e as operações com matrizes

são iguais. Deste modo os caracteres “+” e “-” são empregados do mesmo modo econsiderando as mesmas restrições de utilização.

25

Page 26: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

3.2.2 Multiplicação e DivisãoA multiplicação de conjuntos é indicada por “.*”. Se A e B são matrizes com as

mesmas dimensões, então A.*B indica um conjunto cujos elementos são simplesmenteo produto dos elementos individuais de A e B. As expressões A./B e A.\B formam umconjunto cujos elementos são simplesmente os quocientes dos elementos individuais deA e B. Assim:

>> a=[1 2 3];>> b=[2 4 6];>> x=a./b >> x=b./a

x = x =0.5000 0.5000 0.5000 2 2 2

3.2.3 PotenciaçãoA potenciação de conjuntos é indicada por “ .∧”. A seguir são mostrados alguns

exemplos utilizando os vetores x e y. A expressão:A potenciação pode usar um escalar:

>> x=[1 2 3];>> a=x.^3

a =1 8 27

Ou a base pode ser um escalar:

>> 2.^xans =

2 4 8

3.3 Matrizes ElementaresAlém das já descritas, o MATLAB dispõe de diversas funções que permitem a rápida

elaboração de matrizes padrão, dentre elas:

3.3.1 Geração de VetoresO caractere dois pontos, “:”, permite a geração de vetores no MATLAB. A declaração:

26

Page 27: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

>> x = 1 : 5

Gera um vetor linha contendo os números de 1 a 5 com incremento unitário. Pro-duzindo:

x =1 2 3 4 5

Outros incrementos, diferentes da unidade podem ser utilizados, como seja o casodo seguinte exemplo que impõe um incremento de pi/4.

>> y = 0 : pi/4 : piy =0 0.7854 1.5708 2.3562 3.1416

Também são possíveis incrementos decrescentes (negativos).Pode-se, também, gerar vetores linearmente espaçados fazendo uso da função linspace.

Por exemplo,

>> k = linspace (0, 1, 6)k =0 0.2000 0.4000 0.6000 0.8000 1.0000

Cria um vetor linearmente espaçado de 0 a 1, contendo 6 elementos.Ao pretender-se um espaçamento logarítmico desde o valor inicial 10x1 até ao valor

final 10x2 do vetor composto por k elementos, a função a utilizar será:

>> logspace (x1 , x2 , k)

A exceção para essa função é quando x2 = π. Caso isso ocorra, os k pontos estarãoespaçados desde 10x1 até π.

3.3.2 Matriz IdentidadeDe modo a construir uma matriz identidade (quadrada ou com dimensão n x m, a

função a utilizar é dada por):

27

Page 28: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

>> eye(m,n)

3.3.3 Matriz Composta por Elementos UnitáriosNo caso de ser necessário a obtenção de uma matriz composta apenas por elementos

unitários, temos que:

>> ones(m,n)

3.3.4 Matriz NulaPara efetuar qualquer tipo de manipulação matricial, poderá ser útil a construção de

uma matriz composta por elementos nulos:

>> zeros(n,m)

3.3.5 Matriz AleatóriaA elaboração de testes a qualquer programa desenvolvido no MATLAB, ou para

utilização de um outro qualquer modo, poderá fazer uso de matrizes compostas pornúmeros aleatórios uniformemente distribuídos no intervalo entre 0 e 1. A função querealiza esta operação é:

>> rand(m,n)

onde m representa o número de linhas e n o número de colunas da matriz desejada.No caso de se pretender uma distribuição normal dos números aleatórios, com média

zero, variância um e desvio padrão um, a função a ser utilizada será:

>> randn(m,n)

Cabe salientar que em uma distribuição normal, 68% dos valores estão compreendidosentre – 1 e 1.

O comando magic(n) cria uma matriz quadrada integral de dimensões n x n (linhase colunas têm a mesma soma).

28

Page 29: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

>>x=magic(4)

3.4 Elementos de MatrizesUm elemento individual da matriz pode ser indicado incluindo os seus subscritos en-

tre parênteses. Por exemplo, dada a matriz A:

A =1 2 34 5 67 8 9

A declaração:

>> A(3,3) = A(1,3) + A(3,1)A =

1 2 34 5 67 8 10

Um subscrito pode ser um vetor. Se X e V são vetores, então X(V) é:

[X(V(1)), X(V(2)), .... X(V(n))].

Para as matrizes, os subscritos vetores permitem o acesso às submatrizes contínuase descontínuas. Por exemplo, suponha que A é uma matriz 10x10.

29

Page 30: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

A =1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 4041 42 43 44 45 46 47 48 49 5051 52 53 54 55 56 57 58 59 6061 62 63 64 65 66 67 68 69 7071 72 73 74 75 76 77 78 79 8081 82 83 84 85 86 87 88 89 9091 92 93 94 95 96 97 98 99 100

>> A(1:5,7:10)ans =

7 8 9 1017 18 19 2027 28 29 3037 38 39 4047 48 49 50

É uma submatriz 5x4 que consiste nas primeiras cinco linhas e nas últimas quatrocolunas.

Utilizando os dois pontos no lugar de um subscrito denota-se todos elementos dalinha ou coluna. Por exemplo,

>> A(1:2:5,:)ans =

1 2 3 4 5 6 7 8 9 1021 22 23 24 25 26 27 28 29 3041 42 43 44 45 46 47 48 49 50

É uma submatriz 3x10 que consiste da primeira, terceira e quinta linhas e todascolunas da matriz A.

3.5 Manipulação de MatrizesDo mesmo modo, estão implementadas no código diversas funções que permitem a

manipulação e construção de matrizes genéricas.

3.5.1 Matriz Diagonal ou Diagonal de uma MatrizSe x for um vetor, diag(x) será a matriz diagonal com x na diagonal;

30

Page 31: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

>> x=[1 2 3 1 -1 4];>> diag(x)ans =

1 0 0 0 0 00 2 0 0 0 00 0 3 0 0 00 0 0 1 0 00 0 0 0 -1 00 0 0 0 0 4

Se A for uma matriz quadrada, então diag(A) será um vetor cujos componentes sãoos elementos da diagonal de A.

>> A=[3 11 5; 4 1 -3; 6 2 1]A =

3 11 54 2 -36 2 1

>> diag(A)ans =

321

3.5.2 Matrizes TriangularesO código possui duas funções que permitem a extração das matrizes riangular supe-

rior e triangular inferior de uma matriz quadrada. São elas, espectivamente:

triu(A);tril(A);

3.5.3 Redimensionamento de MatrizesDada a matriz A composta por m linhas e n colunas A(m,n), esta poderá ser red-

imensionada, através do comando reshape (A,n,m), desde que o produto de mxn semantenha constante.

31

Page 32: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

>>A(m,n)>> B = reshape(A,n,m)>> A=[1 2 3; 4 5 6]

A =1 2 34 5 6

>> B=reshape(A,3,2)B =

1 54 32 6

3.5.4 Rotação dos Elementos da MatrizOs elementos da matriz A poderão ser rodados 90o no sentido anti-horário (ou ro-

dados k*90o) através do uso da função:

>>rot90(A,k)A =1 2 34 5 6

>> rot90(A,1)ans =

3 62 51 4

32

Page 33: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

4Funções

4.1 Funções EscalaresAlgumas funções no MATLAB operam essencialmente sobre escalares, mas operam

sobre cada elemento se aplicadas a uma matriz. As funções escalares mais comuns são:

exp Exponencial;ebs Valor absoluto;log Logaritmo natural;log10 Logaritmo base 10;sqrt Raiz quadrada;sin Seno;asin Arco seno;cos Coseno;acos Arco Coseno;tan Tangente;atan Arco Tangente;round Arredondamento ao inteiro mais próximo;floor Arredondamento ao inteiro mais próximo na direção de menos infinito;ceil Arredondamento ao inteiro mais próximo na direção de mais infinito;rem Resto da divisão;sign 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

4.2 Funções VetoriaisOpera com elementos de colunas desejadas, caso seja desejado operar com linhas ao

invés de colunas deve-se transpor a matriz e então operá-la com a sua coluna que antesera sua linha. Abaixo estão alguns exemplos de funções:

max Valor máximo dos elementos de cada coluna;sum Soma dos elementos de cada coluna;median Valor mediano dos elementos de cada coluna;any Devolve 1 se qualquer elemento da coluna for diferente de 0;min Valor mínimo dos elementos de cada coluna;prod Produto dos elementos de cada coluna;all Devolve 1 se todos os elementos de cada coluna forem diferentes de 0;sort Organização dos elementos da coluna por ordem decrescente de valor;std Desvio padrão dos elementos de cada coluna.

33

Page 34: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

4.3 Funções MatriciaisUma boa aplicação do MATLAB é suas funções matriciais. Dentre as mais usadas

estão essas:

eig Valores próprios e vetores próprios;chol Fatorização de Choleskysvd Decomposição em fator singular;inv Inversa;lu Fatorização triangular LU;qr Fatorização ortogonal QR;hess Forma de Hessenberg;schur Decomposição de Schur;expm Matriz Exponencial;sqrtm Matriz de raiz quadrada;poly Polinômio característico;det Determinante;size Tamanho;norm Norma 1, Norma 2, Norma F, Norma Infinita;cond Número de condição na norma 2;rank Número de linhas linearmente independentes.

Vamos dar um exemplo para ilustrar algumas funções:

» P=[1 0 0; 0 2 2; 2 3 1]P =

1 0 00 2 22 3 1

» inv(P)ans =

1.0000 0 0-1.0000 -0.2500 0.50001.0000 0.7500 -0.5000

» poly(P)ans =

1 -4 -1 4» size(P)

ans =3 3

» det(P)ans =

-4

34

Page 35: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

5Polinômios

Embora o MATLAB não permita trabalhar diretamente com polinômios, dispõe deum conjunto de funções dedicadas à sua manipulação.

Os polinômios são representados no MATLAB por vetores linhas que contêm oscoeficientes das sucessivas potências do polinômio ordenados por ordem significativa de-crescente. Vamos ilustrar com um exemplo:

» 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 polinômio qualquer p sendo (p = s3−6s2−72s−27)a seguir calculamos suas raízes através do comando roots e na seqüência pegamos osresultados das raízes e aplicamos a função poly chegando novamente no polinômio inicialp.

É válido relembrar de uma importante observação caso o nosso polinômio inicialtivesse um coeficiente diferente de 1 para o maior grau (s3) quando aplicássemos afunção poly sobre as raízes o novo polinômio seria com coeficiente 1 para o maior grau,o que não mudaria nada pois é uma equação em que um lado tem um polinômio p e deoutro zero, logo podemos multiplicar ambos os lados por qualquer variável.

x2 + 2x+ 4 = 0

ax2 + 2ax+ 4a = 0

ax2 + 2ax+ 4a = 0

Além das duas operações já citadas há ainda as básicas, soma, subtração, multipli-cação e divisão. Soma e subtração faz-se normalmente sem maiores problemas, paramultiplicação usa-se conv e para a divisão deconv.

35

Page 36: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Exemplo:

» p=[3 2 1] %definindo um primeiro polinômiop =

3 2 1» q=[4 3 1] %definindo um segundo polinômio

q =4 3 1

» M=conv(p,q) %efetuando a multiplicação entre%os dois polinômios

M =12 17 13 5 1

» [d,r]=deconv(M,q) %vamos dividir a multiplicação feita%anteriormente, por o polinômio q e isto%deverá resultar no polinômio p, a variável%r corresponde ao resto que nesse caso, será 0

d =3 2 1

r =0 0 0 0 0

36

Page 37: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

6Análise Polinomial

Este capítulo traz uma série de comandos no MATLAB para a análise polinomial.Primeiro vamos discutir meios de avaliar os polinômios e como trabalhar o seu compor-tamento. Uma aplicação deste conceito está na modelagem da altitude e velocidadede um balão. A seguir definiremos as raízes dos polinômios. Polinômios normalmenteaparecem em aplicações da Engenharia e na Ciência em geral porque eles constituemainda bons modelos para representar sistemas físicos.

6.1 Avaliação do polinômioComo exemplo vamos tomar o seguinte polinômio:

f(x) = 3x4 − 0.5x3 + x− 5.2

Se x assumir valores escalares, podemos escrever:

fx = 3*x ^4 - 0.5*x ^3 + x - 5.2;

Se x for um vetor ou uma matriz devemos escrever:

fx = 3* x .^4 - 0.5* x .^3 + x - 5.2;

onde o tamanho da matriz f será o mesmo da matriz x.

6.2 Comando polyvalEste comando possui dois argumentos. O primeiro argumento contém os coeficientes

do polinômio em questão e o segundo argumento contém a matriz para a qual desejamosavaliar o polinômio.

Exemplo 1

a = [3,-0.5,0,1,-5.2];f = polyval(a,x);

37

Page 38: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Esses comandos também podem ser combinados em um só:

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 oumatriz.

Supondo que queiramos o valor da função g(x) = −x5 + 3x3 − 2.5x2 − 2.5 para xno intervalo de [0,5]:

x:0:0.025:5;a = [-1,0,3,-2,5,0,-2.5];g = polyval(a,x)

Quando x for um escalar ou um vetor, polyval consegue calcular o valor da funçãooperando elemento por elemento. Mas quando x for uma matriz usa-se o comandopolyvalm:

fx = 3* x .^4 - 0.5* x .^3 + x - 5.2;

sendo a matriz x, uma matriz quadrada.

6.3 Operações AritméticasPodemos trabalhar com polinômios armazenando seus coeficientes em vetores, e

trabalhar apenas com estes vetores.

6.3.1 Soma e subtraçãoPara somar ou subtrair polinômios basta somar ou subtrair seus respectivos coefi-

cientes. O MATLAB não apresenta um comando específico par somar polinômios. Asoma ou subtração padrão funciona se ambos os vetores polinomiais forem do mesmotamanho. Somemos os polinômios 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

Page 39: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

6.3.2 MultiplicaçãoA multiplicação polinomial é efetuada por meio do comando conv (que faz a con-

volução entre dois conjuntos). A multiplicação de mais de dois polinômios requer o usorepetido de conv.

m = conv(g,h)

6.3.3 DivisãoNo MATLAB a divisão de polinômios é feita através do comando deconv:

[q,r] = deconv(g,h)

Esse resultado nos diz que g dividido por h nos dá o polinômio de quociente q e restor.

6.4 Raízes de polinômiosAchar as raízes de um polinômio, isto é, os valores para os quais o polinômio é igual

a zero, é um problema comum em muitas áreas do conhecimento, como por exemplo,achar as raízes de equações que regem o desempenho de um sistema de controle de umbraço robótico, ou ainda equações que demonstram a arrancada ou freada brusca de umcarro, ou analisando a resposta de um motor, e analisando a estabilidade de um filtrodigital.

Se assumirmos que os coeficientes (a1, , ...) de um polinômio são valores reais,poderemos encontrar raízes complexas. Se um polinômio é fatorado em termos lineares,fica fácil de identificar suas raízes, igualando cada termo a zero.

Um exemplo consiste no polinômio:

f(x) = x2 + x− 6

que ao ser fatorado se torna:

f(x) = (x− 2)(x+ 3)

As raízes da equação são os valores de x para os quais a função f(x) é igual a zero,ou seja, x = 2 e x = -3.

No gráfico, as raízes são valores onde a função corta o eixo x. Um polinômio doterceiro grau tem exatamente três raízes que podem ser:

- três raízes reais;- três raízes iguais;

39

Page 40: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

- uma raiz real e duas raízes iguais;- uma raiz real e um par conjugado de raízes complexas.

Se a função f(x) for um polinômio de grau n, ela terá exatamente n raízes. Estas nraízes podem conter múltiplas raízes ou raízes complexas.

No MATLAB, um polinômio é representado por um vetor linha dos seus coeficientesem ordem decrescente. Observe que os termos com coeficiente zero têm de ser incluídos.Dada esta forma, as raízes do polinômio são encontradas usando-se o comando rootsdo MATLAB. Já que tanto um polinômio quanto suas raízes são vetores no MATLAB,o MATLAB adota a convenção de colocar os polinômios como vetores linha e as raízescomo vetores coluna. Para ilustrar este comando vamos determinar as raízes do seguintepolinômio:

f(x) = x3 − 2x2 − 3x+ 10

No MATLAB:

p = [1,-2,-3,10];r = roots(p)

Lembrando que estes comandos podem ser dados de um só vez:

r = roots([1,-2,-3,10]);

Os valores das raízes serão: 2 + i, 2 - i e -2.Agora, dadas as raízes de um polinômio, também é possível construir o polinômio

associado. No MATLAB, o comando poly é encarregado de executar essa tarefa.Onde o argumento do comando poly é o vetor contendo as raízes do polinômio que

desejamos determinar.Exemplo 2Sejam as raízes de um polinômio -1, 1 e 3. Determinar este polinômio.No MATLAB:

a = poly ([-1,1,3]’);

Exemplo 3Determine as raízes dos seguintes polinômios e plote seu gráfico, com seu eixo apro-

priado, com o objetivo de verificar se o polinômio atravessa o eixo x bem nos locais dasraízes.

a. f(x) = x3 − 5x2 + 2x+ 8

40

Page 41: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

b. g(x) = x2 + 4x+ 4c. h(x) = x5 + 3x4 − 11x3 + 27x2 + 10x− 24d. i(x) = x5 − 3x3 + 4x2 − 1

41

Page 42: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

7Gráficos

A construção de gráficos no MATLAB é mais uma das potencialidades do sistema.Através de comandos simples pode-se obter gráficos bidimensionais ou tridimensionaiscom qualquer tipo de escala e coordenada. No MATLAB existe uma vasta biblioteca decomandos gráficos.

7.1 Gráficos X-YComandos de geração de gráficos bidimensionais:

plot Gráfico linear.loglog Gráfico em escala logarítmica.

semilogx Gráfico em escala semi-logarítmica (eixo x).semilogy Gráfico em escala semi-logarítmica (eixo y).

fill Desenhar polígono 2D.polar Gráfico em coordenadas polar.bar Gráfico de barras.stem Gráfico de seqüência discreta.stairs Gráfico em degrau.

errorbar Gráfico do erro.hist Histograma.rose Histograma em ângulo.

compass Gráfico em forma de bússola.feather Gráfico em forma de pena.fplot Gráfico da função.comet Gráfico com trajetória de cometa.

Se Y é um vetor, plot(Y) produz um gráfico linear dos elementos de Y versus o índicedos elementos de Y. Por exemplo, para exibir os números [0.0, 0.48, 0.84, 1.0, 0.91, 0.6,0,14], basta introduzir o vetor e executar o comando plot:

>> Y = [0.0, 0.48, 0.84, 1.0, 0.91, 0.6, 0.14];>> plot(Y)

O MATLAB pode também exibir múltiplas linhas em apenas um gráfico. Exis-tem duas maneiras, a primeira resulta no uso de apenas dois argumentos, como emplot(X,Y), onde X e/ou Y são matrizes. Então:

• Se Y é uma matriz e X um vetor, plot(X,Y) exibe sucessivamente as linhas oucolunas de Y versus o vetor X.

42

Page 43: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

• Se X é uma matriz e Y é um vetor, plot(X,Y) exibe sucessivamente as linhas oucolunas de X versus o vetor Y.

• Se X e Y são matrizes com mesma dimensão, plot(X,Y) exibe sucessivamente ascolunas de X versus as colunas de Y.

• Se Y é uma matriz, plot(Y) exibe sucessivamente as colunas de Y versus o índicede cada elemento da linha de Y.

O segundo método (e mais fácil) de exibir gráficos com múltiplas linhas faz uso docomando plot com múltiplos argumentos. Vamos explorá-lo em um exemplo mais detal-hado. Primeiramente, preparemos os dados, escolhendo o domínio e as funções a seremmostradas:

>> 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);

Escolhamos uma janela para traçar o gráfico:

>> figure(1)

O comando figure abre uma janela gráfica intitulada “Figure No.1". Este comandoé opcional; se não for utilizado, o MATLAB abrirá uma janela gráfica padrão. Agorautilizaremos a função plot para plotar os três gráficos na mesma janela:

>> h = plot ( x , y1 , ’b+:’ , x , y2 , ’ro-’ , x , y3 , ’gx-.’ );

O terceiro, o sexto e o nono argumento representam a seqüência de propriedades:cor, ponto e traço. Em ’ro-.’ temos uma linha vermelha com cada ponto representadopor um círculo e o espaço entre ele preenchido por ponto-e-traço.

Observa-se que ’h’ é uma referência ao gráfico plotado (neste caso, ’h’ é um vetor dereferências). Através do comando set, após os gráficos terem sido desenhados, é possívelalterar os tipos de linhas, marcadores e cores para as curvas. Por exemplo, poderíamosfazer:

>> set(h,’LineWidth’,2,’LineStyle’,’--’)>> set(h,’Color’,’r’)

Se desejássemos alterar apenas uma das curvas, passaríamos para o comando ’set’um elemento do vetor (h(2), por exemplo).

43

Page 44: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Vejamos resumidamente os principais tipos de linhas e cores:

7.1.1 Acessórios para os GráficosDefinamos agora os limites dos eixos, pelo comando axis. Linhas em grade podem

ser ativadas pela propriedade grid:

>> axis([0 20 -1 1]);>> grid on

Para adicionarmos anotações no gráfico, como identificação dos eixos, título e leg-enda, usamos os seguintes comandos:

Eixos:

>> xlabel(’Tempo’); ylabel(’Amplitude’);

Legenda e título:

>> legend(h,’Primeiro’,’Segundo’,’Terceiro’); title(’Resposta noTempo’);

Obs.: Se dois gráficos tiverem sido adicionados separadamente em uma janela gráfica,o argumento de referência não é utilizado no comando ’legend’.

E eis o gráfico resultante:Para plotar mais de um gráfico na mesma janela, têm-se três opções. A primeira foi

utilizada no exemplo anterior, que seria usar um único comando com vários argumentos.A segunda é ativar a propriedade hold, que permite a inserção de dois ou mais gráficos,

44

Page 45: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Figura 3: Resultante

inserindo os comando separadamente.

>> hold on

Dessa forma, os gráficos serão sobrepostos em uma mesma janela gráfica. No en-tanto, se não desejarmos mais essa função ativa, basta digitar:

>> hold off

E por última opção temos o comando subplot, que divide uma janela gráfica emvárias janelas no seu interior.

>>subplot(2,2,3)

Este comando divide a janela gráfica em uma matriz 2x2 (4 elementos portanto) eprepara o terceiro elemento (linha 2, coluna 1) para receber futuros gráficos.

45

Page 46: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

7.1.2 Números ComplexosQuando os argumentos a exibir são complexos, a parte imaginária é ignorada, exceto

quando é dado simplesmente um argumento complexo. Para este caso especial é exibidaa parte real versus a parte imaginária. Então, plot(Z), quando Z é um vetor complexo,é equivalente a plot(real(Z),imag(Z)).

>> Z=[1+i*1;3+i*3;5+i*5;7+i*10;9+i*15];>> plot(real(Z),imag(Z))

7.2 Gráficos PolaresGráficos polares são úteis quando valores são representados por ângulo e grandeza

(magnitude). Por exemplo, se medirmos a intensidade luminosa ao redor de uma fontede luz, podemos representar a informação com um ângulo fixando eixos e magnituderepresentando intensidade.

Coordenadas Polares: Um ponto é representado em coordenadas polares por umangulo θ e uma magnitude r. O valor de θ varia geralmente entre 0 e 2θ. A magnitudeé um valor positivo que representa a distância do eixo que fornece o angulo até o ponto.

polar(theta,r): Este comando generaliza gráficos polares com ângulo θ (em radiano)e magnitude r correspondente.

Exemplo: Os comando para a construção do gráfico da figura abaixo:

>> theta = 0:2*pi / 100 : 2*pi;>> r = theta / (2*pi);>> polar(theta,r);

Transformação retangular / polar ; polar / retangular: As vezes, devido a praticidadeé interessante transformarmos coordenadas de um sistema para outro.

As equações abaixo relacionam os sistemas polar e retangular:polar / retangular =⇒ x = r cos q ; y = r sin q ;retangular / polar =⇒ r =

√x2 + y2 ; q = atan (y/x);

7.3 Gráficos 3DA rede de superfície pode ser gerada por um conjunto de valores em uma matriz.

Cada ponta na matriz representa o valor da superfície que corresponde ao ponto na tela.Para gerar um arquivo que representa uma superfície 3D, primeiramente calculamoso conjunto dos valores de x e y que representam as variáveis independentes e depoiscalculamos os valores de z que representam os valores da superfície. O comando noMATLAB para plotar gráficos 3D é mesh(z).

O comando meshgrid tem os argumentos do vetor x e y, ou seja transforma o domínioespecificado pelos vetores x e y em vetores que podem ser usados em cálculos de funções

46

Page 47: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Figura 4: Gráfico em coordenadas polares

de 2 variáveis e construção de gráfico 3D.

Exemplo: Gerar o gráfico 3D da função -0.5 < x < 0.5 ; -0.5 < y < 0.5 ;f(x, y) = z = 1− x2 − y2

1 = |x2 + y2 + z2|

Solução:

[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

Page 48: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Figura 5: Gráfico em 3D

Estes são alguns dos comandos de exibição de gráficos tridimensionais e de contornos:

plot3 Exibição do gráfico em espaço 3D.fill3 Desenhar polígono 3D.comet3 Exibir em 3D com trajetória de cometa.contour Exibir contorno 2D.contour3 Exibir contorno 3D.clabel Exibir contorno com valores.quiver Exibir gradiente.mesh Exibir malha 3D.meshc Combinação mesh/contour.surf Exibir superfície 3D.surfc Combinação surf/contour.surfil Exibir superfície 3D com iluminação.slice Plot visualização volumétrica.cylinder Gerar cilindro.sphere Gerar esfera.

Quando geramos redes de superfície 3D podemos querer escolher a posição de visãoque será definida com os termos azimuth ( rotação horizontal) e vertical elevation queespecifica os graus (rotação vertical ).

48

Page 49: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Exemplo: Rotação horizontal:f(x, y) = z = 1− x2 − y2

1 = |x2 + y2 + z2|

Solução:

>> [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,0]);

Figura 6: Gráfico em 3D, Rotação horizontal

49

Page 50: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Exemplo: Rotação vertical:f(x, y) = z = 1− x2 − y2

1 = |x2 + y2 + z2|

Solução:

>> [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]);

Figura 7: Gráfico em 3D, Rotação vertical

50

Page 51: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

8Programação

8.1 Arquivo.mOs comandos do MATLAB são normalmente introduzidos através da janela de co-

mando, onde uma única linha de comando é introduzida e processada imediatamente.O MATLAB é, no entanto, capaz também de executar seqüências de comandos ar-mazenadas em arquivos.

Os arquivos que contêm as declarações do MATLAB são chamados arquivos ”.m“,e consistem em seqüências de comandos normais do MATLAB, possibilitando incluiroutros arquivos ”.m“ escritos no formato texto (ASCII).

Para editar um arquivo texto na janela de comando do MATLAB selecione New M-File para criar um novo arquivo ou Open M-File para editar um arquivo .m já existente,a partir do menu File.

Os arquivos podem, também, ser editados fora do MATLAB utilizando qualquereditor de texto. Para isso, basta salvar os arquivos com a extensão ”.m“.

Para executar um programa do tipo M-File, deve-se selecionar Run Script, tambéma partir do menu File.

Existem alguns comandos e declarações especiais para serem usadas nos arquivos.Alguns comandos importantes para se trabalhar com arquivos.m são:

% Usado para inserir comentários no texto;clear Apaga todo os dados da memória;input Usado quando se deseja adicionar um dado

ao problema pela janela de comando;pause Causa uma pausa na execução do programa

até que uma tecla seja digitada;clc Limpa a janela de comando

figure(n) Mostra a janela gráfica de número n;close all Fecha todas as janelas gráficas.

8.2 Operadores Lógicos e RelacionaisOs operadores usados para a comparação de duas matrizes com as mesmas dimensões

são expressos por:

51

Page 52: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

8.2.1 Operadores RelacionaisSímbolo Descrição< Menor<= Menor ou igual> Maior>= Maior ou igual== Igual∼= Diferente

A comparação é feita entre os pares de elementos correspondentes e o resultadoé uma matriz composta de números um(1) e zero(0), representando respectivamenteverdadeiro e falso.

Por exemplo:

» 2+2 ~ = 4ans =

0

Observação: Apenas os operadores ”==“ e ”∼=“ testam tanto a parte real como aimaginária, os demais, apenas a parte real.

» x=5; y=3*(x= =3)y =

0» x=5; y=3*(x= =5)

y =3

» x=5; y=3*(x~ =5)y =

0» x=5; y=3*(x~ =3)

y =3

8.2.2 Operadores LógicosSímbolo Descrição& AND| OR∼ NOTxor XOR

Esses operadores operam da mesma forma que os operadores relacionais, dando como

52

Page 53: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

resposta verdadeiro ou falso. Exemplo:

INPUTS AND OR XORA B & | xor0 0 0 0 00 1 0 1 11 0 0 1 11 1 1 1 0

» A = [ 1 0 10 0 01 1 1]

A =1 0 10 0 01 1 1

» B= [ 0 1 00 0 1-1 10 0]

B =0 1 00 0 11 1 0

» A&Bans =

0 0 00 0 01 1 0

Note que foi aplicado o operador lógico AND e esse comparou cada elemento damatriz A com cada elemento da matriz B, sendo que sua resposta pode ser apenas 0 ou1. Sendo que qualquer número diferente de 0, inclusive os negativos, é considerado 1pois o MATLAB trabalha na linguagem binária.

Os operadores lógicos possuem a precedência mais baixa relativamente aos oper-adores aritméticos e relacionais.

A precedência entre os operadores lógicos se dá da seguinte maneira:

NOT Maior precedênciaAND e OR Têm igual precedência após NOT

8.3 Comandos For, While e IfOs comandos FOR, WHILE e IF controlam o fluxo e especificam a ordem e a estrutura

de cálculo do programa. No MATLAB estes comandos são semelhantes aos usados na

53

Page 54: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

linguagem de programação C, mas com uma estrutura diferente. Nas próximas seçõesdeste capítulo apresentaremos a estrutura de tomada de decisões IF e os dois comandospara gerar loops no MATLAB: o comando FOR e o comando WHILE.

8.3.1 Ciclo ForO ciclo for é controlador de fluxo mais simples usado na programação MATLAB.

Analisando a expressão:

for i=1:5,x(i)=i^2;end

Pode-se notar que o ciclo for é dividido em três partes:

• i =1 é realizado antes do ciclo começar.

• Testando a condição 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:8for j = 1:8,A(i,j) = i + j;B(i,j) = i - j;endendC= A + BC =2 2 2 2 2 2 2 24 4 4 4 4 4 4 46 6 6 6 6 6 6 68 8 8 8 8 8 8 810 10 10 10 10 10 10 1012 12 12 12 12 12 12 1214 14 14 14 14 14 14 1416 16 16 16 16 16 16 16

Neste exemplo fizemos duas matrizes através de dois ciclos variando de 1 a 8 e aofim disso fizemos a operação da soma dessas duas matrizes gerando uma matriz C queé dada por:

C = A + B −→ C = ( i + j ) + ( i - j ) −→ C = 2i

54

Page 55: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

8.3.2 Comando IfEsta instrução permite que executemos um comando se a expressão lógica é ver-

dadeira e um diferente comando se a expressão é falsa. A forma geral do comando ifcombinada à instrução else é mostrada a seguir:

if expressãogrupo de comandos Aelsegrupo de comandos Bend

A seguir é apresentado um exemplo do uso da declaração if no MATLAB. Você podefazê-lo na janela de comando ou ainda através do método .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

endendendAA =2 -1 0 0 0-1 2 -1 0 00 -1 2 -1 00 0 -1 2 -10 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 umaseqüência que executa caso a condição seja verdadeira e outra que não é requerida, maspode-se ter também, que execute um outro processo caso a condição seja falsa (else).Após o ciclo, pediu-se o valor da variável A para sabermos se realmente o comandofuncionou.

8.3.3 Ciclo WhileNo ciclo while apenas a condição é testada. Vamos fazer um exemplo agora utilizando

o arquivo.m:

55

Page 56: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Primeiro abra o menu File vá em New e em seguida seleciona M-fileAgora na janela correspondente ao M-File escreva o seguinte comando:

a=1;b=15;while a<b,clcdisp(’loop em curso’)a=a+1b=b-1pause(2)endclcdisp(’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 comparação de dados entre as variáveis a e b começandocom a valendo 1 e b valendo 15 e enquanto a for menor que b o ciclo segue e a cadaciclo a variável a é incrementada em 1 e a b perde uma unidade, isso ocorrerá até quea fique maior que b. Também é importante salientar o comando pause que é o tempoque o ciclo irá levar a mais que o normal, pois como sabemos o processamento se dariaem frações de segundos e consequentemente não poderíamos observar o comando, porisso o pause de 2 segundos.

Agora volte a janela de comando e digite loop que a instrução toda será processada.

8.4 Declarando FunçõesPara criarmos funções necessitamos trabalhar na janela de M-Files, para tanto, como

você já sabe, vá em File −→ New −→ M −→ File. Antes de apresentarmos vamos daras 3 regras principais para a criação de funções no MATLAB:

• Deve-se ter ao menos o nome da função, a variável de entrada e a função f.

• O arquivo .m deve ser salvo com o mesmo nome da função.

• A função f deve ser igualada a função operacional.

Vamos tornar mais claro esses pontos com um exemplo:

function f = hema(x)f = x/24/30/12

Abrimos o M-File e digitamos function f e após isso igualamos a uma função quecriaremos, no caso hema, que significa horas em ano sendo uma transformação. Na

56

Page 57: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

linha abaixo igualamos a função f ao corpo da função hema. E por último temos a nossavariável de entrada que é o x, que representa as horas. Pronto, agora basta salvar essearquivo com o nome idêntico da função hema, após isso vamos à janela de comandoprincipal e chamamos pela nova função:

» hema(8640)f =

1ans =

1

No caso, está digitado exatamente o valor de um ano em horas, portanto aresposta é 1.

57

Page 58: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

9Sistemas de Equações Lineares

9.1 Interpretação gráficaA interpretação gráfica é necessária para solução a sistemas de equações lineares

ocorrente freqüentemente em problemas de engenharia. Há vários métodos existentespara solucionar sistemas de equações, mas eles envolvem operações demoradas comgrande oportunidade de erro. Entretanto temos que entender o processo para que pos-samos corrigir e interpretar os resultados do computador. Uma equação linear com duasvariáveis, semelhante a 2x - y = 3, define uma linha reta e é escrita na forma y = mx+ b, onde m é o coeficiente angular e b o coeficiente linear. Podemos escrever y =2x - 3. Se tivermos 2 equações lineares, elas podem representar 2 diferentes retas quese interceptam em um mesmo ponto, ou elas podem representar 2 retas paralelas quenunca se interceptam ou ainda podem representar a mesma reta. Estas possibilidadessão vistas na Figura 8.

Figura 8: (a) - Retas que se interceptam,(b) - Retas paralelas,(c) - Retas iguais

Equações que representam duas retas que se interceptam podem ser facilmente iden-tificadas porque possuem diferentes coeficientes angulares.

Exemplo:

58

Page 59: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

y = 2x− 3 y = −x+ 3

Equações que representam duas retas paralelas possuem o mesmo coeficiente angulare coeficientes lineares diferentes.

Exemplo:

y = 2x− 3 y = 2x+ 1

Equações que representam a mesma reta são equações com mesmo coeficiente an-gular e mesmo coeficiente linear.

Exemplo:

y = 2x− 3 3y = 6x− 9

Se a equação linear contém 3 variáveis x, y, z então ela representa um plano emespaço tridimensional.

Se tivermos duas equações com três variáveis, elas podem representar dois planosque se interceptam em uma linha, ou podem representar dois planos paralelos ou aindapodem representar o mesmo plano.

Essas idéias podem ser estendidas para mais de três variáveis, porém se torna difícila visualização desta situação. Em muitos sistemas de engenharia estamos interessadosem determinar se existe uma solução comum para sistemas de equações. Se a soluçãocomum existe então podemos determiná-la. Vamos discutir dois métodos para soluçãode sistemas de equação usando MATLAB.

9.2 Solução usando operação com matrizesConsiderando o sistema seguinte de três equações com três incógnitas:

3x+ 2y − z = 10−x+ 3y + 2z = 5x− y − z = −1

Podemos reescrever os sistemas de equações usando as seguintes matrizes:

A = 3 2 -1 x = x B = 10-1 3 2 y 51 -1 -1 z -1

Usando multiplicação de matrizes, o sistemas de equações pode ser escrito na forma:

Ax = B

59

Page 60: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

9.3 Divisão de matrizesNo MATLAB, um sistema de equações simultâneas pode ser resolvido usando divisão

de matrizes. A solução da equação da matriz Ax = B pode ser calculada usando divisãoA\B.

Exemplo: Ax = B

A = [3, 2, -1; -1, 3, 2; 1, -1, -1];B = [10; 5; -1];x =A \ B;

O vetor x contém os seguintes valores -2; 5; -6. Para confirmar se os valores de xestão corretos podemos multiplicar A*x e veremos que o resultado será B.

9.4 Matriz inversaO sistema de equações pode ser resolvido usando matriz inversa. Por exemplo as-

sumimos que A, x, B são matrizes definidas a seguir:

A = 3 2 -1 x = x B = 10-1 3 2 y 51 -1 -1 z -1

Então A∗x = B. Suponha que multiplicamos ambos os lados da equação da matrizpor A−1 então temos:

A−1 ∗ Ax = A−1 ∗B

Mas A−1 ∗ A é igual a matriz identidade I, então temos:

I ∗ x = A−1 ∗Boux = A−1 ∗B;

No MATLAB podemos calcular essa expressão usando o comando:

X = inv(A)*B;

60

Page 61: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

10Cálculo

10.1 Zeros de FunçõesO MATLAB encontra zeros de funções usando o comando fzero. A função, da qual

deseja-se encontrar os zeros, deve ser definida em um arquivo .m como definido previ-amente. Considere a seguinte função f (x) = sin(x) - cos(x). A função func1 é entãoescrita:

function f = func1(x);f = sin(x) - cos(x);

A raiz pode ser determinada usando o comando fzero no comand window do MAT-LAB ou no interior de um arquivo .m.

>> fzero(’func1’,1)ans =0.7854

Note que o segundo argumento, 1, é um chute inicial para o cálculo da raiz. Notetambém 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 é, afunção f (x) tem outras raízes. 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 funçãoescrita no MATLAB.

Os dois zeros calculados anteriormente podem ser verificados no gráfico da função.

>> fplot(’func1’,[0 2*pi]);grid;

10.2 Minimização de FunçõesContinuando o exemplo anterior, a localização do ponto de mínimo da função

func1(x) no intervalo de -1 a 2pi é obtido da seguinte maneira, a partir do uso da

61

Page 62: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Figura 9: Verificação gráfica dos zeros da função

função fminbnd.

>> [xmin ymin] = fminbnd(’func1’,0,2*pi)xmin =

5.49778788018538ymin =

-1.41421356237271

10.3 LimitesPara efetuar uma operação com limites no MATLAB, o comando que se deve dar

é: limit(f(x),x,a) onde f(x) é a função que se quer achar o limite, x é a variável e a é onúmero no qual o x está tendendo (x −→ a).

Exemplo: Achar o limite abaixo:

limx→2

1 + x2

1− x2

>> syms x>> limit(((1+x^2)/(1-x^2)),x,2)

ans=-5/3

62

Page 63: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

10.4 Limites à esquerda e à direitaPara calcular limites à esquerda e àdireita, o comando é: limit(f(x),x,a,’left’) e

limit(f(x),x,a,’right’), onde ’left’ e ’right’ são os comandos para clacular à esquerdae à direita, respectivamente.

Exemplo: Achar os limites abaixo:

limx→1−

x+ 1(x− 1)3

limx→3+

x

x− 3

>> syms x>> limit((x/(x-3)),x,3,’right’)ans=

inf

>> limit(((x+1)/(x-1)^3),x,1,’left’)ans =

-inf

10.5 Integração

10.5.1 Solução SimbólicaNa integração de funções, o comando que o MATLAB reconhece para tal operação

é int(f(x)).Exemplo: Integrar as funções abaixo:

∫ √x(1− x)2dx

∫ 2x4 − 3x3 + 57x2 dx

Utilizando o comando acima explicado:

63

Page 64: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

>> 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

Integrais Definidas As integrais definidas podem ser calculadas com o comandoint(f(x),a,b), onde a é o limite inferior e b, o limite superior da integral.

Exemplos:

∫ 2

0

2x(x− 3)2dx

∫ 1

0(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 Solução NuméricaAs integrais definidas podem ser aproximadas usando a regra de Simpson com o

comando quad ou usando a regra trapezoidal com o comando trapz. Os dois comandostrabalham de maneira bem diferente.

Regra Trapezoidal Quando a área sob a curva pode ser representada por trapéziose o intervalo [a,b], dividido em n partes iguais, a área aproximada poderá ser calculadaatravés da seguinte fórmula:

Kt = b− a2n (f(x0) + 2f(x1) + ...+ 2f(xn−1) + f(xn))

64

Page 65: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

onde os valores de xi representam os pontos no final da cada trapézio e x0 = ae xn = b. A estimativa da integral melhora quando usarmos um maior número decomponentes ( como por exemplo trapézios), para aproximar a área sob a curva, poisquanto menor for o intervalo da função a curva tende a uma reta.

O comando trapz aproxima a integral usando os pontos da função definidos pelousuário. Assim, para usar este comando primeiro deve-se definir os vetores x, no inter-valo [a, b], e f, os valores da função correspondentes aos valores definidos no vetor x.Considere, por exemplo, a seguinte integral.

I =∫ 1

02xe−x2

dx

A aproximação para esta integral pode ser calculada através 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 pelousuário, calcula os valores de f (x) nestes pontos e usa o comando trapz para aproximara integral de f (x). O cálculo da integral é feito no MATLAB, usando a recém-definidafunção “Integral”, da seguinte maneira.

>> integral(.1)ans =

0.6298

Para um dx menor.

>> integral(.02)ans =0.6320

Observe que as aproximações da integral para dx = 0.1 e dx = 0.02 são diferentes.De fato, usando o incremento menor dx = 0.02 aproxima-se melhor a área sob a curvaf(x). O valor exato desta integral é

Iexato = 1− exp (−1)

ou, calculando no MATLAB I = 0.63212055882856.A figura seguinte mostra graficamente a função para dx = 0.1 e para dx = 0.02. A

área sob a curva é a integral definida da função f(x).

65

Page 66: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Figura 10: Integral - Área abaixo da curva

Observando o gráfico da função, é fácil imaginar porque a diminuição do incrementodx melhora a aproximação da integral. No entanto, na próxima seção, um método maiseficiente para o cálculo da integral é apresentado.

Regra de Simpson O comando quad permite que se calcule a integral I usando aRegra de Simpson. A sintaxe deste comando é a seguinte:

quad(’fc’,a,b,tol)

Entre os argumentos, ’fc’ é um arquivo.m em que se define a função da qual se quercalcular a integral, a e b são os limites de integração e tol é a tolerância de erro exigidapara a aproximação da integral. Mostra-se mais adiante que, quanto menor a tolerânciade erro exigida, mais preciso é o cálculo da integral.

Primeiro cria-se o programa func2.m que define a função f (x).

function y=func2(x)y=2*x.*exp(-x.^2);

O cálculo da integral I pode ser efetuado usando a tolerância usual que é de 10−3.Neste caso, é desnecessário definir tol no comand window.

>> quad(’func2’,0,1)ans =0.63212053454568

66

Page 67: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Calculando agora com uma tolerância de 10−8.

>> quad(’func2’,0,1,1e-8)ans =0.63212055882677

Note que, comparando-se com o valor exato apresentado na seção anterior, quandose diminui a tolerância melhora-se a aproximação da integral.

Regra de Newton-Cotes O comando quad8 usa uma forma adaptada da regra deNewton-Cotes. Este comando funciona melhor em certas funções com certos tipos desingularidades como, por exemplo:

k =∫ 1

0

√xdx

Lembrando que uma singularidade é um ponto no qual uma função ou sua derivadanão é definida ou tende para o infinito.

Tanto quad8 quanto quad8 escrevem na tela uma mensagem quando detectam umasingularidade, mas ainda assim o valor estimado da integral é retornado.

Exercício:

Seja a função f(x) = |x|. Resolva as integrais abaixo usando o MATLAB e comparecom os resultados obtidos a mão.

a. int[0.6,0.5] f(x) dxb. int[0.5,-0.5] f(x) dxc. int[0.0,-1.0] f(x) dx

10.6 DiferenciaçãoA derivada de uma função f em um ponto pode ser descrita graficamente como

a inclinação da reta que tangencia a função naquele ponto. Pontos da função onde aderivada é zero são chamados pontos críticos. São pontos onde a tangente é representadapor uma linha horizontal e que, por isso, definem o local de máximo e de mínimoda função. Podemos perceber ao analisar uma determinada função num determinadointervalo que o sinal da derivada pode mudar, e, se esse sinal muda, significa que dentrodeste intervalo existe local de máximo e local de mínimo. Podemos também analisaruma função pela sua derivada segunda. De modo que, se a derivada segunda de umponto crítico é positiva, então o valor da função naquele ponto significa um local demínimo. Da mesma forma, se a derivada segunda de um ponto crítico é negativa, entãoa função possui um local de máximo.

67

Page 68: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

10.6.1 Derivação por expressões de diferençasAs técnicas de diferenciação numérica estimam a derivada de uma função em um

ponto xk através da aproximação da inclinação da reta tangente à curva neste pontousando valores que a função assume em pontos perto de xk . Essa aproximação podeser feita de vários modos.

Assim, dependendo dos pontos, temos três técnicas:

A derivada segunda pode ser achada através da fórmula:

f ′′(x) = f ′(xk)− f ′(xk − 1)xk − (xk − 1)

68

Page 69: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

10.6.2 Comando diffPara o cálculo de derivadas, o comando no MATLAB é diff(f(x)), onde f(x) é a

função que se quer determinar a derivada.Exemplo: Derivar as funções abaixo:

f(x) = 2x2 + 3x

f(x) = 13− x

Utilizando o comando acima explicado:

>> syms x>>diff((2*x^2)+3*x)

ans =4*x+3

>>diff((1/(3-x)))

ans =1/(3-x)^2

69

Page 70: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

10.6.3 Derivadas de ordem superiorAs derivadas superiores podem ser calculadas através do comando diff(f(x), 2),

onde essa representação é para a derivada segunda da função f(x), para derivada terceira,coloca-se 3 no lugar do número 2, para derivada quarta, o número 4 e assim por diante.

Exemplo: Achar a derivada segunda das seguintes funções:

f(x) = 13− x

f(x) = x− 1x

Utilizando o comando acima explicado:

>> syms x>> diff((1/(3-x)),2)

ans =2/(3-x)^3

>>diff((x-(1/x)),2)

ans =-2/x^3

70

Page 71: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

10.6.4 Derivadas Trigonométricas:Exemplo: Derivar as seguintes funções:

f(x) = sen(x)

f(x) = cos(2x)

f(x) = tan(3x+ 5)

Utilizando o comando acima explicado:

>> 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

Page 72: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

11Ajuste de Curvas

Em numerosas áreas, precisa-se do uso de uma equação para se resolver um problema.O que fazer se nós só estivermos com os dados na mão? Nesse caso, o uso do ajustamentoe interpolação poderá nos facilitar essa resolução.

11.1 Ajuste de CurvasNo MATLAB, a função polyfit pode resolver quando você tem os dados e tem que

transformar em polinômios. A ilustração abaixo, permite-nos ver o uso dessa função.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 polinômio para se tentarajustar. Por exemplo, se n=1, ele tentará ajustar para uma reta.

Agora, se for n=2, como o nosso caso, ele indicará um polinômio de grau 2.

Exemplo:

» n=2;» p=polyfit(x,y,n)

p =-9.8108 20.1293 -0.0317

O resultado do nosso ajuste é: −9.8108x2 + 20.1293x − 0.0317 . Vamos agoraverificar se o ajuste está certo:

» 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 quadrática’)

72

Page 73: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Figura 11: Ajuste para uma curva quadrática

11.2 Interpolação UnidimensionalPara ilustrar uma interpolação unidimensional, vamos considerar o seguinte exemplo:

fazendo parte de um projeto científico, foram coletadas informações sobre temperaturasdurante um dia, num período de doze horas.

Como saber a temperatura em uma hora qualquer?

Vamos plotar esses dados:

» 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’)

Para estimar a temperatura numa determinada hora, usamos a função interp1.

Exemplo:

73

Page 74: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Figura 12: Ajuste para uma curva quadrática

» t=interp1(horas,temps,9.3) % Estimar a hora 9,3t =

22.9000

» t=interp1(horas,temps,4.7) % Estimar a hora 4,7t =

22

» t=interp1(horas,temps,[3.2 6.5 7.1 11.7])t =

10.200030.000030.900024.9000

Para se ter uma precisão ainda maior, deve-se usar o argumento spline.

Exemplo:

74

Page 75: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

» 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.673430.042731.175525.3820

A interpolação tipo spline é diferente da linear, pois emprega o conceito diferencial,sendo por isso que os resultados diferem. O tipo spline é mais indicado quando se querutilizar para gráficos.

Exemplo:

» 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’) ;

Figura 13: Interpolação tipo spline

75

Page 76: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

12Transformadas

As transformadas são manipulações matemáticas para representar os mesmos elemen-tos em diferentes domínios por meio de transformações nos mesmos. Na Engenharia, elassão usadas com muita freqüência para mudar o campo de referência entre o domínio dotempo e o domínio s, domínio da freqüência ou domínio Z. Há muitas técnicas para anal-isar estados de equilíbrio e sistemas que sofrem mudanças muito suaves no domínio dotempo, mas os sistemas complexos quase sempre podem ser analisados mais facilmenteem outros domínios.

A função impulso δ(t) é a derivada da função Degrau u(t). A função Degrau Kδ(t-a) é definida como K δ(t-a) = 0 para t<a e

∫∞−∞ kδ(t − a)dt para t =a. Quando

representada em gráfico ela é comumente representada como uma seta de amplitude Kem t = a:

Figura 14: Gráfico da função δ(t - a)

12.1 Funções Degrau e ImpulsoOs problemas de Engenharia freqüentemente fazem uso da função Degrau u(t) e

impulso δ(t) na descrição de sistemas. A função Degrau Ku(t - a), onde K é umaconstante, é definida como Ku(t - a) = 0 para t < a e Ku(t - a) = K para t >a erepresentada na figura a seguir.

Exemplo:

syms t k au = ’k*Heaviside(t-a)’d = diff(u)int(d)

76

Page 77: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Figura 15: Gráfico da função Degrau Ku(t - a)

12.2 Transformada de LaplaceA Transformada de Laplace realiza a operação

F (s) =∫ ∞

0f(t)e−stdt

Para transformar f(t), no domínio do tempo, em F(s), no domínio de s. A Transfor-mada de Laplace da função cosseno amortecido e−atcos(ωt) é encontrada usando-se afunção Laplace:

syms a t wf=sym(’exp(-a*t)*cos(w*t)’)F= laplace(f)pretty(F)laplace(sym(’Dirac(t)’))laplace(sym(’Heaviside(t)’))

As expressões podem ser transformadas novamente para o domínio do tempo, usando-se a Transformada Inversa de Laplace ilaplace que realiza a operação f(t). Usando Fdo exemplo acima temos:

ilaplace(F)

12.3 Transformada de FourierA Transformada de Fourier e sua inversa são muito usadas em análise de circuitos

para determinar as características de um sistema em ambos os domínios de tempo ede freqüência. O MATLAB usa as funções fourier e ifourier para transformar ex-pressões entre domínios. A Transformada de Fourier e sua inversa são definidas por:

77

Page 78: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

F (s) =∫ ∞−∞

f(t)e−jwtdt

f(t) =∫ ∞−∞

F (w)ejwtdw

O MATLAB usa um w para representar ω em expressões simbólicas.

Exemplo:

syms tf= sym(’t*exp(-t^2)’)F= fourier(f)invfourier(F)

12.4 Transformada ZAs transformadas de Laplace e Fourier são usadas para analisar sistemas de tempo

contínuos. A Transformada Z, por outro lado, é usadas para analisar sistemas de tempodiscreto. A Transformada Z é definida como:

F (z) =∞∑

k=0f(k)z−k

,onde z é um número complexo.

A Transformada Z e a Transformada Inversa de Z são obtidas usando-se as funçõesztrans e iztrans. O formato é similar ao das funções de Transformadas de Laplace eFourier.

12.5 Exercícios

12.5.1 Exercício 1: Sistemas LinearesO circuito mostrado abaixo possui uma fonte de tensão contínua de 60V e quatro

resistores distribuídos em três malhas. Utilize o MATLAB para resolver o sistema lineare achar as correntes no circuito.

7I1 + 12(I1 − I2) = 6012(I2 − I1) + 6(I2 − I3) = 0

6(I2 − I3) + 12I3 = 0

78

Page 79: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Figura 16: Circuito elétrico do exercício 1

Aplicando as leis de Kirchhoff no circuito, têm-se três equações para três incógnitaslinearmente independentes (I1, I2 e I3).

19I1 − 12I2 = 60−12I1 + 18I2 − 6I3 = 0

6I2 + 18I3 = 0

Reorganizado as equações, tem-se o sistema pronto para ser passado para formamatricial e então ser resolvido, sendo, no caso do sistema elétrico R3X3.I3X1= V3X1.

Comandos utilizados em sistemas lineares:

x=A\B Divisão à esquerda para sistemas Ax=Bx=B/A Divisão à esquerda para sistemas xA=Binv(A) Inversão de Adet(A) Determinante de Arank(A) Oposto de A

12.5.2 Exercício 2: Equações Diferenciais e TransformadasAchar a equação para a tensão no capacitor no circuito abaixo utilizando solução por

equações diferenciais considerando nulas as condições iniciais, ou seja, vC(0).

Figura 17: Circuito elétrico do exercício 2

Aplicando a lei das malhas de Kirchhoff, tem-se

79

Page 80: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Ri(t) + vC − VS(t) = 0 (1.1)

Como os elementos estão todos em série, a corrente que flui pelo resistor é a mesmaque flui pelo capacitor:

i(t) = iC(t) = C ddtvCdt (1.2)

Substituindo (1.2) em (1.1) tem-se a equação diferencial de 1a ordem para um circuitoRC série:

RC ddtvCdt+ vC(t)− V = 0 (1.3)

A tensão no capacitor é dada pela equaçao diferencial, que é mostrada na equaçaoabaixo:

vC(t) = V (1− e−1tRC ) (1.4)

a. Função dsolve

A funçao dsolve fornece solução simbólica para equações diferenciais ordinárias.Basta simplesmente entrar com uma ou mais equações diferenciais e suas respectivascondições iniciais que a resposta é fornecida. Por exemplo, para resolver a equaçãod2

dt2y = t com condições iniciais y(0) = −2 e y′(0) = 0, entra-se no MATLAB com

dsolve (’D2y=t’,’y(0)=2’,’Dy(0)=0’)ans =1/6*t^3-2

Agora resolva a equação (1.3) utilizando a função 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 variáveis simbólicas como comando sym(’var1’) ou syms var1 var2 var3 ....

Voltando ao exercício 2, a solução da equação (1.3) pode ser obtida a partir daTransformada de Laplace da mesma, obtendo VC(S), que é a tensão do capacitor nodomínio s. Utilizando a função de laplace, tem-se o resultado em (1.5).

syms R C VvR=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

Page 81: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Figura 18: Transformadas de Laplace para algumas funções δ(t - a)

RCs(VC(s)− vC(0)) + VC(s)− Vs

= 0 (1.5)

A partir dessa simples manipulação algébrica da equação para isolar a variável VC(s)e expansão em frações parciais, pode-se então aplicar a Transformada Inversa de Laplacepara achar vC(t)utilizando a função ilaplace do MATLAB.

VC(s) = Vs− V

s+ 1RC

(1.6)

E o resultado da manipulação através do domínio s deve coincidir com a resoluçãoobtida pelos métodos tradicionais para solução de equações diferenciais ordinárias de 1a

ordem:

L−1 {VC(s)} = vC(t) = V (1− e 1tRC ) (1.7)

Tabela de Comandos úteis - Transformadas

laplace(f) Transformada de Laplace de filaplace(F) Transformada Inversa de Laplace de Ffourier(f) Transformada de Fourier de fifourier(F) Transformada Inversa de Fourier de Fztrans(f) Transformada Z de fiztrans (F) Transformada Inversa de Z de F

12.5.3 Exercício 3: Transformada de FourierPara fazer uso da Transformada Discreta de Fourier (DFT) ou da Transformada

Discreta Rápida de Fourier (FFT), vamos gerar um sinal composto de três freqüênciasdistintas e analisar seu espectro de freqüências através do comando fft.

81

Page 82: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

1) Declare as constantes da rotina no MATLAB. São elas:a. Freqüência de amostragem (Fs): número de pontos por período que o sinal seráamostrado (medido);b. Ciclos de amostragem (k): número de períodos que o sinal vai ser amostrado emrelação à freqüência mais baixa;c. Freqüências 1, 2, 3 (f1, f2, f3): definir valor de uma freqüências quaisquer que com-porão o sinal a ser analisado. O sinal será da forma

y(t) = 100 ∗ (sin(2.π.f1.t+ 2.π.f2.t+ 2.π.f3.t)

2) Construa o vetor do tempo para a função y a partir da geração de um vetor daseguinte forma: ”t = (0 : passo : ttotal)” sendo ”passo = 1

F s” e ”ttotal = k

min([f1,f2,f3])”.

3) Tendo gerado o vetor do tempo e declarado as constantes na 1a etapa, plote afunção y(t). Um exemplo para freqüências de 100, 200 e 300 Hz está na figura 19.

Figura 19: Forma de onda de y(t) para f1=100, f2=200 e f3=300.

4) Para a análise do espectro, execute a FFT (Fast Fourier Transform) do sinal dafunção y(t) por meio do comando fft da seguinte forma: "Y = fft(y)".

5) Construa um vetor de freqüências para a plotagem da seguinte forma: "F = (0 :length(y)− 1) ∗ F s

lenght(Y ) ;", Onde Fs é a freqüência de amostragem do sinal, que podeser considerada como 1 para exibir um espectro de freqüências normalizado, ou seja, dezero a 1, independentemente da freqüência de amostragem do sinal.

6) Por fim, plote o módulo da série Y em função de F. Não se esqueça de, além deoperar o módulo de Y, deve-se dividir os valores do mesmo pelo número de pontos dovetor da seguinte forma "abs(Y)/lenght(Y)". Isto deve ser feito, pois a Transformadade Fourier gera pontos de amplitude multiplicados pelo número de termos da série quefoi transformada. A FFT de um exemplo está mostrada na figura 20.

82

Page 83: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Figura 20: Resultado da FTT mostrado de 0 a 500 Hz.

7) Após analisar o espectro, faça o caminho inverso tentando reconstruir o sinal eplotá-lo usando a Transformada Inversa de Fourier através do comando ifft.

OBS: A título de curiosidade, verifique como ficaria a forma de onda e o espectrode uma série de valores aleatórios gerados pelo Matlab através da troca da função yoriginal por ”y = 100 ∗ rand(1, length(t))”.

83

Page 84: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Solução:

Figura 21: Solução do exercício 3

84

Page 85: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

13SIMULINK

O que é SIMULINK?O Simulink é um pacote computacional voltado para a modelagem, simulação e

análise de sistemas dinâmicos, tanto lineares quanto não-lineares, contínuos e/ou dis-cretos no tempo.

Figura 22: Diversas aplicações do Matlab e do Simulink em engenharia e ciências exatas.

A modelagem de sistemas dinâmicos no Simulink se dá através de diagramas deblocos. De fato, o Simulink possui centenas de blocos com funções pré-definidas quepermitem que um determinado modelo seja perfeitamente representado. Existem aindaarquivos com exemplos que ilustram algumas aplicações e potencialidades do Simulink.Tais exemplos podem ser acessados através da biblioteca de blocos. Além de facilitara visualização de um sistema ou processo, a representação por diagramas de blocos ébastante utilizada em se tratando de controle de sistemas. Dessa forma, o Simulinkprovém uma interface adequada para a simulação de tais sistemas. O Simulink possuiainda uma série de configurações que dão flexibilidade ao usuário, permitindo, por ex-emplo, a escolha entre os métodos numéricos empregados durante as simulações. Dessaforma, é possível adequadar uma simulação de acordo com às necessidades de um de-terminado sistema. Conforme será visto neste curso, a análise de sistemas compõe-se

85

Page 86: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

de um conjunto de ferramentas tais como: linearização, blocos de verificação e gráficos.

13.1 Introdução

13.1.1 Diagrama de BlocosUm diagrama de blocos é uma forma de representar um modelo de sistema como um

todo. Em um diagrama como este, cada bloco desempenha uma determinada função.Dessa forma, as inter-conexões dos blocos permitem a representação de um processo.As setas indicam a sequência de operações as quais uma constante, variável ou funçãoserão submetidas.

Figura 23: Exemplo de um diagrama de blocos complexo: Motor, transmissão e freiosde um automóvel.

Uma forma usual de representar sistemas dinâmicos lineares é através de funções detransferência. Uma função de transferência pode ser obtida através da transformada deLaplace e de manipulações algébricas. Dessa forma, é grande o número de blocos noSimulink destinados a utilização de funções como essas. Um bloco pode, por exemplo,representar uma função de transferência.

Partindo-se de um diagrama de blocos, é possível, mediante o uso de regras especiais,denominadas "Álgebra dos diagramas de bloco", reduzir um diagrama de blocos a umúnico bloco e, assim, achar a função de transferêcia global sistema.

86

Page 87: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

13.1.2 SímbolosOs símbolos mais utilizados em diagramas de blocos encontram-se representados a

seguir:

Figura 24: Símbolos utilizados em diagramas de blocos

13.2 Conhecendo o Simulink

13.2.1 Iniciando o SimulinkPara acessar o SIMULINK deve-se, inicialmente, abrir o Matlab, pois apesar do

Simulink ser uma aplicação específica, este utiliza-se das ferramentas de computaçãonumérica do Matlab.

Uma vez que o Matlab está sendo executado, deve-se clicar no ícone “Start Simulink”na barra de ferramentas do Matlab ou digitar “simulink” na linha de comando e pressionarenter em seguida, como mostrado a seguir:

» simulink <enter>Após aberto o Simulink, duas janelas aparecerão na tela: a biblioteca de blocos do

Simulink e uma janela em branco para construção do modelo.Caso a biblioteca não esteja aberta, clique em Library Browser,localizado na barra

de ferramentas do Simulink para acessá-la. Uma vez que a biblioteca estiver aberta,

87

Page 88: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Figura 25: Janela destinada à criação do modelo

Figura 26: Biblioteca de blocos

basta selecionar os blocos desejados e arrastá-los para a janela em branco do Simulink.As conexões entre os blocos são feitas a partir do mouse, clicando-se sobre as conexõesexistentes nos blocos e arrastando-as até o bloco desejado.

No Simulink, os blocos estão separados de acordo com as funções que desempenham.Assim, é importante determinar quais blocos representam o sistema em si e quais blocosatuam como entradas, saídas, ou se desenvolvem funções de análise.

13.2.2 Construindo e analisando um modelo simplesA partir de um problema, deve-se criar um modelo capaz de solucioná-lo e então

verificar se a solução está correta. Para exemplificar essa idéia, um modelo será densen-volvido para resolver a seguinte equação diferencial, que é o problema em questão.

x′ = sen(t) onde x(0) = 0

Uma forma de solucionar esta equação diferencial é integrar a função seno e encontraro valor para uma constante de forma que a condição inicial seja satisfeita. A partir destaproposta, será criado um diagrama de blocos. Então o diagrama deverá ter, pelo menos,um bloco que representa a função seno, assim como outro para realizar a integração dafunção seno. A função seno funciona, neste exemplo, como uma fonte, então, dê umduplo clique no ícone Sources na janela de bibliotecas do Simulink.

88

Page 89: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Figura 27: Fonte senoidal inserida no projeto

Arraste o bloco da onda senoidal (Sine Wave) para a janela do modelo. Uma cópiadeste bloco deverá aparecer nesta janela.

Em seguida arraste o bloco integrator, presente na biblioteca continuous. Faça omesmo para o Scope, que está na biblioteca Sinks.

Figura 28: Blocos utilizados no exemplo.

A seguir, conecte os blocos para completar o modelo como na figura a seguir:

Figura 29: Conexões entre os blocos.

Após adicionar os blocos ao modelo, é possível configurá-los através de um duploclique sobre eles. No bloco da função seno, por exemplo, é possível configurar, entreoutros parâmetros, a amplitude da função, a frequência e a fase. O valor inicial dafunção x(t) é configurado no bloco da integral, assim como os limites superior e inferior.

Dê um duplo click no bloco SCOPE e na barra de menu do SIMULINK clique SIM-ULATION:START. A simulação será executada, resultando no gráfico gerado no blocoSCOPE, mostrado a seguir:

Para verificar se o gráfico gerado representa a solução da equação diferencial desejada,deve-se resolver a mesma analiticamente, cujo resultado é: x(t) = 1 − cos(t), que

89

Page 90: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Figura 30: Gráfico gerado no Scope.

corresponde ao gráfico apresentado. É interessante alterar o valor inicial de x(t) nobloco da integral e verificar o resultado obtido.

13.2.3 Exemplo: Modelo de um processo biológicoNeste exemplo será desenvolvido um diagrama de blocos para um processo biológico.

Trata-se de um modelo para o crescimento de bactérias, isoladas do ambiente externo,descrito por Scheinerman. Admite-se que as bactérias nascem numa taxa proporcionalao número de bactérias presentes em um instante e que morrem a uma taxa proporcionalao quadrado do número de bactérias presentes. Se x representa o número de bactériaspresentes, a taxa em que as bactérias nascem é definida por:

Taxa de Natalidade = bx; Taxa de Mortalidade = px2

A taxa total de mudança na população de bactérias é a diferença entre a natalidadee a mortalidade de bactérias. O sistema pode ser então descrito pela equação diferenciala seguir: x′ = bx− px2

Partindo desta equeção será então construído um modelo para este sistema dinâmico.Supondo que b=1 bactéria/hora e p=0,5 bactéria/hora, será determinado o número debactérias contidas no pote após 1 hora, admitindo que inicialmente existiam 100 bactériaspresentes. Crie uma nova janela de modelo na barra de menu escolhendo FILE:NEW.

Este é um sistema de primeira ordem, o que quer dizer que requer somente umintegrador para resolver a equação diferencial. A entrada do integrador é x′ e a saída éx. Abra o biblioteca linear e arraste o integrador para a janela do modelo, seguindo aposição mostrada na figura:

Ainda na biblioteca Linear, arraste dois blocos de ganhos (Gain) para a janela domodelo e posicione-os como na figura seguinte. O Simulink exige que cada bloco tenhaseu nome único. Devido a isto, o segundo bloco de ganho será nomeado GAIN1. Arrasteainda um bloco de soma (Sum) e a seguir feche a janela da biblioteca linear.

Abra agora a biblioteca de blocos de operações matemáticas (Math Operations) earraste um bloco de produto (Dot Product) para a posição mostrada. Este bloco seráutilizado para calcular o valor de x2.

90

Page 91: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Figura 31: Integrador inserido no projeto

Abra a seguir a biblioteca dispositivos de saída (Sinks) e arraste um bloco SCOPEpara a janela do modelo seguindo a posição mostrada.

Figura 32: Blocos inseridos

A orientação padrão dos blocos no SIMULINK é posicionar as entradas à esquerda eas saídas à direita. Porém, neste modelo, será mais legível os blocos de ganho e produtoforem invertidos. Iniciando com o bloco do Produto, deve-se primeiro clicar sobre ele demodo a selecioná-lo. Pequenos quadros pretos aparecerão nas quinas do bloco indicandoseleção. Pressione o botão direito. No menu, escolha FORMAT: FLIP BLOCK. Agoraas entradas estão à direita e as saídas à esquerda. Repita a operação de inversão paracada bloco de Ganho. O modelo agora deve estar semelhante à figura que segue abaixo:

Trace agora uma linha de sinal da saída do bloco de soma para a entrada do inte-grador e outra da saída do integrador para a entrada do SCOPE.

91

Page 92: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Figura 33: Blocos inseridos após rotação

A seguir é necessário conectar a linha que liga o integrador ao SCOPE até blocode ganho situado na parte inferior da janela, pois esta linha contém o valor de x. Parafazê-lo, pressione a tecla CTRL do teclado e clique na linha de sinal. O cursor do mouseirá mudar para uma cruz. Conserve a tecla do mouse pressionada enquanto a ligaçãoé feita e solte agora a tecla CTRL. Leve a linha até a entrada do bloco de ganho. OSIMULINK automaticamente ajusta a linha com um ângulo de 90o. Se o mouse possuirtrês botões, as operações de clicar e arrastar podem ser feitas utilizando o botão direito.

Repita a operação ligando a linha de sinal Integrator-SCOPE até a entrada superiordo bloco de produto. Da linha de sinal que liga a entrada superior do bloco de produtorepita a operação de ligação para a entrada inferior do mesmo bloco, de modo que obloco execute a operação x.x = x2. Conecte agora a saída do bloco de produto à entradado ganho na parte superior da janela de modelo. Após isso, é necessario conectar a saídado ganho superior à entrada superior do bloco de soma e a saída do ganho inferior àentrada inferior do mesmo bloco de soma.

O modelo agora está completo, mas os blocos devem ser configurados (parametriza-dos) para que este represente o sistema desejado. O Simulink tem o valor 1.0 comopadrão(default) para os blocos de ganho, entradas positivas no bloco de soma e o valorinicial 0.0 para o integrador. O valor inicial do integrador representa o número inicial debactérias presentes no pote. Para acessar as configurações de um bloco, basta dar umduplo clique sobre o bloco. Para parametrizar os blocos de ganho. Dê um duplo cliqueno ganho da parte superior e mude o valor de 1.0 para 0.5 na caixa de diálogo que iráaparecer, a seguir clique em Close. Note que o valor do ganho do bloco muda para 0.5no diagrama em blocos.

Agora dê um duplo clique no bloco de soma e no campo List of signs mude de ++para −+ na caixa de diálogo que abrirá. Os sinais representam os próprios sinais deentrada no bloco. A seguir clique em Close.

Note agora que no bloco de soma o sinal superior é negativo e o inferior é positivo,sendo então a saída a diferença das entradas que representa x′ de acordo com a equação

92

Page 93: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Figura 34: Blocos conectados

diferencial após substituir os valores de p e b.

Para finalizar a configuração, deve-se definir o número inicial de bactérias. Para isto,dê um duplo clique no integrador e no campo "Initial condition"mude para 100, e após

93

Page 94: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

clique Close.

Figura 35: Parâmetros do bloco integrador

A duração da simulação é, por padrão, ajustada para ir de 0 a 10 segundos. Nestecaso, deseja-se saber o resultado após 1 hora. Para mudar este tempo, seleciona-se nabarra de menu a opção SIMULATION:PARAMETERS e no campo "Start Time"digita-se 3600. Dessa forma será tomado os valores da simulação após uma hora. Em "StopTime"o tempo final da simulação. Por exemplo, 3610, para que a simulação dure 10segundos.

Figura 36: Parâmetros da simulação

94

Page 95: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

O modelo agora está completo e pronto para ser executado. Para salvar, vá à barrade menu e selecione FILE:SAVE e entre com o nome desejado. O modelo será salvo como nome digitado e a extensão .mdl, e seu nome aparecerá na barra de título da janela deedição. Abra agora o SCOPE com um duplo clique e a seguir na barra de menu, cliqueem SIMULATION:START para iniciar a execução.

Figura 37: Resultado da simulação

O SCOPE nem sempre mostra a figura numa boa escala para visualização. O botãoAutoscale na barra de ferramentas do SCOPE redimensiona a escala para acomodartodos os valores.

95

Page 96: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Figura 38: Resultado da simulação redimensionado

13.3 Principais blocos do Simulink e suas funçõesConforme exemplificado, um modelo Simulink consiste basicamente de três tipos de

componentes: fontes de sinais, o próprio sistema a ser modelado e as saídas. O modelode um sistema é geralmente composto por mais de um bloco.

Figura 39: Fontes, sistema e saídas.

As fontes caracterizam-se por fornecer valores às entradas do sistema incluem blocosque representam constantes, funções, valores aleatórios ou ainda sinais personalizadospelo usuário. Estes blocos são encontrados na biblioteca de fontes (Sources). As saídasdo sistema possuem os resultados obtidos ao longo do processo. Em geral, há interesseem se conhecer estes valores, de forma que o bloco SCOPE é usualmente conectado auma saída para plotar um gráfico. Abaixo encontra-se uma lista com os principais blocose suas funções. É importante observar que todos os blocos possuem parâmetros quepodem ser configurados. Para isto, dê um duplo clique sobre o bloco.

As entradas de um modelo são chamadas fontes (Sources) e podem ser encontradasna biblioteca de fontes. Um bloco de fonte não possui entrada e deve possuir pelomenos uma saída. A documentação detalhada de cada fonte pode ser encontrada nohelp do Simulink. No texto que segue serão mencionadas somente os tipos mais comunse utilizados de fontes. Serão ainda discutidas as operações de importação do MATLABe de arquivos que contenham dados os quais se deseja inserir no modelo. Tal facilidadepermite que se tenha qualquer tipo de sinal de entrada, exista ele no Simulink ou não.

Fontes Comuns

96

Page 97: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Exemplo: Impulso Unitário

Um sinal muito utilizado para determinar o comportamento dinâmico de sistemas éo Impulso Unitário, também conhecido como Função Delta ou Função Delta de Dirac.O Impulso Unitário δ = (t-a) é definido como um sinal de duração igual a zero, tendoas seguintes propriedades:

δ(t− a) = 0; t 6= a

∫ ∞−∞

δ(t)dt = 1

Embora o impulso unitário seja um sinal que teoricamente não existe existem boasaproximações do caso ideal que são muito comuns. Exemplos físicos são colisões, comouma roda se chocando com o meio-fio ou um bastão rebatendo uma bola ou aindamudanças instantâneas de velocidade como a de uma bala sendo disparada de um ri-fle. Outra utilidade da função impulso é a determinação da dinâmica do sistema. Omovimento causado em um sistema que sofre uma força impulsional unitária é a própriadinâmica inerente ao sistema. Partindo disto, pode-se utilizar a resposta à um impulsounitário de um sistema complexo para se determinar sua freqüência natural e suas car-acterísticas de vibração.

Pode-se criar uma aproximação de um impulso unitário utilizando duas fontes defunção degrau e um bloco de soma. A idéia é produzir num tempo definido “a” umpulso de duração muito curta “d” e de magnitude “M’, tal que M.d=1. A dificuldadeconsiste em se definir um valor apropriado para d. Deve ser um valor pequeno quandocomparado à mais rápida dinâmica do sistema Porém, se for muito curto, podem ocorrerproblemas numéricos como erros de aproximação. Se for muito longo a simulação nãoserá adequada à um impulso verdadeiro. Usualmente, valores adequados podem serdeterminados experimentalmente.

Figura 40: Um modelo para o impulso unitário.

O modelo na figura acima deve ser ajustado para simular um impulso unitário ocorridoaos 0.5 segundos de simulação com uma duração de 0.01 segundos e a magnitude de100. A fonte degrau na parte superior deve ter a seguinte configuração: Step time: 0.5,Initial value: 0, Final value: 100. Já a fonte situada na parte inferior deve ser configuradada seguinte forma: Step time: 0.51, Initial value: 0, Final value: 100. A simulação deveser configurada para terminar em 1 segundo.

97

Page 98: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

13.3.1 Principais Fontes(Sources):Essas são as principais fontes:

Constant - Fornece um valor constante.Sin Wave - Função seno. É possível configurar os parâmetros.Ramp - Uma reta linear. É possível configurar a inclinação.Step - Função degrau. Pode-se configurar o tempo, amplitude e valor inicial.Pulse Generator - Gera uma onda quadrada.Ramdon Number - Números aleatórios no tempo.Signal Generator - Gera as ondas típicas de um gerador de sinais: quadrada, serra,senóide, etc.

13.3.2 Principais blocos usados na modelgem de sistemas dinâmi-cos

Os principais blocos são:Derivative - Calcula a derivada da função em relação ao tempo.Integrator - Calcula a integral da função em relação ao tempo.Transfer Fcn - Adiciona uma função de transferência. Os valores podem ser ajustadosnas configurações (duplo clique sobre o bloco).Transport Delay e Variable Transport Delay - Adiciona um delay de tempo.Zero-Pole - Semelhante a função de transferência.Abs - Calcula o valor absoluto.Add - Soma ou subtrai as entradas (inputs).Sum - Soma ou subtrai valores, tais como em feedbacks.Gain - Ganho. Multiplica a entrada pelo valor configurado.Dot Product - Faz o produto escalar com as entradas.Min - A saída deste bloco é o valor máximo, ou mínimo da entrada, de acordo com aconfiguração.Product - Faz o produto entre as entradas.Divide - Faz o produto e/ou a divisão entre as entradas.Real-Imag to complex - Transforma dois números em um único número complexo.

13.3.3 Verificação do modeloOs blocos para a verificação de modelo são úteis quando se deseja saber se os valores

de entrada ou saída de um determinado bloco estão, por exemplo, dentro de uma faixade valores. Sempre que a condição não for satisfeita, aparecerá uma mensagem de errodurante a simualção.Assertion - Verifica se um valor é diferente de zero.Check Dynamic Gap: - Checa se um sinal é menor ou maior que dois outros sinais.Check Dynamic Lower Bound: - Checa se um sinal é sempre menor que outro.Check Dynamic Range: - Verifica se um sinal sempre tem valores entre outros dois sinais.Check Dynamic Upper Bound: - Verifica se um sinal é sempre maior que o outro.Check Static Gap: Checa se um sinal é menor ou maior que dois outros valores estáticos.Check Static Lower Bound: Verifica se um sinal é maior ou igual a um valor estáticodefinido.

98

Page 99: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Check Static Range: - Verifica se um sinal está sempre outros dois valores estáticos.Check Static Upper Bound: Checa se um sinal é menor ou igual a um limite superior.

13.3.4 Blocos de saídas(Sinks)Esses são os blocos de saídas:

Display - Mostra em uma tela os valores da entrada durante a simulação.Scope - Exibe um gráfico dos valores de entrada em relção ao tempo.Stop Simulation - Quando a entrada deste bloco for diferente de zero, a simulção seráinterrompida.Terminator - Uma terminação. Pode ser usado para evitar erros gerados por blocos comsaídas não conectadas.To file - Escreve os valores de saída em uma matriz.

13.3.5 Criando blocos de sub-sistemasUm sub-sistema é um sistema menor que está contido no sistema principal. Dessa

forma, ele também é composto por blocos. Esta é uma forma eficaz de organizarum diagramas de blocos. Por exemplo, se um determinado processo bem definido écomposto por dezenas de blocos, é possível substituir todos estes blocos por apenas umbloco utilizando um sub-sistema. Para isso, selecione todos os blocos que deseja incluirno sub-sistema e clique com botão direito do mouse. Vá até a opção Create Subsystem.Assim irá surgir um único bloco que contém em seu interior todos os outros blocos. Paraacessá-lo, basta dar um duplo clique que o sub-sistema será exibido em nova janela.

13.3.6 Blocos condicionaisÉ possível ainda utilizar-se de blocos condicionais, tais como o bloco If. Neste bloco

há entradas para sinais e uma comparação é feita. Se for verdadeira, o bloco libera umsinal de nível alto na saída. Observe que este sinal não é o valor da entrada do blocoe sim um sinal que afirma se é verdadeira ou falsa a afirmativa. As saídas dos blocoscondicionais podem ser conectadas aos blocos If Action Subsystem. Estes blocos sãosub-sistemas que irão atuar quando for verdadeiro o sinal presente na entrada if. Dessaforma, é necessário editar os blocos do If Action Subsystem para que as saídas sejam asdesejadas.

Exemplo: Construa o sequinte diagrama de blocos no Simulink. Este modelo limitao valor de uma função qualquer, por exemplo, uma senóide. O valor da senóide écomparado com outro valor estabelecido no bloco if. Se a condição for verdadeira,então um sub-sistema é acionado. Este sub-sistema nada mais é que uma entrada euma saída, porém ele pode ser modificado a fim de atigir o resultado desejado.

13.3.7 Personalizando o modelo e manipulando BlocosÉ possível personalizar o modelo através da mudança de cores, tanto do background

como dos blocos em si. Esta é uma forma de tornar mais visível ou mesmo organizarpartes de um sistema complexo. Para alterar a cor do background, clique com o botãodireito em algum ponto da tela e vá até "screen color"e selecione a cor desejada. O

99

Page 100: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Figura 41: Um diagrama de blocos condicional.

mesmo pode ser feito para um bloco. Neste caso, clique com o botão sobre um bloco evá em background color para mudar a cor do bloco; e em foreground color para modificaras cores do contorno do bloco.

A tabela a seguir contém as operações básicas de manipulação de blocos como red-imensionar, rotacionar, copiar e renomear blocos.

100

Page 101: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Ação DescriçãoSeleção simples de objeto Clique no objeto com o botão esquerdo do mouse.Seleção múltipla de objetos Pressione a tecla SHIFT e clique no outro objeto.Selecionar com uma caixa deseleção

Clique com o botão esquerdo do mouse no local ondese deseja que seja uma das quinas da caixa de seleção.Continue com a tecla do mouse pressionada e arrastea caixa para encobrir a área esejada.

Copiar um bloco de uma bib-lioteca ou de outro modelo

Selecione o bloco e arraste para a janela do modelopara a qual se quer copiar.

Inverter blocos Selecione o bloco e no menu Format:Flip Block.Tecla de atalho: CTRL–F.

Rotacionar blocos Selecione o bloco e no menu Format:Rotate Block.Tecla de atalho: CTRL–R.

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 NameInverter o nome de um bloco Selecione o nome, no menu Format:Flip NameApagar Objetos Selecione o objeto, no menu Edit:Clear. Tecla de

atalho: Del.Copiar objetos para a área detransferência

Selecione o objeto, no menu Edit:Copy. Tecla deatalho: CTRL–C.

Recortar objetos para a áreade transferência

Selecione o objeto, no menu Edit:Cut. Tecla deatalho: CTRL–X.

Colar objetos a partir da áreade transferência

No menu Edit:Paste. Tecla de atalho: CTRL–V.

Traçar uma linha de sinal Arrastar com o mouse da saída do bloco para a en-trada do outro.

Traçar uma linha de sinal emsegmentos

Arraste com o mouse da saída do bloco até o primeiroponto. Repetir deste ponto até o seguinte e assim pordiante.

Traçar uma linha ligada aoutra

Mantenha a tecla CTRL pressionada e clique sobre alinha de origem. Tecla de atalho: Clicar com o botãodireito do mouse a partir da linha de origem.

Separar uma linha Selecione a linha. Mantendo a tecla SHIFT pression-ada, clique e arraste o novo vertex para a posiçãodesejada.

Mover um segmento de linha Clique e arraste o segmento desejado.Mover um vertex de um seg-mento.

Clique e arraste o vertex desejado.

Nomear uma linha de sinal Duplo clique na linha e digite o nome.Mover o nome de uma linhade sinal

Clique e arraste o nome para a posição desejada.

101

Page 102: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

Ação DescriçãoCopiar o nome de uma linhade sinal

Mantendo a tecla CTRL pressionada, arraste o nomepara a posição desejada. Tecla de atalho: clique earraste com o botão direito do mouse para a posiçãodesejada.

Sinais de propagação numalinha de sinal

Dê um nome aos sinais conhecidos (entrada) com umúnico caracter e nas linhas em que se deseja saber seuconteúdo, deve-se digitar somente o caracter “<”.Após isso, no menu Edit:Update Diagram.

Acrescentar anotação ou ob-servação no modelo

Dê um duplo clique no local em que se deseja e digiteo texto.

102

Page 103: Sumáriorenatomaia.net/arquivos/Facit/IC/MATLAB_2010.pdf · 2010-08-17 · O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis

14Referências Bibliográficas

• Curso de MATLAB for Windows, Departamento de Engenharia Mecânica, UNESP,Campus de Ilha Solteira.

• Trindade, Marcelo A. e Sampaio, Rubens, Introdução ao MATLAB, Departamentode Engenharia Mecânica, Laboratório de Dinâmica e Vibrações, PUC-Rio.

• Noções Básicas de Utilização e Programação em Matlab, Curso de Matemática,Programa de Educação Tutorial, Universidade Federal de Santa Maria, 2008.

• Hey, H. L., Caderno didático de Sistemas de Controle I, Departamento de Eletrônicae Computação, UFSM, Santa Maria.

• www.mathworks.com.

103