Upload
anonymous-qsoz05w
View
222
Download
0
Embed Size (px)
Citation preview
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 1/42
1
MATLAB - UMA INTRODUÇÃO
CAPÍTULO 1 - Introdução
Motivação - Este curso tem por objetivo a familiarização com pacote matemático“MATLAB” e “SciLab”. Este último é agora apresentado por ser de domínio público, e portanto, não ter custo associado à aquisição. As operações básicas são mostradas, bemcomo os comandos de programas, gráficos e “toolboxes”. Alguns exemplos e exercíciossão mostrados. Todavia, muito embora o SciLab disponha de pacote equivalente ao“Simulink”, o mesmo não é explorado aqui, sendo mostrado apenas para “Matlab”.
1. Instalação
Para a instalação do Matlab, basta seguir as instruções do CD de instalação,enquanto que o SciLab é obtido diretamente na internet. A instalação de ambos é bastantesimples.
CAPÍTULO 2 - Operações Básicas
Os comandos a seguir são válidos para ambos os pacotes computacionais Matlab eSciLab. Quando alguma diferença ocorrer, a mesma será enfatizada.
Números complexos
A representação de um número complexo em MATLAB pode ser feita através dequalquer uma das formas abaixo:
a = 2 + i*6
ou
a = 2 + j*6
Em SciLab a representação é a mesma, muito embora a variável complexa tenhaque ser definida:
i ou j = sqrt(-1)
As versões atuais do Matlab trabalham de forma ainda mais simplificada, permitindoescrever:
a = 2 +6i
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 2/42
2
ou
a = 2 + 6jSe for de interesse trabalhar com a parte real do número “a”, usa-se o comando:
b = real (a)
Com resposta dada pelo programa b = 2Da mesma forma, se a parte imaginária for de interesse, usa-se:
c = imag (a)
Com resposta dada por c = 6Para o número complexo dado acima ser representado na forma polar, usa-se o
comando:
d = abs(a)
Com resposta dada por d = 6.3246, que é o mesmo que 4 36 . O ângulo defase em Matlab será dado por:
e = angle (a)
Com resposta em radianos dada por e = 1.2490, que é o mesmo que atang (6/2).Esta função também existe em Matlab e SciLab.
Notas1. Note que para cada nova variável de interesse, foi associada uma letra qualquer. Aqui
vai a primeira diferença do pacote em relação a FORTRAN, por exemplo. Estadiferença reside no fato de não se precisar declarar variáveis nem obedecer nenhumahierarquia para tornar uma variável real ou inteira.
2. Da nota acima, segue uma importante observação relativa à representação de númeroscomplexos: As variáveis “i” e “j” podem, portanto, assumir qualquer valor. Destaforma, se “i” for especificado como 2, por exemplo, ao se escrever
a = 2 + i*6
teremos como resposta a = 14. Logo, ao se representar números complexos, deve-se tercerteza de que “i” e “j” não estão previamente definidos.
3. Quando escrevemos a = 2 + i*6, obtemos na telaa =
2.0 + 6.0000i
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 3/42
3
Logo, o programa repete a informação ou processamento executado. Se isto se tornarinconveniente (muita informação na tela durante o processamento), pode se escrever
a = 2 + i*6 ;
O símbolo “;” colocado ao fim da expressão informa ao programa que não é necessárioreproduzir tal informação na tela.
Vetores
A representação clássica de vetores (ordem n x 1) é obtida da seguinte maneira:
A = [12
3];» A = [1
23]
A =
123
Note que no caso acima não foi usado o símbolo “;”, e por este motivo o programa devolveu o vetor “ A”. Matlab e SciLab permitem criar diretamente um vetorcom elementos iguais a um ou zero da seguinte forma:
A = ones(3,1)Com resposta:
A =
111
» A = zeros(3,1)
Com resposta:
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 5/42
5
3 74 55 ] 2]
Algumas operações serão mostradas:
Norma
Acha-se a norma de um vetor através do comando
w = norm ( A)
Com resposta dada por
w = 7.0711
onde w representa a norma euclidiana do vetor A Outros tipos de norma podem seridentificados. De maior importância, destaca-se a norma infinita, dada por
norm( A, inf) = max (abs ( A)).norm( A, -inf) = min( abs ( A)).
Pode-se também achar a norma de um vetor que seja combinação de dois outros vetores,como por exemplo:
f = norm ( A+B)
Com respostaf = 15.1658
Note que neste caso, MATLAB computou internamente o vetor A+B e forneceu aresposta pedida.
Multiplicação
Sabe-se que não é possível a multiplicação de dois vetores, a menos que setransponha um deles. Entretanto, MATLAB fornece uma opção de se multiplicar, ouelevar a alguma potência, cada membro de um vetor ou uma matriz, da seguinte forma:
A multiplicação, elemento por elemento, é dada pelo símbolo “.*”. Desta forma, pode-se ter:
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 7/42
7
e
k = prod ( A)
Com resposta
k = 60
2.3.2 Matrizes
Assuma as matrizes
A = [1 3 5
6 3 88 9 2 ]
B = [4 9 82 3 57 0 1]
Diversas operações podem então ser mostradas.
Adição, Subtração e Multiplicação
Como as matrizes têm dimensões coerentes, podem ser somadas, subtraídas oumultiplicadas entre si.
Adição e subtração são comandos bem simples, como mostrado
C = A + B Com resposta
C = [5 12 138 6 13
15 9 3 ]
» D = A-B
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 8/42
8
Com resposta
D = [-3 -6 -34 0 3
1 9 1]
A multiplicação de matrizes é obtida através do comando “*”. Note que nestecaso, tem-se uma operação diferente daquela obtida quando o símbolo “.*” é usado.Portanto:
E = A * B
fornece
E = [
45 18 2886 63 71
64 99 111]
enquanto
» F = A .*B
fornece
F = [4 27 4012 9 4056 0 2 ]
Norma
Obtida da mesma forma daquela mostrada para vetores
g = norm ( A)
Com resposta
g = 15.6614
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 9/42
9
OBS: Manipulações internas são novamente válidas.
Rank
Obtido através de
h = rank ( A)
Com resposta
h = 3
Autovalores e autovetores
Em Matlab, dados pelo comando
[ u v] = eig ( A)
Com resposta
u = [-0.3767 -0.7767 -0.3571-0.6368 0.6064 -0.4574-0.6727 0.1703 0.8144]
v = [15.0000 0 0
0 -2.4384 00 0 -6.5616]
Das matrizes acima, v representa a matriz de autovalores, enquanto u representa amatriz de autovetores. A mesma resposta acima é obtia em SciLab em resposta aoseguinte comando:
[ u v] = spec ( A)
Valores singulares
Obtidos, desta vez pelo mesmo comando para os dois pacotes como:
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 11/42
11
-0.3617 2.0851 0.46811.9787 -2.9362 0.8511 ]
Entretanto, para matrizes de grande porte, achar a inversa de b pode sercomputacionalmente ineficiente. Uma alternativa, entre outras, pode ser utilizada.
P = A/B
Com solução idêntica a mostrada acima. Através desta operação, o resultado éobtido diretamente, sem necessidade de inversa. Tem-se, para a solução de um sistema dotipo Ax = b, tomando b como um vetor.
x = A\b é solução de Ax = bx = inv(A)*b
que fornecem a mesma resposta.. A primeira opção fatora a matriz A, enquanto que asegunda acha a resposta através da inversa explícita da matriz A.
Fatoração de matrizes
Obtida através do comando
[l, u] = lu ( A)
Obtendo como resultado as matrizes triangular inferior L e superior U
Mudando a dimensão de uma matriz
Assuma que se queira mudar a dimensão da matriz a de 3x3 para 1x9. Isto podeser feito através do comando:
Q = reshape( A,[1 9])
Obtendo:
Q = 1 6 8 3 3 9 5 8 2
Este comando não existe em SciLab.
Transposta de uma matriz
Obtido através do símbolo “’”. Assim, para se achar a transposta de a, usa-se:
Y = A’
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 13/42
13
t = [33]
Estas propriedades são muito importantes, uma vez que possibilitam a
manipulação de matrizes nas mais variadas formas. Pode-se também criar uma novamatriz a partir de uma já existente. Assuma que se queira criar uma matriz x a partir damatriz ª Entretanto, as linhas e colunas 2 e 3 da matriz x correspondem às linhas ecolunas 3 e 2 da matriz a . Desta forma:
x = A;
Cria uma matriz x idêntica a a . Note o símbolo “;”, indicando que a matriz x nãodeve aparecer na tela.
x([2 3],:)= A([3 2],:)
x = [1 3 58 9 26 3 8]
A operação acima trocou as segunda e terceira linhas, mas manteve as colunasidênticas às colunas da matriz A Para esta última operação, tem-se:
x(:,[2 3])= A(:,[3 2])
x = [1 5 38 8 36 2 9]
Finalmente a matriz desejada é obtida. Poderia-se também acrescentar novoselementos à matriz A, através de operações ou simples inserção de componentes:
Exemplo de inserção simples:
A(4,2)=1
A = [1 3 56 3 88 9 20 1 0]
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 14/42
14
A inserção do elemento criou uma nova linha com elementos nulos, exceto ocomponente 1 relativo à posição (4, 2).
Exemplo de inserção através de operação: A (4,2) = A (1,1) + A (3,3)
A = [1 3 56 3 88 9 20 3 0]
Desta vez um novo elemento, função de outros elementos da matriz, foiacrescentado, alterando a dimensão da matriz.
Matrizes Esparsas
MATLAB trabalha com matrizes esparsas. Uma matriz pode ser armazenada naforma esparsa, na forma (i,j)=comp, onde i e j são as colunas do elemento comp, ou podem ser transformadas em esparsas a partir de uma matriz previamente fornecida naforma densa. Cada um dos casos é mostrado abaixo:
Montando uma matriz genérica:
A(1,1)=2;» A(2,3)=4;» A(3,2)=8;
Gerando:
A =[2 0 00 0 40 8 0]
que é uma matriz na forma densa. Portanto, para criar uma matriz esparsa, usa-se ocomando:
A = sparse ( A)
e a matriz acima se tornaria
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 15/42
15
A =
(1,1) 2(3,2) 8(2,3) 4
Onde apenas os elementos diferentes de zero aparecem. Portanto, para gerar amatriz acima na forma esparsa, usa-se os comandos:
A = sparse( A)
a =All zero sparse: 0-by-0
» A(1,1)=2;» A(2,3)=4;
» A(3,2)=8;» A
Obtendo:
A =(1,1) 2(3,2) 8(2,3) 4
Matrizes Aleatórias
Para gerar matrizes aleatórias, basta dar o comando
A = rand(3,3)
que MATLAB automaticamente cria uma matriz de valores aleatórios de dimensão 3x3. No caso deste exemplo, o programa devolveu:
A =[0.6539 0.9103 0.04750.4160 0.7622 0.73610.7012 0.2625 0.3282]
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 16/42
16
Exercício
Criar duas matrizes aleatórias A(4,3) e B(3,4). Achar C=A*B. Achar rank,norma, autovalores e determinante de C. Achar sua transposta. Criar um vetor aleatórioe(4,1) e resolver
C x = e
CT x = eResolver através da inversa, fatoração LU e sinais lógicos \ e /.
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 17/42
17
CAPÍTULO 3 - Gráficos em duas e três dimensões
Gráfico em Duas Dimensões
Assuma os dois vetores x e y relacionados entre si.
x = [1 2 3 4 5]T
y = [2 4 6 8 10]T
Quer-se representar a relação entre ambos através de um gráfico. Para isto usa-se ocomando:
plot(x,y)
No comando acima x e y são os vetores a serem plotados. O seguinte gráfico é obtido
Note entretanto que a figura está sem título, legenda no eixos x e y e anotaçõesreferentes à curva. Estes podem ser diretamente obtidos através da edição da figura,disponível em ambos os pacotes. Todavia, pode-se fazer as modificações no console,conforme mostrado a seguir:
title('gráfico exemplo para turma CESE')xlabel('eixo x')ylabel('eixo y')
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 18/42
18
Portanto, title é o comando que dá título à curva, enquanto xlabel e ylabel definemas legendas dos eixos x e y, respectivamente. Para inserir anotação dentro do gráfico,usa-se, somente em Matlab
gtext('grafico x-y')
E o novo gráfico é mostrado:
Se ao invés da linha cheia obtida no gráfico, fosse preferível outro tipo de linha,como asteriscos, por exemplo, usaria-se:
plot (x, y, ‘*’)
Obtendo:
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 19/42
19
Outros tipos e cores de linhas podem ser obtidos. Abaixo são mostrados os possíveis:
Coresy amarelor vermelhog verde
b azulw brancom lilásc azul claro
Linha. ponto
o círculox x+ +* asterisco: dois pontos-. Ponto com traço.. tracejada
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 20/42
20
Note que o gráfico gerado em MATLAB foi importado por um editor de textos(word) diretamente. Para que isto ocorra é necessário que se exporteo gráfico obtidoatravés do comando print. Algumas opções são mostradas abaixo:
dps - PostScript for black and white printers
-dpsc - PostScript for color printers-
-deps - Encapsulated PostScript (EPSF)-depsc - Encapsulated Color PostScript (EPSF)
-dpcx16 - Older color PCX file format (EGA/VGA, 16-color)-dpcx256 - Newer color PCX file format (256-color)
-dbitmap - Send figure to clipboard in bitmap format
Gráfico em 3 dimensões
Assuma que em adição aos vetores x e y, tenha-se o vetor z:
z=[3 5 7 8 2]T
Para obter um gráfico que relacione x, y e z, usa-se , em Matlab, o comando:
plot3 (x, y, z)
O equivalente em SciLab é dado por:
Plot3d (x,y,z)
Obtendo:
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 21/42
21
Note que das opções mostradas para o caso de duas dimensões, somente ocomando gtext não foi utilizado, uma vez que este só funciona para sistemas em duasdimensões.
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 22/42
22
CAPÍTULO 4 - Comandos de arquivos
Introdução
Todos os comandos mostrados nas seções anteriores foram desenvolvidos na teladentro do ambiente MATLAB e SciLab. É possível, entretanto, chamar um arquivo previamente desenvolvido que contenha informações ou comandos para serem inseridosno ambiente MATLAB e Scilab. Tais arquivos podem ter qualquer nome, desde quetenham extensão “m”, par a MATLAB e “sce” para SciLab. Assim, em MATLAB, para secarregar tal arquivo, basta digitar seu nome, não sendo necessário digitar a extensão “m”,automaticamente assumida pelo programa. Por exemplo, assuma que a matriz a mostradaanteriormente esteja armazenada em um programa chamado “caso1.m”. Assuma tambémque o símbolo “;” não seja colocado ao fim da matriz. Portanto, uma vez dentro doambiente MATLAB, basta digitar caso1, e a matriz A aparecerá na tela. Em SciLab, oarquivo é executado através da bara de ferramentas, que tem a opção de executar o
programa de extensão “sce”. Caso o símbolo “;” seja colocado ao fim da matriz, apósdigitar caso1, a matriz A não será mostrada, muito embora esteja armazenada. De forma achecar as variáveis armazenadas, usa-se o comando “who”. O exemplo abaixo ilustra ouso deste comando após a matriz a ter sido armazenada.
Digita-se whoObtendo a resposta:
Your variables are:
A
Uma vez carregada a matriz, qualquer das funções mostradas previamente podeser utilizada. Note também que uma vez que o arquivo de extensão “m” pode contercomandos do programa, o operador pode criar um arquivo “.m” que funcione como um programa . O exemplo abaixo ilustra o arquivo caso1.m contendo a matriz A e oscomandos que pedem seu determinante, autovalores, norma e rank. Note que o símbolo“;” é colocado ao fim de cada comando.
A = [1 2 34 5 6
7 8 9] ;% os comandos estão abaixodet1=det( A) ;aut=eig( A) ;
norm1=norm( A) ;rank1=rank( A) ;
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 23/42
23
O símbolo “%” utilizado no arquivo representa comentários, e não sãoconsiderados pelo programa. Em “SciLab” os comentários são dados pelo comando //. Aexclusão deste símbolo antes da sentença “os comandos estão abaixo” produziria umamensagem de erro. Digitando caso1 na tela, esta permanecerá limpa após a execução do programa, uma vez que o símbolo “;” foi utilizado.
» caso1
O comando “who” indica as variáveis processadas:
» who
Your variables are:
A aut det1 norm1 rank1Portanto, todas as variáveis estão reconhecidas pelo programa. Para saber o valor
destas variáveis, basta digitar a variável de interesse. Por exemplo, para saber a norma dea, digita-se
» norm1
que é a variável associada a norma no programa caso1.m. A resposta do programa é dada por
norm1 =
16.8481
Qualquer outra variável pode ser obtida desta forma. Uma outra possibilidaderefere-se ao armazenamento dos resultados obtidos. Para este fim o comando “diary” pode ser utilizado.
Armazenando resultados
Assuma que as operações executadas acima devam ser armazenadas em um outroarquivo. Para isso, abre-se um arquivo usando o comando “diary nome”, onde “nome” éum nome qualquer escolhido. Anota-se as variáveis de interesse, e quando o processo seencerrar, fecha-se o arquivo com o comando “diary off”. O exemplo abaixo é feito a partir do arquivo caso1.m.
caso1» diary resul
» aut
aut =
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 24/42
24
16.1168-1.11680.0000
» det1
det1 =0
» norm1
norm1 =16.8481
» rank1rank1 =
2
» diary off
O arquivo resul fornece
caso1» diary resul
» aut
aut =
16.1168-1.11680.0000
» det1
det1 =
0
» norm1
norm1 =
16.8481
» rank1
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 25/42
25
rank1 =2
» diary off
Idêntico, portanto, aos comandos dados na tela.
Comando clear
Foi mostrado que o comando “who” mostra as variáveis armazenadas pelo programa. Pode ser de interesse do operador, por uma razão qualquer, excluir umavariável durante o processamento. Para isso usa-se o comando “clear”, que pode serutilizado para limpar quantas variáveis se queira. Voltando ao exemplo do arquivocaso1.m, tem-se as variáveis:
Your variables are:
a aut det1 norm1 rank1
Assuma que seja de interesse excluir a variável aut. Executa-se o comando
clear aut
Digitando o comando “who” novamente fornece
Your variables are:
a det1 norm1 rank1
E a variável não está mais armazenada. Se todas as variáveis devem ser excluídas,usa-se o comando
clear
Digitando “who” mais uma vez, obtém-se:
Your variables are:
Indicando que nenhuma variável encontra-se armazenada. O conjunto decomandos mostrados até então, permite que se programe em MATLAB. Para isto, faz-seuso dos comandos mostrados na próxima seção.
Comando size
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 27/42
27
CAPÍTULO 5 - Comandos de Programa
Introdução
Um programa para ser executado em MATLAB precisa ser montado em umarquivo de extensão “m”. A exemplo de outras linguagens de programação, existemalguns comandos lógicos inerentes ao programa, além das funções definidasanteriormente. Por outro lado, o programa não requer declaração nem dimensionamentodas variáveis. A seguir, algumas funções são mostradas.
For
Comando utilizado para gerar um loop. Semelhante ao DO utilizado em
FORTRAN. O processo se repete até que o limite superior (ou inferior) seja atingido.Exemplo:
» for ti=1:10 j(ti)=2*ti;
end» tj
tj =
2 4 6 8 10 12 14 16 18 20
No exemplo acima, tï” varia de 1 a 10 com passo 1. Para cada valor de ti, umavariável tj é criada. Passos diferentes de 1 também podem ser considerados, comomostrado abaixo:
k=1;» for ti=1:2:11
tj(k)=ti;k=k+1;
end» tj1 3 5 7 9 11
No exemplo acima, ti varia de 1 a 11 com passo de 2. A variável tj é criada dentrodo loop com índice k atualizado a cada atualização de ti. O exemplo acima serve paranúmeros negativos também. Por exemplo,
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 28/42
28
for t1=1:-0.1:0
varia ti de 1 a 0 com passo de -0.1.
If-Then-Else
Comando lógico condicional. Se uma determinada condição for satisfeita,executa-se algo, caso contrário, executa-se outra instrução, ou nenhuma. Exemplo:
for ti=1:10if ti <= 5tj(ti)=ti;
elsetj(ti)=-ti;
endend
» tj
tj =
1 2 3 4 5 -6 -7 -8 -9 -10
No exemplo acima, ti varia de 1 a 10. É dada então a seguinte instrução: Se ti formenor ou igual a 5, a variável j assume valor igual a ti. Caso contrário (maior que 5) jassume o valor negativo de ti. A inserção do símbolo “<=” estimula o usuário a conheceros comandos lógicos disponíveis. Uma lista é dada abaixo:
<= Menor ou igual>= Maior ou igual< Menor> Maior== Igual~= Diferente
Com os comandos acima, qualquer instrução pode ser dada dentro do comando IF. Note que o comando if foi dado dentro do comando FOR, o que já estrutura a formaçãode um programa.
BREAK
Utilizado para encerrar uma execução, desde que alguma exigência seja satisfeita.Exemplo:
for ti=1:10if ti == 7
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 30/42
30
max( A)
ans =3
» min( A)
ans =-9
Portanto, as funções max e min consideram o valor real de uma variável. Se ovalor máximo ou mínimo for desejado em módulo, obtem-se:
max(abs( A))
ans =9
» min(abs( A))
ans =3
Neste caso, a consideração é modular, e o valor -9, considerado mínimo no primeiro caso, torna-se máximo no segundo.
Sort
Assuma o mesmo vetor a considerado acima. Se for do interesse do usuárioordenar o vetor a de forma crescente, usa-se o comando
b = sort ( A)
Obtendo como resposta:
b =
-9-43
Uma vez mais, se os valores em módulo são desejados, usa-se:
c = sort ( abs ( A))
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 31/42
31
Obtendo:
c =
349
Uma terceira alternativa refere-se à possibilidade de escalonamento em ordemmodular decrescente. Para isso, usa-se:
d = sort(-abs ( A))
Obtendo:
d =
-9-4-3
Note neste caso que os valores de d são negativos, mas isto é irrelevante se o valormodular for de interesse.
Find
Utilizado para encontrar uma variável de interesse dentro de um conjunto dedados. A resposta é a posição da variável dentro do conjunto de dados. Por exemplo
e = find( A == -9)
Com resposta:
e =2
fprintf
Utilizado para fornecer alguma informação relevante na tela. Esta informação pode vir associada a um comentário.
fprintf('Representando %g%% do sistema\n\n',nfgh);
A frase 'Representando %g%% do sistema\n\n' é o comentário,enquanto nfgh é a informação.
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 32/42
32
Input
Utilizada para fornecer um dado a ser utilizado pelo programa. Neste caso, ainformação é digitada pelo usuário na tela.
dc=input('forneça o valor desejado = > ')
E o valor digitado na tela será automaticamente considerado igual a dc.
pause
Utilizado para parar provisoriamente o processamento. Após digitar enternovamente, o programa volta a ser executado.
Save
Utilizado para salvar em formato binário algumas variáveis de interesse.
Save arq X
Salva no arquivo arq.mat a variável X. Para carregar a variável X, basta digitarload arq, e automaticamente esta varável estará na área de trabalho.
Exercício
1- Criar uma matriz aleatória de dimensão 8x8 em um arquivo de extensão “m”.
Achar norma, rank, autivalores e determinante desta matriz. Multiplica a matriz de 1 a 10.Calcule todos ítens acima para cada fator e plote tudo em função do fator.
2-
Automatizar exercícios do capítulo anterior.
3- Resolver a equação f(x)=x2 +2x + 1 por Newton Raphson.
Código:x=0;
erro=10;
while (erro>0.001)dy=2*x+2;
delta=-(1/dy)*erro;
x=x+delta;
erro=x^2+2*x+1;end
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 34/42
34
Capítulo 6 - . Simulink
Introdução
Simulink é uma opção em MATLAB para simulação de sistemas dinâmicos. Estessistemas poderiam ser implementados computacionalmente em MATLAB, mas podemser resolvidos de forma mais simples através desta opção. A seguir, será mostrado comomontar um diagrama de blocos em um arquivo de extensão “m”. Dentro do ambienteMATLAB, digite “simulink”. A seguinte tela será obtida:
Linear Connections
SIMULINK Block Library (Version 1.3c)
ExtrasSources Discrete NonlinearSinks
Cada um dos ítens acima constitui diversas opções de bloco. Por exemplo,clicando duas vezes sobre o símbolo sources, obtem-se:
Signal Source Library
RandomNumber
Chirp Signal
RepeatingSequence
Band-LimitedWhite Noise
SignalGenerator
1
Constant
Sine Wave Step Input
untitled.matFrom Fil e
[T,U]
FromWorkspace
12:34
Digital ClockClock
PulseGenerator
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 35/42
35
Clicando sobre “linear”, obteria-se:
Linear Library
.
InnerProduct
++
Sum
1/s
Integrator
du/dt
Derivative
1
s+1
Transfer Fcn
(s-1)
s(s+1)
Zero-Pole
1
Gain
K
MatrixGain
1.317
SliderGain
x' = Ax+Bu y = Cx+Du
State-Space
Obtendo, portanto, diversos possíveis componentes.
Montagem de um arquivo de blocos
Para se criar um arquivo de extensão “m”, clica-se em “file” no menu disponível da caixa“simulink”, escolhendo a opção “new”. Portanto, passa-se a ter duas janelas, uma com asopções “simulink”, e outra referente ao arquivo de extensão “m”. Para criar umdiagrama de blocos neste arquivo, pressiona-se o botão esquerdo do “mouse” sobre oelemento de interesse e arrasta-se para a janela do arquivo “m”. O exemplo abaixo mostraquando a caixa geradora de onda senoidal é arrastada para a janela do arquivo de extensão“m”. Esta operação copia esta caixa na janela, i.e., a operação original continuadisponível na janela “simulink”.
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 36/42
36
Signal Source Library
RandomNumber
Chirp Signal
RepeatingSequence
Band-LimitedWhite Noise
SignalGenerator
1Constant
Sine Wave Step Input
untitled.mat
From Fil e
[T,U]
FromWorkspace
12:34
Digital ClockClock
PulseGenerator
Obtendo na janela
Sine Wave
Um sinal integrador deve ser adicionado. Clicando sobre a opção linear, obtêm-setal comando. Arrastando para a janela do arquivo de extensão “m”, obtem-se:
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 37/42
37
Sine Wave1/s
Integrator
A conexão entre ambos é feita clicando o botão esquerdo do mouse sobre a seta
do sinal de onda senoidal, arrastando esta em seguida até o integrador, obtendo:
Sine Wave
1/s
Integrator
Desta forma, um simples diagrama de bloco foi montado. Assuma então que os parâmetros da sinal de onda senoidal devam ser ajustados. Neste caso, basta clicar duasvezes o botão esquerdo sobre este bloco no arquivo de extensão “m”. Um quadro arespeito deste operador aparecerá, onde amplitude, frequência e ângulo podem serajustados. Tal operação é possível para qualquer operador. Este arquivo, se pronto, deveser salvo. Tal comando é feito através do menu “file” disponível na barra do arquivo onde
o diagrama de blocos foi gerado. Note que este arquivo deve ter extensão “m”.Assuma que uma vez que este arquivo esteja gravado, deseja sair do programa.
Basta fechar o arquivo através do menu “file” e dar o comando “quit” no prompt doMATLAB. Para carregar o arquivo novamente, uma vez estando dentro do MATLAB, basta digitar “simulink”, clicar sobre a opção “file”, “open” e clicar sobre o nome doarquivo. Se por exemplo, for de interesse do operador inserir um bloco de somatório nasaída, procede-se da seguinte forma:
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 39/42
39
++
SumSine Wave1/s
Integrator
E o novo diagrama está pronto. Deve-se salvar o novo arquivo e proceder com asimulação.
Simulando um arquivo de extensão “m
Üma vez criado o arquivo de extensão “m”, deve-se escolher que método deintegração utilizar. Simulink oferece as seguintes possibilidades:
linsim Método que subtrai as equações dinâmicasrk23 Runge-Kutta de terceira ordemrk45 Runge-Kutta de quinta ordemgear Método previsor-corretor de Gear para sistemas stiff.adams Método previsor-corretor de Adams
euler Método de Eulerlinsim é usado para modelos de sistemas lineares.Rk23 e rk45 são utilizados para sistemas altamente não lineares.Gear é usado quando o sistema é não linear, mas bem comportado. Não funciona bem para perturbações bruscas na entrada ou quando há singularidade.Adams é usado quando o sistema é não linear e bem comportado, mas com poucasconstantes de tempo variáveis.Euler é usado somente para testar resultados.
Comando de Execução
Asumindo que o linsim seja escolhido (todos os outros têm procedimentoidêntico), digita-se:
[a b]=linsim(“file”,tmax,xo,options)
onde
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 40/42
40
a,b são os vetores de saídafile é o arquivo de extensão “m” onde o diagrama de blocos está contido. Tmax é o tempo máximo de processamento.xo é o vetor de condições iniciaisoptions contém a tolerância, passo máximo e mínimo.
Um gráfico que mostre o comportamento de a em função de b pode ser obtidocomo mostrado anteriormente na seção de gráficos. O exemplo abaixo mostra asimulação do diagrama de blocos genérico mostrado no arquivo sim1.m :
1
Gain
2
s+1
Transfer Fcn
++
SumSignalGenerator
O sinal gerador é de uma onda senoidal de amplitude 1. O seguinte comando édado para executar a simulação:
options=[0.001,0.00001,10];
[tl,xl]=linsim('sim1',10,1,options);
Com o comando de gráfico
plot(tl,xl,’w’)
Obtendo o seguinte gráfico:
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 41/42
41
Se uma das variáveis for alterada, por exemplo, a função de transferência tiver onumerador igual a 2, obtêm-se:
Portanto, qualquer mudança pode ser feita para se testar o efeito nas variáveis deestado.
7/25/2019 Matlab - Uma Introdução
http://slidepdf.com/reader/full/matlab-uma-introducao 42/42
Exercício
Simular o sistema abaixo, ondeR=2, L=1
Incluir um capacitor de C=1 em série e simular novamente. Simular utilizando função de
transferência (bloco “transfer function”) e por variáveis de estado (bloco “state space”)