Buscar

MATLAB_V1_2018 (3)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 45 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 45 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 45 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

[MATLAB/SIMULINK©: Aplicações na Engenharia Química] 
2 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Ivan Carlos Franco. Matlab/Simulink® - Noções Básicas 
e Aplicações: Aplicações na Engenharia Química. Centro 
Universitário FEI. Departamento de Engenharia 
Química. Versão 1.2018, Atualizado em 03/208. 
Sumário 
3 
Sumário 
CAPÍTULO 1 5 
Introdução ao MATLAB© 5 
1.1 O que é MATLAB©? 5 
1.2 Inicializando o MATLAB© 5 
1.3 Operações Aritméticas e funções matemáticas 6 
1.4 Armazenamento e manipulação de dados 6 
1.5 Operações Matemáticas com vetores ou matrizes 8 
1.5.1 Soma e subtração de vetores e matrizes 8 
1.5.2 Multiplicação de matrizes e vetores 9 
1.5.3 Divisão de matrizes e vetores 9 
1.5.4 Operação por elemento 9 
1.6 Gerando Arquivo de funções 10 
1.7 Criando Gráficos no MATLAB© 11 
1.8 Programando no MATLAB 12 
1.8.1 Operadores relacionais e operadores lógicos 13 
1.8.2 Declarações condicionais 13 
1.8.2 Laços de repetição ou loops 14 
CAPÍTULO 2 17 
SIMULINK© 17 
2.1 Introdução 17 
2.2 Criando um modelo no SIMULINK© 17 
2.3 Configurando os blocos os blocos SIMULINK© 21 
2.3.1 Configuração das propriedades dos blocos 21 
2.4 Resolvendo equações diferenciais utilizando o SIMULINK© 22 
CAPÍTULO 3 23 
SIMULINK©: Bibliotecas e Blocos 23 
3.1 Principais configurações do SIMULINK© 23 
3.2 Biblioteca de Blocos 23 
3.2.1 CONTINUOUS: Blocos de sistemas dinâmicos contínuos 23 
3.2.2 DISCONTINUITIES: Blocos que implementam sistemas descontínuos 24 
3.2.3 DISCRETE: Blocos de sistemas dinâmicos discretos 24 
3.2.4 LOOK-UP TABLES: Blocos de pesquisa em tabela (matriz) 24 
3.2.5 MATH OPERATION: Blocos de operadores matemáticos 25 
3.3.6 MODEL VERIFICATION: Blocos para verificação de modelos 25 
3.3.7 MODEL-WIDE UTILITES: Blocos utilitários 26 
3.3.8 PORT & SUBSYSTEMS: blocos de portas, conexões e subsistemas. 26 
3.3.9 SIGNAL ATTRIBUTES: Blocos de atributos de sinais 26 
3.3.10 SIGNAL ROUTING: Roteamento de sinais 27 
3.3.11 SINKS: Blocos de saída de resultados 27 
3.3.12 SOURCES: Blocos de origem de sinais 27 
3.3.13 USER-DEFINED FUNCTIONS: Blocos de funções definidas pelo usuário 28 
CAPÍTULO 4 29 
Aplicações do MATLAB©\SIMULINK© na Engenharia Química 29 
4.1 Problemas envolvendo equações não lineares 29 
4.2 Problemas envolvendo sistemas de equações lineares 32 
4.3 Problemas envolvendo ajuste de curvas e interpolação 34 
4.4 Problemas envolvendo diferenciação numérica 37 
4.5 Problema envolvendo integração numérica 38 
4.6 Problemas envolvendo Equações diferenciais Ordinárias: PVI 40 
4.7 Problemas envolvendo Equações diferenciais Ordinárias: PVC 43 
Referências Bibliográficas 45 
 
 
 
 
[MATLAB/SIMULINK©: Aplicações na Engenharia Química] 
4 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CAPÍTULO 1 
5 
CAPÍTULO 1 
Introdução ao MATLAB© 
 
 
 
1.1 O que é MATLAB©? 
O 
MATLAB© foi 
originalmente 
desenvolvido 
como um 
laboratório de 
matrizes. 
Atualmente, o 
elemento central 
do MATLAB© 
ainda é a matriz. 
Manipulações 
matemáticas de 
matrizes são muito convenientemente implementadas em 
ambientes interativos e fáceis de usar. Além de o MATLAB© 
ser uma linguagem robusta para cálculos científicos e 
apresentar uma interface gráfica de fácil compreensão, 
dispõe também de uma biblioteca abrangente de funções 
matemáticas e de bibliotecas “toolboxes”. O MATLAB© 
possui também um pacote de software chamado 
SIMULINK©. O SIMULINK© foi desenvolvido para 
simular e analisar sistemas dinamicamente. Suporta sistemas 
lineares e não-lineares modelados em tempo contínuo, 
tempo discreto ou uma mistura dos dois. Abordaremos este 
pacote nos Capítulos 3 e 4 deste material. 
1.2 Inicializando o MATLAB© 
 O MATLAB© apresenta em sua tela principal várias 
janelas com propósitos específicos, Figura 1.1. As janelas 
mais utilizadas são: a janela de comandos (Command Window), 
a janela de figuras (Figure Window), a janela de edição (Editor 
Window) e janela de ajuda (Help Window). Além destas quatro 
janelas mais utilizadas, quando em execução, o MATLAB© 
apresenta a janela de lançamento (Lauch Pad Window), a janela 
histórico de comandos (Command History Window), a janela 
área de trabalho (Workspace Window) e a janela de diário 
corrente (Current Directory Window). 
 
Figura 1. 1 - Janelas do MATLAB quando em execução 
 Estas janelas são descritas com suas funções na 
Tabela 1.1. 
Tabela 1. 1 – Janelas do MATLAB© e suas funções. 
Janela Função 
janela de comandos (Command 
Window)a 
Janela na qual se realiza a 
entrada de variáveis e comandos 
e executa programas (scripts). 
janela de figuras (Figure Window) Janela que apresenta a saída gráfica de comandos. 
janela de edição (Editor Window) Cria e procura erros em arquivos contendo programas e funções. 
janela de ajuda (Help Window) Apresenta informações sobre comandos e funções. 
a janela de lançamento (Lauch Pad 
Window) 
Possibilita acessar ferramentas e 
documentações. 
janela histórico de comandos 
(Command History) 
Lista os comandos utilizados na 
janela de comandos. 
janela área de trabalho (Workspace 
Window)b 
Lista as variáveis geradas na 
janela de comando e pelos 
programas executados. 
janela de diário corrente (Current 
Directory Window) 
Mostra os arquivos presentes no 
diretório corrente. 
a A janela de comando é a janela do MATLAB© aberta sempre que o programa é iniciado. 
Os comandos são digitados ao lado do prompt (>>) e executados quando acionada a tecla 
Enter. Quando digitado ponto-e-virula (;) ao final da linha do comando não será gerada 
saída na janela de comando. O símbolo (%) indica comentários. Para limpar a janela de 
comandos basta digitar o comando (clc). A tecla (↑) pode ser utilizada para visualizar os 
comandos já digitados. 
b Para deletar todas a variáveis criadas basta digitar o comando (clear all). 
[MATLAB/SIMULINK©: Aplicações na Engenharia Química] 
6 
1.3 Operações Aritméticas e funções 
matemáticas 
 Da mesma forma que uma calculadora, o MATLAB©, 
realiza operações aritméticas de forma escalar, Tabela 1.2. 
Tabela 1. 2 – Operações aritméticas 
Operação Símbolo Exemplo 
Adição + 8+2 
Subtração - 8-2 
Multiplicação * 8*2 
Divisão à direita / 8/2 
Exponenciação ^ 5^3 
 As operações aritméticas são introduzidas na janela de 
comando (command window). Todo comando no MATLAB© 
é executado com o acionamento da tecla Enter, assim, para 
executar a operação matemática basta digitá-la na janela de 
comando e acionar Enter para o MATLAB© calcular a 
expressão e enviar a resposta à janela de comando. Os 
valores podem ser introduzidos diretamente ou atribuídos a 
variáveis. 
Command window 
>> 5+6/4 
ans = 
 6.5000 
>> (9+6)/3+25^(2/5) 
ans = 
 8.6239 
 Quando valores numéricos são atribuídos às variáveis 
para a realização de operações aritméticas, deve-se levar em 
consideração a característica de o MATLAB© ser “case 
sensitive”, isto é, diferenciar caracteres em caixa alta (letras 
maiúsculas) e caracteres em caixa baixa (letras minúsculas). 
Command window 
>> x=2.3 
x = 
 2.3000 
>> y=5.6 
y = 
 5.6000 
>> z=(3*x-y)+y^2/x^3 
z = 
 3.8775 
 Além das operações aritméticas básicas o MATLAB© 
apresenta diversas funções matemáticas residentes. Para 
executar uma função residente deve-se adicionar o 
argumento da função entre parênteses. Por exemplo, calcular 
o logaritmo na base 10 de um número x qualquer. Para 
realizar o cálculo deve-se inserir o argumento x entre 
parênteses na função: log10 (x),onde, log10 é a função que 
calcula o logaritmo na base 10 e x é o argumento. Da mesma 
forma que podemos realizar cálculos com valores numéricos 
atribuídos às variáveis podemos utilizar as funções residentes 
com variáveis. 
Command window 
>> log10(100) 
ans = 
 2 
>> log10(100+30^2) 
ans = 
 3 
>> x=400 
x = 
 400 
>> log10(x) 
ans = 
 2.6021 
 Na Tabela 1.3 são fornecidas algumas funções 
matemáticas elementares presentes no MATLAB©. 
Tabela 1. 3 – Funções matemáticas elementares e exemplos de 
utilização 
Comando Função Exemplo 
sqrt (x) Calcula a raiz quadrada de x 
>>sqrt(49) 
ans = 
 7 
exp(x) Calcula o exponencial de x 
(ex) 
>>exp(1.5) 
ans = 
 4.4817 
abs(x) Calcula o valor absoluto de x 
>>abs(-40) 
ans = 
 40 
log(x) Calcula o logaritmo natural 
na base e de x, ln(x) 
>>log(46) 
ans = 
 3.8286 
log10(x) Calcula logaritmo na base 10 
de x 
>> log10(46) 
ans = 
 1.6628 
sin(x) Calcula o seno de um ângulo 
x em radianos 
>> sin(180) 
ans = 
 -0.8012 
sind(x) Calcula o seno de um ângulo 
x em graus 
>> sind(180) 
ans = 
 0 
pi Retorna o valor da constante 
pi 
>> pi 
ans = 
 3.1416 
 Para obter mais informações sobre funções 
matemáticas deve-se utilizar o comando help seguido do 
argumento. Exemplo: como calcular o coseno de um ângulo. 
Command window 
>> help cos 
 COS Cosine of argument in radians. 
 COS(X) is the cosine of the elements of X. 
 Pode-se também utilizar o comando lookfor para 
obter informação de funções. Por exemplo, informações 
sobre a função coseno. 
Command window 
>> lookfor cosine 
acos Inverse cosine, result in radians. 
acosd Inverse cosine, result in degrees. 
acosh Inverse hyperbolic cosine. 
acsc Inverse cosecant, result in radian. 
acscd Inverse cosecant, result in degrees. 
acsch Inverse hyperbolic cosecant. 
cos Cosine of argument in radians. 
cosd Cosine of argument in degrees. 
Cosh Hyperbolic cosine. 
1.4 Armazenamento e manipulação de 
dados 
 A forma fundamental de armazenamento do 
MATLAB© é arranjo ou matriz. Os dados são organizados 
em linhas e/ou colunas. A forma mais simples de 
armazenamento é o arranjo de uma linha ou uma coluna 
(unidimensional), o que corresponde a um único número. 
Um conjunto de n×m (bidimensional) é uma lista de 
números organizados em linhas e colunas, uma matriz ou um 
Introdução ao MATLAB© 
7 
vetor (coluna ou linha). Cada componente em um vetor ou 
matriz é conhecido como elemento. 
 No MATLAB© a criação de um vetor ou matriz se dá 
atribuindo os valores dos elementos dos mesmos a uma 
variável ou diretamente (quando estes valores são 
conhecidos). Para realizar a atribuição dos valores deve-se 
colocá-los entre colchetes: 
nome_da_variável=[número_1 número_2…número_n] 
 Para criar um vetor linha os números devem ser 
digitados utilizando espaço ou vírgula para separar os 
elementos e para criar um vetor coluna os números devem 
ser digitados utilizando ponto-e-vírgula para separar os 
elementos: 
nome_da_variável = [numero_1 numero_2 … numero_n] 
(linha) 
nome_da_variável = [numero_1;numero_2;…;numero_n] 
(coluna) 
 Pode-se também criar um vetor linha utilizando uma 
sequência de valores igualmente espaçados, onde m é o 
primeiro elemento do vetor, k é o incremento entre os 
elementos e n é o último elemento do vetor: 
nome_da_variável = m:k:n 
 Uma alternativa para a criação de um vetor é a 
utilização do comando linspace: 
Nome_da_variável = linspace(var_inicial,var_final,n) 
 Exemplos de criação de vetores. 
Command window 
>> altura=[1.78 1.90 1.45 1.76 1.85 1.63] 
altura = 
 1.7800 1.9000 1.4500 1.7600 1.8500 
1.6300 
[vetor linha] 
Command window 
>> idade=[25; 30; 40; 55] 
idade = 
 25 
 30 
 40 
 55 
[vetor coluna] 
Command window 
>> R=[1:3:20] 
R = 
 1 4 7 10 13 16 19 
[vetor linha com incremento de 3] 
Command window 
>> peso=linspace(0,20,6) 
peso = 
 0 4 8 12 16 20 
[vetor linha utilizando linspace (intervalo de 0 a 20 contendo 6 elementos)] 
 Para a criação de um conjunto bidimensional (matriz), 
onde os elementos são dispostos em linhas e colunas, é 
necessário digitar os elementos da linha separando o 
conjunto que compõe a linha por ponto-e-vírgula: 
nome_da_variável = [1ª linha de elementos; 2ª linha 
de elementos;...; última linha de elementos] 
 Os elementos que compõem a matriz podem ser 
numéricos ou expressões matemáticas sendo válido para 
vetores. Lembre-se de que todas as linhas devem conter o 
mesmo número de elementos. Alguns exemplos de criação 
de matrizes são apresentados a seguir. 
Command window 
>> matriz=[3 4 5; 5 8 9; 0 9 8] 
matriz = 
 3 4 5 
 5 8 9 
 0 9 8 
[matriz 3×3 com elementos numéricos] 
Command window 
>> %declaração de variáveis 
>> a1=5; a2=6; a3=7; 
>> matriz=[a1 a2 a3; log(a1) log10(a2) exp(-a3); 
 1 a1*a2 8] 
matriz = 
 5.0000 6.0000 7.0000 
 1.6094 0.7782 0.0009 
 1.0000 30.0000 8.0000 
[matriz 3×3 com elementos numéricos e expressões matemáticas] 
 Note que o símbolo (%) define que o que for digitado 
representa um comentário e o ponto-e-vírgula na declaração 
de a1, a2 e a3 oculta os valores declarados na tela de 
comando. 
Quando declaramos uma variável no MATLAB© 
estamos criando um vetor ou uma matriz (dependendo da 
dimensão). Ao declarar um único elemento estamos criando 
um escalar. Quando declaramos elementos em linhas e 
colunas criamos uma matriz. 
A partir do momento em que se cria uma matriz ou 
vetor pode-se fazer a leitura deste elemento individualmente 
ou em subgrupos. Ao realizar esta operação estamos 
endereçando os elementos do vetor ou da matriz e este 
endereçamento nada mais é que a posição que este elemento 
ocupa na matriz ou no vetor. Além de realizar a leitura deste 
elemento pode-se também reescrever seu valor através deste 
endereçamento. A seguir são apresentados alguns exemplos 
de endereçamento. 
Command window 
>> A=[12 34 32 56 76 54 78 90] 
A = 
 12 34 32 56 76 54 78 90 
>> A(3), A(7) 
ans = 
 32 
ans = 
 78 
[leitura dos elementos 3 e 7 do vetor A] 
Command window 
>> A(3)=100; A(7)=100 
A = 
 12 34 100 56 76 54 100 90 
[atribuindo novos valores aos elementos 3 e 7 do vetor A] 
[MATLAB/SIMULINK©: Aplicações na Engenharia Química] 
8 
Command window 
>> A(6)*A(8) 
ans = 
 4860 
[efetuando cálculos com elementos individuais (6 e 8) do vetor A] 
Command window 
>> B=[1 2 3; 10 30 40; 100 200 300] 
B = 
 1 2 3 
 10 30 40 
 100 200 300 
>> B(2,2) 
ans = 
 30 
[leitura do elemento (2,2) da matriz B] 
Command window 
>> B(1,1)=0; B(2,2)=0; B(3,3)=0 
B = 
 0 2 3 
 10 0 40 
 100 200 0 
[atribuindo novos valores aos elementos da diagonal principal da matriz B] 
Command window 
>> B(3,1)-B(2,3) 
ans = 
 60 
[efetuando cálculos com elementos individuais (3,1) e (2,3) da matriz B] 
 Assim como para as funções matemáticas, o 
MATLAB© apresenta um conjunto de funções residentes 
para criação rápida de alguns vetores e matrizes. Algumas 
destas funções são descritas na Tabela 1.4. 
Tabela 1. 4 - Funções residentes destinadas a criação rápida de 
vetores e matrizes. 
Comando Função Exemplo 
zeros(m,n) 
Cria uma matriz 
(m×n) com todos os 
elementos nulos 
>> zeros(3,5) 
ans = 
 0 0 0 0 0 
 0 0 0 0 0 
 0 0 0 0 0 
magic(n) 
Cria uma matriz 
quadrada de dimensão 
n (elementos 
randômicos) 
magic(3) 
ans = 
 8 1 6 
 3 5 7 
 4 9 2 
rand(m,n) 
Cria umamatriz com 
elementos randômicos 
de dimensão (m×n) 
com valores 
distribuidos entre 0 e 1 
>> rand(2,3) 
ans = 
 0.81 0.12 0.63 
 0.90 0.91 0.09 
Randn(n) 
Cria uma matriz com 
elementos randômicos 
de dimensão n com 
média 0 e variância 1 
com valores 
distribuídos entre 0 e 1 
>> randn(3) 
ans = 
 -0.43 2.76 0.72 
 0.34 -1.34 -0.06 
 3.57 3.03 0.71 
ones(m,n) 
Cria uma matriz 
(m×n) com todos os 
elementos igual a 1 
>> ones(2,4) 
ans = 
 1 1 1 1 
 1 1 1 1 
eye(n) Cria uma matriz 
identidade 
>> eye(4) 
ans = 
 1 0 0 0 
 0 1 0 0 
 0 0 1 0 
 0 0 0 1 
 Como visto anteriormente podemos gerar os dados a 
serem utilizados diretamente no MATLAB©. Contudo, 
pode-se importar dados de interesse de arquivos nos 
formatos .txt (arquivo de texto) e .xls ou .xlsx (excel). 
 Quando os dados forem do tipo numérico (apenas) e 
em formato .txt pode-se utilizar o comando load para a 
importação dos dados. Isto pode ser realizado de duas 
formas (sintaxe): 
Command window 
>> %sintaxe 1 
>> load nome_do_arquivo.txt 
>> %sintaxe 2 
>> nome_variavel=load(‘nome_do_arquivo.txt’) 
 [importando dados numéricos de arquivos .txt] 
 Note que na utilização da sintaxe 1 os dados serão 
importados para uma variável que terá o nome do arquivo 
.txt e na sintaxe 2 o usuário escolhe o nome da variável na 
qual será importado os dados. 
 Quando os dados a serem importados são 
heterogêneos (caracteres e números) deve-se utilizar o 
comando importdata. Por exemplo: um arquivo no 
format .txt que contenha na primeira linha as variáveis: 
Temp1 Temp2 Temp3 Temp4 e na segunda linha 
30;40;35;28 ao executar o comando importdata tem-se: 
Command window 
>> importdata('exemplo.txt') 
ans = 
 data: [30 40 35 28] 
 textdata: {'Temp1 Temp2 Temp3 Temp4'} 
 rowheaders: {'Temp1 Temp2 Temp3 Temp4'} 
 [importando dados heterogêneos de arquivos .txt] 
 Outra extensão de arquivo que pode ser importada é 
o tipo .xls ou .xlsx (arquivos do excel). Para isto pode-se 
utilizar o comando xlsread como demonstrado no 
exemplo abaixo. 
Command window 
>> %sintaxe 1 
>> xlsread(‘nome_do_arquivo.xls’) 
>> %sintaxe 2 
>> nome_variavel=xlsread(‘nome_do_arquivo.xls’) 
 [importando dados numéricos de arquivos .xls ou .xlsx] 
1.5 Operações Matemáticas com 
vetores ou matrizes 
 As operações matemáticas realizadas com os vetores 
e/ou matrizes criadas no MATLAB© podem ser 
representadas em três grupos: operações com escalares, 
matriz (1×1); operações algébricas lineares com vetores ou 
matrizes e operações elemento por elemento. 
1.5.1 Soma e subtração de vetores e matrizes 
 As operações de soma e subtração de vetores e 
matrizes seguem as regras de álgebra linear e podem ser 
realizadas apenas com vetores e/ou matrizes de mesma 
dimensão. Ao realizar uma soma ou subtração de um escalar 
a um vetor e/ou matriz, este valor escalar será adicionado ou 
Introdução ao MATLAB© 
9 
subtraído de todos os elementos do arranjo. Exemplos de 
operações de adição e subtração de vetores e/ou matrizes: 
Command window 
>> vetor_A=[2 4 6] 
vetor_A = 
 2 4 6 
>> vetor_B=[2 5 3] 
vetor_B = 
 2 5 3 
>> vetor_c=vetor_A+vetor_B 
vetor_c = 
 4 9 9 
[adição de vetores] 
Command window 
>> vetor_d=vetor_A-vetor_B 
vetor_d = 
 0 -1 3 
[subtração de vetores (utilizando os vetores anteriores)] 
Command window 
>> vetor_e=vetor_A+10 
vetor_e = 
 12 14 16 
>> vetor_f=vetor_B-10 
vetor_f = 
 -8 -5 -7 
[operações com escalares] 
1.5.2 Multiplicação de matrizes e vetores 
 Para realizar a operação de multiplicação entre 
matrizes deve-se levar em conta as regras de álgebra linear. 
Assim, para que se possa fazer uma multiplicação entre as 
matrizes MAT1 e MAT2 (por exemplo) de acordo com as 
regras de álgebra linear o número de colunas de MAT1 deve 
ser igual a número de linhas de MAT2. Se isto for verdadeiro 
a multiplicação pode ser realizada através do comando de 
multiplicação (*). Exemplo de operação de multiplicação de 
matrizes: 
Command window 
>> MAT1=[1 -4 -8;5 7 0; -1 -6 3] 
MAT1 = 
 1 -4 -8 
 5 7 0 
 -1 -6 3 
>> MAT2=[1; -9; 4] 
MAT2 = 
 1 
 -9 
 4 
>> MAT3=MAT1*MAT2 
MAT3 = 
 5 
 -58 
 65 
[efetuando multiplicação de matrizes] 
1.5.3 Divisão de matrizes e vetores 
 A divisão de matrizes no MATLAB© está diretamente 
associada à solução de um sistema de equações lineares. Os 
operadores relacionados para a operação de divisão de 
matrizes são a divisão à esquerda (\) e a divisão à direita (/). 
 A divisão à esquerda pode ser utilizada na resolução 
de um sistema linear de n equações escritas da forma 
matricial [a][x]=[b], onde: [a] é a matriz dos coeficientes da 
matriz (n×n), [x] é o vetor coluna (n×1) com as incógnitas 
(x1, x2, ... , xn por exemplo) e [b] é um vetor coluna (n×1) de 
constantes. 
 Tendo como exemplo o sistema de equações lineares 
abaixo: 
� 4�� − 2�� − 3�	 + 6�� = 12−6�� + 7�� + 6.5�	 − 6�� = −6.5�� + 7.5�� + 6.25�	 + 5.5�� = 16−12�� + 22�� + 15.5�	 − �� = 17 
e utilizando o operador divisão à esquerda para resolver o 
sistema obtemos: 
Command window 
>> a=[4 -2 -3 6; -6 7 6.5 -6; 1 7.5 6.25 5.5; 
 -12 22 15.5 -1] 
a = 
 4.0000 -2.0000 -3.0000 6.0000 
 -6.0000 7.0000 6.5000 -6.0000 
 1.0000 7.5000 6.2500 5.5000 
 -12.0000 22.0000 15.5000 -1.0000 
>> b=[12;-6.5;16;17] 
b = 
 12.0000 
 -6.5000 
 16.0000 
 17.0000 
>> x=a\b 
x = 
 2.0000 
 4.0000 
 -3.0000 
 0.5000 
[resolução de sistema de equações lineares na forma (n×n) utilizando divisão à 
esquerda] 
1.5.4 Operação por elemento 
 As operações de subtração e adição em matrizes e 
vetores, por definição, já são realizadas elemento por 
elemento. Se quisermos realizar uma multiplicação, uma 
divisão ou uma exponenciação elemento por elemento em 
uma matriz ou um vetor deve-se utilizar os comandos 
apresentados na Tabela 1.5: 
Tabela 1. 5 - Funções dedicadas à operação elemento por elemento 
Operador Função Operador Função 
.* Multiplicação ./ Divisão à direita 
.^ Exponenciação .\ Divisão à esquerda 
Note que antes de cada operador é adicionado um ponto (.) para realizar operações 
elemento a elemento de matrizes e vetores. 
 A seguir são apresentados alguns exemplos de 
operação por elemento em matrizes e vetores. 
Command window 
>> MAT_A=[3 4 5; 4 8 7] 
MAT_A = 
 3 4 5 
 4 8 7 
>> MAT_B=[4 2 2; 1 6 8] 
MAT_B = 
 4 2 2 
 1 6 8 
>> MAT_A.*MAT_B 
ans = 
 12 8 10 
 4 48 56 
[multiplicação por elemento] 
[MATLAB/SIMULINK©: Aplicações na Engenharia Química] 
10 
Command window 
>> MAT_A./MAT_B 
ans = 
 0.7500 2.0000 2.5000 
 4.0000 1.3333 0.8750 
[Divisão por elemento] 
Command window 
>> MAT_B.^MAT_A 
ans = 
 64 16 32 
 1 1679616 2097152 
>> MAT_A.^3 
ans = 
 27 64 125 
 64 512 343 
[Exponenciação por elemento] 
 O MATLAB© dispõe de algumas funções para 
realizar operações de matrizes e vetores. Algumas destas 
funções são descritas na Tabela 1.6. 
Tabela 1. 6 - Funções residentes para operações envolvendo 
matrizes e vetores 
Comando Função Exemplo 
size(mat_a) 
Indica o 
tamanho do 
vetor ou matriz 
(Exemplo: 
tamanho da 
matriz mat_a*) 
>> size(mat_a) 
ans = 
 2 2 
mat_a’ 
Retorna a 
transposta de 
uma matriz 
>> mat_a' 
ans = 
 2 5 
 3 9 
norm(mat_a) Determina a 
norma da matriz 
>> norm(mat_a) 
ans = 
 10.90 
det(mat_a) 
Realiza o cálculodo determinante 
de uma matriz 
>> det(mat_a) 
ans = 
 3 
trace(mat_a) 
Realiza a soma 
dos elementos da 
diagonal 
principal de uma 
matriz 
>> trace(mat_a) 
ans = 
 11 
eig(mat_a) 
Retorna os 
autovalores de 
uma matriz 
>> eig(mat_a) 
ans = 
 0.28 
 10.72 
inv(mat_a) 
Retorna o valor 
da matriz inversa 
de uma matriz 
>> inv(mat_a) 
ans = 
 3.00 -1.00 
 -1.67 0.66 
length(mat_a) 
Retorna o 
número de linha 
de uma matriz 
>> length(mat_a) 
ans = 
 2 
sum(vet_a) 
Realiza a soma de 
todos os 
elementos de um 
vetor 
>> sum(vet_a) 
ans = 
 19 
*matriz de referência: mat_a=[2 3;5 9]; &vetor de referência: vet_a=[3 4 5 7] 
1.6 Gerando Arquivo de funções 
 No MATLAB© um arquivo de função é um programa 
usado como uma função. Este programa possui argumento 
de entrada e saída contendo uma ou mais variáveis que 
podem ser representadas por um escalar, um vetor ou uma 
matriz. Um arquivo de função pode ser utilizado como 
funções matemáticas e subprogramas. Os arquivos de 
funções são criados e editados através da geração de um 
script, Figura 1.2. 
 
Figura 1. 2 – Criando um script para a geração de um programa 
MATLAB©: (a) Abrindo um Script; (b) Janela de programação (editor 
window). 
 Para criação de um arquivo de função a primeira linha 
executável do arquivo deve conter: 
function[argumento_saída]=nome_da_função(argumento_en
trada) 
Exemplo 1.1: Uma função simples para calcular o valor dos 
pagamentos mensais e o total de um financiamento de um 
equipamento onde �� = �����∙��������� ��� !"#"�$ %�$∙"&'()
 pode ser 
escrita como: 
Editor window 
function[pm,pt]=finan(valor,taxa,ano) 
% finan calcula o pagamento mensal e o total do 
% financiamento 
% Argumentos de entrada: 
% valor :valor do financiamento (R$) 
% taxa :taxa anual de juros (%) 
% ano :duração do financiamento (ano) 
% Argumento de saída: 
% pm :valor do pagamento mensal (R$) 
% pt :valor do pagamento total (R$) 
format bank 
taxa_am=0.01*taxa/12; 
pm=valor*taxa_am/(1-1/((1+taxa_am)^(12*ano))); 
pt=pm*12*ano; 
Função 1. 1 – finan.m 
 Para executar a função deve-se digitar entre colchetes 
os argumentos de saída, o nome da função e os argumentos 
de entrada. Por exemplo, para um financiamento de um 
equipamento no valor de R$ 650.000,00 com uma taxa anual 
de juros de 7,5% com 5 anos para o pagamento deseja-se 
saber o valor dos pagamentos mensais e valor total pago ao 
final do financiamento. Os argumentos de saída são: valor 
mensal e total pago. Os argumentos de entrada são: valor do 
financiamento, taxa anual de juros e tempo de pagamento. 
Para a execução da função criada deve-se digitar na janela de 
comando a seguinte linha de comando: 
Command window 
>> [mensal total]=finan(650000,7.5,5) 
mensal = 
 13024.67 
total = 
 781480.00 
[execução da função finan.m] 
Introdução ao MATLAB© 
11 
1.7 Criando Gráficos no MATLAB© 
 Diversos tipos de gráficos podem ser gerados 
utilizando o MATLAB© que podem variar de gráficos 
padrões com eixos lineares, gráficos com eixo logarítmico, 
gráficos de barras e escalas, gráficos polares, gráficos 3D 
entre outros. 
 Para gerar gráficos bidimensionais (2D) utiliza-se o 
comando plot e pode ser gerado pelo comando: 
Plot(x,y) 
onde os argumentos x e y são vetores contendo o mesmo 
número de elementos. Quando executado o comando plot 
a janela com a figura gerada abre automaticamente. Por 
exemplo, se tivermos um vetor x=[1 2 3 4 5 6 7 8 9 10] e um 
vetor y=[1 2 3 5 7 11 13 17 23 37], podemos gerar um gráfico 
y versus x da seguinte forma: 
Command window 
>> x=[1 2 3 4 5 6 7 8 9 10]; 
>> y=[1 2 3 5 7 11 13 17 23 37]; 
>> plot(x,y) 
[gerando gráfico bidimensional] 
 A Figura 1.3 representa o gráfico gerado pelo 
comando plot contendo os conjuntos de dados x e y. 
 
Figura 1. 3 – Gráfico gerado a partir de dois vetores 
 O comando plot possui argumentos opcionais para 
traçar curvas com cores e estilo da linha diferente, bem como 
a cor e o tipo dos marcadores. O comando para adicionar 
estes argumentos é: 
Plot(x,y,’especificadores de linha’) 
 Na Tabela 1.7 são apresentados alguns 
especificadores de linha. 
Tabela 1. 7 – Especificadores do tipo da linha 
Estilo de 
linha 
Especificador 
Estilo de 
linha 
Especificador 
Sólido 
(padrão) 
- Pontuado : 
Traço -- Traço-ponto -. 
 Nas Tabelas 1.8 e 1.9 são apresentados 
especificadores de cor de linha e especificadores de 
marcador respectivamente. 
Tabela 1. 8 – Especificadores de cor de linha 
Cor Especificador Cor Especificador 
Vermelha r Azul b 
Verde g Ciano c 
Magenta m Preto k 
Amarelo y Branco w 
Tabela 1. 9 – Especificadores de marcadores de linha 
Marcador Especificador Marcador Especificador 
Sinal de mais + Asterisco * 
Círculo O Ponto . 
Quadrado s Triângulo > ou < 
Diamante d Losangos d 
 Além de mudar os estilos de linhas, as cores das linhas 
e o tipo do marcador podemos também adicionar título do 
gráfico e título dos eixos. De uma forma geral os comandos 
são: 
xlabel(‘texto no formato string’) 
ylabel(‘texto no formato string’) 
title(‘texto no formato string’) 
 Um exemplo de como utilizar os comandos citados 
nesta seção é representado pelas linhas de comando abaixo 
tendo como resposta a Figura 1.4. 
Command window 
>> dia=[1:1:10]; 
>> celulas=[20 23 25 24 27 30 28 33 36 40]; 
>> plot(dia,celulas,'--r*') 
>> xlabel('DIAS') 
>> ylabel('N° DE BACTÉRIAS [milhões]') 
>> title('Dinâmica de crescimento de bactérias') 
[criando gráficos com argumentos de estilo de linha, cor de linha, tipo de 
marcador e títulos] 
 
Figura 1. 4 – Gráfico com comando de modificação de estilo de linha, 
cor da linha, tipo de marcador e títulos. 
 Pode-se também criar uma matriz de gráficos na 
mesma janela utilizando-se o comando subplot seguido do 
comando plot. 
subplot(m,n,p) 
Plot(x,y) 
 No comando subplot(m,n,p), m representa o 
número de linhas da matriz, n representa o número de 
colunas da matriz e p a posição do gráfico na matriz. 
1 2 3 4 5 6 7 8 9 10
0
5
10
15
20
25
30
35
40
1 2 3 4 5 6 7 8 9 10
20
22
24
26
28
30
32
34
36
38
40
DIAS
N°
 
DE
 
BA
CT
ÉR
IA
S 
[m
ilh
õe
s]
Dinâmica de crescimento de bactérias
[MATLAB/SIMULINK©: Aplicações na Engenharia Química] 
12 
Exemplo 1.2: A matemática pode ser muito romântica. 
Podemos verificar isto criando uma matriz de gráficos com 
as seguintes funções: 
1) * = ��; 
2) �� + *� = 1; 
3) * = 2|�|; 
4) * = −2|,-./�0|; 
5) * = 11 − /|�| − 10� 
6) * = arccos/1 − |�|0 − 7 
Editor window 
% Função y=1/x; 
x1=1:0.01:60; 
y1=1./x1; 
% Função x^2+y^2=1 
x2=-1:0.01:1; 
y2=sqrt(1-x2.^2); 
y21=-sqrt(1-x2.^2); 
% Função 2*|x| 
x3=-1:0.01:1; 
y3=2*abs(x3); 
% Função y=-2|sin(x)| 
x4=0:0.01:6.25; 
y4=-2.*abs(sin(x4)); 
% Função y=sqrt(1-(|x|-1)^2) 
x5=-2:0.01:2; 
y5=sqrt(1-(abs(x5)-1).^2); 
% Função y=arccos(1-|x|)-pi 
x6=-2:0.01:2; 
y6=acos(1-abs(x6))-pi; 
%criando a matriz de gráficos (5x1) 
subplot(1,5,1) 
plot(x1,y1,'LineWidth',4) 
subplot(1,5,2) 
plot(x2,y2,x2,y21,'LineWidth',4) 
subplot(1,5,3) 
plot(x3,y3,'LineWidth',4) 
subplot(1,5,4) 
plot(y4,x4,'LineWidth',4) 
subplot(1,5,5) 
plot(x5,y5,x6,y6,'LineWidth',4) 
Script 1. 1 – Criando uma matriz de gráficos (exemplo 1.2) 
 O resultado da execução deste script não é 
apresentando para não estragar a surpresa. 
 Podemos também construir gráficos em 3D. Para isto 
devemos utilizar dois comandos: um comando para criar a 
malha de valores das variáveis independentes (meshgrid) e 
um comando para criar o gráfico 3D (mesh ou surf). 
Exemplo 1.3: Criar o gráfico de um paraboloide hiperbólico 
cuja função é dada por: 8 = *�− ��. 
Editor window 
% Criando a malha das variáveis independentes 
x=-2:0.1:2; 
y=-1:0.1:1; 
[X,Y]=meshgrid(x,y); 
% Função da f(x,y)=y^2-x^2 
Z= Y.^2-X.^2; 
% Criando matriz de gráficos 
subplot(2,1,1) 
surf(X,Y,Z) 
title('Comando surf: f(x,y)=y^2-x^2') 
subplot(2,1,2) 
mesh(X,Y,Z) 
title('Comando mesh: f(x,y)=y^2-x^2') 
Script 1. 2 – Criando gráfico 3D (exemplo 1.3) 
 
Figura 1. 5 – representação gráfica do exemplo 1.3 
Exemplo 1.4: Novamente vamos mostrar que a matemática 
é romântica, porém agora faremos um gráfico 3D da 
seguinte função: 
9/�, *, 80 = −��8	 − ;<= *�8� + ��� + ;� *� + 8� − 1%	 
Editor window 
% criando a malha das variáveis independetes 
% note que neste caso x,y e z são independentes 
x=-3:0.05:3; 
y=-3:0.05:3; 
z=-3:0.05:3; 
[X,Y,Z] = meshgrid(x,y,z); 
% função (heart) 
F=(-(X.^2).*(Z.^3)-(9/80).*(Y.^2).*(Z.^3))+ ... 
 ((X.^2)+(9/4).*(Y.^2)+(Z.^2)-1).^3; 
 % gerando gráfico 
patch(isosurface(X,Y,Z,F,0),... 
 'FaceColor','w','EdgeColor','r') 
daspect([1 1 1]) 
view(3) 
axis tight equal 
set(gcf, 'Color','w') 
Script 1. 3 – Criando gráfico 3D (exemplo 1.4) 
 Mais uma vez o resultado não será apresentado para 
não estragar a surpresa. 
1.8 Programando no MATLAB 
 Quando realizamos a programação de uma rotina 
computacional estamos dispondo uma sequência de 
comandos que são executados na mesma ordem em que são 
dispostos no programa. Às vezes temos uma complexidade 
na rotina que faz com que os comandos sejam executados 
-2
0
2
-1
0
1
-4
-2
0
2
Comando surf: f(x,y)=y2-x2
-2
0
2
-1
0
1
-4
-2
0
2
Comando mesh: f(x,y)=y2-x2
Introdução ao MATLAB© 
13 
mais de uma vez (realizando um loop) além de algumas 
tomadas de decisões. Este controle de fluxo pode ser 
realizado através de declarações condicionais e as repetições 
por meio de laços de repetições (for e while). Isto é 
possível utilizando os operadores lógicos e relacionais. 
1.8.1 Operadores relacionais e operadores lógicos 
 Os operadores lógicos e relacionais não são utilizados 
sozinhos, mas sim, em conjunto com outros comandos, o 
que permite a tomada de decisões que controlem o fluxo da 
rotina computacional. Um operador relacional realiza uma 
comparação entre duas variáveis do programa determinando 
se a declaração de comparação é falsa ou verdadeira, 0 e 1 
respectivamente (Tabela 1.10). Um operador lógico examina 
uma declaração que pode ser falsa ou verdadeira e produz 
uma resposta verdadeira (1) ou falsa (0), Tabela 1.11. 
Tabela 1. 10 – Operadores relacionais e exemplos de utilização 
Operador relacional função Exemplo 
< Menor que 
>> 5<9 
ans = 
 1 
> Maior que 
>> 5>9 
ans = 
 0 
<= Menor ou igual a 
>> 5>=5 
ans = 
 1 
>= Maior ou igual a 
>> 7<=3 
ans = 
 0 
== Igual a 
>> 3==3 
ans = 
 1 
~= Diferente de 
>> 8~=3 
ans = 
 1 
Tabela 1. 11 - Operadores lógicos e exemplos de utilização 
Operado
r lógico 
Nome Função Exemplo 
& AND 
Retorna o valor falso (0) 
ou verdadeiro (1) 
atuando em dois 
operando. Se os dois 
operandos forem 
verdadeiros, o resultado 
será (1); senão, o 
resultado será (0). 
>> % os 
números 3 e 
7 são ambos 
diferentes 
de zero 
(verdadeir
os), logo a 
resposta 
será 1 
>> 3&7 
ans = 
 1 
| OR 
Retorna o valor falso (0) 
ou verdadeiro (1) 
atuando em dois 
operando. Se qualquer 
um dos operando ou 
ambos forem 
verdadeiros, o resultado 
será (1); senão (os dois 
forem falsos), o resultado 
será (0) 
>> % pelo 
menos um 
dos valores 
(5 e 0) é 
diferente 
de zero, 
logo a 
receberá 1 
>> 5|0 
ans = 
 1 
~ NOT 
Retorna o valor oposto 
de um operando. 
Verdadeiro (1) se o 
operando for falso, e 
falso (0) se operando for 
verdadeiro. 
>> ~3 
ans = 
 0 
ou 
>> ~0 
ans = 
 1 
1.8.2 Declarações condicionais 
 As declarações condicionais permitem selecionar ou 
executar seções específicas de códigos em uma rotina 
computacional mudando o fluxo da programação por meio 
de expressões de controle tais como: if-end, if-else-
end e if-elseif-else-end, Figuras 1.5 a 1.7. 
 
% Declaração condicional 
... 
if 
 comandos 
end 
... 
Figura 1. 6 – Estrutura de declaração condicional if-end 
 
% Declaração 
condicional 
... 
if 
 comandos (1) 
else 
 comandos (2) 
end 
... 
Figura 1. 7 – Estrutura de declaração condicional if-else-end 
 
%Declaração 
condicional 
... 
if 
 comandos (1) 
elseif 
 comandos (2) 
else 
 comandos (3) 
end 
... 
Figura 1. 8 – Estrutura de declaração condicional if-elseif-else-
end 
Exemplo 1.5: Crie uma rotina para determinar as raízes de 
uma equação quadrática do tipo: >�� + ?� + @ = 0, onde 
os coeficientes a, b e c serão as entradas requeridas no 
programa. Para testar a rotina desenvolvida serão utilize as 
seguintes equações de segundo grau: 
1) �� + 5� + 6 = 0 onde �� = −2 e �� = −3 
2) �� + 4� + 4 = 0 onde �� = �� = −2 
3) �� + 2� + 5 = 0 onde �� = −1 + 2B e �� = −1 − 2B. 
 
 
[MATLAB/SIMULINK©: Aplicações na Engenharia Química] 
14 
Editor window 
% Resolução de equações de Segundo Grau: ax^2+bx+c=0 
% Definição das variáveis: 
% a : coeficiente do termo x^2; 
% b : coeficiente do termo x; 
% c : constante da equação; 
% delta : discriminante da equação; 
% p_imag : parte imaginária da equação (caso ... 
% seja raizes complexas); 
% p_real : parte real da equação (caso seja ... 
% raízes complexas); 
% x1 : primeira raiz da equação; 
% x2 : segunda raiz da equação; 
% inicio do programa 
disp('--------------------------------------------'); 
disp('PROGRAMA PARA SOLUÇÃO DE RAIZES DE ... 
 EQUAÇÕES SEGUNDO GRAU'); 
disp('--------------------------------------------'); 
%leitura dos coeficiente a, b e c 
a=input('Entre com o valor de a: '); 
b=input('Entre com o valor de b: '); 
c=input('Entre com o valor de c: '); 
% cálculo do discriminante 
delta=b^2-4*a*c; 
% determinação da raiz (depende do valor do ... 
% discriminante) 
%Ambas as raizes são reais 
if delta > 0 
 x1=(-b+sqrt(delta))/(2*a); 
 x2=(-b-sqrt(delta))/(2*a); 
 disp('A equação possui duas raizes reais: '); 
 fprintf ('x1= %f\n', x1); 
 fprintf ('x2= %f\n', x2); 
% Ambas as raizes são iguais 
elseif delta==0 
 x1=(-b)/(2*a); 
 disp('A equação possui raizes iguais: '); 
 fprintf('x1=x2= %f\n', x1); 
% A equação possui raizes complexas 
else 
 p_real=(-b)/(2*a); 
 p_imag=sqrt(abs(delta))/(2*a); 
 disp('A equação possui raizes complexas: '); 
 fprintf('x1= %f +i %f\n', p_real, p_imag); 
 fprintf('x2= %f -i %f\n', p_real, p_imag); 
end 
Script 1. 4 – Utilização da declaração condicional if-elseif-
else-end 
 Note que além da aplicação da declaração condicional 
será utilizado também o comando input. O comando 
input exibe um marcador na Janela de Comandos e espera 
o usuário digitar uma resposta 
 A declaração condicional if-elseif-else-end 
foi utilizada por se tratar da mais complexa (em termos de 
sintax) dentre as declarações citadas. Uma vez entendido a 
forma de estruturação da declaração if-elseif-else-
end as outras declarações também são entendidas. Ao 
executar o script desenvolvido as respostas serão: 
Editor window 
----------------------------------------------- 
PROGRAMA PARA SOLUÇÃO DE RAIZES DE EQUAÇÕES SEGUNDO 
GRAU 
----------------------------------------------- 
Entre com o valor de a: 1 
Entre com o valor de b: 5 
Entre com o valor de c: 6 
A equação possui duas raizes reais: 
x1= -2.000000 
x2= -3.000000 
[resultado da resolução da equação 1] 
 
Editor window 
----------------------------------------------- 
PROGRAMA PARA SOLUÇÃO DE RAIZES DE EQUAÇÕES SEGUNDO 
GRAU 
-----------------------------------------------Entre com o valor de a: 1 
Entre com o valor de b: 4 
Entre com o valor de c: 4 
A equação possui raizes iguais: 
x1=x2= -2.000000 
[resultado da resolução da equação 2] 
Editor window 
------------------------------------------ 
PROGRAMA PARA SOLUÇÃO DE RAIZES DE EQUAÇÕES SEGUNDO 
GRAU 
------------------------------------------ 
Entre com o valor de a: 1 
Entre com o valor de b: 2 
Entre com o valor de c: 5 
A equação possui raizes complexas: 
x1= -1.000000 +i 2.000000 
x2= -1.000000 -i 2.000000 
[resultado da resolução da equação 3] 
1.8.2 Laços de repetição ou loops 
 Quando se realiza a implementação de uma rotina 
computacional determinamos uma sequência lógica de 
execução dos comandos, porém, podemos através de um 
laço de repetição, alterar a sequência ou fluxo do programa 
repitindo a execução dos comandos várias vezes 
consecutivamente. Um exemplo de laço de repetição é o 
for-end. 
 
%Laço de repetição 
... 
for k=f:s:t %loop 
 comando 
end 
... 
Figura 1. 9 – Estrutura de um laço de repetição for-end 
Exemplo 1.6: Crie uma rotina utilizando o laço de repetição 
for-end para realizar as análises estatísticas (média e desvio 
padrão) do conjunto de dados apresentados na Tabela 1.12. 
Tabela 1. 12 – Dados para o exemplo 1.6 
Massa de cloreto de sódio 
x (g) 3,0 3,5 2,9 3,1 3,0 3,2 2,8 
Editor window 
% Cálculo da média e do desvio padrão de um 
% conjunto de dados; 
% Definição das variáveis: 
% i : loop index; 
% n : números de dados de entrada; 
% des_pad : desvio padrão; 
% soma_x : somatório dos dados de entrada; 
% soma_x2 : somatótio do quadrado dos dados de 
entrada; 
% x : valor do dado de entrada; 
% media_x : media dos dados de entrada; 
disp('--------------------------------------------'); 
Introdução ao MATLAB© 
15 
disp('ANÁLISE ESTATÍSICA DE UM CONJUNTO DE DADOS'); 
disp('--------------------------------------------'); 
% inicialização das variáveis soma_x e soma_x2; 
soma_x=0; 
soma_x2=0; 
% entrada dos números de dados do conjunto analisado 
n=input('Entre com o número de dados: '); 
% validação do número de dados do conjunto. Não se 
% pode realizar análise estatística com um 
% conjunto contendo menos de 2 dados. 
if n<2 
 disp('ERRO: Conjunto contendo número de dados 
insuficiente para análise.'); 
 disp(' Entre com dois ou mais dados'); 
else 
 % inicio do laço de repetição 
 for i=1:n 
 % leitura do dados do conjunto 
 x=input( 'Entre com o valor de x: '); 
 % calculo das somas 
 soma_x=soma_x+x; 
 soma_x2=soma_x2+x^2; 
 end 
 % fim do laço de repetição 
% inicio dos cálculos estatísticos 
% cálculo da média 
media_x=soma_x/n; 
%cálculo do desvio padrão 
des_pad=sqrt((n*soma_x2-soma_x^2)/(n*(n-1))); 
%respostas 
disp('--------------------------------------------'); 
fprintf('A média do conjunto de dados é : 
%f\n', media_x); 
fprintf('O desvio padrão do conjunto de dados é : 
%f\n', des_pad); 
fprintf('0 número de dados do conjunto é : 
%f\n',n); 
disp('--------------------------------------------'); 
end 
Script 1. 5 – Utilização do laço de repetição for-end 
 Executando o script acima para o seguinte conjunto 
de dados [3.0, 3.5, 2.9, 3,1, 3.0, 3.2, 2.8] temos como 
resposta: 
Editor window 
----------------------------------------------------- 
ANÁLISE ESTATÍSICA DE UM CONJUNTO DE DADOS 
----------------------------------------------------- 
Entre com o número de dados: 7 
Entre com o valor de x: 3.0 
Entre com o valor de x: 3.5 
Entre com o valor de x: 2.9 
Entre com o valor de x: 3.1 
Entre com o valor de x: 3.0 
Entre com o valor de x: 3.2 
Entre com o valor de x: 2.8 
----------------------------------------------------- 
A média do conjunto de dados é : 3.071429 
O desvio padrão do conjunto de dados é : 0.228869 
0 número de dados do conjunto é : 7.000000 
----------------------------------------------------- 
 [resultado da análise estatística utilizando laço de repetição for-end] 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
[MATLAB/SIMULINK©: Aplicações na Engenharia Química] 
16 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CAPÍTULO 2 
17 
CAPÍTULO 2 
SIMULINK© 
 
 
2.1 Introdução 
 O SIMULINK© é um pacote de bibliotecas para 
modelar, simular e analisar modelos dinâmicos e utiliza uma 
interface gráfica com o usuário para a construção dos 
modelos a partir de um diagrama em blocos, por meio de 
operações de clique-e-arraste do mouse. Desta forma a 
criação de modelos é fácil e ágil. Ele inclui bibliotecas de 
blocos contendo fontes, visualizadores, componentes 
lineares, não lineares e conectores, com a opção de criação 
ou personalização de blocos. Suporta modelos lineares e 
não-lineares e sistemas contínuos e discretos. Muitas outras 
ferramentas do MATLAB© podem ser usadas junto com o 
SIMULINK©, e é por isso que o MATLAB© e o 
SIMULINK© são integrados. Você pode simular, analisar e 
revisar seus modelos em qualquer ambiente. 
 Para acessar o SIMULINK© abra o MATLAB© e na 
barra principal clique no botão: Simulink Library, Figura 
2.1. 
 
Figura 2. 1– Botão para acessar o Simulink® 
 Ao clicar no botão da barra principal do MATLAB© 
abrirá a tela principal do SIMULINK©, Figura 2.2. 
 
Figura 2. 2 – Tela principal do SIMULINK© 
 Na tela principal do SIMULINK© clique no botão 
New Model (destacado na Figura 2.2) para abrir a janela 
para criar o modelo, Figura 2.3. 
 
Figura 2. 3 – Janela do Simulink® destinada à criação do modelo de 
blocos 
2.2 Criando um modelo no 
SIMULINK© 
 No simulink® tem-se a opção de resolver sistemas 
lineares e não-lineares, modelados continuamente, 
discretamente ou uma mescla dos dois tempos de 
amostragem. Após definir o modelo de estudo, pode-se 
realizar a simulação do modelo “brincando” com suas 
condições operacionais, realizando assim uma análise de 
causa e efeito das variáveis do processo. Os resultados 
obtidos na simulação podem ser enviados para o workspace 
do MATLAB® para serem utilizados posteriormente. Para 
iniciarmos a utilização do SIMULINK© vamos construir um 
modelo simples. O modelo representa a integral de uma 
onda senoidal. Para a criação do modelo deve-se 
primeiramente abrir um novo arquivo no SIMULINK© 
conforme indicado na Figura 2.3. Dentro da janela destinada 
[MATLAB/SIMULINK©: Aplicações na Engenharia Química] 
18 
à criação do modelo iremos arrastar os seguintes blocos das 
bibliotecas (do Simulink library browser), Figuras 2.4 a 2.7. 
 
Figura 2. 4 – Localização do bloco Sine Wave (SimulinkSources 
Sine Wave) 
 
Figura 2. 5 – Localização do bloco Scope (SimulinkSinks Scope) 
 
Figura 2. 6 – Localização do bloco Integrator 
(SimulinkContinuous Integrator) 
 
Figura 2. 7 – Localização do bloco Mux (Simulink Signals Routing  
Mux) 
 Copie todos os blocos acima descritos para a janela de 
criação do modelo. A janela contendo os blocos deverá ficar 
conforme Figura 2.8: 
 
Figura 2. 8 – Janela com os blocos (Sine Wave, Integrator, Mux e Scope) 
 Todos os blocos do SIMULINK© apresentam um 
símbolo que indica um ou mais sinais de entrada e um 
símbolo que indica um ou mais sinais de saída. O símbolo é 
representado pelo sinal “>” presente no bloco. Caso o 
símbolo se apresente totalmente aberto, , indica que naquela 
posição deverá ser conectado um sinal de entrada. Caso o 
símbolo se apresente totalmente fechado, , indica que 
naquela posição deverá ser conectado um sinal de saída. 
 Para a conexão dos blocos, basta segurar o botãoesquerdo do mouse pressionado e puxar a linha até atingir a 
meta desejada. Por exemplo, para conectar o bloco Sine Wave 
no bloco Mux deve-se posicionar o mouse na saída do bloco 
Sine Wave e arrastar até o bloco Mux. Conforme Figura 2.9. 
 
Figura 2. 9 – Link dos blocos do SIMULINK© 
 Realizando o mesmo procedimento para todos os 
blocos obtemos o modelo pronto para simular e analisar os 
resultados. A figura 2.10 abaixo representa o modelo pronto. 
 
Figura 2. 10 – Modelo de blocos do SIMULINK© completo 
 Note que o sinal que entra no bloco Integrator é 
derivado do sinal que sai do bloco Sine Wave. Esta é uma 
característica interessante do SIMULINK©. Você pode 
utilizar quantas vezes necessitar o sinal fazendo uma ligação 
diretamente na linha. Esta ligação será representada como se 
fosse um “nó” na linha. 
 Realizada a montagem do modelo pode-se fazer a 
simulação do mesmo clicando no botão Start do menu do 
SIMULINK©, Figura 2.11. 
Sine Wave
Scope
Integrator
1
s
Sine Wave
Scope
Integrator
1
s
Sine Wave
Scope
Integrator
1
s
SIMULINK© 
19 
 
Figura 2. 11 – Iniciando a simulação no SIMULINK© 
 Após a execução da simulação deve-se dar um duplo 
clique no bloco Scope para que o gráfico com os resultados 
apareça. Note que a simulação foi realizada em uma grandeza 
de “10 unidades de tempo”. Para mudar a unidade de tempo 
de simulação deve-se adicionar o valor da unidade no espaço 
destinado ao tempo de simulação conforme Figura 2.12. 
 
Figura 2. 12 – Mudança do tempo de simulação 
 Neste caso mudou-se a simulação de “10 unidades de 
tempo” para “20 unidades de tempo”. Os resultados obtidos 
são apresentados na figura 2.13a e 2.13b. 
 
Figura 2. 13 – Resultados da simulação da integral de um sinal: (a) tempo 
de simulação de 10 unidades de tempo, (b) tempo de simulação 20 
unidades de tempo. 
 Os resultados obtidos na simulação podem como dito 
anteriormente, ser visualizados instantaneamente através do 
bloco Scope ou gravados em uma variável no Workspace do 
MATLAB© e salvos para posterior utilização. Antes de 
ilustrar a exportação dos dados para o Workspace do 
MATLAB©, será adicionado um bloco para calcular também 
a derivada do sinal Sine Wave, utilizando o bloco Derivate da 
Continuous Library, Figura 2.14. 
 
Figura 2. 14 – Localização do bloco Derivate 
Para exportar os dados para o Workspace deverá ser 
utilizado o bloco To Workspace da Sinks Library, Figura 2.15: 
 
Figura 2. 15 – Localização do bloco To Workspace 
 O bloco deverá ser colocado após o bloco Mux, desta 
forma, os resultados provenientes do sinal, da derivada do 
sinal e da integral do sinal serão exportados para o Workspace 
do MATLAB©. Como os sinais são provenientes do bloco 
Mux, será criada uma matriz 3×n. Pode-se também adicionar 
um bloco To Workspace para cada um dos resultados (sinal, 
derivada e integral), obtendo variáveis diferentes no 
Workspace. O modelo final deverá ser representado conforme 
Figura 2.16. 
 
Figura 2. 16 – Modelo de blocos final do SIMULINK© 
[MATLAB/SIMULINK©: Aplicações na Engenharia Química] 
20 
 O bloco To Workspace requer uma configuração 
prévia para a sua utilização. Clicando duas vezes no bloco To 
Workspace abrirá a tela de configuração, Figura 2.17. Será 
necessário configurar apenas dois parâmetros o Variable 
name e o Save Format. O padrão é Variable name: simout e Save 
Format: Structure. Esses parâmetros deverão ser modificados 
para: Variable name: nome qualquer (neste caso vamos utilizar 
Resultados) e Save Format: Array. 
 
Figura 2. 17 – Configuração do bloco To Workspace 
 Após a configuração do bloco To Workspace, o modelo 
representado pela figura 2.16 agora será representado pela 
Figura 2.18: 
 
Figura 2. 18 – Modelo de blocos final do SIMULINK© após 
configuração do bloco To Workspace 
Ao executar a simulação será criado no Workspace do 
MATLAB© a variável tout e a variável Resultado (contendo as três 
respostas do nosso modelo). A variável tout representa um vetor 
contendo a variável independente (o tempo de simulação) e a 
variável Resultado representa uma matriz contendo os resultados do 
sinal, da derivada do sinal e da integral do sinal. Os resultados são 
exportados para o Workspace do MATLAB©. A Figura 2.19 
representa os dados exportados. 
 
Figura 2. 19 – Dados gerados no Workspace do MATLAB© 
 Os resultados podem ser gravados e utilizados para 
gerar os gráficos diretamente no MATLAB©. Para plotar o 
gráfico deve-se utilizar o comando plot no prompt do 
MATLAB©, Figura 2.20. 
 
Figura 2. 20 – Gerando um gráfico com os resultados obtidos 
 O gráfico gerado no MATLAB© tem a vantagem de 
poder ser configurado de acordo com a preferência do 
usuário. Para alterar as propriedades do gráfico clique no 
botão de Propriedades do Gráfico, Figura 2.21a. Podemos 
adicionar nome para a figura e para os eixos, bem como 
configurar as escalas do gráfico, Figura 2.21b. 
 
Figura 2. 21 – Alterando as propriedades de um gráfico: (a) Acessando as 
propriedades do gráfico; (b) Adicionando Título e nome de eixos 
 Para utilizar o gráfico gerado no MATLAB© basta 
selecionar Copy Figure no menu da janela. A vantagem desta 
forma de gerar gráficos é a qualidade do mesmo. Quando 
SIMULINK© 
21 
geramos o gráfico pelo bloco Scope do simulink não se pode 
realizar esta configuração, Figura 2.22. 
 
Figura 2. 22 – Copiando o gráfico para a área de transferência do 
Windows: (a) Procedimento para copiar; (b) Gráfico após transferência 
para arquivo 
2.3 Configurando os blocos os blocos 
SIMULINK© 
 Todos os blocos do SIMULINK© apresentam uma 
configuração própria. Então, para tratarmos de configuração 
de blocos, serão utilizados alguns exemplos. 
2.3.1 Configuração das propriedades dos blocos 
 Todos os blocos, ao clicar duas vezes, abrem a janela 
de configuração de seus parâmetros. Para cada bloco há um 
tipo de configuração. Vamos analisar as configurações dos 
blocos utilizados para criar o modelo representado na Figura 
2.16 (seção 2.2). Para isso vamos retirar o bloco Mux do 
modelo e adicionar mais entradas no bloco Scope e comparar 
a diferença, Figura 2.23. 
 
Figura 2. 23 – Modelo SIMULINK© utilizado na configura dos 
parâmetros dos blocos 
Configurando o bloco Scope: Clique duas vezes no bloco 
Scope e aparecerá a tela do gráfico sem nenhuma “curva” 
plotada. Pressione o icone da função Parameters no menu da 
janela do Scope. Na janela ‘Scope’ Parameters configure o 
parâmetro “number of axes” mudando seu valor de 1 para 3 
(número de entradas desejadas no momento). O bloco 
Scope passará a ter 3 entradas, Figura 2.24(b). Quando a 
simulação for realizada o gráfico resultante será formado por 
três curvas. As curvas representam os sinais de entrada do 
bloco, Figura 2.25. 
 
Figura 2. 24 – Configuração do bloco Scope: (a) Configuração do 
número de eixos; (b) bloco em detalhe após configuração do número de 
eixo 
 
Figura 2. 25 – Gráfico gerado após configuração do número de eixos 
Configurando o bloco Sine Wave: Abra a janela de 
configuração do bloco Sine Wave clicando duas vezes no bloco. 
Na janela Source Block Parameters: Sine Wave configure os 
parâmetros ‘Amplitude’ e ‘Frequency (rad/sec) trocando seus 
valores de 1 para 5 e 1 para 2 respectivamente. A 
configuração do bloco e a resposta da simulação com os 
novos parâmetros são apresentados na Figura 2.26. 
 
Figura 2. 26 – Configuração do bloco Sine Wave: (a) Configuração dos 
parâmetros; (b) Resposta da simulação após a configuração dos 
parâmetros amplitude e frequency. 
Configurando o bloco Integrator: No bloco 
Integrator tem-se a possibilidade de calcular a integral limitada 
do sinal. Para isto clique duas vezes no bloco referente à 
integral. Na janela Function Block Parameters: Integrator[MATLAB/SIMULINK©: Aplicações na Engenharia Química] 
22 
configure os parâmetros: Initial Condition passando de 0 para 
-1. Selecione o Checkbox “Limit Output" para habilitar a 
configuração do limite inferior e superior da integral. Após 
habilitada a configuração deverá ser: “Upper saturation limit” 
igual a 3 e “Lower saturation limit” igual a -1. Note que, depois 
de realizada a configuração de limite da integral o bloco 
Integrator será representado de forma diferente, Figura 2.27. 
Caso não seja mudado o limite de integração, o bloco 
permanece com a aparência original. 
 
Figura 2. 27 – Configuração do bloco Integrator: (a) Mudança dos 
parâmetros Initial Condition e Limit Output; (b) nova aparência do 
bloco Integrator com a mudança dos limites de integração 
2.4 Resolvendo equações diferenciais 
utilizando o SIMULINK© 
 Agora que temos uma ideia básica de como funciona 
e como configurar alguns blocos do SIMULINK©, 
abordaremos a parte de maior interesse: como resolver 
equações diferenciais utilizando o SIMULINK©. A 
abordagem aqui será de uma forma mais direta. Note que 
não mais aparecerão as figuras indicando onde encontrar os 
blocos do SIMULINK©. 
Exemplo 2.1: Resolver a equação: 
CDC� = −2�	 + 12�� −20� + 8,5 em um intervalo de x=0:4 utilizando o 
SIMULINK©. A condição inicial do problema é y(0)=1. 
 
Figura 2. 28 – Modelo SIMULINK© para resolução do exemplo 1 
 Para a criação da estrutura de blocos representado 
pela Figura 2.28 será preciso: um bloco de integração 
(integrator), um bloco de saída de gráfico (scope), um bloco 
para visualização do valor final da solução (display), um 
blocos de função definida pelo usuário (fcn), um bloco de 
tempo (clock) que será utilizado com a variável independente 
x e um bloco para gravar os dados (To Workspace). A 
configuração das condições iniciais é feita no menu: 
simulation  configuration parameters (para maiores detalhes 
veja Capítulo 3). A solução da EDO é apresentada na Figura 
2.29. 
 
Figura 2. 29 - Solução da EDO do exemplo 1 
Exemplo 2.2: Resolver a equação: 
CDC� = D$���$�� em um 
intervalo de t=0:10 utilizando o SIMULINK©. A condição 
inicial do problema é y(0)=2. 
 Para a criação da estrutura de blocos acima, será 
preciso, Figura 2.30: um bloco de integração (integrator), um 
bloco de saída de gráfico (scope), um bloco para visualização 
do valor final da solução (display), um bloco de tempo (clock) 
que será utilizado como variável independente t e um bloco 
para gravar os resultados (To Worwspace). A configuração das 
condições iniciais é feita no menu: simulation  configuration 
parameters. Para maiores detalhes ver seção 2.5. A solução da 
EDO é apresentada na Figura 2.31. 
 
Figura 2. 30 - Modelo SIMULINK© para a resolução do exemplo 2 
 
Figura 2. 31 – Solução da EDO do exemplo 2 
 
 
0 0.5 1 1.5 2 2.5 3 3.5 4
1
1.5
2
2.5
3
3.5
4
4.5
5
variável independente (x)
va
ri
áv
ei
 d
ep
en
de
nt
e 
(y
)
0 2 4 6 8 10
0.5
1
1.5
2
variávei independente (t)
va
ri
áv
el
 d
ep
en
de
nt
e 
(y
)
CAPÍTULO 3 
23 
 
CAPÍTULO 3 
SIMULINK©: Bibliotecas e Blocos 
 
 
3.1 Principais configurações do 
SIMULINK© 
 O SIMULINK possui algumas configurações que nos 
permitem alterar: o tempo e o passo de simulação, as opções 
de resolução e os métodos numéricos utilizados na 
simulação. Nas Tabelas 3.1 a 3.3 são apresentadas essas 
configurações. 
Tabela 3. 1 – Simulation Time (tempo de simulação) 
Opção descrição 
Start time início da simulação 
Stop time término da simulação 
Tabela 3. 2 – Solver Options (opção de resolução) 
Opção descrição 
Variable-step / fixed-step1 utilizar passo variado ou 
fixo 
Ode45 (Dormard Prince) método de resolução 
(Tabela 3.3) 
Max step size passo máximo 
Min step size passo mínimo 
Initial step size passo inicial 
Relative tolerance tolerância relativa para 
monitoramento e controle 
de erro a cada passo 
utilizado pelas rotinas solver 
Absolute tolerance tolerância absoluta para 
monitoramento e controle 
de erro a cada passo 
utilizado pelas rotinas solver 
 
 
 
 
1 No caso de resoluções com passo variável é: possível modificar o intervalo de 
tempo entre as iterações (step) durante a simulação; é possível detectar estados de 
“error control” e “zero rossing”. No caso de resoluções com passo fixo: não é 
Tabela 3. 3 – Métodos de resolução presentes no SIMULINK© 
Método Descrição 
P
as
so
 V
ar
iá
ve
l 
Ode45 Resolução por Runge-Kutta (4,5) non-stiff de 
ordem média 
Ode23 Resolução por Runge-Kutta (2,3) non-stiff de 
ordem baixa 
Ode113 Resolução por Adams-Bahforth Moulton 
PECE non-stiff de ordem variável 
Ode15s Resolução por NDF (Numerical 
Differentiation Formulas) 
Ode23s Resolução por Rosenblock de ordem 2 
Ode23t Resolução de ordem baixa (regra 
trapezoidal/interpolação livre) 
Ode23tb Resolução de TR-BDF2 de ordem baixa 
P
as
so
 F
ix
o 
Discrete Resolução discreta 
Ode5 Resolução por versão discreta de Runge-Kutta 
(4,5) 
Ode3 Resolução por versão discreta de Runge-Kutta 
(2,3) 
Ode2 Resolução por método de Heun (Euler 
melhorado) 
 Ode1 Resolução por Euler 
3.2 Biblioteca de Blocos 
 As principais bibliotecas são apresentadas nas Tabelas 3.4 
a 3.24 divididas e sub-biblitecas. 
3.2.1 CONTINUOUS: Blocos de sistemas 
dinâmicos contínuos 
Tabela 3. 4 – Biblioteca: Continuous –Time Linear System 
Bloco SIMULINK Nome Descrição 
 
Integrator Gera a integral do 
sinal de entrada 
 
possível modificar o intervalo de tempo entre as iterações (step) durante a 
simulação; o passo é constante e o valor “auto” é dado pela seguinte fórmula: [Max 
step size] = ([Stop time] – [Start time])/50; não é possível detectar estados de 
“error control” e “zero crossing”. 
[MATLAB/SIMULINK©: Aplicações na Engenharia Química] 
24 
Continuação Tabela 3.4 
 
Derivative Gera a derivada do 
sinal de entrada 
 
State-Space Implementa sistema 
linear state-space 
 
Transfer 
Fcn 
Implementa função 
de transferência 
 
Zero-Pole 
Implementa função 
de transferência em 
termos de zeros e 
polos 
Tabela 3. 5 - Biblioteca: Continuous –Time Delays 
Bloco SIMULINK Nome Descrição 
 
Transport 
Delay 
Gera um atraso fixo 
no transporte do 
sinal 
 
Variable 
Transport 
Delay 
Gera um atraso 
variável no 
transporte do sinal 
3.2.2 DISCONTINUITIES: Blocos que 
implementam sistemas descontínuos 
Tabela 3. 6 - Biblioteca: Discontinuities 
Bloco SIMULINK Nome Descrição 
 
Saturation Limita o intervalo de 
saída do sinal 
 
Dead Zone Define uma região de 
valor zero (0) 
 
Rate 
Limiter 
Limita a taxa de 
modificação do sinal 
de entrada 
 
Relay Chaveia a saída para 
duas constantes 
 
Quantizer 
Discretiza a entrada 
para um intervalo 
específico 
 
Hit 
Crossing 
Detecta ponto de 
cruzamento 
3.2.3 DISCRETE: Blocos de sistemas dinâmicos 
discretos 
Tabela 3. 7 - Biblioteca: Discrete –Time Linear Systems 
Bloco SIMULINK Nome Descrição 
 
Unit delay Gera um atraso na 
transmissão do sinal 
 
Discrete-
Time 
Integrator 
Gera integral 
discreta do sinal de 
entrada 
 
Continuação Tabela 3.7 
 
Discrete 
Filter 
Implementa filtro 
discreto 
 
Discrete 
 Transfer 
Fcn 
Implementa função 
de transferência 
discreta 
 
Discrete 
 Zero-Pole 
Implementa função 
de transferência 
discreta em termos 
de zeros e pólos 
 
Discrete 
 State-
Space 
Implementa sistema 
linear state-space 
Tabela 3. 8 - Biblioteca: Discrete – Sample & Hold Delay 
Bloco SIMULINK Nome Descrição 
 
Memory Retornao sinal do 
instante anterior 
 
First-Order 
Hold 
Amostra o valor 
anterior do sinal 
 
Zero-Order 
Hold 
Segura os sinais por 
um determinado 
período de tempo 
3.2.4 LOOK-UP TABLES: Blocos de pesquisa em 
tabela (matriz) 
Tabela 3. 9 - Biblioteca: Look-up Tables 
Bloco SIMULINK Nome Descrição 
 
Lookup 
Table 
Dada uma função f e 
dois vetores x e y, 
calcula uma 
aproximação para 
uma função 
 
Lookup 
Table (2-D) 
Semelhante a 
Lookup Table, para 
uma função f de duas 
dimensões 
 
Lookup 
Table (n-D) 
Semelhante a 
Lookup Table, para 
uma função f de n 
dimensões 
 
PreLookup 
 Index 
Search 
Dado um vetor, 
retorna o índice da 
posição relativa do 
dado de entrada 
 
Interpolati
on (n-D) 
Using 
PreLookup 
Semelhante ao 
PreLookup Index 
Search para n 
dimensões 
 
Direct 
Lookup 
Table (n-D) 
Busca direta em 
matriz. Dados i, j e 
m, retorna m(i,j). 
Começa a indexação 
com 0. 
SIMULINK©: Bibliotecas e Blocos 
25 
3.2.5 MATH OPERATION: Blocos de operadores 
matemáticos 
Tabela 3. 10 – Biblioteca: Math Operation – Math Operation 
Bloco SIMULINK Nome Descrição 
 
Sum Soma 
 
Product Produto matricial 
 
Dot Product Produto escalar 
 
Abs Valor absoluto 
 
Sign Sinal 
 
MinMax Mínimo/máximo 
 
Gain Ganho 
 
Slider Gain Ganho (com 
interface de barra) 
 
Math Function Função 
matemática 
 
Rounding 
Function 
Função de 
arredondamento 
 
Trigonometric 
Function 
Função 
trigonométrica 
 
Algebraic 
Constraint Restrição algébrica 
 
Polynomial Função polinomial 
Tabela 3. 11 – Biblioteca: Math Operation –Vector Operations 
Bloco SIMULINK Nome Descrição 
 
Assigment Atribuição 
 
Matrix 
Concatenation 
Concatenação de 
matrizes 
 
Reshape Reformatação de 
matriz 
Tabela 3. 12 – Biblioteca: Math Operation – Logic Operations 
Bloco SIMULINK Nome Descrição 
 
Bitwise 
Operator 
Operador lógico 
binário 
 
Continuação da Tabela 3.12 
 
Combinatorial 
Logic Lógica combinatória 
 
Logical 
Operator 
Operador lógico 
(OR, AND, etc.) 
 
Relational 
Operator 
Operador relacional 
(<,>,<=,>=, etc) 
Tabela 3. 13 – Biblioteca: Math Operation – Complex Vector 
Conversion 
Bloco SIMULINK Nome Descrição 
 
Complex to 
Magnitude-
Angle 
Converte número 
complexo em 
ângulo 
 
Magnitude-
Angle 
To Complex 
Converte ângulo 
em número 
complexo 
 
Complex to 
Real-Imag 
Decompõe 
número complexo 
em parte real e 
imaginária 
 
Real-Imag to 
complex 
Compões parte 
real e imaginária 
em número 
complexo 
3.3.6 MODEL VERIFICATION: Blocos para 
verificação de modelos 
Tabela 3. 14 – Biblioteca: Model Verification 
Bloco SIMULINK Nome Descrição 
 
Check 
Static 
Lower Bound 
Verifica se um sinal 
é sempre menor 
que um valor 
estático 
 
Check 
Static 
Upper Bound 
Verifica se um sinal 
é sempre maior 
que um valor 
estático 
 
Check 
Static 
Ranger 
Verifica se um sinal 
está sempre dentro 
de uma faixa de 
amplitude estática 
 
Check 
Static 
Gap 
Verifica a diferença 
entre a amplitude 
de dois sinais 
 
Check 
Dynamic 
Lower Bound 
Verifica se um sinal 
é sempre menor 
que outro sinal 
 
Check 
Dynamic 
Upper Bound 
Verifica se um sinal 
é sempre maior 
que outro sinal 
 
Check 
Dynamic 
Ranger 
Verifica se um sinal 
está sempre dentro 
de uma faixa de 
amplitude 
 
 
 
[MATLAB/SIMULINK©: Aplicações na Engenharia Química] 
26 
Continuação da Tabela 3.14 
 
Assertion Verifica se um sinal 
é Zero (0) 
 
Check 
Discrete 
Gradient 
Verifica se o 
gradiente do sinal é 
sempre menor que 
um limitante 
superior 
3.3.7 MODEL-WIDE UTILITES: Blocos 
utilitários 
Tabela 3. 15 – Biblioteca: Model-Wide Utilites – Linearization of 
Running Models 
Bloco SIMULINK Nome Descrição 
 
Trigger-
Based 
Linearizatio
n 
Chama a função 
linmod 
(modelamento 
linear) a paritr de 
um evento 
(trigger). 
 
Timed-Based 
Linearizatio
n 
Chama a função 
linmod 
(modelamento 
linear) em um 
determinado 
instante 
Tabela 3. 16 – Biblioteca: Model-Wide Utilites – Documentation 
Bloco SIMULINK Nome Descrição 
 
Model Info 
Traz textos 
definidos nos 
campos de 
propriedade do 
modelo 
 
DOC 
Cria um texto para 
documentar o 
modelo 
3.3.8 PORT & SUBSYSTEMS: blocos de portas, 
conexões e subsistemas. 
Tabela 3. 17 – Biblioteca: Port & Subsystems 
Bloco SIMULINK Nome Descrição 
 
In1 Entrada de sinal 
 
Out1 Saída de sinal 
 
Trigger Sinal disparador 
 
Function-
Call 
Generator 
Gerador de chamada 
de função 
 
Atomic 
Subsystem Subsistema 
 
Subsystem 
Subsistema que 
contém outro 
subsistema 
 
Triggered 
Subsystem 
Subsistema com 
sinal comparador 
 
Continuação da Tabela 3.17 
 
Enable 
Subsystem 
Subsistema com 
sinal habilitador 
 
Enabled and 
Triggered 
Subsystem 
Subsistema com 
sinais disparador e 
habilitador 
 
Function-
Call 
Subsystem 
Representa um 
subsistema que pode 
ser chamado como 
função por outro 
bloco 
 
For 
Iterator 
Subsystem 
Implementa o 
comportamento 
“for” para o 
subsistema 
 
While 
Iterator 
Subsystem 
Implementa o 
comportamento 
“while” para o 
subsistema 
 
If 
Implementa o 
comportamento “if” 
para um modelo do 
SIMULINK 
 
Switch 
Case 
Implementa o 
comportamento 
“case” dentro de um 
modelo do 
SIMULINK 
3.3.9 SIGNAL ATTRIBUTES: Blocos de atributos 
de sinais 
Tabela 3. 18 – Biblioteca: Signal Attributes 
Bloco SIMULINK Nome Descrição 
 
Data Type 
Conversion 
Conversão entre 
dois tipos de dados 
 
IC Configura o valor 
inicial para um sinal 
 
Rate 
Transition 
Manipula 
transferência de 
dados em blocos 
operando com taxas 
de transmissão 
diferentes 
 
Probe 
Retorna atributos do 
sinal (tipo, 
dimensão, tempo de 
amostragem) 
 
Signal 
Specificat
ion 
Verifica se o sinal de 
entrada possui 
determinados 
atributos 
 
Width 
Retorna ao número 
de canais do sinal de 
entrada 
 
 
SIMULINK©: Bibliotecas e Blocos 
27 
3.3.10 SIGNAL ROUTING: Roteamento de sinais 
Tabela 3. 19 – Biblioteca: Signal Routing 
Bloco SIMULINK Nome Descrição 
 
Bus 
Creator 
Agrupa vários sinais 
em um único bus, e 
permite nomear os 
sinais 
individualmente 
 
Bus 
Selector 
Recebe sinal de um 
bus ou multiplexador 
e separa-os em seus 
sinais individuais 
 
Mux Multiplexador 
 
Demux Demultiplexador 
 
Merge Mistura de sinais 
 
Selector 
Dado um sinal de 
entrada com vários 
canais, seleciona 
algum para saída 
 
Manual 
Switch Chaveador manual 
 
Multiport 
Switch 
Chaveador com 
várias portas 
 
Switch Chaveador com duas 
portras 
 
From Recebe sinal de um 
bloco Goto 
 
Goto Tag 
Visibility 
Define escopo dos 
blocos Goto e From 
 
Goto Envia um sinal para 
um bloco From 
3.3.11 SINKS: Blocos de saída de resultados 
Tabela 3. 20 – Biblioteca: Sinks - Model & Subsystems Outputs 
Bloco SIMULINK Nome Descrição 
 
Out1 Saída de sinal 
 
Terminator Terminador 
 
To File Exporta sinal para 
um arquivo *.mat 
 
To 
Workspace 
Exporta sinal para 
uma variável do 
workspace 
 
Scope Gráfico 
 
 
Continuação da Tabela 3.20 
 
Floating 
Scope Gráfico flutuante 
 
XY Graph Gráfico paramétrico 
X, Y 
 
Display Exibe valores 
numéricos 
Tabela 3. 21 – Biblioteca: Simulation Control 
Bloco SIMULINK NomeDescrição 
 
Stop 
Simulation 
Interrompe 
simulação 
3.3.12 SOURCES: Blocos de origem de sinais 
Tabela 3. 22 – Biblioteca: Sources – Model & Subsystems Inputs 
Bloco SIMULINK Nome Descrição 
 
In1 Entrada de sinal 
 
Ground 
“Terra”. Impede 
avisos sobre portas 
de entrada 
desconectadas. 
Saídas Zero (0) 
 
From File Importa sinal de um 
arquivo *.mat 
 
From 
Workspace 
Importa sinal de uma 
variável do 
workspace 
Tabela 3. 23 – Biblioteca: Sources – Signal Generator 
Bloco SIMULINK Nome Descrição 
 
Constant Gerador de sinal 
constante 
 
Signal 
Generator 
Gerador de sinal de 
onda* 
 
 
Pulse 
Generator Gerador de pulso 
 
Signal 
Builder 
Construtor de sinal. 
Abre uma janela 
Signal Builder para 
construções de sinais 
 
Ramp 
Dados valor inicial e 
um ângulo de 
inclinação gera o 
sinal da semi-reta 
inclinada 
 
Sine Wave Gerador de onda 
senóide 
 
Step Gerador de sinal de 
impulso 
 
Repeating 
Sequence 
Gerador de 
seqüência 
 
 
[MATLAB/SIMULINK©: Aplicações na Engenharia Química] 
28 
Continuação da Tabela 3.20 
 
Chirp 
Signal 
Gerador de sinal 
senóide com 
freqüência constante 
 
Random 
Number 
Gerador de números 
aleatórios com 
distribuição normal 
 
Uniform 
Random 
Number 
Gerador de números 
aleatórios com 
distribuição 
uniforme 
 
Band-
Limited 
White Noise 
Gerador de sinal de 
ruído 
 
Clock Gerador de sinal d 
tempo contínuo 
 
Digital 
Clock 
Gerador de sinal de 
tempo digital 
* - sine (senoidal); - square (quadrada); - sawtooh (dentada); - random (aleatória dentada, 
aleatória) 
3.3.13 USER-DEFINED FUNCTIONS: Blocos de 
funções definidas pelo usuário 
Tabela 3. 24 – Biblioteca: User-Defined Functions 
Bloco SIMULINK Nome Descrição 
 
Fcn 
Executa uma 
expressão genérica 
do MATLAB. 
Utiliza-se a variável 
“u” como parâmetro 
de entrada 
 
MATLAB Fcn 
Executa uma função 
MATLAB 
implementada em 
um m-file* 
 
S-Function Executa uma s-
function 
 
S-Function 
Builder 
Utilitário que auxilia 
a construção de s-
function’s 
* Arquivo Matlab (exemplo: nomearquivo.m) 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CAPÍTULO 4 
29 
CAPÍTULO 4 
Aplicações do MATLAB©\SIMULINK© na Engenharia 
Química 
 
4.1 Problemas envolvendo equações 
não lineares 
Exemplo 4.1 (Termodinâmica): 
A lei dos gases ideais é dada por: �F = .GH, onde p é a 
pressão absoluta, V o volume, n é o número de moles, R a 
constante de proporcionalidade dos gases e T é a 
temperatura absoluta. Apesar desta equação ser muito 
utilizada por engenheiros químicos, ela apresenta boa 
precisão somente para intervalos limitados de pressão e 
temperatura e alguns tipos de gases. Para uma maior acurácia 
devemos utilizar uma equação de estado alternativa, como 
por exemplo, a equação de van der Waals: �� + �I$% /K − ?0 =GH, onde K = F .⁄ é o volume molar e a e b são constantes 
empíricas que dependem do gás estudado. Um projeto de 
engenharia química requer uma estimativa do volume molar 
(v) para o CO2 e para o O2 em diferentes temperaturas e 
pressões de modo que o recipiente de armazenamento possa 
ser dimensionado. Também é de interesse a observação do 
comportamento do gás pela lei dos gases ideais. Os dados 
para o projetos são: R=0,082954 L atm-1 mol-1 K-1, para CO2 
a=3,592 e b=0,04267 e para O2 a=1,360 e b=0,03183. 
a. Use uma função que calcule a raiz da função acima 
pelo método de Newton com um erro de 0,01 para as 
pressões 1 e 10 atm e temperaturas de 300 e 500 K. 
b. Use a função residente fzero do MATLAB©. 
c. Resolva utilizando o SIMULINK©. 
Solução: Usando o método de Newton 
 Para a solução do exemplo 4.1 necessitaremos criar 
uma função que represente o método de Newton 
(Newton.m) e uma rotina (script 4.1) para a execução do 
método proposto. 
 
Editor window 
function Xs=Newton(Fun,FunDer,X0,erro,imax) 
% A função Newton determina a raiz de Fun=0 na 
% vizinhança do ponto X0 usando o método de Newton 
% Variáveis de entrada: 
% Fun : função (string) a ser calculada a raiz 
% FunDer : derivada (string) da função 
% X0 : chute inicial 
% erro : critério de parada (solução aceita 
% como correta) 
% imax : máximo de iterações 
% Variáveis de saída: 
% Xs : solução 
for i=1:imax 
 xi=X0-feval(Fun,X0)/feval(FunDer,X0); 
 if abs((xi-X0)/X0)<erro 
 Xs=xi; 
 break 
 end 
 X0=xi; 
end 
if i==imax 
fprintf(‘A solução não foi obtida em %i 
iterações\n’,imax) 
end 
Função 4. 1 –Newton.m (exemplo 4.1) 
Editor window 
%% Inicialização 
matlabrc; % limpa todas as 29ariáveis 
% do workspace e reseta o 
% matlab 
close all; % fecha todas as figuras 
clc; % limpa a tela de comando 
tic; % inicializa o “timer” 
% Entradas para o CO2 
Fun1CO2=inline(‘(1-3.592/v^2)*(v-0.04267)-
0.082054*300’); 
FunDer1CO2=inline(‘1-
3.592/v^2+(2*3.592*0.0426/v^3)’); 
Fun2CO2=inline(‘(10-3.592/v^2)*(v-0.04267)-
0.082054*300’); 
FunDer2CO2=inline(‘10-
3.592/v^2+(2*3.592*0.0426/v^3)’); 
Fun3CO2=inline(‘(1-3.592/v^2)*(v-0.04267)-
0.082054*500’); 
FunDer3CO2=inline(‘1-
3.592/v^2+(2*3.592*0.0426/v^3)’); 
Fun4CO2=inline(‘(10-3.592/v^2)*(v-0.04267)-
0.082054*500’); 
FunDer4CO2=inline(‘10-
3.592/v^2+(2*3.592*0.0426/v^3)’); 
[MATLAB/SIMULINK©: Aplicações na Engenharia Química] 
30 
% Entradas para O2 
Fun1O2=inline(‘(1-1.360/v^2)*(v-0.03183)-
0.082054*300’); 
FunDer1O2=inline(‘1-
1.360/v^2+(2*1.360*0.03183/v^3)’); 
Fun2O2=inline(‘(10-1.360/v^2)*(v-0.03183)-
0.082054*300’); 
FunDer2O2=inline(‘10-
1.360/v^2+(2*1.360*0.03183/v^3)’); 
Fun3O2=inline(‘(1-1.360/v^2)*(v-0.03183)-
0.082054*500’); 
FunDer3O2=inline(‘1-
1.360/v^2+(2*1.360*0.03183/v^3)’); 
Fun4O2=inline(‘(10-1.360/v^2)*(v-0.03183)-
0.082054*500’); 
FunDer4O2=inline(‘10-
1.360/v^2+(2*1.360*0.03183/v^3)’); 
% Cálculo das equações (Gases Ideais) 
v1lgi=0.082054*300/1; 
v2lgi=0.082054*300/10; 
v3lgi=0.082054*500/1; 
v4lgi=0.082054*500/10; 
% Cáculo das equações (Newton) 
v1CO2vdw=Newton(Fun1CO2,FunDer1CO2,50,0.01,100); 
v2CO2vdw=Newton(Fun2CO2,FunDer2CO2,50,0.01,100); 
v3CO2vdw=Newton(Fun3CO2,FunDer3CO2,50,0.01,100); 
v4CO2vdw=Newton(Fun4CO2,FunDer4CO2,50,0.01,100); 
v1O2vdw=Newton(Fun1O2,FunDer1O2,50,0.01,100); 
v2O2vdw=Newton(Fun2O2,FunDer2O2,50,0.01,100); 
v3O2vdw=Newton(Fun3O2,FunDer3O2,50,0.01,100); 
v4O2vdw=Newton(Fun4O2,FunDer4O2,50,0.01,100); 
disp(‘LEI DOS GASES IDEIAS’) 
disp(‘T(K) P(atm) VCO2(L/mol) VO2(L/mol)’) 
disp(‘---------------------------------------------') 
fprintf(‘ 300 1 %9.4f %9.4f\n’,v1lgi,v1lgi) 
fprintf(‘ 300 10 %9.4f %9.4f\n’,v2lgi,v2lgi) 
fprintf(‘ 500 1 %9.4f %9.4f\n’,v3lgi,v3lgi) 
fprintf(‘ 500 10 %9.4f %9.4f\n’,v4lgi,v4lgi) 
disp(‘---------------------------------------------') 
disp(‘VAN DER WAALS’) 
disp(‘T(K) P(atm) VCO2(L/mol) VO2(L/mol)’) 
disp(‘---------------------------------------------') 
fprintf(‘ 300 1 %9.4f 
%9.4f\n’,v1CO2vdw,v1O2vdw) 
fprintf(‘ 300 10 %9.4f 
%9.4f\n’,v2CO2vdw,v2O2vdw) 
fprintf(‘ 500 1 %9.4f 
%9.4f\n’,v3CO2vdw,v3O2vdw) 
fprintf(‘ 500 10 %9.4f 
%9.4f\n’,v4CO2vdw,v4O2vdw) 
disp(‘---------------------------------------------') 
Script 4. 1 – Solução do exemplo 4.1 utilizando o Método de Newton 
Command window 
---------------------------------------------- 
LEI DOS GASES IDEIAS 
T(K) P(atm) VCO2(L/mol) VO2(L/mol) 
---------------------------------------------- 
 300 1 24.6162 24.6162 
 300 10 2.4616 2.4616 
 500 1 41.0270 41.0270 
 500 10 4.1027 4.1027

Outros materiais