Você está na página 1de 72
Computação para Engenharia

Computação para Engenharia

Computação para Engenharia
Computação para Engenharia COMPUTAÇÃO PARA ENGENHARIA Prof. Maurício de Campos 1° Semestre de 2007 Apostila Matlab

COMPUTAÇÃO PARA ENGENHARIA

Computação para Engenharia COMPUTAÇÃO PARA ENGENHARIA Prof. Maurício de Campos 1° Semestre de 2007 Apostila Matlab

Prof. Maurício de Campos

1° Semestre de 2007

Computação para Engenharia

Computação para Engenharia

Computação para Engenharia

1. Requisitos mínimos do sistema:

Chip Intel (ou compatível) Pentium IV ou superior;

Windows XP ou superior;

Mouse;

1500 MB de espaço em disco;

1024 MB de memória.

Computação para Engenharia 2. Características Básicas Executa-se o MATLAB clicando-se duas vezes em seu ícone.

Computação para Engenharia

Computação para Engenharia 2. Características Básicas Executa-se o MATLAB clicando-se duas vezes em seu ícone.

2. Características Básicas

Executa-se o MATLAB clicando-se duas vezes em seu ícone. Abrirá uma janela com uma linha de comando. Nisto é que iremos trabalhar daqui para frente. Este programa é uma ferramenta poderosa para a resolução de problemas. Por exemplo, se você digitar um cálculo simples:

» 4+6+8

ans =

18

Lembre-se: Não existe espaço entre os números.

2.1 Operações Simples

Operação

Símbolo

Exemplo

adição

a b

+

5+3

subtração

a b

-

25-13

multiplicação

a b

*

3.14*0.82

divisão

a b

/ ou \

64/8 = 8\64

potência

a b

^

7^3

Nas expressões pode-se usas parênteses, a fim de digitar a expressão certa. Exemplo:

Expressão

3

3

4

2

2

(4

 

5

5

6

2

2

6

3

2

3

2

3)

2

1

1

MATLAB

Resultado

3^2-5-6/3*2

0

3^2-5-6/(3*2)

3

4*3^2+1

37

(4*3)^2+1

145

2.2 Formatação de números:

Comando do MATLAB

Número

Componentes

format long

35.83333333333334

16 dígitos

format short e

3.5833e+01

5 dígitos + expoente

format long e

3.583333333333334e+01

16 dígitos + expoente

format hex

4041eaaaaaaaaaab

hexadecimal

format bank

35.83

2 dígitos decimais

format +

+

positivo, negativo ou zero

format rat

215/6

aproximação em fração

format short

35.8333

padrão

2.3 Uso de Variáveis

Pode-se usar variáveis, como “a”, “b”, “verdura”, desde que se atribua um valor a elas. Por exemplo:

Determine quantas frutas foram compradas, o valor da compra e o valor médio pago por cada fruta, dados: 2 maçãs à R$ 0,71 cada, 5 pêras à R$ 0,37 cada e 6 bananas à R$ 0,12 cada.

Pode-se resolver usando as variáveis indicadas no problema.

Computação para Engenharia

Computação para Engenharia

Computação para Engenharia

» macas=2

macas =

2

» peras=5

peras =

5

» bananas=6

bananas =

6

» frutas=macas+peras+bananas frutas =

13

» custo=macas*0.71+peras*0.37+bananas*0.12

custo =

3.9900

» valormedio=custo/frutas valormedio =

0.3069

Para saber quais as variáveis que estão na memória, utiliza-se o comando who. Ele mostra todas as variáveis. E para saber o que está contido em alguma variável, a digite na linha de comando, assim:

» macas

macas =

2

Para mudar o valor de uma variável, digite na linha de comando a variável e atribua um novo valor a ela, porém as variáveis que a utilizaram continuam com seus respectivos valores anteriores. Exemplo:

» macas=3

macas =

3

» frutas

frutas =

13

Dica: As teclas de função, , , e servem para modificar algum erro de digitação ou para repetir alguns comandos já escritos.

2.4 Sobre variáveis

Como o MATLAB segue a linguagem do computador, existem alguns comentários a fazer:

fruta, Fruta, FrUtA e FRUTA são variáveis diferentes;

a partir do 19º caracter do nome das variáveis é desprezado;

jamais os nomes das variáveis deverão começar com números, e sim com caracteres.

Existem algumas variáveis especiais, como:

Computação para Engenharia Variável Valor ans variável padrão usada para resultados pi razão entre a
Computação para Engenharia
Variável
Valor
ans
variável padrão usada para resultados
pi
razão entre a circunferência e o seu diâmetro
eps
Usada para números muito pequenos
inf
Infinito, ou seja, 1 0
NaN
Não é número, ou seja, 0 0
i  j 
1
i e j
realmin
Um número pequeno real positivo
realmax
Um número grande real positivo

2.5 Outras funções básicas

Como já vimos, o comando who mostra as variáveis que estão na memória. Para retirá-las, utiliza- se do comando clear. Note que ele é incondicional, ou seja, uma vez usado não poderá recuperar esses dados. Ex. :

» clear

macas

apaga a variável macas

» clear

peras bananas

apaga as variáveis pêras e bananas

» clear

apaga todas as variáveis da memória

Você poderá incluir comentários às variáveis, usando para isso o sinal (%). Ex.:

» macas=4 % Número de maças macas =

4

O MATLAB simplesmente ignora a parte escrita depois do sinal (%).

Múltiplos comandos poderão ser feitos numa linha só, separados por vírgulas (,) ou ponto-e-vírgula (;). Ex.:

» macas=4 , bananas=6 ; peras=8 macas =

4

peras =

8

O (;) não mostra os resultados da operação, enquanto que (,) os mostra.

Para interromper a execução de um comando, pressione simultaneamente Ctrl+C.

Para sair do MATLAB digite quit.

Quando a expressão for muito longa, escreva três pontos ( próxima linha.

),

pressione Enter e continue na

Computação para Engenharia 3. Funções Científicas o Matemática, Engenharia e outras ciências. O MATLAB também

Computação para Engenharia

Computação para Engenharia 3. Funções Científicas o Matemática, Engenharia e outras ciências. O MATLAB também

3. Funções Científicas

o

Matemática, Engenharia e outras ciências. O MATLAB também trabalha com números complexos:

Como

nas

calculadoras

científicas,

MATLAB

oferece

funções

importantes

para

a

3.1 Funções Matemáticas Gerais

Algumas funções na matemática estão representadas nesse programa por alguns comandos.

Ex.:

»

x=sqrt(2)/2

x

=

0.7071

»

y=asin(x)

y

=

0.7854

» y_deg=y*180/pi

y_deg =

45.0000

Esses comandos envolvendo ângulos mostra que o MATLAB trabalha com os radianos, onde 2 360. Outros exemplos:

»

y=sqrt(3^2+4^2)

% Clássico exemplo do triângulo retangular 3-4-5;

y

=

5

»

y=rem(23,4)

y

=

3

»

x=2.6 , y1=fix(x) , y2=floor(x) , y3=ceil(x) , y4=round(x)

x

=

 

2.6000

y1 =

 

2

y2 =

 

2

y3 =

 

3

y4 =

 

3

Veja no capítulo 19 , comandos e funções do MATLAB. Nesta tabela abaixo, estão algumas das mais elementares funções matemáticas:

Função do MATLAB

Função Matemática

abs(x)

valor absoluto ou magnitude de um número complexo

acos(x)

função inversa do coseno

acosh(x)

função inversa do coseno hiperbólico

angle(x)

argumento de um número complexo

asin(x)

função inversa do seno

asinh(x)

função inversa do seno hiperbólico

atan(x)

função inversa da tangente

Computação para Engenharia Função do MATLAB Função Matemática atan2(x,y) função inversa da tangente do quarto
Computação para Engenharia
Função do MATLAB
Função Matemática
atan2(x,y)
função inversa da tangente do quarto quadrante
atanh(x)
função inversa da tangente hiperbólica
ceil(x)
arredondamento para o mais próximo de 
conj(x)
conjugado do número complexo
cos(x)
função coseno
cosh(x)
função coseno hiperbólico
exp(x)
exponencial: e x
fix(x)
arredondamento para o mais próximo de 0
floor(x)
arredondamento para o mais próximo de 
imag(x)
parte imaginária de um número complexo
log(x)
logaritmo natural
log10(x)
logaritmo decimal
real(x)
parte real de um número complexo
rem(x,y)
resto da divisão x/y
round(x)
arredondamento para o mais próximo inteiro
sign(x)
retorna o sinal de um número. Ex.: sign(1.2)=1, sign(-23.4)=-1e sign(0)=0
sin(x)
função seno
sinh(x)
função seno hiperbólico
sqrt(x)
raiz quadrada
tan(x)
função tangente
tanh(x)
função tangente hiperbólica

3.2 Números Complexos

Para ilustrar os números complexos, consideremos a equação de 2º grau ax

onde:

x

1

,

x

2

   b b 2  4 ac
  
b
b
2  4
ac

2 a

2

bx

c

Se a = 1, b = 5 e c = 6, a solução usando MATLAB será:

» a=1 ; b=5 ; c=6 ;

» x1=(-b+sqrt(b^2-4*a*c))/(2*a)

x1 =

-3

» x2=(-b-sqrt(b^2-4*a*c))/(2*a)

x2 =

-2

0 ,

» a*x1^2+b*x1+c % substituindo x1 em x para verificar o resultado ans =

0

» a*x2^2+b*x2+c % substituindo x2 em x para verificar o resultado ans =

0

Computação para Engenharia As últimas duas linhas de comando serviram para confirmar o resultado. Agora,

Computação para Engenharia

Computação para Engenharia As últimas duas linhas de comando serviram para confirmar o resultado. Agora, imaginemos

As últimas duas linhas de comando serviram para confirmar o resultado. Agora, imaginemos com a = 1, b =4, c = 13, a solução será:

x12  3 1 x2 2  3 1
x12  3 1
x2 2  3 1

O

será: x12  3 1 x2 2  3 1 O  1 não é um

1 não é um número real, portanto o resultado da solução será um número complexo,

com a parte real igual a 2 e a imaginária igual a 3 ou -3. A solução no MATLAB será:

» a=1 ; b=4 ; c=13 ;

» x1=(-b+sqrt(b^2-4*a*c))/(2*a)

x1 =

-2.0000 + 3.0000i

» x2=(-b-sqrt(b^2-4*a*c))/(2*a)

x2 =

-2.0000 - 3.0000i

» a*x1^2+b*x1+c % substituindo x1 em x para verificar o resultado ans =

0

» a*x2^2+b*x2+c % substituindo x2 em x para verificar o resultado ans =

0

x1

e

x2

são

números complexos da forma “a+bi”, sendo “a” a parte real, “b” a

parte

“a+bi”, sendo “a” a parte real, “b” a parte imaginária e i   1 .

imaginária e i  1. Na engenharia, o j é mais usado, sendo esse aceito pelo MATLAB. A seguir, algumas operações com números complexos:

» c1=1-2i

c1 =

1.0000 - 2.0000i

» c2=3*(2-sqrt(-1)*3)

c2 =

6.0000 - 9.0000i

» c3=sqrt(-2)

c3 =

0 + 1.4142i

» c4=6+sin(.5)*i

c4 =

6.0000 + 0.4794i

» c5=6+sin(.5)*j

c5 =

6.0000 + 0.4794i

Nos últimos 2 exemplos, o MATLAB considerou que 1j

» c6=(c1+c2)/c3

c6 =

-7.7782 - 4.49497i

considerou que 1  j  » c6=(c1+c2)/c3 c6 = -7.7782 - 4.49497i  1 .

1. Outras operações:

Computação para Engenharia

Computação para Engenharia

Computação para Engenharia

checagem=i^2 % 11 checagem = -1.0000 + 0.0000i

»

 1    1 checagem = -1.0000 + 0.0000i » 2 ! » checagem=real(checagem)

2

!

» checagem=real(checagem) % mostra a parte real. checagem =

-1

Nesses exemplos finais, consideremos a forma polar e retangular:

onde:

M   M M  a 2  b 2   arctan b
M
 
M
M 
a
2
 b
2
 arctan
b a

e

j

a Mcos

b Msen

a

 

bi

O MATLAB faz a conversão da forma polar em retangular, ou vice-versa usando as funções REAL, IMAG, ABS e ANGLE:

» c1

c1 =

1.000 - 2.0000i

» mag_c1=abs(c1)

mag_c1 =

2.2361

» angle_c1=angle(c1)

angle_c1 =

-1.1071

» deg_c1=angle_c1*180/pi

deg_c1 =

-63.4349

» real_c1=real(c1)

real_c1 =

1

» imag_c1=imag(c1)

imag_c1 =

-2

Dica: Note que ABS fornece o valor absoluto num número real e magnitude dum número complexo; e ANGLE fornece o ângulo em radianos.

Computação para Engenharia 4. Ajuda On-line Como o MATLAB é baseado em comandos, há a

Computação para Engenharia

Computação para Engenharia 4. Ajuda On-line Como o MATLAB é baseado em comandos, há a possibilidade

4. Ajuda On-line

Como o MATLAB é baseado em comandos, há a possibilidade do esquecimento de algum comando ou de sua função. Existem três possibilidades de consultar a ajuda: o comando help do MATLAB, o comando lookfor e usando o menu help.

4.1 O comando HELP

O comando help é muito simples, basta escrever help <tópico> que mostra, se existir, as funções deste tópico. Ex.:

» help sqrt

SQRT Square root SQRT(X) is the square root of the elements of X. Complex result are produced if X is not positive.

See also SQRTM.

Nesse exemplo acima a ajuda da função da raiz quadrada. Agora,

» help cows

cows not found

significa que nada existe sobre cows.

Escrevendo o comando help assim, sozinho, aparece uma lista de tópicos de ajuda. Ex.:

» help

HELP topics:

matlab:general

matlab:ops

matlab:lang

matlab:elmat

matlab:speemat

matlab:elfun

matlab:specfun

matlab:matfun

algebra.

matlab:datafun

matlab:polyfun

matlab:funfun

matlab:sparfun

matlab:plotxy

matlab:plotxyz

matlab:graphics

matlab:color

functions.

matlab:strfun

matlab:iofun

- General purpose commands. Operators and special characters. Language constructs and debugging. Elementary matrices and matrix manipulation. - Specialized matrices. Elementary math functions.

-

-

-

- - Specialized math functions. Matrix functions - numerical linear

-

- Data analysis and Fourier transform functions. - Polynomial and interpolation functions. -

Function function - nonlinear numerical methods. - Sparce matrix functions. -

Two dimensional graphics. - Three dimensional graphics. - General purpose graphics functions. -

Color control and lighting model

Character string functions.

- - Low-level file I/O functions.

Computação para Engenharia Toolbox:local Toolbox:sigsys Toolbox:symbolic Local function libraly. Signals and Systems

Computação para Engenharia

Computação para Engenharia Toolbox:local Toolbox:sigsys Toolbox:symbolic Local function libraly. Signals and Systems

Toolbox:local

Toolbox:sigsys

Toolbox:symbolic

Local function libraly. Signals and Systems Toolbox. - Symbolic Math Toolbox.

-

-

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

Este exemplo acima serve para você que não se lembra do comando utilizado do MATLAB.

4.2 O comando LOOKFOR

O comando lookfor é usado para ajuda sobre temas. Ex.:

» lookfor complex

CONJ

Complex conjugate.

IMAG

Complex imaginary part.

REAL

Complex real part.

CDF2RDF

Complex diagonal form to real block diagonal form.

RSF2CSF

Real block form to complex diagonal form

CPLXPAIR

Sort numbers into complex conjugate pairs.

Importante: Este comando serve apenas para temas, não para comandos.

Computação para Engenharia 5. Operações de arranjos Muitas operações matemáticas se baseiam em arranjos. Nos

Computação para Engenharia

Computação para Engenharia 5. Operações de arranjos Muitas operações matemáticas se baseiam em arranjos. Nos

5. Operações de arranjos

Muitas operações matemáticas se baseiam em arranjos. Nos próximos tópicos, falaremos sobre essa ferramenta da matemática no MATLAB.

5.1 Arranjos simples

Para construir um arranjo é bem simples, basta escrever os números dentro de colchetes, separados por espaços cada elemento do arranjo. Ex.:

»

x=[0 .1*pi .2*pi .3*pi .4*pi .5*pi .6*pi .7*pi .8*pi .9*pi pi]

x

= Columns 1 through 7

 

0

0.3142

0.6283

0.9425

1.2566

1.5708

1.8849

Columns 8 through 11

 

2.1991

2.5133

2.8274

3.1416

»

y=sin(x)

y

=

Columns 1 through 7

 

0

0.3090

0.5874

0.8090

0.9511

1

0.9511

Columns 8 through 11

 

0.8090

0.5878

0.3090

0.0000

Importante: Quando o arranjo contiver um número complexo, deve escrevê-lo sem espaços, pois o MATLAB, como qualquer outra linguagem de computação, interpretará como elementos deferentes dentro do arranjo. Ex.:

» z=[1 -2i 3 4 5+6i] ans =

1

-2i

3

4

5+6i

5.2 Endereçamento de arranjos

No MATLAB, cada elemento do arranjo pode ser acessado, através da sua ordem. Por exemplo, x(1) é o endereço do primeiro elemento, x(2) do segundo, e assim por diante. Ex.:

» x(3)

ans =

% Terceiro elemento de X

0.6283

» y(5)

ans =

0.9511

Para acessar um bloco de elementos, o MATLAB utiliza esta notação:

» x(1:5) % Do primeiro ao quinto elemento de x ans =

0

0.3142

0.6283

0.9425

1.2566

» y(3:-1:1) % Do terceiro ao primeiro elemento ans =

0.5878 0.3090

0

Computação para Engenharia

Computação para Engenharia

Computação para Engenharia

» x(2:2:7) % Do segundo, em intervalos de 2, até o sétimo elemento ans =

0.3124 0.9425

1.5708

Veja que neste último, o sétimo elemento não apareceu, pois não estava no intervalo dado a

ele.

» y([8 2 9 1]) % O oitavo, segundo, nono e primeiro elementos ans =

0.8090 0.3090

0.5878

0

5.3 Construção de arranjos

Arranjos na matemática são usados tipicamente para progressões aritméticas e geométricas, como foi o caso do X. Ele tinha 11 valores, mas, o que fazer se precisar de 111 valores? O MATLAB tem uma resposta. Ex.:

»

x(0:0.1:1)*pi

 

x

=

Columns 1 through 7

 
 

0

0.3142

0.6283

0.9425

1.2566

1.5708

1.8849

 

Columns 8 through 11

 
 

2.1991

2.5133

2.8274

3.1416

»

x=linspace(0,pi,11)

x

= Columns 1 through 7

 

0

0.3142

0.6283

0.9425

1.2566

1.5708

1.8849

 

Columns 8 through 11

 
 

2.1991

2.5133

2.8274

3.1416

No primeiro caso, a notação (0:0.1:1) criou um arranjo que começa em 0 e vai até 1 em intervalos de 0,1. No segundo caso, a função linspace foi usada para criar X. Sua sintaxe é:

linspace(primeiro_elemento,ultimo_elemento,numero_de_elementos)

Existe também a função logspace, semelhante a e esta última, porém com expoentes. Ex.:

» logspace(0,2,11)

ans =

Columns 1 through 7

3.9811

Columns 8 through 11

25.1189 39.8107 53.0957 100.0000

1.0000

1.5849

2.5119

6.3096

10.0000

15.8489

Ele criou um arranjo que começa em 10 0 até10 2 , contendo 11 valores. Sua sintaxe é:

logspace(primeiro_expoente,ultimo_expoente,numero_de_expoentes)

Há outras formas de criar um arranjo. Nos próximos exemplos, citaremos alguns deles:

» a=1:5,b=1:2:9

a =

2

1

3

4

5

Computação para Engenharia b =   1 3 5 7 9 » c=[b a]  

Computação para Engenharia

Computação para Engenharia b =   1 3 5 7 9 » c=[b a]   c

b

=

 

1

3

5

7

9

»

c=[b a]

 

c

=

 

1

3

5

7

9

1

2

3

4

5

»

d=[a(1:2:5) 1 0 1]

 

d

=

 

1

3

5

1

0

1

5.4 Operações Arranjo-Escalares

Pode-se fazer adição, subtração, multiplicação e divisão por um escalar a todos os elementos de um arranjo. Ex.:

» a-2 % Subtraiu 2 de cada elemento de a ans =

-1

0

1

2

3

» 2*a-1 % Multiplicou cada elemento de a por 2 e subtraiu 1 ans =

1 3

5

7

9

5.5 Operações Arranjo-Arranjo

Podemos fazer a adição, subtração, multiplicação e divisão de arranjos, aplicados elemento-a-

elemento (Primeiro com o primeiro, Segundo com o segundo,

» a,b

a =

 

1 2

3

4

5

b =

 
 

1 3

5

7

9

» a+b

 

ans =

 

2

5

8

11

14

»

ans-b

ans =

 
 

1

2

3

4

5

»

2*a-b

ans =

 
 

1

1

1

1

1

). Ex.:

Para a multiplicação e divisão de arranjos, requer a inclusão de um ponto. Ex.:

» a.*b

ans =

1 6

» a./b

ans =

1.0000

15

28

45

0.6667

0.6000

0.5714

0.5556

Computação para Engenharia

Computação para Engenharia

Computação para Engenharia

» b.\a

ans =

1.0000 0.6667

0.6000

0.5714

0.5556

» a*b

??? Error using ==> * Inner matrix dimensions must agree.

A divisão destes dois arranjos, feitos sem o ponto, será considerada uma operação de matrizes.

Ex.:

» a/b

ans =

0.5758

» a\b

ans =

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0.2000

0.6000

1.0000

1.4000

1.8000

Pode-se fazer também potências entre arranjos, arranjos e escalares, mas deve-se usar o ponto. Será feita elemento-a-elemento. Ex.:

» a,b

a =

 

1 2

3

4

5

b =

 
 

1 3

5

7

9

» a.^2

 

ans =

 

1

4

9

16

25

»

2.^a

ans =

 
 

2

4

8

16

32

» b.^a

ans =

 
 

1

9

125

2401

59049

»

b.^(a-3)

 

ans =

 
 

1.0000

0.3333

1.0000

7.0000 81.0000

5.6 Orientação dos Arranjos

Nos exemplos anteriores, o arranjo era linear, ou seja, ocupava várias colunas e apenas uma linha. Para mudar essa orientação para arranjo em colunas, ou seja, ocupar várias linhas e apenas uma coluna, deve-se, em vez de colocar os números com espaços, colocar o ponto-e-vírgula entre os elementos. Ex.:

Computação para Engenharia » c=[1;2;3;4;5] c = 1 2 3 4 5 Para criar um

Computação para Engenharia

Computação para Engenharia » c=[1;2;3;4;5] c = 1 2 3 4 5 Para criar um arranjo

»

c=[1;2;3;4;5]

c

=

1

2

3

4

5

Para criar um arranjo em colunas, deve-se primeiro utilizar os procedimentos da criação em linhas, e depois usar o operador “transpose” ( ' ). Ex.:

» a=1:5

a =

1

»

b

1

2

3

4

5

b=a'

=

2

3

4

5

Agora, para os números complexos, o operador “transpose” faz a transposição com o seu conjugado. Ex.:

»

d=a+i*a

d

= Columns 1 through 4 1.0000+1.0000i 2.0000+2.0000i 3.0000+3.0000i 4.0000+4.0000i Column 5

5.0000+5.0000i

»

e=d'

e

=

1.0000

- 1.0000i

2.0000

- 2.0000i

3.0000

- 3.0000i

4.0000

- 4.0000i

5.0000

- 5.0000i

Para resolver esta situação, utilizaremos o ponto (.'). Ex.:

»

f=d'

f

=

1.0000

+ 1.0000i

2.0000

+ 2.0000i

3.0000

+ 3.0000i

4.0000

+ 4.0000i

5.0000

+ 5.0000i

5.7 Outras funções

Lembra-se do comando who? Ele mostrava as variáveis locadas na memória. No caso dos arranjos, o comando whos nos dá uma informação adicional.

» whos

Name Size

Elements

Bytes

Density

Complex

a 1 by 5

5

40

Full

No

Computação para Engenharia b 5 by 1 5 40 Full No d 1 by 5

Computação para Engenharia

Computação para Engenharia b 5 by 1 5 40 Full No d 1 by 5 5

b

5 by 1

5

40

Full

No

d

1 by 5

5

80

Full

Yes

e

5 by 1

5

80

Full

Yes

f

5 by 1

5

80

Full

Yes

Esta Tabela ilustra as operações básicas de arranjo:

 

Operações de Arranjos

 

a a1

a 2

a n , b b1

b2

bn e c escalar

Adição com escalar

 

a c a1 c

a 2 c

a n c

Multiplicação com escalar

 

a *c a1 *c

a 2 *c

a n *c

Adição de arranjos

 

a b a1 b1

a2 b2

a n bn

Multiplicação de arranjos

 

a.*b a1 *b1

a 2 *b2

a n *bn

Divisão de arranjos

 

a.\b a./b a1 a1 \ / b1 b1

a2 a2 \ / b2 b2

 

a a n n \ / bn bn

Potência em arranjos

 

a.^ c a 1 ^ c b a 1 ^ b1

a.^ c.^ a

c ^ a1

a 2 ^ c c a ^ 2 a ^ 2 b2

a n ^ c

c ^ a a n n ^ b n

 

Computação para Engenharia 6. Representações Gráficas Simples: 6.1 Comandos Plot e Plot3 Embora o MATLAB

Computação para Engenharia

Computação para Engenharia 6. Representações Gráficas Simples: 6.1 Comandos Plot e Plot3 Embora o MATLAB possua

6. Representações Gráficas Simples:

6.1 Comandos Plot e Plot3

Embora o MATLAB possua uma capacidade gráfica grande, nós iremos mostrar as linhas gerais. Consideremos a função y senx, e 0 x 2. Para isso, primeiramente criaremos 30

pontos entre 0 e 2:

» x=linspace(0,2*pi,30);

O seno dos pontos de x:

» y=sin(x);

O comando plot desenha a função:

» plot(x,y)

1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
1
2
3
4
5
6

7

Agora desenharemos a função seno e a função coseno no mesmo gráfico:

» z=cos(x);

» plot(x,y,x,z)

Computação para Engenharia

Computação para Engenharia

Computação para Engenharia
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0 1
2
3
4
5
6

Vamos agora desenhar a função seno, e indicar os pontos que definiram a curva usando o símbolo +.

» plot(x,y,x,y,'+')

1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0 1
2
3
4
5
6

7

Desenhamos agora o gráfico senxcosx:

» plot(y,z)

Computação para Engenharia

Computação para Engenharia

Computação para Engenharia
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 -1 -0.5 0 0.5
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-1
-0.5
0
0.5
1

No próximo exemplo ilustraremos a identidade 2sencossen2. Desenharemos

a função usando linhas pontilhadas:

» plot(x,y,x,2*y.*z,'--')

» grid

» xlabel('Variável Independente X') % Nome do eixo dos X

% Nome do eixo dos y % Título do gráfico

» title('2sin(x)cos(x)=sin(2x)')

» ylabel('Variável Dependente')

% Linhas de grade do gráfico

V

a

r

i

á

v

e

l

D

e

p

e

n

d

e

n

t

e

2sin(x)cos(x)=sin(2x)

1

0.8

0.6

0.4

0.2

0

-0.2

-0.4

-0.6

-0.8

-1

1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3 4
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3 4
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3 4
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3 4
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3 4
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3 4
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3 4
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3 4

0

1

2

3

4

5

6

7

Variável Independente X

Analisaremos agora o exemplo de gráficos em 3-D:

» plot3(y,z,x),grid

Computação para Engenharia

Computação para Engenharia

Computação para Engenharia
1 0.5 0 -0.5 -1 1 0.5 6 0 4 -0.5 2 -1 0 A
1
0.5
0
-0.5
-1
1
0.5
6
0
4
-0.5
2
-1
0
A seguir, uma tabela com as cores e formas da função plot:

8

Símbolo

Cores

Símbolo

Linha

y

Amarelo

.

ponto

m

margenta

o

círculo

c

cyan

x

marca-x

g

verde

+

cruz

b

azul

*

estrela

w

branco

:

linha de pontos

k

preto

-.

traço e ponto

   

--

traço e traço

Com a função text você pode inserir no gráfico algum texto. Ex.:

» y=sin(x);

» z=cos(x);

» plot(x,y,x,z)

» grid

» xlabel('Variável Independente X')

» ylabel('Variável Dependente')

» title('Curvas seno e coseno')

» text(2.5,0.7,'sin(x)')

Já o comando gtext faz o seu cursor virar em forma de cruz, para que você coloque o argumento da função no gráfico. Ex.:

» gtext('cos(x)')

Computação para Engenharia

Computação para Engenharia

Computação para Engenharia

V

a

r

i

á

v

e

l

D

e

p

e

n

d

e

n

t

e

Curvas seno e coseno

1

0.8

0.6

0.4

0.2

0

-0.2

-0.4

-0.6

-0.8

-1

sin(x) cos(x)
sin(x)
cos(x)
sin(x) cos(x)
sin(x) cos(x)
sin(x) cos(x)
sin(x) cos(x)
sin(x) cos(x)
sin(x) cos(x)
sin(x) cos(x)

0

1

2

3

4

5

6

7

Variável Independente X

O comando axis manipula o gráfico, como o eixo de coordenadas e a escala. A tabela abaixo há uma descrição do comando:

Comando

Descrição

axis([xmin xmax ymin ymax])

Indica o máximo e o mínimo valores usados para os eixos. Se escreve na forma de vetor.

axis auto

Retorna a escala normal, com xmin=min(x), xmax=max(x), etc.

axis ('auto')

axis(axis)

Faz com que a escala seja feita nos correntes limites, só que a função hold será ligada, e os subsequentes plots usarão o limite dessa primeira.

axis xy

Usa as coordenadas cartesianas, fazendo com que o eixo horizontal sejam da esquerda para a direita, e o eixo vertical seja de baixo para cima.

axis ('xy')

axis square axis ('square')

Faz com que o corrente plot seja feito de modo que a figura seja um quadrado.

axis equal axis ('equal')

Faz com que as escalas sejam iguais para os eixos.

axis normal axis ('normal')

Desliga quando axis for square e/ou equal.

axis off

Tira os eixos da figura. Também os labels, mas deixa o título e os feitos pelos comandos text e gtext

axis ('off')

axis on

Retorna os eixos, juntamente com os labels e o grid.

axis ('on')

Note: Se você quiser usar, no comando axis, mais de um argumento, usa-se os argumentos separados por vírgulas, dentro dos parênteses. Ex.:

» axis('square','equal')

6.2 Outros comandos

loglog é semelhante ao plot, porém seus eixos estão em escalas logarítmicas.

semilogx é semelhante ao plot, porém seu eixo-x usa a escala logarítmica, enquanto o eixo-y usa

a escala linear.

semilogy é semelhante ao plot, porém seu eixo-y usa a escala logarítmica, enquanto o eixo-x usa

a escala linear.

Computação para Engenharia  Para plotar em coordenadas polares, fazemos o uso do comando polar(t,r,S)

Computação para Engenharia

Computação para Engenharia  Para plotar em coordenadas polares, fazemos o uso do comando polar(t,r,S) ,

Para plotar em coordenadas polares, fazemos o uso do comando polar(t,r,S), onde t é o vetor ângulo, r é o vetor radiano e S é o opcional caracter ou cores. Ex.:

» t=0:.01:2*pi;

» r=sin(2*t).*cos(2*t);

» polar(t,r)

» title('Polar Plot of sen(2t)cos(2t)')

Polar Plot of sen(2t)cos(2t)

90 0.5 120 60 0.4 0.3 150 30 0.2 0.1 180 210 330 240 300
90
0.5
120
60
0.4
0.3
150
30
0.2
0.1
180
210
330
240
300

270

0

Usa-se o comando bar e o comando stair para utilizar o gráfico através de colunas. Ex.:

» x=-2.9:0.2:2.9;

» y=exp(-x.*x);

» bar(x,y)

» title('Curva feita pela função BAR')

Curva feita pela função BAR

1

1  
 
1  

0.9

   

0.8

0.8

0.7

0.7
0.7

0.6

0.5

0.5

0.4

0.4
0.4

0.3

0.3

0.2

0.2

0.1

0

-5

0

 

5

» stairs(x,y)

» title('Curva feita pela função STAIR')

Computação para Engenharia

Computação para Engenharia

Computação para Engenharia

Curva feita pela função STAIR

1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 -3 -2 -1 0
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
-3
-2
-1
0
1
2
3
Computação para Engenharia 7. Arquivos de comandos Você pode colocar uma série de comandos a

Computação para Engenharia

Computação para Engenharia 7. Arquivos de comandos Você pode colocar uma série de comandos a serem

7. Arquivos de comandos

Você pode colocar uma série de comandos a serem executados no MATLAB criando um arquivo. Este conterá a extensão (m). O termo M-file será usado para arquivos de comandos. Para criar um arquivo, escolha New no menu File e selecione M-file. Abrirará uma janela do editor de texto. Depois de salvá-lo em seu disco, com o nome de teste.m, por exemplo, o MATLAB só executará os comandos de seu arquivo se você chamá-lo na linha de comando. Ex.:

» teste

O MATLAB procurará no diretório corrente, emitindo um sinal se não achá-lo. A seguir, alguns comandos que você necessitará para a manipulação desses arquivos:

Comando

Descrição

what

Retorna a lista de todos os M-files no diretório corrente.

dir

Lista todos os arquivos do corrente diretório.

ls

Semelhante ao dir

type test

Mostra o conteúdo do arquivo test.m

delete test

Apaga o arquivo test.m

cd path

Entra no diretório definido em path

chdir path

Semelhante ao cd path

cd

Mostra o nome do diretório corrente

chdir

Semelhante a cd

pwd

Semelhante a cd

Computação para Engenharia 8. Texto O MATLAB pode trabalhar com texto. Para determinar uma variável

Computação para Engenharia

Computação para Engenharia 8. Texto O MATLAB pode trabalhar com texto. Para determinar uma variável que

8. Texto

O MATLAB pode trabalhar com texto. Para determinar uma variável que contenha texto, deve digitá-lo entre apóstrofes ('). Ex.:

»

t=’Você conhece o MATLAB?'

Pode também pegar trechos das variáveis:

»

u

conhece

u=t(6:12)

=

Pegar de ordem inversa:

»

u

ecehnoc

u=t(12:-1:6)

=

Escrever em diferentes linhas:

» v=['Glória dos desportos nacional' 'Oh! Internacional' 'Que eu vivo a exaltar.']

v = Glória dos desportos nacional Oh! Internacional Que eu vivo a exaltar.

Você também tem acesso aos valores ASCII das letras, através da função abs:

»

s='ABCDEF'

s

=

ABCDEF

»

m=abs(s)

m

=

 

65

66

67

68

69

70

71

»

m=s+0

m

=

65

66

67

68

69

70

71

Para voltar aos caracteres normais, usa-se a função setstr:

»

setstr(m)

 

ans =

 

ABCDEF

 

Vamos somar cinco e depois converter para caracteres:

 

»

n=m+5

n

=

70

71

72

73

74

75

76

» setstr(n)

ans =

FGHIJKL

Computação para Engenharia

Computação para Engenharia

Computação para Engenharia

Finalmente, vamos converter em minúsculas os caracteres adicionando a diferença de ambos:

» n=s+'a'-'A'

n =

97

98

» setstr(n)

ans =

abcdef

99

100

101

102

103

Computação para Engenharia 9. Operações Relacionais e Lógicas Como operações tradicionais na Matemática, o MATLAB

Computação para Engenharia

Computação para Engenharia 9. Operações Relacionais e Lógicas Como operações tradicionais na Matemática, o MATLAB

9. Operações Relacionais e Lógicas

Como operações tradicionais na Matemática, o MATLAB suporta operações relacionais e lógicas. Seus comandos, operadores e funções retornam valores Verdadeiro/Falso para as questões propostas. Para demonstrar esses valores, o MATLAB utiliza-se da seguinte notação: zero (0) para retorno falso e diferente para retorno verdadeiro. Normalmente, quando a operação é puramente lógico, ele retorna o valor 1. Se não, retorna o valor da variável.

9.1 Operadores Relacionais

Operadores relacionais do MATLAB para a comparação:

Operador

Descrição

<

menor que menor ou igual que

maior que maior ou igual que igual que diferente que

<=

>

>=

==

~=

Para demostrar as operações relacionais, vamos utilizar de 2 arranjos. Note que é elemento-a- elemento. Ex.:

» A=1:9,B=9-A

A =

 

1

2

3

4

5

6

7

8

9

B =

 

8

7

6

5

4

3

2

1

0

» tf=A>4 %Em quais posições os valores de A são maiores que 4? tf =

0 0

0

0

1

1

1

1

1

» tf=A==B %Em quais as posições os valores de A são iguais as de B? tf =

0 0

0

0

0

0

0

0

0

» tf=B-(A>2) % Subtrair A de B apenas os valores maiores que 2. tf =

 

8

7

5

4

3

2

1

0

-1

»

B=B+(B==0)*eps

 

B

=

Columns 1 through 7

 
 

8.0000

7.0000

6.0000

5.0000

4.0000

3.0000

2.0000

Columns 8 through 9

1.0000 0.0000

Para B=0, soma-se o valor de eps, aproximadamente 2,2e-16 (ou importante para funções onde tem um ponto de descontinuidade da curva. Ex.:

2 2

,

10

16

). Isto

é

»

x=(-3:3)/3

x

= -1.0000 -0.6667 -0.3333

0

0.3333

0.6667

1.0000

»

sin(x)./x

Computação para Engenharia Warning : Divide by zero. ans = 0.8475 0.9276 0.9816 NaN 0.9816

Computação para Engenharia

Computação para Engenharia Warning : Divide by zero. ans = 0.8475 0.9276 0.9816 NaN 0.9816 0.9276

Warning : Divide by zero. ans =

0.8475 0.9276

0.9816

NaN

0.9816

0.9276

0.8475

A função sin(x)/x é indefinida para o ponto x=0, pois sin(0)/0=0/0. O MATLAB retornará NaN (não é número). Agora usando o eps:

» x=x+(x==0)*eps;

» sin(x)./x

ans =

0.8475

0.9276

0.9816

1.0000

0.9816

0.9276

0.8475

Agora apareceu o limite correto para x=0.

 

9.2 Operadores Lógicos:

 
 

Operador

 

Descrição

 
 

&

AND

(e)

|

OR

(ou)

~

NOT

(não)

No capítulo passado, você viu um exemplo de operadores relacionais.

» A=1:9,B=9-A;

» tf=A>4 %maiores que 4 tf =

0

0

0

0

1

1

1

1

1

Agora usando operadores lógicos:

 

tf=~(A>4) % não maiores que 4. tf =

»

 

1

1

1

1

0

0

0

0

0

tf=(A>2)$(A<6) % Maiores que 2 e menores que 6. tf =

»

0

0

1

1

1

0

0

0

0

Um exemplo para criar uma função descontínua:

» x=linspace(0,10,100); % criar os pontos.

» y=sin(x);

» z=(y>=0).*y;

» z=z+0.5*(y<0);

» z=(x<=8).*z;

» plot(x,z)

» xlabel('X'),ylabel('Z=f(x)')

» title('O sinal Descontinuo')

% aplicar a função seno.

% Os valores negativos de y iguais a zero.

% Os valores negativos de y iguais a 1/2.

% Valores de x acima de 8 iguais a zero.

Computação para Engenharia

Computação para Engenharia

Computação para Engenharia

O sinal Descontínuo

1 0.9 0.8 0.7 0.6 0.5 Z= f(x) 0.4 0.3 0.2 0.1 0 0 2
1
0.9
0.8
0.7
0.6
0.5
Z= f(x)
0.4
0.3
0.2
0.1
0
0
2
4
6
8
10

X

 

O

MATLAB tem outras funções relacionais e lógicas, algumas mencionadas no quadro

abaixo:

Função

Descrição

xor(x,y)

 

Operador exclusivo OR. Retorna 1 se ou x ou y forem diferentes de zero. Retorna zero se x e y forem iguais a zero ou diferentes de zero.

any(x)

Retorna um se qualquer elemento de um vetor x for diferente de zero. Retorna um se algum dos elementos da diagonal da matriz x for diferente de zero.

all(x)

Retorna um se todos os elementos de um vetor x forem não-nulos. Retorna um se todos os elementos da diagonal da matriz x forem diferentes de zero.

isnan(x)

 

Retorna um se x contiver NaNs (Não-números).

isinf(x)

 

Retorna um se x contiver Infs (Infinito).

finite(x)

 

Retorna um se x contiver valores finitos.

A seguir, o quadro de preferências do MATLAB, com os elementos na ordem de prioridade,

ou seja, cresce de importância de cima para baixo:

 

Tabela de preferência de Operadores

^

.^

'

.'

*

/

\

.*

./

 

.\

+

-

~

+(unary) -(unary)

:

>

<

>=

<=

==

~=

 

|

&

 
Computação para Engenharia 10. Álgebra Linear e Matrizes 10.1 Funções Básicas O Material desta seção

Computação para Engenharia

Computação para Engenharia 10. Álgebra Linear e Matrizes 10.1 Funções Básicas O Material desta seção assume

10. Álgebra Linear e Matrizes

10.1 Funções Básicas

O Material desta seção assume que você já tenha algum conhecimento anterior em álgebra linear. Na matemática, qualquer sistema linear de equações pode ser transformada numa operação de matrizes. Ex.:

João comprou uma maçã, duas bananas, três pêras e pagou R$ 3,66. Maria comprou quatro maças, cinco bananas e seis pêras e pagou R$ 8,04. José comprou sete maçãs, oito bananas, nenhuma pêra e pagou R$ 3,51. Quanto custa cada fruta?

Para resolver o problema, determinaremos x1 para o preço das maças, x2 para bananas e x3 para pêras. Temos:

4x1 7x1 x1    2x2 5x2 8x2    3x3 6x3 0x3    3,66 8,04 3,54

Agora, transformada em matrizes, temos:

1

4

7

2

5

8

3

6

x       x

 

1

x

2

3

0

 

3

8

3

,

,

,

66

04

54

A x b

Para a multiplicação de matrizes, usa-se o operador *. Estão a solução será:

»

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

A

=

1

2

3

4

5

6

7

8

0

»

b=[3.66;8.04;3.51]

b

=

3.6600

8.0400

3.5400

Para determinar as soluções, verificamos se o determinante da matriz A é diferente de zero:

»

det(A)

ans =

27

Então a solução será x A

»

x=inv(A)*b

x

=

0.2500

0.2200

0.9900

1

b , ou seja:

Computação para Engenharia

Computação para Engenharia

Computação para Engenharia

»

x

A função inv faz a matriz inversa A

x=A\b

=

0.2500

0.2200

0.9900

1

, mas tem uma outra forma:

Quando as equações são homogêneas, isto é, iguais a zero, usa-se a notação x=pinv(A)*b. A solução baseia-se no pseudo-inversão, que calcula as possibilidades de outras soluções além da nula.

10.2 Outras Funções:

A.' é a transposta da matriz A. A transposta conjugada da matriz A é escrita A'.

d=eig(A) retorna autovalores associados da matriz quadrática A.

[V,D]=eig(A) retorna autovetores na matriz V e autovalores na diagonal da matriz D.

Nota: [a,b] retorna duas variáveis a e b da função.

[L,U]=lu(A) retorna a fatoração LU da matriz quadrática A.

[Q,R]=qr(A) retorna a fatoração QR da matriz A.

[U,S,V]=svd(A) retorna o valor decomposto singular da matriz A.

rank(A) retorna o “rank” de A.

cond(A) retorna o número condicional da matriz A.

norm(A) retorna a norma

da matriz

A. 1=normal, 2-normal, F-normal, e

-normal são

suportados.

poly(A) escreve o polinômio característico associado a matriz A.

Computação para Engenharia 11. Manipulação de Matrizes No MATLAB, pode-se fazer a manipulação das matrizes

Computação para Engenharia

Computação para Engenharia 11. Manipulação de Matrizes No MATLAB, pode-se fazer a manipulação das matrizes usando

11. Manipulação de Matrizes

No MATLAB, pode-se fazer a manipulação das matrizes usando as posições de seus elementos. Ex.:

»

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

 

A

=

1

2

3

4

5

6

7

8

9

»

A(3,3)=0 % Elemento nulo na terceira linha, terceira coluna. A =

 

1

2

3

4

5

6

7

8

0

Quando um elemento está fora das dimensões da matriz, cria-se colunas iguais a zero. Ex.:

»

A(2,6)=1

A

=

1

2

3

0

0

0

4

5

6

0

0

1

7

8

9

0

0

0

Fazer outra matriz a partir de uma:

»

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

 

»

B=A(3:-1:1,1:3) % ou B=A(3:-1:1,:)

B

=

7

8

9

4

5

6

1

2

3

»

C=[A B(:,[1 3])] % A igual a A + a primeira e terceira coluna de B.

C

=

1

2

3

7

9

4

5

6

4

6