Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


MATLAB CÁLCULO NUMÉRICO, Manuais, Projetos, Pesquisas de Computação Aplicada

Para quem deseja fazer cálculos numéricos por simuladores

Tipologia: Manuais, Projetos, Pesquisas

2019

Compartilhado em 12/08/2019

lidia-carvalho-11
lidia-carvalho-11 🇧🇷

3.7

(4)

7 documentos

1 / 100

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
SISTEMAS DINÂMICOS I
Usando a ferramenta MATLAB
ed uard o l.l.cabral,larissa driemeier
Universidade de São Paulo
Escola Politécnica
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Pré-visualização parcial do texto

Baixe MATLAB CÁLCULO NUMÉRICO e outras Manuais, Projetos, Pesquisas em PDF para Computação Aplicada, somente na Docsity!

S I S T E M A S D I N Â M I C O S I

Usando a ferramenta MATLAB

eduardo l.l. cabral, larissa driemeier

Universidade de São Paulo

Escola Politécnica

C O N T E Ú D O

Parte I

I N T R O D U Ç Ã O A O M AT L A B

O MATLAB, do inglês Matrix Laboratory, é um ambiente de programa- ção de alto desempenho voltado para a resolução de problemas que podem ser expressos em notação matemática.

I N T R O D U Ç Ã O^1

  1. 1 ferramenta matlab

MATLAB é uma abreviação para MATrix LABoratory. O MATLAB, portanto, é um sistema interativo cujo ele- mento básico da informação é uma matriz que não re- quer dimensionamento. Trata-se de um ambiente de alto nível que possui ferramentas avançadas de análise numérica, cálculo com matrizes, processamento de si- nais e visualização de dados. O MATLAB também possui características de lin- guagem de programação. O software possui funções matemáticas já existentes, programadas em linguagem própria e agrupadas de acordo com a área de inte- resse em toolboxes. Assim, o MATLAB pode ser usado para:

  • Cálculos matemáticos;
  • Desenvolvimento de algoritmos;
  • Modelagem, simulação e visualização de sistemas;
  • Análise, exploração e visualização de dados;
  • Gráficos científicos e de engenharia;
  • Desenvolvimento de aplicações, incluindo a elaboração de interfaces gráficas com o usuário.
  1. 2 objetivo

O nosso objetivo é aprender a utilizar o software MATLAB® para resolver alguns problemas comuns da área de dinâmica e controle dos sistemas. Não é objetivo esgotar todos os temas e opções de uma ferramenta tão poderosa. Aliás, quando estiver com dificuldades no uso do software, tenha sempre em mente que existe uma grande chance deste seu problema já ter sido discutido nos inúmeros sites de ajuda e tutoriais disponíveis na internet, ou em livros didáticos

  • por exemplo, [ 4 ].

2

2 .2 comandos e expressões 4

Figura 2 : Ajuste da fonte usada na Janela de Comandos.

computer: retorna string contendo o computador que está executando MATLAB;

delete : apaga um arquivo ou um objeto gráfico;

demo : abre a janela MATLAB examples;

ver : mostra o número da versão do MATLAB e dos toolboxes instalados;

version : retorna a versão em uso do MATLAB;

who : lista o nome das variáveis armazenadas;

whos : lista as propriedades das variáveis atuais (nomes, dimensão, número de bytes e classe).

load : carrega variáveis armazenadas em arquivos .m;

  1. 2 comandos e expressões

Para inserir algum comando, simplesmente digite na janela de comandos. Se você cometer algum erro, digite ENTER até aparecer o sinal prompt novamente e redi- gite o comando. O MATLAB guarda na memória seus comandos, portanto, para rever comandos anteriores use as teclas ↑ ou ↓. Para facilitar a repetição de coman- dos é possível também dar um duplo-clique nos itens da janela de histórico. Não se esqueça de que todo comando deve ser finalizado teclando ENTER. Comece com a seguinte instrução, » a=5/ a =

Para você aprender uma operação diferente do MATLAB, digite a seguinte ex- pressão e deduza a função do comando < \ >,

» a=5\ 10 A Tabela 1 mostra as principais operações aritméticas escalares do MATLAB. O resultado de qualquer comando que não seja atribuído a uma variável espe- cífica é armazenado em uma variável padrão chamada ans. Exemplo:

2 .3 strings 5

Símbolo Operação MATLAB

^ exponenciação ab^ a^b ∗ multiplicação ab a ∗ b / divisão à direita a/b = ab a/b \ divisão à esquerda a\b = ba a\b

  • adição a + b a + b − subtração a − b a − b

Tabela 1 : Operações escalares. Tabela extraída de Palm III [ 4 ].

ans=

Quando for interessante omitir a exibição do resultado de qualquer comando basta encerrá-lo com ponto-e-vírgula. Exemplo:

1 >> a=5/10; % armazena a variavel mas nao exibe na tela

O símbolo de porcentagem serve para criar comentários de uma linha, tanto na janela de comandos quanto no ambiente de programação do MATLAB. Quando se deseja continuar o comando na próxima linha, o sinal utilizado pelo MATLAB é representado por 3 pontos < ... >. Ou seja:

» a=10; b=20; » c=a+... » b c = 30 Vale informar que este comando não funciona para comentários. O usuário pode interromper a execução do MATLAB, a qualquer momento, pressionando o Crtl-c.

  1. 3 strings

O MATLAB define como string o conjunto de caracteres (vetor de caracteres) colo- cados entre aspas simples. Para acessar a variável é necessário definir a localização dos caracteres. Isto é,

» a=’exemplo com string’ a = exemplo com string » a(13:18) ans = string

2 .6 funções comumente utilizadas 7

  1. 6 funções comumente utilizadas

A Tabela 4 e a Tabela 5 mostram, respectivamente, algumas funções trigonométri- cas e elementares comumente utilizadas.

sin(x) seno de x sinh(x) seno hiperbólico de x cos(x) coseno de x cosh(x) coseno hiperbólico de x tan(x) tangente de x tanh(x) tangente hiperbólica de x cot(x) cotangente de x coth(x) cotangente hiperbólica de x sec(x) secante de x sech(x) secante hiperbólica de x csc(x) cosecante de x csch(x) cosecante hiperbólica de x asin(x) arco cujo seno é x asinh(x) arco cujo seno hiperbólico é x acos(x) arco cujo cosseno é x acosh(x) arco cujo coseno hiperbólico é x atan(x) arco cuja tangente x atanh(x) arco cuja tangente hiperbólica é x acot(x) arco cuja cotangente x acoth(x) arco cujo cotangente hiperbólica é x acsc(x) arco cuja cosecante x acsch(x) arco cujo cosecante hiperbólica é x asec(x) arco cuja secante x asech(x) arco cujo secante hiperbólica é x

Tabela 4 : Funções trigonométricas.

abs(x) valor absoluto, ou seja, módulo de x exp(x) exponencial (base e) fix(x) arredonda para inteiro, em direção ao zero - p. ex., fix( 4. 89 ) = 4 floor(x) similar ao comando fix round(x) arredonda para o inteiro mais próximo - p. ex., round( 4. 89 ) = 5 , round( 4. 27 ) = 4 ceil(x) arredonda para o próximo inteiro acima - p. ex., ceil( 4. 27 ) = 5 gcd(x, y) máximo divisor comum entre x e y lcm(x, y) mínimo múltiplo comum entre x e y log(x) logaritmo natural (base e) log10(x) logaritmo decimal (base 10 ) log2(x) logaritmo base 2 e desmembra número em ponto-flutuante rem(x, y) resto da divisão de x por y - p. ex., rem( 8 , 3 ) = 2 sign(x) função sinal de x sqrt(x) raiz quadrada de x

Tabela 5 : Funções elementares.

  1. 7 exercícios

  2. Calcule as seguintes expressões usando MATLAB,

  • 2/2 ∗ 3
  • 6 − 2/5 + 7 ^ 2 − 1
  • 10/2\ 15 − 3 + 2 ∗ 4
  • 3 ^2/

2 .7 exercícios 8

• 3 ^ 2 ^ 2

  1. Tente entender o significado dos comandos round, floor e ceil,
  • round(6/9 + 3 ∗ 2 )
  • floor(6/9 + 3 ∗ 2 )
  • ceil(6/9 + 3 ∗ 2 )
  • round(1/9 + 3 ∗ 2 )
  • floor(1/9 + 3 ∗ 2 )
  • ceil(1/9 + 3 ∗ 2 )

manipulação de matrizes 10

» B = [5; -4; 6.5]

B=

Para criar uma matriz bidimensional basta combinar as sintaxes anteriores: » M = [2 1 3; 4 6 7; 3 4 5] M= 2 1 3 4 6 7 3 4 5

Os elementos de uma matriz podem ser acessados pelo nome da variável, se- guido de índices entre parênteses, sendo que o primeiro elemento é sempre o de índice 1. Exemplo de acesso:

» x=B(2) x=

Se uma nova informação for atribuída a um vetor ou matriz os redimensiona- mentos necessários serão feitos automaticamente. Exemplo:

» A=[4 5 9]; » A(6)= A= 4 5 9 0 0 8

Para acessar os elementos de uma matriz escreve-se o conjunto de índices entre parênteses, separados por vírgula. Exemplo:

» x=M(2,3) x= 7

Todos os elementos de uma certa dimensão de uma matriz podem ser indexa- dos em conjunto, como no comando abaixo que cria um vetor linha com todos os elementos da segunda linha da matriz M.

» v1 = M(2,:) v1 = 4 6 7

Esse comando pode ser traduzido como armazene em v1 os elementos de M que estão na linha 2 e em todas as colunas. Da mesma forma, o comando a seguir cria um vetor coluna com os elementos da primeira coluna da matriz M:

» v2 = M(:,1) v1 = 2 4 3

3 .1 sequências 11

O uso do sinal <:> também permite a atribuição de valores a uma dimensão completa de uma matriz. Por exemplo, a seguinte instrução sobre a matriz M atribui o valor 5 a todos elementos da primeira linha da matriz:

» M(1,:) = 5 M = 5 5 5 4 6 7 3 4 5

O arranjo vazio, expresso por [] não contém nenhum elemento. É possível eli- minar uma linha ou coluna de uma matriz igualando-se a linha ou coluna selecio- nada ao arranjo vazio. Por exemplo, a instrução a seguir remove a segunda linha da matriz M.

» M(2,:) = [] M = 5 5 5 3 4 5

Finalmente, matrizes podem ser concatenadas por meio de atribuições diretas. Exemplo:

M = [[5; 5; 5] v2 v1’] M = 5 2 4 5 4 6 5 3 7

O termo v1′^ significa utilizar a transposta de v 1.

  1. 1 sequências

A definição de uma sequência de números no MATLAB é muito simples. O sím- bolo <:> serve para criar uma sequência igualmente espaçada de valores, entre dois limites especificados, inteiros ou não. Por exemplo, a instrução abaixo cria um vetor linha com os valores 3 , 4 , 5 , 6 , 7 e 8 (o incremento padrão é unitário).

» v3 = 3: v3 = 3 4 5 6 7 8

O incremento pode ser definido pelo usuário se a seqüência for criada sob a forma [Valor inicial: Incremento: Valor final]. Exemplo:

» v4 = 2:0.5: v4 = 2.0000 2.5000 3.0000 3.5000 4.

Outra forma de se obter um vetor com valores igualmente espaçados é pelo uso da função linspace. Por exemplo, a instrução abaixo gera um vetor linha com 25 valores igualmente espaçados entre 10 e 200. Se o parâmetro que controla o número de pontos for omitido, a seqüência terá 100 valores.

» y = linspace(10,200,25);

3 .3 outras operações com matrizes 13

Considere as seguintes matrizes,

A =

 B^ =

Para as operações:

  1. C = A + B (Soma);

  2. C = A − B (Subtração)

  3. C = A ∗ B (Multiplicação matricial)

  4. C = A. ∗ B (Multiplicação elemento-a-elemento)

  5. C = A./B (Divisão elemento-a-elemento)

  6. C = A.^ 2 (Potenciação elemento-a-elemento)

Verifique que, de acordo com as definições da matemática e as convenções do MATLAB, obtém-se os seguintes resultados:

1 .C =

^2 .C^ =

 3 .C^ =

4 .C =

^5 .C^ =

 6 .C^ =

Importante observar que a multiplicação de uma matriz A(n × k) por uma ma- triz B(k × m) produz uma matriz n × m. Para as outras operações mostradas, as matrizes A e B devem ter as mesmas dimensões.

  1. 3 outras operações com matrizes

Para o vetor linha v =

[

]

, verifique os seguintes co-

mandos,

v(3) % Extrai o terceiro elemento de v v([1 5 6]) % Extrai o primeiro, quinto e sexto elemento de v v2 = v([5:8 1:4]) % Extrai e inverte as duas metades de v 4 v(5:end) % Extrai do quinto ao ultimo elemento de v v([2 3 4]) = [10 15 20] % Substitui alguns elementos de v

Ou ainda,

A = magic(4) %Quadrado magico 4x4: mesmo valor de soma dos ... elementos ao longo de qualquer linha, coluna ou da diagonal ... principal. A(2,4) % Extrai o elemento da linha 2 e quarta coluna 4 A(2:4,1:2) % Forma uma nova matriz com os elementos das linhas 2, 3 ... e 4 e colunas 1- A(14) % usando um indice, MATLAB trata a matriz como se seus ... elementos fossem alinhados em um vetor coluna

3 .3 outras operações com matrizes 14

5 idx = sub2ind(size(A), [2 3 4], [1 2 4]) %sub2ind converte os ... indices (linha,coluna) em um indice linear A(idx) %valores de A correspondentes aos indices lineares ... encontrados anteriormente

Há uma série de funções disponíveis no MATLAB para geração ou alteração de matrizes e vetores, exemplificadas na Tabela 7. Além disso, a Tabela 8 fornece algumas matrizes especiais existentes no MATLAB.

Função Operação

x=max(A); Retorna o maior componente de A. Se A for uma matriz, o resultado é um vetor linha con- tendo o maior elemento de cada coluna. Para vetores, o resultado é o maior valor (ou o número complexo com maior módulo) entre seus componentes. x=min(A); Semelhante ao max(A), mas retorna os valo- res mínimos. [vmax imax] = max(v); Para o vetor v, retorna o maior elemento em vmax e o índice correspondente em imax. x = size(A); Retorna as dimensões da matriz A em um vetor linha, x = [m, n], contendo o número de linhas (m) e colunas (n) da matriz. [m n] = size(A); Retorna o número de linhas e colunas em va- riáveis separadas. x = length(A); Retorna o comprimento do vetor A ou o comprimento da maior dimensão da ma- triz A. Nesse último caso, length(A) = max(size(A)) x = det(A); Retorna o determinante da matriz quadrada A. d=eig(A); Determina autovalores de A. [V,D]=eig(A); Determina autovalores e autovetores de A. inv(A); Calcula a inversa de A. poly(A); Calcula a equação característica de A. norm(x); Retorna o comprimento geométrico do vetor√ x^21 + x^22 + ... + x^2 n. sort(A); Rearranja em ordem crescente cada coluna de A e retorna uma matriz com as mesmas dimensões de A. sum(A); Soma os elementos de cada coluna de A e re- torna um vetor linha que contém o resultado das somas.

Tabela 7 : Outras operações.

Vale a pena ainda mencionar o comando find para obtenção de elementos de uma matriz ou vetor que obedecem uma determinada condição,

» x = find(expressão);

3 .4 exercícios 16

Operadores relacionais

< Menor que <= Menor ou igual

Maior que = Maior ou igual == Igual a ~ = Diferente de

Operadores lógicos

& operação E | operação OU ∼ negação lógica

Tabela 9 : Operadores relacionais e lógicos.

Para vetores, a função retorna 1 se todos os elementos forem não nulos e 0 em caso contrário. A função any retorna 1 para cada coluna da matriz A que contenha algum valor não nulo e 0 em caso contrário, gerando um vetor linha. A função também trabalha com vetores. Exemplo:

» x = any(A) x= 1 1 1

  1. 4 exercícios

Antes de iniciar qualquer nova atividade no MATLAB é recomendável limpar a janela de comando digitando clc. Em seguida, deve-se remover todas as variáveis da memória, usando o comando clear. Se quiser eliminar apenas uma variável, deve-se usar a sintaxe clear <nome da variável>.

  1. Treine (Extraído de Braun [ 1 ]):
  • g =

[

]

  • g =

[

]

  • g − 2
  • 2 ∗ g − 1
  • g =

[

]

  • h =

[

]

  • g − h
  • g ∗ h
  • h ∗ g
  • g. ∗ h
  • g./h
  • h.\g
  • g ∗ h′

3 .4 exercícios 17

  • g′^ ∗ h
  • e =

[

]

  • f =

[

]

  • e ∗ f
  • f ∗ e
  • q = rand( 3 )
  • A^ 2
  • A^ 2 − A ∗ A
  • A.^ 2
  • A.^ 2 − A ∗ A
  1. Armazene as seguintes matrizes

M1 =

 M2^ =

  1. Calcule as seguintes operações:
  • M1 + M2;
  • M1–M2;
  • M1 ∗ M2;
  • M1. ∗ M2;
  • M1.\M2;
  • M1.^ 2 ;
  1. Obtenha a matriz transposta de M

  2. Obtenha a matriz inversa de M

  3. Com uma linha de comando, calcule a multiplicação entre M1 e a inversa de M

  4. Com uma linha de comando, calcule a multiplicação entre M1 e a transposta de M

  5. Gere uma matriz de dimensão 5 × 5 com a diagonal igual a 3 e todos os outros elementos iguais a zero.

  6. Obtenha os índices e os valores dos elementos da matriz M1 que contém valores menores do que zero.

  7. Obtenha os índices e os valores dos elementos da matriz M2 que sejam maiores ou iguais a - 2 e menores ou iguais a 2.

  8. (Extraído de Palm III [ 4 ]) Escreva uma sentença de atribuição no MATLAB para cada uma das seguintes funções, considerando que w, x, y, z são vetores linha de mesma dimensão e c, d são escalares:

  • f = √2πc/x^1
  • E = x x++w/w/((yy+−zz)) ;