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


Introdução à Matrização e Funções no MATLAB, Notas de estudo de Engenharia de Produção

As diferentes formas de introduzir matrizes no matlab, incluindo a criação de matrizes explícitas, a geração de matrizes por comandos e funções, a criação de arquivos '.m' e a carga de matrizes a partir de arquivos de dados externos. Além disso, o documento aborda o uso do comando load para ler matrizes geradas pelo matlab e armazenadas em arquivos binários ou matrizes geradas por outros programas armazenadas em arquivos ascii. O documento também discute como extraer submatrizes de matrizes e solucionar equações simultâneas usando matrizes. Por fim, é apresentado um breve sobre os comandos matemáticos disponíveis no matlab, como funções matemáticas, equações diferenciais e operações comparativas.

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 02/05/2010

marcos-ks-7
marcos-ks-7 🇧🇷

1

(1)

6 documentos

1 / 40

Toggle sidebar

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

Não perca as partes importantes!

bg1
1
1
1 INTRODUÇÃO
O MATLAB trabalha essencialmente com um tipo de objeto, uma matriz numérica retangular podendo
conter elementos complexos (deve-se lembrar que um escalar é uma matriz de dimensão l x l e que um vetor
é uma matriz que possui somente uma linha ou uma coluna).
1.1 Entrando com Matrizes Simples
As matrizes podem ser introduzidas no MATLAB por diferentes caminhos:
- digitadas na Janela de Comando (lista explícita de elementos),
- geradas por comandos e funções,
- criadas em arquivos ".m",
- carregadas a partir de um arquivo de dados externo.
O método mais fácil de entrar com pequenas matrizes no MATLAB é usando uma lista explícita. Os
elementos de cada linha da matriz são separados por espaços em branco ou vírgulas e as colunas separadas
por ponto e vírgula, colocando-se colchetes em volta do grupo de elementos que formam a matriz. Por
exemplo, entre com a expressão
>> A=[ 1 2 3;4 S 6;7 8 9 ]
Pressionando <enter> o MATLAB mostra o resultado
A =
1 2 3
4 5 6
7 8 9
A matriz A é salva na memória RAM do computador, ficando armazenada para uso posterior.
As matrizes podem, também, ser introduzidas linha a linha, o que é indicado para matrizes de grande
dimensão. Por exemplo:
>>A = [1 2 3
>> 4 5 6
>> 7 8 9]
Outra maneira para entrar com matrizes no MATLAB é através de um arquivo no formato texto com
extensão ".m". Por exemplo, se um arquivo chamado "gera.m" contém estas três linhas de texto,
A=
[1 2 3
4 5 6
7 8 9]
então a expressão "gera" lê o arquivo e introduz a matriz A.
>>gera
O comando load pode ler matrizes geradas pelo MATLAB e armazenadas em arquivos binários ou matrizes
geradas por outros programas armazenadas em arquivos ASCII.
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

Pré-visualização parcial do texto

Baixe Introdução à Matrização e Funções no MATLAB e outras Notas de estudo em PDF para Engenharia de Produção, somente na Docsity!

1 INTRODUÇÃO

O MATLAB trabalha essencialmente com um tipo de objeto, uma matriz numérica retangular podendo conter elementos complexos (deve-se lembrar que um escalar é uma matriz de dimensão l x l e que um vetor é uma matriz que possui somente uma linha ou uma coluna).

1.1 Entrando com Matrizes Simples

As matrizes podem ser introduzidas no MATLAB por diferentes caminhos:

  • digitadas na Janela de Comando (lista explícita de elementos),
  • geradas por comandos e funções,
  • criadas em arquivos ".m",
  • carregadas a partir de um arquivo de dados externo.

O método mais fácil de entrar com pequenas matrizes no MATLAB é usando uma lista explícita. Os elementos de cada linha da matriz são separados por espaços em branco ou vírgulas e as colunas separadas por ponto e vírgula, colocando-se colchetes em volta do grupo de elementos que formam a matriz. Por exemplo, entre com a expressão

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

Pressionando o MATLAB mostra o resultado

A =

A matriz A é salva na memória RAM do computador, ficando armazenada para uso posterior.

As matrizes podem, também, ser introduzidas linha a linha, o que é indicado para matrizes de grande dimensão. Por exemplo:

>>A = [1 2 3

>> 7 8 9]

Outra maneira para entrar com matrizes no MATLAB é através de um arquivo no formato texto com extensão " .m ". Por exemplo, se um arquivo chamado " gera.m " contém estas três linhas de texto,

A= [1 2 3

7 8 9]

então a expressão " gera " lê o arquivo e introduz a matriz A.

gera

O comando load pode ler matrizes geradas pelo MATLAB e armazenadas em arquivos binários ou matrizes geradas por outros programas armazenadas em arquivos ASCII.

1.2 Elementos das Matrizes

Os elementos das matrizes podem ser qualquer expressão do MATLAB, por exemplo.

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

resulta em

x =

-l.3000 1.4142 23.

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

x(6) = abs(x(l))

produz:

x =

Note que a dimensão do vetor x é aumentada automaticamente para acomodar o novo elemento e que os elementos do intervalo indefinido são estabelecidos como zero.

Grandes matrizes podem ser construídas a partir de pequenas matrizes. Por exemplo, pode-se anexar outra linha na matriz A usando

r= [ l0 11 12]; A= [A;r]

que resulta em

A =

Note que o vetor r não foi listado porque ao seu final foi acrescentado ";".

Pequenas, matrizes podem ser extraídas de grandes matrizes usando ";". Por exemplo,

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

seleciona as três primeiras linhas e todas as colunas da matriz A atual, modificando-a para sua forma original.

1.3 Declarações e Variáveis

Que mostra as cinco variáveis geradas em nossos exemplos, incluindo ans.

Uma informação mais detalhada mostrando a dimensão de cada uma das variáveis correntes é obtido com whos que para nosso exemplo produz:

Name Size Efements Bytes Density Complex

A 3 by 3 9 72 Full No

ans 1 by 1 1 8 Full No

r 1 by 3 3 24 Full No

s 1 by 1 1 8 Full No

x 1 by 6 6 48 Full No

Grand total is 20 elements using 160 bytes

Cada elemento de uma matriz real requer 8 bytes de memória, assim nossa matriz A de dimensão 3x3 usa 72 bytes e todas variáveis utilizadas um total de 160 bytes.

1.5 Números e Expressões Aritméticas

A notação decimal convencional, com ponto decimal opcional e o sinal de menos, é usada para números. A potência de dez pode ser incluída como um sufixo. A seguir são mostrados alguns exemplos de números aceitos:

3 -99 0. 9.637458638 1.602E-20 6.06375e

As expressões podem ser construídas usando os operadores aritméticos usuais e as regras de precedência:

1 ^ exponenciação

2 / divisão a direita

2 \ divisão a esquerda

3 * multiplicação

4 + adição

4 - subtração

Deve-se notar que existem dois símbolos para divisão: as expressões 1/4 e 4\1 possuem o mesmo valor numérico, isto é, 0,25. Parênteses são usados em sua forma padrão para alterar o mesmo a precedência usual dos operadores aritméticos.

1.6 Números e Matrizes Complexas

Números complexos são permitidos em todas operações e funções no MATLAB. Os números complexos são introduzidos usando-se as funções especiais i e j. Por exemplo

z= 3 + 4*i

ou

z= 3 +4*j

Outro exemplo é

w= r * exp(i*theta)

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

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

e

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

que produzem o mesmo resultado.

Se i ou j forem usados como variáveis, de forma que tenham seus valores originais modificados, uma nova unidade complexa deverá ser criada e utilizada de maneira usual:

ii = sqrt(-1); z = 3 + 4*ii

1.7 Formato de Saída

O formato numérico exibido na tela pode ser modificado utilizando-se o comando format , que afeta somente o modo como as matrizes são mostradas, e não como elas são computadas ou salvas (o MATLAB efetua todas operações em dupla precisão).

Se todos os elementos das matrizes são inteiros exatos, a matrizes é mostrada em um formato sem qualquer ponto decimal. Por exemplo,

x = [-1 0 1]

sempre resulta em

x = -1 0 1

Se pelo menos um dos elementos da matriz não é inteiro exato, existem várias possibilidades de formatar a saída. O formato "default", chamado de formato short , mostra aproximadamente 5 dígitos significativos ou usam notação científica. Por exemplo a expressão

matlab\elmat -Elementary matrices and matrix manipulation.

matlab\specmat -Specialized matrices.

matlab\elfun -Elementary math functions.

matlab\specfun -Specialized math functions.

matlab\matfun -Matrix functions - numerical linear algebra.

matlab\datafun -Data analysis and Fourier transform functions.

matlab\polyfun -Polynomial and interpolation functions.

matlab\funfun -Function functions: nonlinear numerical methods.

matlab\sparfun -Sparse matrix functions.

matlab\plotxy -Two dimensional graphics.

matlab\piotxyz -Three dimensional graphics.

matlab\graphics -General purpose graphics functions.

matlab\color -Color control and lighting model functions.

matlab\sounds -Sound processing functions.

matlab\strfun -Character string functions.

matlab\iofun -Low-level file I/0 functions.

matlab\demos -Demonstrations and samples.

simulink\simulink -SIMULINK model analysis.

simulink\blocks -SIMULINK block library.

simulink\simdemos -SIMULINK demonstrations and samples.

nnet\exampies - Neural Network Toolbox examples.

nnet\nnet - Neural Network Toolbox.

For more help on directory/topic, type 'help topic".

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

help plotxy

que fornece uma lista de todos os comandos relacionados com gráficos bidimensionais:

Two dimensional graphics. Elementary X-Y graphs

plot - Linear plot. loglog - Log-log scafe plot. semilogx - Semi-log scale plot. semilogy - Semi-log scale plot. fill - Draw filled 2-D polygons. Specialized X-Y graphs. polar - Polar coordinate plot. bar - Bar graph. stem - Discrete sequence or & "stemm" plot. stairs - Stairstep plot. errorbar - Error bar plot. hist - Histogram plot. rose - Angle histogram plot. compass - Compass plot. feather - Feather plot. fplot - Plot function comet - Comet-like trajectory. Graph annotation. title - Graph title. xlabel - X-axis label. ylabel - Y-axis label. text - Text annotation. gtext - Mouse placement of text. grid - Grid lines. See also PLOTXYZ, GRAPHICS

Finalmente, para obter informações sobre um comando específico, por exemplo title , digite:

help title

e informações mais detalhadas sobre este comando serão exibidas:

TITLE Titles for 2-D and 3-D plots. TITLE (‘text’) adds text at the top of the current axis. See also XLABEL, YLABEL, ZLABEL, TEXT.

Note que no exemplo mostrado para adicionar o título em um gráfico, TITLE (‘TEXT’) está escrito em letras maiúsculas somente para destacar. Deve-se lembrar que todos os comandos do MATLAB devem ser escritas em letras minúsculas, portanto, para adicionar o texto "Título do Gráfico" em um gráfico, digite:

title (‘Título do Gráfico’)

1.9 Funções

A "força" do MATLAB vem de um conjunto extenso de funções. O MATLAB possui um grande número de funções intrínsecas que não podem ser alteradas pelo usuário. Outras funções estão disponíveis em uma biblioteca externa distribuídas com o programa original (MATLAB TOOLBOX), que são na realidade arquivos com a extensão ".m" criados a partir das funções intrínsecas. A biblioteca externa (MATLAB TOOLBOX) pode ser constantemente atualizada à medida que novas aplicações são desenvolvidas. As funções do MATLAB, intrínsecas ou arquivos ".m", podem ser utilizadas apenas no ambiente MATLAB.

As categorias gerais de funções matemáticas disponíveis no MATLAB incluem:

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

Se Z é uma matriz complexa, Z’ será o conjugado complexo composto. Para obter simplesmente a transposta de Z deve-se usar Z.’ , como mostra o exemplo

Z = [1 2; 3 4] + [5 6; 7 8]*i Z1 = Z’ Z2 = Z.’

que resulta em

Z =

1.0000 + 5.0000i 2.0000 + 6.0000i 6.0000 + 7.0000i 4.0000 + 8.0000i Z1 = 1.0000 - 5.0000i 3.0000 - 7.0000i 2.0000 - 6.0000i 4.0000 - 8.0000i Z2 = 1.0000 + 5.0000i 3.0000 + 7.0000i 2.0000 + 6.0000i 4.0000 + 8.0000i

2.2 Adição e Subtração

A adição e subtração de matrizes são indicadas, respectivamente, por "+" e "-". As operações são definidas somente se as matrizes as mesmas dimensões. Por exemplo, a soma com as matrizes mostradas acima, A + x , não é correta porque A é 3x3 e x é 3x1. Porém,

C = A + B

é aceitável, e o resultado da soma é

C =

A adição e subtração também são definidas se um dos operadores é um escalar, ou seja, uma matriz l x l. Neste caso, o escalar é adicionado ou subtraído de todos os elementos do outro operador. Por exemplo:

y = x - 1

resulta em

y =

1

2.3 Multiplicação

A multiplicação de matrizes é indicada por "". A multiplicação xy é definida somente se a segunda dimensão de x for igual à primeira dimensão de y. A multiplicação

x'* y

é aceitável, e resulta em

ans = 4

É evidente que o resultado da multiplicação y'x* será o mesmo. Existem dois outros produtos que são transpostos um do outro.

x*y’

ans = 2 l -l 0 0 0 -4 -2 2

y*x’

ans = 2 0 - 1 0 - -1 0 2

O produto de uma matriz por um vetor é um caso especial do produto entre matrizes. Por exemplo A e X,

b = A'x

que resulta em

b = 5 8

Naturalmente, um escalar pode multiplicar ou ser multiplicado por qualquer matriz.

pi*x

ans = -3. 0

2.4 Divisão

Existem dois símbolos para divisão de matrizes no MATLAB "" e "/". Se A é uma matriz quadrada não singular, então A\B e B/A correspondem respectivamente à multiplicação à esquerda e à direita da matriz B pela inversa da matriz A , ou inv(A)B* e Binv(A)N,* mas o resultado é obtido diretamente. Em geral,

  • X = A\B é a solução de A*X = B
  • X = B/A é a solução de X*A = B

resulta em

z= 4 10 18

As expressões A./B e A.\B formam um conjunto cujos elementos são simplesmente os quocientes dos elementos individuais de A e B. Assim,

z = x .\ y

resulta em

z = 4.0000 2.5000 2.

3.3 Exponenciação

A exponenciação de conjuntos é indicada por ". ^". A seguir são mostrados alguns exemplos usando os vetores x e y. A expressão

z = x .^ y

resulta em

z = l 32 729

A exponenciação pode usar um escalar.

z = x..^

z = l 4 9

Ou, a base pode ser um escalar.

z = 2.^[x y]

z = 2 4 8 16 32 64

3.4 Operações Comparativas

Estes são os seis operadores usados para comparação de duas matrizes com as mesmas dimensões:

< menor

<= menor ou igual

maior

= maior ou igual

== igual

~= diferente

A comparação é feita entre os pares de elementos correspondentes e o resultado é uma matriz composta dos números um e zero, com um representando VERDADEIRO e zero, FALSO. Por exemplo ,

ans = 0

Pode-se usar, também os operadores lógicos & (e) e I (ou). Por exemplo,

ans = 0

ans = 1

4 MANIPULAÇÃO DE VETORES E MATRIZES

O MATLAB permite a manipulação de linhas, colunas, elementos individuais e partes de matrizes.

4.1 Gerando Vetores

Os dois pontos, " : ", é um caracter importante no MATLAB. A declaração

x = 1 : 5

gera um vetor linha contendo os números de 1 a 5 com incremento unitário. Produzindo

x = 1 2 3 4 5

Outros incrementos, diferentes de um, podem ser usados.

y = 0 : pi/4 : pi

que resulta em

então

>> A(1:5,3)

ans = 11 17 88 19 25

especifica uma submatriz 5x1, ou vetor coluna, que consiste dos cinco primeiros elementos da terceira coluna da matriz A. Analogamente,

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

ans = 74 51 58 40 55 57 64 41 56 63 70 47 62 69 71 28 68 75 52 34

é uma submatriz 5x4, consiste das primeiras cinco linhas e as últimas quatro colunas.

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

A(1:2:5,:)

ans = 92 99 11 18 15 67 74 51 58 40 14 81 88 2 22 54 56 63 70 47 86 93 25 12 19 61 68 75 52 34

é uma submatriz 3x10 que consiste da primeira, terceira e quinta linhas e todas colunas da matriz A.

Muitos efeitos sofisticados são obtidos usando submatrizes em ambos os lados das declarações. Por exemplo, sendo B uma matriz 10x10 unitária,

B = ones (10)

B =

a declaração,

B(1:2:7,6:l0) = A(S:-1:2,1:5)

produz

1 1 1 1 1 86 93 25 12 19 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 85 87 19 21 13 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 14 81 88 20 22 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 98 80 17 14 16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

5 FUNÇÕES

Uma classe de comandos do MATLAB não trabalha com matrizes numéricas, mas com funções matemáticas. Esses comandos incluem:

· Integração numérica; · Equações não-lineares e otimização; · Solução de equações diferenciais.

As funções matemáticas são representadas no MATLAB por arquivos ".m". Por exemplo, a função está disponível no MATLAB como um arquivo ".m" chamado humps.m :

function y = humps(x)

y = l ./ ((x-.3).^2 + .0l) + 1./((x-.9).^2 + .04) - 6;

O gráfico da função é:

x = -l:0.0l:2; plot(x,humps(x))

Continuando o exemplo, a localização do mínimo da função humps(x) no intervalo de 0.5 a 1 é obtido da seguinte maneira,

xm = fmin(‘humps’,0.5,1)

xm =

ym = humps(xm)

ym =

E o gráfico deste intervalo com o ponto de mínimo pode ser construído:

x = 0.5:0.01: plot(x, humps(x), xm, ym, ‘o’)

Pode-se ver que a função humps(x) apresenta dois "zeros" no intercalo de -1 a 2. A localização do primeiro "zero" é próxima do ponto x = 0,

xzl = fzero('humps',0)

xzl = -0.

e a localização do segundo "zero" é próxima do ponto x= 1,

xz2=fzero('humps',1)

xz2 =

O gráfico da função com os dois "zeros" é obtido através da expressão:

x = -1:0.01: plot(x, humps(x), xzl, humps(xzl),'*', xz2, humps(xz2), '+'), grid

5.3 Equações Diferenciais

Os comandos do MATLAB para resolver equações diferenciais ordinárias são:

ode23 Resolver equação diferencial. método baixa ordem.

ode23p Resolver e plotar soluções.

ode45 Resolver equação diferencial. Método para alta ordem

Considere a equação diferencial de segunda ordem chamada de Equação de Van der Pol

x + (x^2 - 1). x + x = 0

Pode-se rescrever esta equação como um sistema acoplado de equações diferenciais de primeira ordem

x 1 = x 1. (1-x 22 ) - x 2 x 2 = x 1

O primeiro passo para simular esse sistema é criar um arquivo ".m" contendo essas equações diferenciais. Por exemplo, o arquivo volpol.m :

function xdot=volpol(t,x) xdot=[0 0] xdot(l)=x(l).*(1- x(2).^2) - x(2); xdot(2)=x(l);

Para simular a equação diferencial no intervalo 0 £ t £ 20, utiliza-se o comando ode