Sie sind auf Seite 1von 80

MATLAB - Matrix Laboratory

Adaptado de Profa. Carla Salso Freitas e profa. Luciana Nedel Por Profa. Patrcia Jaques

Programao Diversos nveis:


linguagem de mquina linguagem assembler linguagem C planilhas eletrnicas (Excel) pacotes cientficos (MATLAB, Scilab, Mathematica)

Qual escolher?
preciso analisar as necessidades

MATLAB - INF01040 - Profa. Patrcia Jaques

MATLAB

Software voltado ao clculo numrico Integra:


anlise numrica; clculo com matrizes; processamento de sinais; construes com grficos.

Elemento bsico de informao: MATRIZ. tima performance. Alto nvel.

(www.mathworks.com)

MATLAB - INF01040 - Profa. Patrcia Jaques

Pacotes cientficos

MATLAB (www.mathworks.com)
linguagem de programao ambiente para desenvolvimento sistema grfico funes matemticas interface com linguagens de programao (C, FORTRAN)

MATLAB - INF01040 - Profa. Patrcia Jaques

Pacotes cientficos SCILAB


sistema aberto (freeware) desenvolvido pelo INRIA (instituto francs) implementa um subconjunto das funes do MATLAB Disponvel em: http://scilabsoft.inria.fr/

MATLAB - INF01040 - Profa. Patrcia Jaques

Apresentao Software para anlise numrica Clculo com matrizes Processamento de sinais Construo de grficos Problemas expressos numa forma mais prxima da notao matemtica Interpreta comandos do usurio dados na janela de comando. Experimente: >>sqrt(64)

MATLAB - INF01040 - Profa. Patrcia Jaques

Introduo Trabalha apenas com um tipo de objeto: Matrizes Os elementos das matrizes podem ser nmeros complexos Escalares so matrizes 1x1 ex: >> a= 6 Vetores so matrizes 1xN ou Nx1 Entrando com uma matriz (3 maneiras):

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

>>A = [1 2 3 456 7 8 9]

atravs de um arquivo (ex: gera.m) >>gera

MATLAB - INF01040 - Profa. Patrcia Jaques

Matriz

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

Diferencia maisculas de minsculas!


MATLAB - INF01040 - Profa. Patrcia Jaques

Introduo Se no final da linha for colocado um ;, o Matlab executa o comando mas no mostra o resultado >>A = [1 2 3;4 5 6;7 8 9]

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


Elementos das matrizes podem ser uma expresso
>>x = [-1.3 sqrt(2) ((1+2+3)*4/5)^2] resulta em: x = -1.3000 1.4142 23.0400

Elementos so referenciados por ndices entre parnteses: x(6) = 5


resulta em: x = -1.3000 1.4142 23.0400 0 0 5

MATLAB - INF01040 - Profa. Patrcia Jaques

Acessando um elemento da Matriz

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

1 1 2 3

2
1 2

3
4

1
4 10 7

2
5 8

3
6 9

7 8

A(2,1)=10
A(2)=10

MATLAB - INF01040 - Profa. Patrcia Jaques

10

Introduo Grandes matrizes podem ser geradas a partir de pequenas:


>>r=[10 11 12]; O comando abaixo anexa matriz A o vetor r >>A=[A;r]
A= 1 4 7 10 2 5 8 11 3 6 9 12

MATLAB - INF01040 - Profa. Patrcia Jaques

11

Introduo Pequenas matrizes podem ser extradas de grandes matrizes usando :


>>A=A(1:3,:); seleciona as 3 primeiras linhas e todas as colunas da matriz A atual, modificando-a para sua forma original.
A= 1 4 7 10

2 5 8 11

3 6 9 12

MATLAB - INF01040 - Profa. Patrcia Jaques

12

Variveis e informaes da rea de trabalho Variveis so declaradas na forma:


varivel = expresso ans (answer) varivel default caso um nome seja omitido.

Se a expresso to grande que no cabe em uma linha, pode-se continuar a expresso na prxima linha usando um espao em branco e 3 pontos:
>> s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 -1/8 + 1/9 - 1/10 + 1/11 - 1/12 + 1/13;

MATLAB - INF01040 - Profa. Patrcia Jaques

13

Variveis e informaes da rea de trabalho

O comando who lista as variveis da rea de trabalho whos mostra detalhes sobre as variveis clear; clear var;

Teclas para retomar comandos digitados anteriormente

MATLAB - INF01040 - Profa. Patrcia Jaques

14

Nmeros e expresses aritmticas Notao decimal convencional Ex:


3 9.6374586 -99 1.602E-20 0.00001 6.06375e23

Operadores:
^ / \ * + exponenciao diviso direita diviso esquerda multiplicao adio subtrao

MATLAB - INF01040 - Profa. Patrcia Jaques

15

Nmeros complexos Nmero complexo z= a + b*i


onde i= -1

Funes i
>> z= 3 + 4 * i

Matrizes complexas permitem tambm a forma:


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

Caso i seja usado como varivel e tenha seu valor modificado, pode-se criar uma nova unidade complexa:
>> ii = sqrt(-1) >> z = 3 + 4 * ii

MATLAB - INF01040 - Profa. Patrcia Jaques

16

Formatos de sada
O comando format modifica o modo como as matrizes so mostradas format
short (default) short e long long e hex rat bank + 1.3333 1.3333e+000 1.33333333333333 1.33333333333333e+000 40040000000000000 4/3 1.33 +

Exemplo: >>a=2/3 >>format bank >>a

MATLAB - INF01040 - Profa. Patrcia Jaques

17

Help O comando de ajuda help fornece informaes sobre os tpicos help <tpico> -> mostra comandos relacionados ao tpico help <comando> -> mostra detalhes sobre o comando Exemplo: >> help format

MATLAB - INF01040 - Profa. Patrcia Jaques

18

Funes Conjunto extenso de funes:


matemtica elementar funes especiais matrizes elementares matrizes especiais decomposio e fatorizao de matrizes anlise de dados polinmios soluo de equaes diferenciais equaes no-lineares e otimizao integrao numrica processamento de sinais

MATLAB - INF01040 - Profa. Patrcia Jaques

19

Operaces com matrizes Transposta indicada pelo caracter apstrofo '.


A=[1 2 3;4 5 6;7 8 9]; B=A' B= 1 4 7 258 369

A
1 2 3

A
1 4 7 2 5 8

4 5 6 7 8 9

3 6 9

det(A)
Determinante da matriz A.

inv(A)
Inversa da matriz A.

MATLAB - INF01040 - Profa. Patrcia Jaques

20

Operaes com matrizes Adio e subtrao indicada pelos sinais + e - respectivamente.


C=A+B;

Essas operaes s so definidas para matrizes com a mesma dimenso. B=A+A

A
1 2 3 4 5 6

7 8 9

1 4 7 2 5 8 3 6 9

2 6 10 6 10 14 10 14 18

MATLAB - INF01040 - Profa. Patrcia Jaques

21

Operaes com matrizes Multiplicao indicada por *. S vlida quando a 2a. dimenso da 1a. matriz for igual a 1a. dimenso da 2a. matriz.

mxn e nxp
Ex: >> A*B

MATLAB - INF01040 - Profa. Patrcia Jaques

22

Operaes com matrizes A multiplicao de escalar por matriz e vice-versa tambm vlida. Ex: >> B=2*A

A
1 2 3

2*

4 5 6 7 8 9

2 8

4 6 10 12

14 16 18
23

MATLAB - INF01040 - Profa. Patrcia Jaques

Operaes com matrizes Diviso indicada por / ou \. Se A for quadrada, A\B e B/A correspondem a inv(A)*B e B*inv(A) respectivamente
A\B = inv(A)*B B/A = B*inv(A)

Em geral:
X = A\B A*X = B X = B/A X*A = B

MATLAB - INF01040 - Profa. Patrcia Jaques

24

Operaes com matrizes Exponenciao -> indicada por ^. A^p eleva A p-sima potncia se A for quadrada e p for um escalar. Se p inteiro maior do que 1, isso feito atravs de mltiplas multiplicaes.

MATLAB - INF01040 - Profa. Patrcia Jaques

25

Operaes com conjuntos So operaes aritmticas realizadas elemento por elemento da matriz. Usa-se os mesmos caracteres das operaes usuais precedidos por um ponto (.*, ./, .\, .^, .') Exemplo: Crie duas matrizes quadradas a e b Faa: >>a*b >>a.*b

MATLAB - INF01040 - Profa. Patrcia Jaques

26

Operaes com conjuntos Operaes comparativas (<, <=, >, >, ==, ~=) podem ser realizadas entre matrizes de mesma dimenso

1 para verdadeiro 0 para falso O resultado uma matriz de 0s e 1s correspondendo a Falso e Verdadeiro

& (e) e | (ou) tambm podem ser usados

MATLAB - INF01040 - Profa. Patrcia Jaques

27

Manipulao de vetores e matrizes Gerando vetores: a declarao >>x = 1:5 gera o vetor linha x = 1 2 3 4 5 . (incremento de 1) Pode-se usar outros incrementos:
>> y = 0:pi/4:pi y = 0.0000 0.7854 1.5708 2.3562 3.1416

A funo k=linspace(0,1,6) gera um vetor linearmente espaado de 0 a 1, contendo 6 elementos


k=0 0.2000 0.4000 0.6000 0.8000 1.0000

MATLAB - INF01040 - Profa. Patrcia Jaques

28

Manipulao de vetores e matrizes Elementos das matrizes: utiliza-se ndices entre parnteses.
>>A=[1 2 3;4 5 6;7 8 9]; >>A(3,3) = A(1,3) + A(3,1)
A=1 2 3 4 5 6 7 8 10

A(2,1) = 2 A(1:2, 2:3) = 0 elementos A(1,2), A(1,3), A(2,2), A(2,3) so zerados. A(:,3) = 0 elementos da terceira coluna so zerados. >>A(1:2,3) especifica uma submatriz 2x1 com os 2 primeiros elementos da terceira coluna de A
ans = 3 6
MATLAB - INF01040 - Profa. Patrcia Jaques

29

Manipulao de vetores e matrizes excluso de linhas ou colunas


atribuir [ ] linha ou coluna
A(:,3) = [] A(1:2,:) = [] exclui terceira coluna da matriz exclui duas primeiras linhas da matriz

troca entre linhas ou colunas


B = A (:, [1 3 2]) troca ordem das colunas 2 e 3. A = A ([3 2 1], :) inverte ordem das linhas.

concatenao
formar matriz usando outras (inteiras ou partes) como elementos
Ex.: sendo A = [1 2 3; 4 5 6; 7 8 9] uma matriz 3 x 3,
A(1,:) = 1 2 3 e A(3,:) = 7 8 9 Ento, B = [A(1,:); A(3,:)] uma matriz 2 x 3 contendo a primeira e a terceira linhas de A.

MATLAB - INF01040 - Profa. Patrcia Jaques

30

Funes de Construo de Matrizes possvel construir uma matriz a partir de blocos. Exemplo, se A uma matriz 3 x 3, ento
B = [A, zeros(3,2); zeros(2,3), eye(2)] Matriz 5 x 5.
Concatena na prxima linha
zeros(3,2)

Concatena na prxima coluna

B= A 3 4 6 0 0
zeros(2,3)

11 5 1 -3 2 1 0 0 0 0

0 0 0 1 0

0 0 0 0 1

eye(2)

MATLAB - INF01040 - Profa. Patrcia Jaques

31

Funes de Construo de Matrizes eye - matriz identidade


eye(2)
ans = 1 0 0 1

zeros - matriz de zeros


zeros(2,3) ou zeros(2)
ans = 0 0 0 0

MATLAB - INF01040 - Profa. Patrcia Jaques

32

Funes de Construo de Matrizes ones - matriz de 1's


ones(2,3) ou ones (2)
ans = 1 1 1 1

rand - matriz gerada aleatoriamente


rand(5,4) ou rand(2)
ans = 0.2026 0.6721 0.8381 0.0196

MATLAB - INF01040 - Profa. Patrcia Jaques

33

Funes de Construo de Matrizes diag - matriz diagonal


Se x um vetor, diag(x) a matriz diagonal com x na diagonal; ans = x=[1 2 3]; 1 0 0 diag(x)
0 0 2 0 0 3

Se A uma matriz quadrada, ento diag(A) um vetor cujos componentes so os elementos da diagonal de A.
A=[3 11 5; 4 1 -3; 6 2 1] diag(A) Tente tambm: diag(diag(A))
ans = 3 1 1
MATLAB - INF01040 - Profa. Patrcia Jaques

34

triu - parte triangular superior de uma matriz


triu(A)
ans = 3 11 5 0 1 -3 0 0 1

tril - parte triangular inferior de uma matriz


tril(A)
ans = 3 0 4 1 6 2 0 0 1

MATLAB - INF01040 - Profa. Patrcia Jaques

35

Funes Escalares
Algumas funes no Matlab operam essencialmente sobre escalares, mas operam sobre cada elemento se forem aplicadas a uma matriz. As funes escalares mais comuns so:
sin - seno asin - arcoseno exp - exponencial abs - valor absoluto round - arredonda cos - cosseno acos - arco cosseno log - log natural sqrt - raz quadrada floor - arredonda na direo de menos infinito tan - tangente atan - arco tangente rem - resto da diviso sign - funo sinal ceil - arredonda na direo de mais infinito

MATLAB - INF01040 - Profa. Patrcia Jaques

36

Funes Vetoriais Outras funes do Matlab operam essencialmente sobre vetores (linha e coluna) Mas em uma matriz m x n, agem sobre coluna por coluna para produzir um vetor linha com o resultado de sua aplicao para cada coluna. possvel operar sobre linha por linha transpondo-se a matriz, por exemplo:
a = rand(5) mean(a) mdia de cada coluna mean(a) mdia de cada linha

MATLAB - INF01040 - Profa. Patrcia Jaques

37

Funes Vetoriais Outros exemplos de funes vetoriais so:


max(a) encontra o valor mximo
[Y,I] = MAX(X)

Exemplo:

sum(a) soma os elementos median(a) mediana any(a) true se existe um elemento diferente de zero min(a) menor valor prod(a) produto dos elementos all(a) true se todos os elementos so diferentes de zero sort(a) ordena em ordem crescente

max(max(a)) max(a)

MATLAB - INF01040 - Profa. Patrcia Jaques

38

Exerccios criar matrizes


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

digitar
b B who whos clear B clc who A,C

calcular
sum(A) sum(C) sum(C`) sum(C`)` diag(C) sum(diag(C)) sum(diag(fliplr(C)))

calcular
A` B` C`

MATLAB - INF01040 - Profa. Patrcia Jaques

39

Exerccios
calcular
C s = C(1,3) + C(2,3) + C(3,3) C(1,3) + C(2,3) + C(3,3) + C(4,3) CC = C CC(4,3) = 1 CC clear CC clc

calcular
C(2,3) C(6) 1:10 c = 1:10 100:-7:50 pi c = 0:pi/4:pi c

calcular
C(1:3,3) s s = sum(C(1:3,3)) s = sum(C(:,3)) s = sum(C(:,end)) D = C(:,[1 3 2]) A+C C+2

MATLAB - INF01040 - Profa. Patrcia Jaques

40

Exerccios
calcular
C+D C-D clear who a = [8 1 6;3 5 7; 4 9 2] b = 2 * ones(3,3) a*b a .* b

MATLAB - INF01040 - Profa. Patrcia Jaques

41

Exerccio
9) Considere a seguinte matriz: 7.5 8.0 9.0 6.7 7.7 5.4 8.0 9.2 7.4 6.6 6.6 6.6 5.0 8.0 7.0 5.2 6.1 9.5 8.3 7.2 10.0 9.0 9.0 9.0 3.5 4.5 5.5 6.7 5.0 4.6 que corresponde a notas de provas de alunos (10 alunos). a) Calcule a nota final de cada aluno, como a mdia das 3 notas, sendo que a ltima nota tem peso 2. b) Calcule a mdia aritmtica das notas da turma: mdia de cada prova e mdia das notas finais c) Use as funes adequadas para listar a menor nota final e a maior nota final.
MATLAB - INF01040 - Profa. Patrcia Jaques

42

Exerccio - Pivoteamento de Gaus Crie uma matrix 5x5


A = rand(5);

Crie um vetor de 5 elementos:


Y = 1:0.2:1.8

Quer se resolver o sistema AX = Y, onde X um vetor desconhecido Vamos aplicar o pivoteamento de Gauss:
Faa 5 vezes, cada vez para uma coluna diferente c =1, 2, 3, 4 e 5:
Achar o maior elemento da c coluna (linha i); Trocar a linha c com a linha i Em cada linha k=c+1 a 5:
linha k => linha k-A(k,c)/A(c,c)*linha c

MATLAB - INF01040 - Profa. Patrcia Jaques

43

MATLAB - continuao

Anotando comandos usados diary nome do arquivo - cria arquivo texto no qual ficaro registrados os comandos e as variveis subseqentes. diary off - fecha arquivo e salva-o como texto. type nome do arquivo - apresenta na janela de comando todo o contedo do arquivo. possvel tambm abri-lo em editores de texto ASCII.

MATLAB - INF01040 - Profa. Patrcia Jaques

45

Paginando sada na janela de comando more on - quando uma sada for muito extensa, mostra somente uma tela de cada vez.
Enter avana uma linha. Barra de Espao avana uma tela. q pra de mostrar sada.

more off - retorna ao modo normal (padro).

MATLAB - INF01040 - Profa. Patrcia Jaques

46

Salvando o Workspace File Save Workspace As save nome do arquivo (salva no diretrio corrente)

File Load Workspace load nome do arquivo (busca no diretrio corrente) File Set Path permite alterar diretrio corrente

MATLAB - INF01040 - Profa. Patrcia Jaques

47

Controle de fluxo Lao for


>> for i=1:5 x(i)=i^2; end >> for i=1:5 for j=1:5 a(i,j)=i+j; b(i,j)=i-j; end end c=a+b;

MATLAB - INF01040 - Profa. Patrcia Jaques

48

Controle de fluxo
Lao while
a = 1; b = 15; while a<b clc a = a+1 b = b-1 pause(1) end disp(fim do loop)

if
for i = 1:5 for j = 1:5 if i == j A(i,j) = 2; else if abs(i-j) == 1 A(i,j) = -1; else A(i,j) = 0; end end end end

MATLAB - INF01040 - Profa. Patrcia Jaques

49

Arquivos m so arquivos que contm comandos do MATLAB


scripts
no recebem argumentos de entrada nem retornam argumentos de sada. operam em dados do workspace. teis para automatizar sries de passos que precisam ser executados vrias vezes.

funes
podem receber e/ou retornar argumentos. variveis internas so locais funo. teis para estender a linguagem MATLAB.

MATLAB - INF01040 - Profa. Patrcia Jaques

50

Arquivos m 2 passos:
criar arquivo .m usando um editor de texto.

chamar o arquivo m da linha de comando, ou de outro arquivo m.

MATLAB - INF01040 - Profa. Patrcia Jaques

51

Arquivos m criando um arquivo m


edit nome do arquivo ou File New M-File digitar cdigo do script ou da funo. File Save As - escolher diretrio corrente ou que esteja presente no search path do MATLAB.
Search Path referncia para o MATLAB procurar os arquivos m.
File Set Path

usando um arquivo m
nome do arquivo

MATLAB - INF01040 - Profa. Patrcia Jaques

52

Arquivos m Exemplo 1 script


criar arquivo digitar cdigo
clear clc A = [1 2 3; 4 5 6; 7 8 9] B = A

salvar como inicio.m executar na janela do MatLab


>> inicio

Comentrios:
% comentrio de linha texto apos o % na mesma linha no ser executado
53

MATLAB - INF01040 - Profa. Patrcia Jaques

Outros comandos
Entrada de dados: Receber um dado numrico do usurio
<varivel> = input('<mensagem>'); Exemplo:
n1 = input('Digite um numero: ');

Entrada de dados: Receber um dado texto do usurio


<varivel> = input('<mensagem>', 's'); Exemplo:
n1 = input('Digite seu nome: ', 's');

Mostrar um texto ou contedo de uma varivel:


disp('<mensagem>'); Exemplo:
disp('Total calculado: '); disp(soma);

Limpar a tela Exemplo:


clc;
MATLAB - INF01040 - Profa. Patrcia Jaques

54

Rotinas de Entrada/Sada TEXTREAD


[N,F,S]=textread(dados.txt',%d %f %s') N= 6 5

dados.txt
6 0.5 dd1 5 0.3 dd3 3 1.334 dd5

3
F= 0.5000 0.3000 1.3340 S= dd1 dd3 dd5

Exerccio Escreva um programa (arquivo-m) para:


Ler um arquivo contendo os dados de temperaturas mnimas e mximas de 15 dias, no formato (%d %f %f) 1 15.9 31.9 Calcular a mdia, menor e maior temperatura (das temperaturas mnima e mxima) Listar os resultados

MATLAB - INF01040 - Profa. Patrcia Jaques

56

Soluo
[dia,minima,maxima] = textread('dadostemp.txt','%d %f %f'); mediamin = mean(minima); mediamax = mean(maxima); minmin = min(minima); minmax = min(maxima); maxmin = max(minima); maxmax = max(maxima); disp (['Media das Minimas', mean(minima)]); disp (['Media das Maximas', mean(maxima)]); disp (['Menor Minima', min(minima)]); disp (['Menor Maxima', min(maxima)]); disp (['Maior Minima', max(minima)]); disp (['Maior Maxima', max(maxima)]);

MATLAB - INF01040 - Profa. Patrcia Jaques

57

Resolvendo Equaes Polinomiais Achar razes de um polinmio: x4 - 12x3 + 0x2 + 25x + 116=0
>>p=[1 -12 0 25 116] r=roots (p)
r= 11.7473 2.7028 -1.2251 + 1.4672i -1.2251 - 1.4672i

Construir polinmio a partir de suas razes:


>> pp = poly(r)
pp = 1.0000 -12.0000 -0.0000 25.0000 116.0000

MATLAB - INF01040 - Profa. Patrcia Jaques

58

Atividade Digitar estes comandos e observar a sada:


p=[1 4 -7 -10]; x = linspace(-1,3); v=polyval(p,x) - >gera f(x) para cada x contido no vetor x plot(x,v) title(Figure 19.1:x{^3} + 4x{^2} - 7x - 10) xlabel(x)

MATLAB - INF01040 - Profa. Patrcia Jaques

59

Expresses Simblicas Defina as variveis com o comando syms syms x Crie as expresses utilizando estas variveis
f(x) = 2x2+3x-5
g(x) = f(x) + g(x) f(x) - g(x) f(x) * g(x) f(x) / g(x) x2-x+7

>> >> >> >> >> >> >> >> >>

f=2*x^2+3*x-5 g=x^2-x+7; f + g f-g -> (2*x^2+3*x-5)*(x^2-x+7) f*g expand(ans) -> 2*x^4+x^3+6*x^2+26*x-35 f / g expand(ans) pretty (ans)

MATLAB - INF01040 - Profa. Patrcia Jaques

60

Expresses Simblicas Composio e substituio em funes:


>> 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
compose: calcula a composio das funes f(x) e g(x) em f(g(x)), finverse: encontra a inversa funcional de uma expresso subs: substitui uma varivel por um nmero (ou por outra varivel) em uma expresso

MATLAB - INF01040 - Profa. Patrcia Jaques

61

Expresses Simblicas Soluo de Equaes

ax2+bx+c = 0

>> syms a b c x >> solve(a*x^2+b*x+c) ans = [1/2/a*(-b+(b^2-4*a*c)^(1/2))] [1/2/a*(-b-(b^2-4*a*c)^(1/2))] >> pretty(ans) [ [ [1/2 [ [ [ [ [1/2 [

2 1/2] -b + (b - 4 a c) ] --------------------] a ] ] 2 1/2] -b - (b - 4 a c) ] --------------------] a ]

MATLAB - INF01040 - Profa. Patrcia Jaques

62

Resolvendo Sistema de Equaes Lineares


usando Diviso Esquerda

Se [A] uma matriz quadrada (m = n):

[A]{x} = {b}
{x} = [A]-1{b}

{x} = ?

[A] = mxn {x} = nx1 {b} = mx1 x = inv(A)*b; x = A\b;

Erro se singular Aviso se quase singular

Exemplo: Resolvendo Equaes

Resolver este conjunto de equaes simultneas:


A = [-1 1 2; 3 -1 1;-1 3 4]; b = [2;6;4]; x = inv(A)*b x = 1.0000 -1.0000 -x1

+ x2 + 2x3 = 2

2.0000
x = A\b x = 1.0000

3x1 - x2 + x3 = 6 -x1 + 3x2 + 4x3 = 4

-1.0000
2.0000

Grficos planos 2D O comando plot cria grficos de x-y no plano; Se x e y so vetores de mesmo tamanho, o comando plot(x,y) abre uma janela grfica e desenha um grfico x-y dos elementos de x versos os elementos de y. Exemplo:
x=-4:.01:4; y=sin(x); plot(x,y)

MATLAB - INF01040 - Profa. Patrcia Jaques

65

Grficos planos 2D Outro exemplo: Desenhar o grfico de y=exp(-x.^2) no intervalo 1.5 a 1.5.
x = -1.5:0.01:1.5; y= exp(-x.^2); plot(x,y)

O comando grid coloca uma grade de linhas sobre o grfico atual.


Experimente refazer o comando anterior e depois digite grid.

MATLAB - INF01040 - Profa. Patrcia Jaques

66

+ grficos Grficos podem ter ttulos, eixos rotulados e textos. Para isso usa-se os seguintes comandos que tem strings como argumentos:
title ttulo do grfico xlabel rtulo do eixo x ylabel rtulo do eixo y gtext texto posicionado interativamente (mouse ou setas) text posiciona texto na posio especificada

title 'Ttulo' xlabel 'x' ylabel 'y'

MATLAB - INF01040 - Profa. Patrcia Jaques

67

+ grficos
Exemplo:
x = 0:pi/100:2*pi; y = sin(x); plot(x,y); %o caracter \pi cria o smbolo xlabel('x = 0:2\pi'); ylabel('Seno de x'); title('Funo Seno','FontSize',12); gtext ('y = sin(x));

MATLAB - INF01040 - Profa. Patrcia Jaques

68

+ grficos Os eixos so auto escalonados. Podem ser modificados utilizando-se o comando axis. Se c=[ xmin, xmax, ymin, ymax ], ento o comando
axis(c) ajusta o escalonamento dos eixos para os limites definidos no vetor c.

MATLAB - INF01040 - Profa. Patrcia Jaques

69

+ grficos
axis auto - retorna-se ao auto escalonamento axis square - garante que a mesma escala usada para ambos os eixos axis image - apresenta imagem com a mesma relao de aspecto da imagem axis off - desativa os eixos axis on - ativa os eixos

MATLAB - INF01040 - Profa. Patrcia Jaques

70

Grficos planos 2D mltiplos H duas formas de se fazer grficos mltiplos em uma nica janela. Exemplo 1:
x=0:0.01:2*pi; y1=sin(x); y2=sin(2*x); y3=sin(4*x); plot(x,y1,x,y2,x,y3)

MATLAB - INF01040 - Profa. Patrcia Jaques

71

+ grficos possvel alterar os caracteres de tipo de linha e de ponto usados como padro. Exemplo:
x=0:0.01:2*pi; y1=sin(x); y2=sin(2*x); y3=sin(4*x); plot(x,y1,'--',x,y2,'*',x,y3,'+')

MATLAB - INF01040 - Profa. Patrcia Jaques

72

+ grficos Tipos de linha:


slido (-), tracejado (--), pontilhado (:), trao e ponto (-.) Tipos de Marcas:
ponto (.), sinal de adio (+), asterisco (*), crculo (o), letra x (x)

Exemplo:
x1 = 0:pi/100:2*pi; x2 = 0:pi/10:2*pi; plot(x1,sin(x1),'r:',x2,sin(x2),'r+')

MATLAB - INF01040 - Profa. Patrcia Jaques

73

Grficos planos 2D O comando subplot pode ser usado para particionar a tela e permite a apresentao simultnea de vrios grficos no superpostos. Exemplo:
...

MATLAB - INF01040 - Profa. Patrcia Jaques

74

Grficos planos 2D
x=0:0.01:2*pi; y1=sin(x); y2=sin(2*x); y3=sin(3*x); y4=sin(4*x)+cos(x); y5=cos(2*x)+sin(3*x); subplot(2,2,1), plot(y1) subplot(2,2,2), plot(y2) subplot(2,2,3), plot(y3) subplot(2,2,4), plot(y4) Exerccio:
modifique o cdigo ao lado para apresentar tambm a funo y5.

MATLAB - INF01040 - Profa. Patrcia Jaques

75

Grficos em malhas 3D possvel desenhar superfcies em malhas 3D com a funo mesh. O comando mesh(z) cria um desenho 3D em perspectiva dos elementos da matriz z. A superfcie da grade definida pelas coordenadas z dos pontos, acima de uma grade retangular no plano x-y.

MATLAB - INF01040 - Profa. Patrcia Jaques

76

Grficos em malhas 3D Exemplo:


mesh(eye(10))

Para desenhar o grfico de uma funo z=f(x,y) sobre um retngulo, deve-se primeiro definir os vetores xx e yy que do as parties dos lados do retngulo.

MATLAB - INF01040 - Profa. Patrcia Jaques

77

Grficos em malhas 3D Com a funo meshgrid (domnio da grade) possvel criar uma matriz x, cujas linhas igualam-se a xx e cujas colunas tm comprimentos de yy e, similarmente, uma matriz y, cujas linhas igualam-se matriz yy usando-se o comando:
[x,y]=meshgrid(xx,yy);

Depois, computa-se uma matriz z, obtida pela avaliao da funo f sobre as matrizes x e y, com a qual o comando mesh pode ser utilizado.

MATLAB - INF01040 - Profa. Patrcia Jaques

78

Grficos em malhas 3D Exemplo:


xx=-2:.1:2; yy=xx; [x,y]=meshgrid(xx,yy); z=exp(-x.^2-y.^2); mesh(z)

As primeiras linhas podem ser omitidas, se modificarmos a linha de meshgrid para:


[x,y]=meshgrid(-2:.1:2, -2:.1:2);

MATLAB - INF01040 - Profa. Patrcia Jaques

79

Grficos em malhas 3D Exemplo:


[X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps; Z = sin(R)./R; mesh(X,Y,Z,'EdgeColor','black') eps o menor nmero em ponto flutuante do sistema. Sua funao no exemplo evitar diviso por zero. surf(X,Y,Z)

MATLAB - INF01040 - Profa. Patrcia Jaques

80

Das könnte Ihnen auch gefallen