Beruflich Dokumente
Kultur Dokumente
Adaptado de Profa. Carla Salso Freitas e profa. Luciana Nedel Por Profa. Patrcia Jaques
Qual escolher?
preciso analisar as necessidades
MATLAB
(www.mathworks.com)
Pacotes cientficos
MATLAB (www.mathworks.com)
linguagem de programao ambiente para desenvolvimento sistema grfico funes matemticas interface com linguagens de programao (C, FORTRAN)
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)
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 456 7 8 9]
Matriz
A = [1 2 3;4 5 6;7 8 9]
1 4 2 5 3 6
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]
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
10
11
2 5 8 11
3 6 9 12
12
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;
13
O comando who lista as variveis da rea de trabalho whos mostra detalhes sobre as variveis clear; clear var;
14
Operadores:
^ / \ * + exponenciao diviso direita diviso esquerda multiplicao adio subtrao
15
Funes i
>> z= 3 + 4 * i
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
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 +
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
18
19
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.
20
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
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
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
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
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.
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
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
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
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
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.
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)
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)
31
32
33
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
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
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
37
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)
38
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`
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
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
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
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
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.
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.
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
47
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
49
funes
podem receber e/ou retornar argumentos. variveis internas so locais funo. teis para estender a linguagem MATLAB.
50
Arquivos m 2 passos:
criar arquivo .m usando um editor de texto.
51
usando um arquivo m
nome do arquivo
52
Comentrios:
% comentrio de linha texto apos o % na mesma linha no ser executado
53
Outros comandos
Entrada de dados: Receber um dado numrico do usurio
<varivel> = input('<mensagem>'); Exemplo:
n1 = input('Digite um numero: ');
54
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
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)]);
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
58
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)
60
61
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 [
62
[A]{x} = {b}
{x} = [A]-1{b}
{x} = ?
+ x2 + 2x3 = 2
2.0000
x = A\b x = 1.0000
-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)
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)
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
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));
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.
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
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)
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,'+')
72
Exemplo:
x1 = 0:pi/100:2*pi; x2 = 0:pi/10:2*pi; plot(x1,sin(x1),'r:',x2,sin(x2),'r+')
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:
...
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.
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.
76
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.
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.
78
79
80