Você está na página 1de 69

Parte I - Visão Geral

Comandos básicos
Expressões algébricas
Cálculo simbólico de expressões
Comandos condicionais
Matrizes
Comandos gráficos

1
Comandos básicos

Tela command window, workspace e command history

2
Comandos básicos

O MatLab é um software destinado a realizar cálculos com matrizes (MATrix LABoratory).


Os comandos são muito próximos da escrita das expressões algébricas, tornando-o mais
adequado para determinadas aplicações na engenharia, em comparação a linguagem C, por
exemplo.

Podem ser incorporados pacotes de dados específicos denominados toolbox (caixa de


ferramentas) tais como: Fuzzy toolbox, Wavelet toolbox, Rede neural toolbox, entre outros.

Pode obter ajuda sobre qualquer comando ou função, a partir do comando help.
>>help % mostra uma lista de todos os pacotes disponíveis
>>help nome % ajuda sobre pacote ou função específica

Ex.:
>> help ans % ANS é resposta mais recente (ANSwer=Resposta)

3
Comandos básicos

A linguagem MatLab não contém declaração de dimensionamento ou declaração do tipo. O


armazenamento é feito automaticamente. A seguir tem-se as principais dicas sobre o nome a
ser dado a uma variável

O MatLab possui constantes numéricas predefinidas que podem ser utilizadas na definição de
vetores e matrizes, bem como na manipulação de dados. São elas:

4
Comandos básicos

As principais funções para o controle da janela de comandos são:

5
Comandos básicos

O comando break
Termina um laço. Encerra a execução de comandos for ou while quando são encontrados.

O comando pause
Fornece uma pausa na execução do programa, até que qualquer tecla ser digitada. Pause(n) dá
uma pausa de n segundos.

O comando input
Exibe mensagem na tela e dá ao usuário um prompt para entrada de dados.
input(‘texto’);
input(‘texto’,’s’)
O comando input(‘texto’) exibe o texto na tela da linha de comando e retorna o valor digitado
até que seja pressionado enter. Já input(‘texto’,’s’) é utilizado para entrada de strings.

Por exemplo:
id=input(‘Digite sua idade’) guarda o número digitado em id;
nom=input(‘Digite o seu nome’, ‘s’) guarda a string digitada em nom.

6
Comandos básicos

O comando disp
Esse comando exibe texto na tela de comando. Para escrever uma frase deve rodear-se essa
frase do símbolo ’. Quando se pretender escrever um conjunto de várias frases, devem
separar-se as frases por vírgulas e rodear o conjunto com os símbolos [ e ].

Por exemplo,
disp([‘ Estou a escrever esta frase há ‘, ‘ minutos’ ] )

Para combinar texto e valores numéricos devem converter-se estes últimos a “texto” através
da função num2str. O comando
disp(['Estou a escrever esta frase há ',num2str(n),' minutos'] )

Estou a escrever esta frase há 10 minutos


escreverá, no caso de n = 10, a frase “Estou a escrever esta frase há 10 minutos”.

7
Comandos básicos

O comando fprintf
É um comando de saída de dados. O fprintf é um método em que é possível combinar frases
com variáveis numéricas de dimensão 1, ou seja, um escalar ou um elemento da matriz.
Assim, o que for digitado entre aspas aparecerá para o usuário, os itens onde aparece %d
serão substituídos pelas variáveis, respeitando-se a ordem em que aparecem.

Além disso, %d significa que só aparecerá a parte inteira de x e y, e toda vez que for utilizado
\n ocorrerá uma troca de linha. Existem, ainda, os seguintes comandos:

%d Exibe o valor como inteiro


%e Exibe o valor no formato exponencial
%f Exibe o valor em ponto flutuante
%g Escolhe o mais curto entre ponto flutuante e exponencial

8
Comandos básicos

CARACTERES ESPECIAIS

3 1 2 3
f   4 ,5 A 
4* x 4 5 6 

>> syms x >> A=[1,2,3;4,5,6] % escrita da matriz


f=(3/(4*x))+4.5; % escrita da função exemplo
exemplo

9
Comandos básicos

CARACTERES ESPECIAIS

10
Expressões algébricas

MONTAGEM DE EXPRESSÕES ALGÉBRICAS

As expressões podem ser construídas por meio de operadores aritméticos usuais e das regras
de precedência. A ordem com que são avaliadas as expressões é dada pela seguinte regra:
expressões são avaliadas da esquerda para direita, com a potência tendo a mais alta
precedência, seguida da multiplicação e divisão que tem igual procedência, seguidas da
adição e subtração. Parênteses podem ser usados para alterar esta ordem, sendo os parêntesis
mais internos avaliados antes dos mais externos.

>> 3*25 + 5*12


ans = 135

>> 3*(25 + 5)*12


ans = 1080

11
Expressões algébricas

MONTAGEM DE EXPRESSÕES ALGÉBRICAS

Em alguns casos é mais interessante utilizar variáveis com valores armazenados.

>> a=3
>> b=25
>> c=5
>> d=12

Ou

>> a=3; b=25; c=5; d=12

>> total=a*(b + c)*d


ans = 1080

12
Expressões algébricas

FUNÇÕES CIENTÍFICAS – ELEMENTARES E TRIGONOMÉTRICAS

O MATLAB tem uma série de funções científicas predefinidas (help elfun). A maioria pode
ser usada da mesma forma que seria escrita matematicamente.

abs(x) - valor absoluto de x. Ex.:


acos(x) - arco cujo cosseno é x. >> x = sqrt(2)/2
asin(x) - arco cujo seno é x. x=
atan(x) - arco cuja tangente é x. 0.7071
cos(x) - cosseno de x.
exp(x) - exponencial ex. >> y = acos(x)
gcd(x,y) - máximo divisor comum de x e y. y=
lcm(x,y) - mínimo múltiplo comum de x e y. 0.7854
log(x) - logaritmo de x na base e.
log10(x) - logaritmo de x na base 10. >> y_graus =
rem(x,y) - resto da divisão de x por y. y*180/pi
sin(x) - seno de x. y_graus =
sqrt(x) - raiz quadrada de x. 45.0000
tan(x) - tangente de x. 13
Expressões algébricas

FORMATOS NUMÉRICOS

Quando o MatLab mostra um resultado numérico ele segue certas regras. No caso de nenhum
formato estar definido, se um resultado é um número inteiro, o MatLab mostra como um
inteiro. Quando um resultado é um número real, o MatLab mostra uma aproximação com até
quatro casas decimais.

Ex.: ≫ format short e;X


≫ X=[4/3 sqrt(2)/2.5E4] X=[1.3333e+000 5.6569e-005]
X=[1.3333 0.0001] ≫ format short g;X
≫ format short;X X=[1.3333 5.6569e-005]
X=[1.3333 0.0001] ≫ format long;X
X=[1.33333333333333 0.00005656854249] 14
Expressões algébricas

POLINÔMIOS

Os polinômios são representados, no MatLab, como vetores linhas contendo os coeficientes


ordenados segundo as potências decrescentes dos termos.

Seja um polinômio p(x) de grau n definido por:

P( x )  Ax n  Bx n1  Cx n2  ...  Dx 2  Ex  F

No Matlab, este polinômio é definido da seguinte forma:


>> pol = [A B C...E D F];

Ex.: x 6
 3 x 4
 x 3
 x 2
7 x  5

>> pol = [1 0 3 1 -1 7 5];

15
Expressões algébricas

POLINÔMIOS

Existem várias funções que trabalham com polinômios são elas:

16
Expressões algébricas

POLINÔMIOS

Para achar as raízes do polinômio, utiliza-se o comando “roots”

>> pol = [1 3 2];


>> x = roots (pol)
P( x )  x 2  3 x  2 x=
-2
-1

>> pol = [4 2 0 5];


>> roots (pol)
ans =
P( x )  4 x 3  2 x 2  5 -1.2723
0.3861 + 0.9129i
0.3861 - 0.9129i
17
Expressões algébricas

POLINÔMIOS

A função MatLab roots(p): determina as raízes da equação cujos coeficientes estão contidos
em p, enquanto que a função poly( r) retorna os coeficiente do polinômio que possui como
raízes os componentes do vetor r.

>> p = [4 2 0 5];
>> r=roots (p)
r=
-1.2723
P( x )  4 x 3  2 x 2  5 0.3861 + 0.9129i
0.3861 - 0.9129i
>> p=poly (r)
p=

1.0000 0.5000 0.0000 1.2500

18
Expressões algébricas

POLINÔMIOS

Adição
Se a dimensão dos polinômios p1 e p2 forem iguais, pode-se fazer: p1 + p2 para obter a sua
soma. Se a dimensão de p1 for diferente da dimensão de p2, pode-se usar um dos dois casos:

 Preencher com zeros os coeficientes das potências que faltam em um polinômio para este
igualar-se em dimensão com o outro;
 Usar a função polyadd(p1,p2)

Multiplicação
 A função conv(p1,p2) multiplica o polinômio p1 pelo polinômio p2.

19
Expressões algébricas

POLINÔMIOS

Divisão
A sintaxe [q,r] = deconv(p1,p2) retorna o resultado da divisão do polinômio p1 pelo
polinômio p2. Nessa saída aparecem duas variáveis, onde: q: é o quociente da divisão de p1
por p2e r: é o resto dessa divisão

Avaliação
A sintaxe polyval(p,a) avalia o polinômio p para o valor a.

Ex.: Calcular o valor de p(5) para o polinômio p(x) = x2 – 5x + 6


» p = [1 –5 6];
» polyval(p,5)
ans =
6

20
Expressões algébricas

POLINÔMIOS

Derivada
A função que determina a derivada do polinômio p é a função: polyder (p). Serão exibidos os
coeficientes do polinômio que representam a derivada.

Ex.: Calcular a derivada da função x2 – 5x + 6 = 0


» p = [1 –5 6];
» der=polyder(p)
der =
2 -5

Portanto, a derivada é dada por: 2x-5

21
Expressões algébricas

POLINÔMIOS

Sistema de Equações Lineares

Resolver sistemas da forma: A * x = b, se det(A) ≠ 0 (det = determinante) tem-se uma única


solução dada por: x = A-1 * b.

No MATLAB, esses sistemas podem ser resolvido com qualquer um dos comandos:
>> x=inv (A)*b ou >> x=A/b ou >> x=pinv (A)*b

Resolver o sistema de equações lineares:


>> A=[1 2 1; 2 -1 1; -1 1 -2]
>> b=[8; 3; -5]
 x1  2 x2  x3  8
 >> x=inv (A)*b
2 x1  x2  x3  3 x=
 x  x  2 x  5 1
 1 2 3
2
x1  1; x2  2; x3  3
3
22
Expressões simbólicas

EXPRESSÕES SIMBÓLICAS

Primeiro precisa-se comunicar ao MATLAB a variável simbólica.


sym: Cria objeto simbólico
syms: Atalho para criar múltiplos objetos simbólicos

»x=sym('x') ou » syms x » x= sym('x') ou » syms x y z


x= » y=x+2*x x=
x y= x
»y=x+2*x 3*x » y= sym('y')
y= y=
3*x y
» z= sym('z')
z=
z

Obs.: é possível determinar uma expressão inteira como simbólica.


>> sym (‘3*x+2’)
23
Expressões simbólicas

EXPRESSÕES SIMBÓLICAS

Abaixo segue um resumo das funções para manipulação de expressões algébricas:

diff(f) - calcula a derivada de f.


compose(f,g) - determina a composta f(g(x)).
expand(expr) - expande uma expressão expr.
finverse(expr) - determina a inversa funcional da expressão expr.
pretty(expr) - exibe a expressão expr numa forma mais bonita.
simple - procura encontrar uma forma mais simples de escrever uma expressão expr.
simplify(expr) - simplifica a expressão expr.
solve(expr) - acha a(s) solução(es) da equação expr= 0.
subs(expr,x,a) - substitui na expressão expr a variável x por a.
syms x y z a b - define as variáveis simbólicas x, y, z, a e b.

24
Expressões simbólicas

EXPRESSÕES SIMBÓLICAS

Uma vez definido que a variável x é uma variável simbólica, podemos definir expressões que
envolvem esta variável. Por exemplo,

>> f=2*x^2+3*x-5; g=x^2-x+7; >> f/g


>> f+g ans =
ans = (2*x^2+3*x-5)/(x^2-x+7)
3*x^2+2*x+2 >> expand(ans)
>> f-g ans =
ans = 2/(x^2-x+7)*x^2+3/(x^2-x+7)*x-5/(x^2-x+7)
x^2+4*x-12 >> pretty(ans)
>> f*g
ans = >> f^3
(2*x^2+3*x-5)*(x^2-x+7) ans =
>> expand(ans) (2*x^2+3*x-5)^3
ans = >> expand(ans)
2*x^4+x^3+6*x^2+26*x-35 ans =
8*x^6+36*x^5-6*x^4-153*x^3+15*x^2+225*x-125 25
Expressões simbólicas

EXPRESSÕES SIMBÓLICAS

Resolva os sistemas usando a função solve


x  2 y  z  8
 x  y  10 
 2 x  y  z  3
x  y  2  x  y  2 z  5

» [x,y]=solve('x+y=10', 'x-y=2') » [x,y,z]=solve('x+2*y+z=8','2*x-y+z=3','-x+y-2*z=-5')


x= x=
6 1
y= y=
4 2
z=
3

26
Expressões simbólicas

EXPRESSÕES SIMBÓLICAS

Multiplicação literal de polinômios


collect(f) determina o resultado da multiplicação dos polinômios de f.

f=(x^2+1)*(x^3+2*x)

» x=sym('x');
» f=(x^2+1)*(x^3+2*x)
f=
(x^2+1)*(x^3+2*x)
» produto=collect(f)
produto =
x^5+3*x^3+2*x
» pretty(produto)

27
Expressões simbólicas

EXPRESSÕES SIMBÓLICAS

Simplificação de expressões
simplify(f): simplifica expressões usando identidade
simple(f): simplifica expressões e coloca na forma técnica

Ex.: Ex.:
» x=sym('x'); » x=sym('x');
» f=sin(x)^2+cos(x)^2 » f=(x+1)*(x-1)
f= f=
sin(x)^2+cos(x)^2 (x+1)*(x-1)
» simplif=simplify(f) » simples=simple(f)
simplif = simples =
1 x^2-1

28
Expressões simbólicas

EXPRESSÕES SIMBÓLICAS

Fatoração de polinômios
factor(f): fatora o polinômio f, expressando-o como um produto de polinômios

Ex.:
» x=sym('x');
» f=x^4-5*x^3+5*x^2+5*x-6
f=
x^4-5*x^3+5*x^2+5*x-6
» fator=factor(f)
fator =
(x-1)*(x-2)*(x-3)*(x+1)

29
Expressões simbólicas

EXPRESSÕES SIMBÓLICAS

Expansão de polinômios
expand(f): distribui o produto através de uma soma

Ex.:
» x=sym('x');
» f=(x-1)*(x-2)*(x-3)*(x+1)
f=
(x-1)*(x-2)*(x-3)*(x+1)
» expans=expand(f)
expans =
x^4-5*x^3+5*x^2+5*x-6

30
Expressões simbólicas

EXPRESSÕES SIMBÓLICAS

Exibição de expressões na forma mais legível


pretty(f): exibe o conteúdo da expressão f em um formato mais legível

Ex.:
» x=sym('x');
» f=x^4-5*x^3+5*x^2+5*x-6
f=
x^4-5*x^3+5*x^2+5*x-6
» pretty(f)

31
Expressões simbólicas

EXPRESSÕES SIMBÓLICAS

A função compose calcula a composição das funções f(x) e g(x) em f(g(x)), a função finverse
encontra a inversa funcional de uma expressão e a função subs substitui uma variável por um
número (ou por outra varável) em uma expressão.

>> f=1/(1-x^2); g=sin(x);


>> compose(f,g)
ans = 1/(1-sin(x)^2)
>> compose(g,f)
ans = sin(1/(1-x^2))
>> finverse(g)
ans = asin(x)
>> subs(f,x,2)
ans = -1/3

32
FUNÇÕES CONDICIONAIS E
DE REPETIÇÃO

33
FUNÇÕES CONDICIONAIS E DE REPETIÇÃO

As seguintes transferências de controle podem ser usadas para alterar a sequência de


execução das instruções de uma script ou função: ciclos FOR e WHILE, instruções IF e
SWITCH e ainda BREAK, ERROR e RETURN.

Estruturas de repetição:

Instrução for
 O ciclo FOR permite que uma sequência de instruções seja executada mais do que uma
vez.
 O ciclo FOR repete um bloco de instruções um determinado número de vezes. Esse
número de vezes é especificado antes do ciclo ser executado.

Instrução while
O ciclo WHILE repete o bloco de instruções enquanto a condição associada for verdadeira.

34
FUNÇÕES CONDICIONAIS E DE REPETIÇÃO

Ciclo FOR

É um dos comandos mais simples utilizados em MatLab. Tem como sintaxe


for <condição>
[Comandos];
end

É dividido em três partes:


 A primeira parte é realizada uma vez, antes de o laço ser iniciado. A <condição> é
especificada da forma m:n ou m:i:n, sendo m o valor inicial, i o valor incremental e n o
valor final da variável.
 A segunda parte é o teste ou condição que controla o laço. Esta condição é avaliada; se
verdadeira, o corpo do laço especificada em Comandos é executado.
 A terceira parte acontece quando a condição se torna falsa e o laço termina.
 O comando end é usado como limite inferior do corpo do laço. Pode ocorrer de serem
utilizados conjuntos de laços for, principalmente na construção de matrizes.
35
FUNÇÕES CONDICIONAIS E DE REPETIÇÃO

Ciclo FOR

Suponhamos que pretendemos calcular um vetor com o valor da função seno em 1001 pontos
igualmente espaçados do intervalo [0, 10] A maneira mais óbvia de obter este vetor é:

i=0
for t=0:0.01:10
i=i+1;
y(i)=sin(t)
end

36
FUNÇÕES CONDICIONAIS E DE REPETIÇÃO

Ciclo FOR
close all
Defina os valores de x pares de 2 a 10, y de 3 clear all
acrescentando 3 até 15 e calcule for x=2:2:10
for y=3:3:15
y a1=2^(x/y);
 3 xy a2=y/x;
z  2x/ y  x a3=3*x*y;
( x  2 y )( y  x ) a4=(x+2*y);
a5=y-x;
a6=a4^a5;
a7=a2+a3
a8=a7/a6;
a9=a1-a8
end
end
37
FUNÇÕES CONDICIONAIS E DE REPETIÇÃO

Ciclo FOR

Calcule o valor de y para os seguintes valores de x de -1,5 até 3,5 incrementando 0,5.
Resolva, começando por criar um vetor x, e depois um vetor y usando cálculos "elemento a
elemento".
close all
clear all
for x=-1.5:0.5:3.5
y  x 2 ( 1  x 3 )3 x1=x^2;
x2=(1+x^3);
x3=x2^3;
x4=x1*x3
end

38
FUNÇÕES CONDICIONAIS E DE REPETIÇÃO

Ciclo WHILE

Este comando testa a expressão de controle para execução de outras sentenças.


while <condição>
[Comandos]
end

onde <condição> é uma expressão de relação da forma e1 R e2, sendo e1 e e2 expressões


aritméticas e R um dos seguintes operadores de relação:
= = igual
< = menor ou igual
> = maior ou igual
∼ = diferente
< menor
> maior

39
FUNÇÕES CONDICIONAIS E DE REPETIÇÃO

Ciclo WHILE

Adicionalmente podem ainda formar-se expressões lógicas mais complicadas combinando


elementos lógicos e expressões de relação, com os seguintes operadores lógicos:

40
FUNÇÕES CONDICIONAIS E DE REPETIÇÃO

Ciclo WHILE

Ex.: Calcular o primeiro inteiro n para o qual n! é um número com 4 dígitos.


n=1;
while prod(1:n)<1000
n=n+1; maior = 0;
end n=1;
n while (n~=0)
n=input('Digite um numero: ');
Ex.: Faça um algoritmo que determine o maior entre if(n>maior)
N números. A condição de parada é a entrada de um maior = n;
valor 0. end
end
disp ('O maior Número é:')
disp (maior)
41
FUNÇÕES CONDICIONAIS E DE REPETIÇÃO

Instruções IF - ELSEIF - ELSE

A instrução IF permite alterar a ordem de execução de uma sequência de instruções, se


determinada condição for (ou não) satisfeita. Tem como sintaxe:
if <expressão1>
[instruções1]
elseif < expressão2>
[instruções2]
else
[instruções3]
end

Cada uma das expressões expressao1, expressao2,... é uma expressão de relação da forma e1
R e2, sendo e1 e e2 expressões aritméticas e R um dos operadores de relação definidos
anteriormente. Podem também combinar-se estes operadores com os operadores lógicos.

42
FUNÇÕES CONDICIONAIS E DE REPETIÇÃO

Instruções IF - ELSEIF - ELSE

Ex.: Receber um número de usuário e mostrar se esse número é par ou ímpar:


n=input('Entre com o valor do número a ser classificado');
if rem(n,2)==0 % se o número é par
disp('O número descrito é par')
else
disp('O número descrito é ímpar')
End

Ex.: Fazer um algoritmo que lê um número e verifica se ele é negativo.


n1 = input ('Escreva um número: ');
if (n1 < 0)
fprintf ('O número %d é Negativo ' , n1);
else
fprintf ('O número %d é Positivo ' , n1);
end 43
FUNÇÕES CONDICIONAIS E DE REPETIÇÃO

O comando switch
Esse comando testa expressão de controle e seleciona um caso para executar.

switch switch_expr
case case_expr,
stat1, ..., stat1n
case {case_expr1, case_expr2, case_expr3,...}
stat2, ..., stat2n
...
otherwise,
stat3, ..., stat3n
end

44
FUNÇÕES CONDICIONAIS E DE REPETIÇÃO

Crie um programa que calcula as raízes de uma equação do segundo grau.


>> disp(' == Entre com a, b e c == '); end
a = input(' Coeficiente de x^2 '); if delta > 0.
b = input(' Coeficiente de x '); ch = 1;
c = input(' Termo independente de x '); end
if a == 0. x(1) = (-b + sqrt(delta))/(2.*a);
disp(' == A equacao nao e do segundo grau == '); x(2) = (-b - sqrt(delta))/(2.*a);
a = input(' Coeficiente de x^2 - a <> 0 '); x
end switch ch
break case 0,
delta = b^2-4.*a*c; disp(' Raizes reais e iguais.')
delta case -1,
if delta == 0. disp(' Raizes complexas conjugadas.')
ch = 0; otherwise,
end disp(' Raizes reais e desiguais.')
if delta < 0. end
ch = -1; 45
CÁLCULO MATRICIAL
Matriz acima de 1x1

46
CÁLCULO MATRICIAL

Para criar uma variável onde é armazenada uma matriz, basta escrever os elementos da
matriz entre colchetes [ ... ], sendo os elementos de uma mesma linha da matriz separados por
virgula e as linhas separadas por ponto e virgula. Por exemplo, para armazenar a matriz

numa variável de nome A usamos o comando


>> A=[1,2,3;4,5,6]
Pode-se acessar os elementos de uma matriz usando os comandos
>> A(2,3) >> A(2,:) >> A(:,1) >> A(:,1:2)
ans = ans = ans = ans =
6 4 5 6 1 1 2
4 4 5

O primeiro comando foi para mostrar o elemento (1,2) da matriz A. O segundo, é para exibir
a 2a. linha e o terceiro, é para exibir a 1a. coluna. Finalmente, o quarto comando é para exibir
a submatriz formada pela 1a. e 2a. colunas da matriz A. 47
CÁLCULO MATRICIAL

Outra maneira de definir matrizes consiste em criar vetores-linha com elementos em


progressão aritmética, através da simples sintaxe:

valor_inicial : incremento : valor_final

onde os valores fornecidos não precisam ser necessariamente inteiros. Basicamente, o


primeiro elemento do vetor criado corresponde ao valor inicial e os elementos seguintes são
acrescidos do passo (ou incremento), de tal maneira que nunca ultrapasse o valor final. Caso
o incremento seja omitido, ele será entendido como igual a 1.

>> 1:5:31
ans =
1 6 11 16 21 26 31

48
CÁLCULO MATRICIAL
Ex.: Ex.:
>> B=[A,[7;8]] >> [A;[7,8,9]]
As matrizes podem ser concatenadas
B= ans =
1 2 3 7 1 2 3
4 5 6 8 4 5 6
7 8 9
As operações matriciais são executadas de forma semelhante a que são executadas operações
escalares
>> A=[1,2;3,4]; B=[-3;1]; C=[3,5;-5,2]; >> B*A
>> A+C ??? Error using ==> *
ans = Inner matrix dimensions must agree.
4 7 >> (A*C)^2
-2 6 ans =
>> 3*A -50 144
ans = -176 430
3 6
9 12
49
CÁLCULO MATRICIAL

Cálculo do determinante de uma matriz de ordem 2 e 3


%Determinante 2x2
» syms a b c d
» A=[a b; c d]
» DET=det(A)
DET =
a*d-b*c

%Determinante 3x3
» syms a b c d e f g h i
» A=[a b c; d e f;g h i]
» DET=det(A)
DET =
i*a*e-a*f*h-i*d*b+d*c*h+g*b*f-g*c*e

50
CÁLCULO MATRICIAL

O caractere apóstrofo, " ' " , indica a transposta de uma matriz.


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

Matriz com todos os elementos iguais a 1: ones(m,n)


>> ones(3,2)
Matriz nula: zeros(m,n)
>> zeros(2,3)
Matriz identidade: eye(n)
>> eye(3)
Matriz aleatória: rand(m,n)
>> rand(2,3)

Cálculo da matriz inversa.


>> X=[1 9 0;7 3 2;4 5 3];
>> Xi=inv(X)
51
CÁLCULO MATRICIAL

A seguir listamos algumas funções matriciais que podem ser úteis. Considere a uma matriz.

eig(a) Autovalores e Autovetores;


inv(a) Inversa;
det(a) Determinante;
size(a) Tamanho;
length(a) Retorna o comprimento do vetor ou a maior dimensão de uma matriz de entrada.
rank(a) Número de linhas linearmente independentes;
diag(a) Fornece os elementos da diagonal;
sum(a) Retorna a soma dos elementos de cada coluna de uma matriz de entrada ou a soma
dos elementos de um vetor de entrada.
prod(a) Retorna o produto dos elementos de cada coluna de uma matriz de entrada ou o
produto dos elementos de um vetor de entrada.
cross(v,u) Produto vetorial entre os vetores v e u.
dot(v,u) Produto escalar entre os vetores v e u.

52
PLOTANDO GRÁFICOS

53
Aproveitando as capacidades simbólicas e existe o comando ezplot.
A sintaxe abaixo presenta o gráfico da função f(x) = sen3x + 2x no intervalo, por defeito, [-
2; 2].
>> syms x
>> ezplot ( sin (3*x) + 2*x )

Pode-se obter apenas uma região de interesse do gráfico pela sintaxe:


>> ezplot ( sin (3*x) + 2*x, [1,2] )

Podemos também representar funções implícitas, por exemplo o comando:


>> ezplot ( y^2 - 6*y - x + 5 )

Representa a região definida por y2 -6y-x+5 = 0.

54
Gráficos 2D

Basicamente, os gráficos são construídos conforme os passos abaixo:


1. Cria-se um vetor X com as coordenadas do eixo das abscissas;
2. Escreve-se a função desejada, a partir do vetor X, a qual criará um novo vetor Y das
ordenadas;
3. Desenha-se o gráfico

Os pares ordenados (x,y) assim criados são marcados no gráfico e ligados por segmentos
retas (interpolação linear). Observa-se, portanto, que, quanto menor for o incremento do vetor
X, mais pares ordenados serão criados e, consequentemente, melhor será a precisão do
gráfico. Em compensação, uma maior quantidade de memória é utilizada.

A função básica para desenhar gráficos em duas dimensões é a função plot.


plot(Abcissas,Ordenadas,’estilo’)
>> x = -10:0.5:10;
>> y = x.^2+1;
>> plot(x,y);
55
Gráficos 2D

Estes são os comandos para plotar gráficos bidimensionais:


plot % Plotar linear
loglog % Gráfico em escala logarítmica semilogx Gráfico em escala semi-logarítmica (eixo
x)
semilogy % Gráfico em escala semi-logarítmica (eixo y) fill Desenhar polígono 2D
polar % Gráfico em coordenadas polar stem Gráfico de sequência discreta
stairs % Gráfico em degrau compass Gráfico em forma de bússola
feather % Gráfico em forma de pena fplot Gráfico da função
comet % Gráfico com trajetória de cometa ezplot Plota gráficos no domínio padrão -2π < x <

56
Gráficos 2D

Especialidades dos gráficos bidimensionais

xlabel('rótulo do eixo x') % título do eixo X


ylabel('rótulo do eixo y') % título do eixo Y
grid % para inserir linhas de grade
title('título') % coloca título no gráfico, centralizado, na parte superior da tela
text(x,y,'texto') % coloca texto usando as coordenadas (x,y) como início do texto
legend('legenda1','legenda2',...,'legendan') % cria uma caixa de legendas no canto superior
direito.
figure(n) % ativa a janela da figura especificada (n)
pause % pausa na execução programa, até ser pressionada uma tecla
pause (n) % pausa na execução de um programa de (n) segundos
hold on %mantém o gráfico atual

57
Gráficos 2D

Nos gráficos podemos utilizar os comandos title (inclui um título ao gráfico), xlabel (permite
que o eixo das abscissas do gráfico seja identificado), ylabel (permite que o eixo das
ordenadas do gráfico seja identificado).

No exemplo utilizando a função plot podemos inserir os seguintes comandos para obter um
gráfico com título e com os eixos das abscissas e das ordenadas identificados.

>> x = -10:0.5:10;
>> y = x.^2+1;
>> plot(x,y);
>> title('Gráfico da função x^2+1')
>> xlabel('x')
>> ylabel('y')

58
Gráficos 2D

Desenhar o gráfico da função f(x) = x2 + 2, no intervalo [-5, 5], fornecendo título ao gráfico,
bem como aos eixos x e y. Inserir uma observação destacando o vértice da parábola, criar
uma legenda e gerar grade.
x=-5:0.01:5; % inicio: incremento :final
y=x.^2+2;
xv=0;
yv=2;
plot(x,y) % Cria curva com linha sólida e azul
hold on % Mantém o gráfico atual
plot(xv,yv,'or')
title('PARÁBOLA') % Título do gráfico
xlabel('eixo das abscissas') % Nome do eixo x
ylabel('eixo das ordenadas') % Nome do eixo y
text(xv, yv, 'vértice') % Inseri texto ao gráfico em local predefinido no programa (xv,yv)
legend('y = x.^2 + 2') % Cria legenda
grid % Gera grade
pause 59
Gráficos 2D

É possível desenhar mais que uma função no mesmo gráfico.

Por exemplo, podemos gerar no mesmo gráfico as funções sen(x), cos(x) e sen(2x).
>> x= 0:pi/100:6*pi;
>> y1=sin(x);
>> y2=cos(x);
>> y3=sin(2*x);
>> plot(x,y1,x,y2,x,y3);
>> title('Grafico das funções sen(x),cos(x),sen(2x)')
>> xlabel('x')
>> ylabel('y')

60
Gráficos 2D

Além de títulos e designação dos eixos (funções title, xlabel e ylabel) podemos definir outras
propriedades gráficas como legendas, cores e estilos de linhas, estilos de marcadores e incluir
grade. Na tabela a seguir vemos os principais valores para os atributos cores, marcadores e
estilos de linha.

>> x=-10:0.5:10;
>> y=x.^2+1;
>> plot(x,y,'m*-.');

61
Gráficos 2D

É possível colocar mais de um conjunto de eixos em uma mesma figura, criando assim
múltiplos diagramas. Os subdiagramas são criados pelo comando subplot: subplot(m,n,p)
Onde m denota o número linhas e n o número de colunas que se deseja dividir a janela
gráfica; p indica qual das subdivisões vai receber o gráfico desejado.

Ex.: Plotar as funções sen(x) e cos(x), com x= -pi: pi/20 : pi, na mesma janela mas em
gráficos separados, utilizando o comando subplot para dividir a janela em dois subgráficos.
>> subplot(2,1,1);
>> x=-pi:pi/20:pi;
>> y= sin(x);
>> plot(x,y)
>> title('Subdiagrama 1');
>> subplot(2,1,2);
>> x=-pi:pi/20:pi;
>> y= cos(x);
>> plot(x,y)
>> title('Subdiagrama 2'); 62
Gráficos 2D

Ex.: Comando subplot para dividir a janela em quatro subgráficos.

subplot(2,2,1) subplot(2,2,3)
x=-4:0.01:4; x=-4:0.01:4;
y=x.^2; y=x.^2 + 5;
plot(x,y) plot(x,y)

subplot(2,2,2) subplot(2,2,4)
x=-4:0.01:4; x=-2:0.01:2;
y=x.^2-5*x+6; y=x.^3;
plot(x,y) plot(x,y)
pause
close

63
Gráficos 2D

Além do comando plot, podemos plotar uma função através do comando fplot. Basicamente,
você deve fornecer como primeiro argumento a função que pretende usar entre apóstrofes e
como segundo, o intervalo sobre o qual a função será plotada.
>> fplot('x^2+3', [ -1, 2])

O MatLab tem uma função chamada polar que se destina ao desenho de dados usando
coordenadas polares. Sua forma básica é: polar(theta,r)

Ex.: A Cardioide pode ser expressa através de coordenadas polares por: r=2(1+cosθ)
Utilizando o comando polar, vamos plotar a Cardioide.
>> theta = 0:pi/50:2*pi;
>> r=2*(1+cos(theta));
>> polar(theta,r,'r-');
>> title('Cardioide em Coordenadas Polares');

64
Gráficos 2D

Gráficos de Barras
É um gráfico no qual cada ponto é representado por uma barra vertical ou horizontal. Tem a
seguinte síntese:
bar(x,y), para barras verticais.
barh(x,y) para barras horizontais.

O vetor x representa o rótulo ou posição da barra, e o vetor y representa a altura ou


comprimento da barra.
>> x = [1 2 3 4 5 6];
>> y = [5 4 6 7 2 5];
>> barh(x,y);
>> axis([0 10 0 7]);
>> title('Grafico de barras horizontais');

65
Gráficos 3D

O MatLab cria uma variedade de funções para gráficos em 3 dimensões. Entre elas:

plot3 Plotar em espaço 3D. Ex.: >> t=0:pi/50:10*pi; plot3(sin(t),cos(t),t);


quiver Plotar gradiente.
mesh Plotar malha 3D.
surf Plotar superfície 3D.
slice Plot visualização volumétrica.
cylinder Gerar cilindro.
sphere Gerar esfera.
ezplot3 Plotar uma curva espacial de três equações paramétricas no domínio padrão 0 < t <
2π. Ex.: >> ezplot3('sin(t)','cos(t)','t')
ezsurf Plotar a superfície de um gráfico de uma função de duas variáveis no domínio padrão -
2 π < x < 2 π e -2 π < y < 2 π. Ex.: >> ezsurf('1/sqrt(x^2 + y^2)')

Abrir exemplo mesh – Série de Fourier


66
Gráficos 3D

Meshgrid
O MatLab define uma superfície do tipo mesh (rede) pelas coordenadas Z sobre um plano x-
y. Superfícies tipo mesh são úteis para visualizar matrizes demasiadamente grandes para
serem mostradas na forma numérica, ou para plotar funções de duas variáveis.

O primeiro passo para plotar uma função de 2 variáveis z=f(x,y) é gerar matrizes X e Y
contendo linhas e colunas repetidas, respectivamente, para funcionarem como o domínio da
função. A função meshgrid transforma o domínio especificado por dois vetores x y em duas
matrizes X e Y. Essas matrizes então são usadas para avaliar a função de 2 variáveis.

Por exemplo, seja a função:


f(x,y) = sen(x2+y2)1/2 / (x2+y2) 1/2

>> [X,Y]=meshgrid(-8:0.5:8,-8:0.5:8);
>> r=sqrt(X.^2+Y.^2);
>> Z=sin(r)./r;
>> mesh(X,Y,Z) 67
EXEMPLOS APLICADOS A ENGENHARIA
MECÂNICA

Análise de energia de um sistema massa mola

Calcular para um ciclo completo:


Energia total
Força da mola
Energia potencial
Energia cinética
Velocidade máxima

Plotar gráficos:
Energia Cinética, Potencial e Total versus
Velocidade versus Deslocamento

68
EXEMPLOS APLICADOS A ENGENHARIA
MECÂNICA

Análise do movimento e dos esforços atuantes no


sistema biela manivela

69

Você também pode gostar