Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouLuiz Fernando Bugalho Ramires Alterado mais de 8 anos atrás
1
MATLAB - Matrix Laboratory Adaptado de Profa
MATLAB - Matrix Laboratory Adaptado de Profa. Carla Salso Freitas e profa. Luciana Nedel Por Profa. Patrícia Jaques
2
MATLAB - INF01040 - Profa. Patrícia Jaques
Programação Diversos níveis: linguagem de máquina linguagem assembler linguagem C planilhas eletrônicas (Excel) pacotes científicos (MATLAB, Scilab, Mathematica) Qual escolher? É preciso analisar as necessidades MATLAB - INF Profa. Patrícia Jaques
3
MATLAB - INF01040 - Profa. Patrícia Jaques
Software voltado ao cálculo numérico Integra: análise numérica; cálculo com matrizes; processamento de sinais; construções com gráficos. Elemento básico de informação: MATRIZ. Ótima performance. Alto nível. ( MATLAB - INF Profa. Patrícia Jaques
4
MATLAB - INF01040 - Profa. Patrícia Jaques
Pacotes científicos MATLAB ( linguagem de programação ambiente para desenvolvimento sistema gráfico funções matemáticas interface com linguagens de programação (C, FORTRAN) MATLAB - INF Profa. Patrícia Jaques
5
MATLAB - INF01040 - Profa. Patrícia Jaques
Pacotes científicos SCILAB sistema aberto (freeware) desenvolvido pelo INRIA (instituto francês) implementa um subconjunto das funções do MATLAB Disponível em: MATLAB - INF Profa. Patrícia Jaques
6
MATLAB - INF01040 - Profa. Patrícia Jaques
Apresentação Software para análise numérica Cálculo com matrizes Processamento de sinais Construção de gráficos Problemas expressos numa forma mais próxima da notação matemática Interpreta comandos do usuário dados na janela de comando. Experimente: >>sqrt(64) MATLAB - INF Profa. Patrícia Jaques
7
MATLAB - INF01040 - Profa. Patrícia Jaques
Introdução Trabalha apenas com um tipo de objeto: Matrizes Os elementos das matrizes podem ser números complexos Escalares são matrizes 1x1 ex: >> a= 6 Vetores são matrizes 1xN ou Nx1 Entrando com uma matriz (3 maneiras): >>A = [1 2 3 4 5 6 7 8 9] >>A = [1 2 3;4 5 6;6 7 8] através de um arquivo (ex: gera.m) >>gera MATLAB - INF Profa. Patrícia Jaques
8
MATLAB - INF01040 - Profa. Patrícia Jaques
Matriz A = [1 2 3;4 5 6;7 8 9] 1 2 3 4 5 6 7 8 9 Diferencia maiúsculas de minúsculas! MATLAB - INF Profa. Patrícia Jaques
9
MATLAB - INF01040 - Profa. Patrícia Jaques
Introdução Se no final da linha for colocado um “;”, o Matlab executa o comando mas não 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 expressão >>x = [ sqrt(2) ((1+2+3)*4/5)^2] resulta em: x = Elementos são referenciados por índices entre parênteses: x(6) = 5 resulta em: x = MATLAB - INF Profa. Patrícia Jaques
10
Acessando um elemento da Matriz
1 2 3 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 A(2,1)=10 10 A(2)=10 MATLAB - INF Profa. Patrícia Jaques
11
MATLAB - INF01040 - Profa. Patrícia Jaques
Introdução Grandes matrizes podem ser geradas a partir de pequenas: >>r=[ ]; O comando abaixo anexa à matriz A o vetor r >>A=[A;r] A= 1 2 3 4 5 6 7 8 9 MATLAB - INF Profa. Patrícia Jaques
12
MATLAB - INF01040 - Profa. Patrícia Jaques
Introdução Pequenas matrizes podem ser extraídas 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 2 3 4 5 6 7 8 9 MATLAB - INF Profa. Patrícia Jaques
13
Variáveis e informações da área de trabalho
Variáveis são declaradas na forma: variável = expressão “ans” ® (answer) variável default caso um nome seja omitido. Se a expressão é tão grande que não cabe em uma linha, pode-se continuar a expressão na próxima linha usando um espaço 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 - INF Profa. Patrícia Jaques
14
Variáveis e informações da área de trabalho
O comando “who” ® lista as variáveis da área de trabalho “whos” mostra detalhes sobre as variáveis clear; clear var; Teclas para retomar comandos digitados anteriormente MATLAB - INF Profa. Patrícia Jaques
15
Números e expressões aritméticas
Notação decimal convencional Ex: E e23 Operadores: ^ exponenciação / divisão à direita \ divisão à esquerda * multiplicação + adição - subtração MATLAB - INF Profa. Patrícia Jaques
16
MATLAB - INF01040 - Profa. Patrícia Jaques
Números complexos Número complexo z= a + b*i onde i= √-1 Funções “i” >> z= * i Matrizes complexas permitem também a forma: >> A= [1 2; 3 4]+i*[5 6; 7 8] Caso “i” seja usado como variável e tenha seu valor modificado, pode-se criar uma nova unidade complexa: >> ii = sqrt(-1) >> z = * ii MATLAB - INF Profa. Patrícia Jaques
17
MATLAB - INF01040 - Profa. Patrícia Jaques
Formatos de saída O comando format modifica o modo como as matrizes são mostradas format short (default) short e e+000 long long e e+000 hex rat 4/3 bank Exemplo: >>a=2/3 >>format bank >>a MATLAB - INF Profa. Patrícia Jaques
18
MATLAB - INF01040 - Profa. Patrícia Jaques
Help O comando de ajuda “help” fornece informações sobre os tópicos help <tópico> -> mostra comandos relacionados ao tópico help <comando> -> mostra detalhes sobre o comando Exemplo: >> help format MATLAB - INF Profa. Patrícia Jaques
19
MATLAB - INF01040 - Profa. Patrícia Jaques
Funções Conjunto extenso de funções: matemática elementar funções especiais matrizes elementares matrizes especiais decomposição e fatorização de matrizes análise de dados polinômios solução de equações diferenciais equações não-lineares e otimização integração numérica processamento de sinais MATLAB - INF Profa. Patrícia Jaques
20
Operacões com matrizes
Transposta ® indicada pelo caracter apóstrofo '. A=[1 2 3;4 5 6;7 8 9]; B=A' B= 2 5 8 3 6 9 det(A) Determinante da matriz A. inv(A) Inversa da matriz A. A A’ 1 2 3 4 5 6 7 8 9 1 4 7 2 5 8 3 6 9 MATLAB - INF Profa. Patrícia Jaques
21
Operações com matrizes
Adição e subtração ® indicada pelos sinais “+” e “-” respectivamente. C=A+B; Essas operações só são definidas para matrizes com a mesma dimensão. B=A+A’ A A’ B 1 2 3 4 5 6 7 8 9 1 4 7 2 5 8 3 6 9 2 6 10 14 18 + = MATLAB - INF Profa. Patrícia Jaques
22
Operações com matrizes
Multiplicação ® indicada por “*”. Só é válida quando a 2a. dimensão da 1a. matriz for igual a 1a. dimensão da 2a. matriz. mxn e nxp Ex: >> A*B MATLAB - INF Profa. Patrícia Jaques
23
Operações com matrizes
A multiplicação de escalar por matriz e vice-versa também é válida. Ex: >> B=2*A A B 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 = 2* MATLAB - INF Profa. Patrícia Jaques
24
Operações com matrizes
Divisão ® 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 - INF Profa. Patrícia Jaques
25
Operações com matrizes
Exponenciação -> indicada por “^”. A^p eleva A à p-ésima potência se A for quadrada e p for um escalar. Se p é inteiro maior do que 1, isso é feito através de múltiplas multiplicações. MATLAB - INF Profa. Patrícia Jaques
26
Operações com conjuntos
São operações aritméticas realizadas elemento por elemento da matriz. Usa-se os mesmos caracteres das operações usuais precedidos por um ponto (“.*”, “./”, “.\”, “.^”, “.'”) Exemplo: Crie duas matrizes quadradas a e b Faça: >>a*b >>a.*b MATLAB - INF Profa. Patrícia Jaques
27
Operações com conjuntos
Operações comparativas (<, <=, >, >, ==, ~=) podem ser realizadas entre matrizes de mesma dimensão 1 para verdadeiro 0 para falso O resultado é uma matriz de 0s e 1s correspondendo a Falso e Verdadeiro & (e) e | (ou) também podem ser usados MATLAB - INF Profa. Patrícia Jaques
28
Manipulação de vetores e matrizes
Gerando vetores: a declaração >>x = 1:5 gera o vetor linha x = (incremento de 1) Pode-se usar outros incrementos: >> y = 0:pi/4:pi y = A função k=linspace(0,1,6) gera um vetor linearmente espaçado de 0 a 1, contendo 6 elementos k = MATLAB - INF Profa. Patrícia Jaques
29
Manipulação de vetores e matrizes
Elementos das matrizes: utiliza-se índices entre parênteses. >>A=[1 2 3;4 5 6;7 8 9]; >>A(3,3) = A(1,3) + A(3,1) A = A(2,1) = 4 A(1:2, 2:3) = 0 elementos A(1,2), A(1,3), A(2,2), A(2,3) são zerados. A(:,3) = 0 elementos da terceira coluna são zerados. >>A(1:2,3) especifica uma submatriz 2x1 com os 2 primeiros elementos da terceira coluna de A ans = 3 6 MATLAB - INF Profa. Patrícia Jaques
30
Manipulação de vetores e matrizes
exclusão de linhas ou colunas atribuir [ ] à linha ou coluna A(:,3) = [] exclui terceira coluna da matriz A(1:2,:) = [] 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. concatenação 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,:) = e A(3,:) = Então, B = [A(1,:); A(3,:)] é uma matriz 2 x 3 contendo a primeira e a terceira linhas de A. MATLAB - INF Profa. Patrícia Jaques
31
Funções de Construção de Matrizes
É possível construir uma matriz a partir de blocos. Exemplo, se A é uma matriz 3 x 3, então B = [A, zeros(3,2); zeros(2,3), eye(2)] Matriz 5 x 5. B = Concatena na próxima linha próxima coluna A zeros(3,2) eye(2) zeros(2,3) MATLAB - INF Profa. Patrícia Jaques
32
Funções de Construção de Matrizes
eye - matriz identidade eye(2) ans = zeros - matriz de zeros zeros(2,3) ou zeros(2) MATLAB - INF Profa. Patrícia Jaques
33
Funções de Construção de Matrizes
ones - matriz de 1's ones(2,3) ou ones (2) ans = rand - matriz gerada aleatoriamente rand(5,4) ou rand(2) MATLAB - INF Profa. Patrícia Jaques
34
Funções de Construção de Matrizes
diag - matriz diagonal Se x é um vetor, diag(x) é a matriz diagonal com x na diagonal; x=[1 2 3]; diag(x) Se A é uma matriz quadrada, então diag(A) é um vetor cujos componentes são os elementos da diagonal de A. A=[3 11 5; ; 6 2 1] diag(A) ® Tente também: diag(diag(A)) ans = 3 1 ans = MATLAB - INF Profa. Patrícia Jaques
35
MATLAB - INF01040 - Profa. Patrícia Jaques
triu - parte triangular superior de uma matriz triu(A) ans = tril - parte triangular inferior de uma matriz tril(A) MATLAB - INF Profa. Patrícia Jaques
36
MATLAB - INF01040 - Profa. Patrícia Jaques
Exemplo a = » b = [a(1:2,1:1), a(1:2,3:4) ; a(4:4,1:1), a(4:4,3:4)] b = MATLAB - INF Profa. Patrícia Jaques
37
MATLAB - INF01040 - Profa. Patrícia Jaques
Funções Escalares Algumas funções no Matlab operam essencialmente sobre escalares, mas operam sobre cada elemento se forem aplicadas a uma matriz. As funções escalares mais comuns são: sin - seno asin - arcoseno exp - exponencial abs - valor absoluto round - arredonda cos - cosseno acos - arco cosseno log - log natural sqrt - raíz quadrada floor - arredonda na direção de menos infinito tan - tangente atan - arco tangente rem - resto da divisão sign - função sinal ceil - arredonda na direção de mais infinito MATLAB - INF Profa. Patrícia Jaques
38
MATLAB - INF01040 - Profa. Patrícia Jaques
Funções Vetoriais Outras funções 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 aplicação para cada coluna. É possível operar sobre linha por linha transpondo-se a matriz, por exemplo: a = rand(5) mean(a) média de cada coluna mean(a’) média de cada linha MATLAB - INF Profa. Patrícia Jaques
39
MATLAB - INF01040 - Profa. Patrícia Jaques
Funções Vetoriais Outros exemplos de funções vetoriais são: max(a) encontra o valor máximo [Y,I] = MAX(X) 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 são diferentes de zero sort(a) ordena em ordem crescente Exemplo: max(max(a)) max(a) MATLAB - INF Profa. Patrícia Jaques
40
MATLAB - INF01040 - Profa. Patrícia Jaques
Exercícios criar matrizes A = [ ] B = [1;2;3;4;5;6;7;8;9] C = [1 2 3;4 5 6;7 8 9] calcular A` B` C` digitar b B who whos clear B clc A,C calcular sum(A) sum(C) sum(C`) sum(C`)` diag(C) sum(diag(C)) sum(diag(fliplr(C))) MATLAB - INF Profa. Patrícia Jaques
41
MATLAB - INF01040 - Profa. Patrícia Jaques
Exercícios 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 - INF Profa. Patrícia Jaques
42
MATLAB - INF01040 - Profa. Patrícia Jaques
Exercícios 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 - INF Profa. Patrícia Jaques
43
MATLAB - INF01040 - Profa. Patrícia Jaques
Exercício 9) Considere a seguinte matriz: 7.5 8.0 7.7 9.2 6.6 8.0 6.1 7.2 9.0 4.5 5.0 4.6 que corresponde a notas de provas de alunos (10 alunos). a) Calcule a nota final de cada aluno, como a média das 3 notas, sendo que a última nota tem peso 2. b) Calcule a média aritmética das notas da turma: média de cada prova e média das notas finais c) Use as funções adequadas para listar a menor nota final e a maior nota final. MATLAB - INF Profa. Patrícia Jaques
44
MATLAB - continuação
45
Anotando comandos usados
diary nome do arquivo - cria arquivo texto no qual ficarão registrados os comandos e as variáveis subseqüentes. diary off - fecha arquivo e salva-o como texto. type nome do arquivo - apresenta na janela de comando todo o conteúdo do arquivo. é possível também abri-lo em editores de texto ASCII. MATLAB - INF Profa. Patrícia Jaques
46
Paginando saída na janela de comando
more on - quando uma saída for muito extensa, mostra somente uma tela de cada vez. Enter avança uma linha. Barra de Espaço avança uma tela. q pára de mostrar saída. more off - retorna ao modo normal (padrão). MATLAB - INF Profa. Patrícia Jaques
47
MATLAB - INF01040 - Profa. Patrícia Jaques
Salvando o Workspace File Save Workspace As save nome do arquivo (salva no diretório corrente) File Load Workspace load nome do arquivo (busca no diretório corrente) File Set Path permite alterar diretório corrente MATLAB - INF Profa. Patrícia Jaques
48
MATLAB - INF01040 - Profa. Patrícia Jaques
Controle de fluxo Laço for >> for i=1:5 x(i)=i^2; end x = 1 4 9 16 25 >> for i=1:5 for j=1:5 a(i,j)=i+j; b(i,j)=i-j; end c=a+b; a = b = MATLAB - INF Profa. Patrícia Jaques
49
MATLAB - INF01040 - Profa. Patrícia Jaques
Controle de fluxo Laço 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 MATLAB - INF Profa. Patrícia Jaques
50
MATLAB - INF01040 - Profa. Patrícia Jaques
Arquivos m são arquivos que contém comandos do MATLAB scripts não recebem argumentos de entrada nem retornam argumentos de saída. operam em dados do workspace. úteis para automatizar séries de passos que precisam ser executados várias vezes. funções podem receber e/ou retornar argumentos. variáveis internas são locais à função. úteis para estender a linguagem MATLAB. MATLAB - INF Profa. Patrícia Jaques
51
MATLAB - INF01040 - Profa. Patrícia Jaques
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 - INF Profa. Patrícia Jaques
52
MATLAB - INF01040 - Profa. Patrícia Jaques
Arquivos m criando um arquivo m edit nome do arquivo ou File New M-File digitar código do script ou da função. File Save As - escolher diretório corrente ou que esteja presente no search path do MATLAB. Search Path referência para o MATLAB procurar os arquivos m. File Set Path usando um arquivo m nome do arquivo MATLAB - INF Profa. Patrícia Jaques
53
MATLAB - INF01040 - Profa. Patrícia Jaques
Arquivos m Exemplo 1 script criar arquivo digitar código clear clc A = [1 2 3; 4 5 6; 7 8 9] B = A’ salvar como inicio.m executar na janela do MatLab >> inicio Comentários: % comentário de linha texto apos o % na mesma linha não será executado Exemplos: procbasico linhatri circulo malha MATLAB - INF Profa. Patrícia Jaques
54
MATLAB - INF01040 - Profa. Patrícia Jaques
Outros comandos Entrada de dados: Receber um dado numérico do usuário <variável> = input('<mensagem>'); Exemplo: n1 = input('Digite um numero: '); Entrada de dados: Receber um dado texto do usuário <variável> = input('<mensagem>', 's'); n1 = input('Digite seu nome: ', 's'); Mostrar um texto ou conteúdo de uma variável: disp('<mensagem>'); disp('Total calculado: '); disp(soma); Limpar a tela clc; MATLAB - INF Profa. Patrícia Jaques
55
Rotinas de Entrada/Saída
TEXTREAD [N,F,S]=textread(’dados.txt',’%d %f %s') N= 6 5 3 F= 0.5000 0.3000 1.3340 S= ‘dd1’ ‘dd3’ ‘dd5’ dados.txt 6 0.5 dd1 5 0.3 dd3 dd5 For most users, the MATLAB functions load and save provide sufficient means of loading and saving data. Load and save assume data is stored in a platform independent binary data format with a file name ending in the .mat extension. These .mat or MATlab files are platform independent because they contain a machine signature in the file header. MATLAB checks the signature when it loads a file and, if a signature indicates that a file is foreign, performs the necessary conversion. The MATLAB load and save routines can be used to read and write both ASCII and binary data. These two commands are primarily used to read and write full-precision binary MATLAB format files. It is also possible to read and write ASCII files with these routines. The save command will create space or tab delimited files of either 8- or 16- digit ASCII form. The load command will read any MAT-file created on any platform or any ASCII file with numeric space or tab delimited data.
56
MATLAB - INF01040 - Profa. Patrícia Jaques
Exercício Escreva um programa (arquivo-m) para: Ler um arquivo contendo os dados de temperaturas mínimas e máximas de 15 dias, no formato (%d %f %f) Calcular a média, menor e maior temperatura (das temperaturas mínima e máxima) Listar os resultados MATLAB - INF Profa. Patrícia Jaques
57
Solução – exerciciotemp.m
[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 - INF Profa. Patrícia Jaques
58
Resolvendo Equações Polinomiais
Achar raízes de um polinômio: x4 - 12x3 + 0x2 + 25x + 116=0 >>p=[ ] r=roots (p) r = 2.7028 i i Construir polinômio a partir de suas raízes: >> pp = poly(r) pp = MATLAB - INF Profa. Patrícia Jaques
59
MATLAB - INF01040 - Profa. Patrícia Jaques
Atividade Exemplo: f(x) = 3*x^4-0.5.*x^3+x-5.2 (x assume valores escalares) p = [ ]; f = polyval(p,x); Digitar estes comandos e observar a saída: p=[ ]; 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 - INF Profa. Patrícia Jaques
60
Expressões Simbólicas
Defina as variáveis com o comando syms Crie as expressões utilizando estas variáveis f(x) = 2x2+3x-5 g(x) = x2-x+7 f(x) + g(x) f(x) - g(x) f(x) * g(x) f(x) / g(x) syms x >> f=2*x^2+3*x-5 >> g=x^2-x+7; >> f + g >> f-g >> f*g >> expand(ans) >> f / g >> pretty (ans) -> (2*x^2+3*x-5)*(x^2-x+7) -> 2*x^4+x^3+6*x^2+26*x-35 MATLAB - INF Profa. Patrícia Jaques
61
Expressões Simbólicas
Composição e substituição em funções: >> 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 composição das funções f(x) e g(x) em f(g(x)), finverse: encontra a inversa funcional de uma expressão subs: substitui uma variável por um número (ou por outra variável) em uma expressão MATLAB - INF Profa. Patrícia Jaques
62
Expressões Simbólicas
Solução de Equações ax2+bx+c = 0 >> syms a b c x % manipula como variável simbólica >> 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) %mostra formato de fração [ /2] [ -b + (b - 4 a c) ] [1/ ] [ a ] [ ] [ -b - (b - 4 a c) ] MATLAB - INF Profa. Patrícia Jaques
63
Resolvendo Sistema de Equações Lineares usando “Divisão Esquerda”
Se [A] é uma matriz quadrada (m = n): [A] = mxn {x} = nx1 {b} = mx1 [A]{x} = {b} {x} = ? {x} = [A]-1{b} x = inv(A)*b; x = A\b; Erro se singular Aviso se quase singular One of the most common linear algebra problems is the solution of a set of simultaneous linear equations. This can be easily accomplished in MATLAB using “Left Division” - the backslash operator (\). NOTE: When to use “Left Division”: Ax = B x = A\B When to use normal division: xA = B x = B/A
64
Exemplo: Resolvendo Equações
Resolver este conjunto de equações simultâneas: A = [-1 1 2; ;-1 3 4]; b = [2;6;4]; x = inv(A)*b x = 1.0000 2.0000 x = A\b -x1 + x2 + 2x3 = 2 3x1 - x2 + x3 = 6 -x1 + 3x2 + 4x3 = 4
65
MATLAB - INF01040 - Profa. Patrícia Jaques
Gráficos planos 2D O comando plot cria gráficos de x-y no plano; Se x e y são vetores de mesmo tamanho, o comando plot(x,y) abre uma janela gráfica e desenha um gráfico x-y dos elementos de x versos os elementos de y. Exemplo: x=-4:.01:4; y=sin(x); plot(x,y) Peaks – conjunto de dados Para mostrar a capacidade Gráfica (plot, mesh, surf, contour3, contour, surfc, meshz) MATLAB - INF Profa. Patrícia Jaques
66
MATLAB - INF01040 - Profa. Patrícia Jaques
Gráficos Comandos de plotar Plot(x, y) – gera gráficos lineares Semilogx(x, y) – gráfico com escala linear para y e escala logarítmica para x semilogy(x, y) – a escala logarítmica é para y Loglog(x, y) – escala logarítmica para ambos (x e y) Bar(x, y) – gera um gráfico em barras com elementos do vetor y localizados no vetor x Stairs(x, y) – gera um gráfico de degraus com elementos do vetor y Hist(x,y) – plota histograma Rose(x,y) – plota histograma em ângulo MATLAB - INF Profa. Patrícia Jaques
67
MATLAB - INF01040 - Profa. Patrícia Jaques
Gráficos planos 2D Outro exemplo: Desenhar o gráfico 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 gráfico atual. Experimente refazer o comando anterior e depois digite grid. MATLAB - INF Profa. Patrícia Jaques
68
MATLAB - INF01040 - Profa. Patrícia Jaques
+ gráficos Gráficos podem ter títulos, eixos rotulados e textos. Para isso usa-se os seguintes comandos que tem strings como argumentos: title título do gráfico xlabel rótulo do eixo x ylabel rótulo do eixo y gtext texto posicionado interativamente (mouse ou setas) text posiciona texto na posição especificada » title 'Título' » xlabel 'x' » ylabel 'y' MATLAB - INF Profa. Patrícia Jaques
69
MATLAB - INF01040 - Profa. Patrícia Jaques
+ gráficos Exemplo: x = 0:pi/100:2*pi; y = sin(x); plot(x,y); %o caracter \pi cria o símbolo xlabel('x = 0:2\pi'); ylabel('Seno de x'); title('Função Seno','FontSize',12); gtext ('y = sin(x)’); MATLAB - INF Profa. Patrícia Jaques
70
MATLAB - INF01040 - Profa. Patrícia Jaques
+ gráficos Os eixos são auto escalonados. Podem ser modificados utilizando-se o comando axis. Se c=[ xmin, xmax, ymin, ymax ], então o comando axis(c) ajusta o escalonamento dos eixos para os limites definidos no vetor c. MATLAB - INF Profa. Patrícia Jaques
71
MATLAB - INF01040 - Profa. Patrícia Jaques
+ gráficos 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 relação de aspecto da imagem axis off - desativa os eixos axis on - ativa os eixos MATLAB - INF Profa. Patrícia Jaques
72
Gráficos planos 2D múltiplos
Há duas formas de se fazer gráficos múltiplos 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 - INF Profa. Patrícia Jaques
73
MATLAB - INF01040 - Profa. Patrícia Jaques
+ gráficos É possível alterar os caracteres de tipo de linha e de ponto usados como padrão. 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 - INF Profa. Patrícia Jaques
74
MATLAB - INF01040 - Profa. Patrícia Jaques
+ gráficos Tipos de Marcadores: ponto (.), sinal de adição (+), asterisco (*), círculo (o), letra x (x) Quadrado (s) Triangulo (v) Losango (d) Hexágono (h) Cores: Amarelo (y) Magenta (m) Verde (g) Azul (b) Preto (k) Vermelho (r) Ciano (c) Tipos de linha: sólido (-), tracejado (--), pontilhado (:), traço e ponto (-.) Exemplo: x1 = 0:pi/100:2*pi; x2 = 0:pi/10:2*pi; plot(x1,sin(x1),'r:',x2,sin(x2),‘c+') MATLAB - INF Profa. Patrícia Jaques
75
MATLAB - INF01040 - Profa. Patrícia Jaques
Gráficos planos 2D O comando subplot pode ser usado para particionar a tela e permite a apresentação simultânea de vários gráficos não superpostos. Exemplo: ... MATLAB - INF Profa. Patrícia Jaques
76
MATLAB - INF01040 - Profa. Patrícia Jaques
Gráficos 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) Exercício: modifique o código ao lado para apresentar também a função y5. MATLAB - INF Profa. Patrícia Jaques
77
MATLAB - INF01040 - Profa. Patrícia Jaques
Gráficos em malhas 3D É possível desenhar superfícies em malhas 3D com a função mesh. O comando mesh(z) cria um desenho 3D em perspectiva dos elementos da matriz z. A superfície da grade é definida pelas coordenadas z dos pontos, acima de uma grade retangular no plano x-y. MATLAB - INF Profa. Patrícia Jaques
78
MATLAB - INF01040 - Profa. Patrícia Jaques
Gráficos em malhas 3D Exemplo: mesh(eye(10)) Para desenhar o gráfico de uma função z=f(x,y) sobre um retângulo, deve-se primeiro definir os vetores xx e yy que dão as partições dos lados do retângulo. MATLAB - INF Profa. Patrícia Jaques
79
MATLAB - INF01040 - Profa. Patrícia Jaques
Gráficos em malhas 3D Com a função meshgrid (domínio da grade) é possível criar uma matriz x, cujas linhas igualam-se a xx e cujas colunas têm 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 avaliação da função f sobre as matrizes x e y, com a qual o comando mesh pode ser utilizado. MATLAB - INF Profa. Patrícia Jaques
80
MATLAB - INF01040 - Profa. Patrícia Jaques
Gráficos 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 - INF Profa. Patrícia Jaques
81
MATLAB - INF01040 - Profa. Patrícia Jaques
Gráficos 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 número em ponto flutuante do sistema. Sua funçao no exemplo é evitar divisão por zero. surf(X,Y,Z) MATLAB - INF Profa. Patrícia Jaques
82
MATLAB - INF01040 - Profa. Patrícia Jaques
Gráficos em malhas 3D Comandos para plotar gráficos tridimensionais e contornos; plot3 – plota um gráfico 3D Comet3 – plota em 3D com trajetória de cometa contour3 – plota contorno 3D clabel – plota contorno com valores mesh – plota malha 3D meshc – combina mesh e contour surf – plota superfície 3D surfc – combina surf e contour MATLAB - INF Profa. Patrícia Jaques
83
MATLAB - INF01040 - Profa. Patrícia Jaques
Gráficos em malhas 3D Anotações no gráfico; Title – título do gráfico Xlabel – título do eixo x Ylabel – título do eixo y Zlabel – título do eixo z Text – insere anotações no gráfico Gtext – insere anotações com o mouse Grid – linhas de grade no gráfico MATLAB - INF Profa. Patrícia Jaques
84
MATLAB - INF01040 - Profa. Patrícia Jaques
Exemplos de arquivos.m matrizA.m Gera matriz A (10x10) cartograf.m mapeamento de uma parte do fundo do oceano circulo.m, exemplo-funcao.m, exfuncao.m , procbasico.m usa comando plot, title, xlabel, ylabel…. distacia.m distancia em linha reta entre dois pontos num plano, usa funcao sqrt exemploG3D.m, D3Dmesh.m, malha.m, superficies.m comandos mesh, surf para gerar gráficos 3D exemplopol.m Exemplo de polinômios G2D.m, G2Dplot.m, G2Dplotmult Usa o comando plot, plotar com múltiplas linhas MATLAB - INF Profa. Patrícia Jaques
85
Exemplos de arquivos.m (2)
exif.m Comando if-end imagem.m usa comando imagesc, matriz visualizada como imagem linhatrid.m Diagrama de linha tridimensional (uso do title, xlabel...) matrizex.m Exercício do cálculo das medias exerciciotemp.m Exercício das temperaturas MATLAB - INF Profa. Patrícia Jaques
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.