O objetivo deste curso é a apresentação de ferramentas básicas do ambiente MATLAB. Realço que o tempo (8 horas) de curso impõe uma metodologia dinâmica de aula. Em função disto, evite conversas paralelas. Cursos em ambiente de laboratório exigem atenção! OPERAÇÕES COM VETORES E MATRIZES Quando inicializamos o MATLAB, são criadas uma ou mais janelas e, dentre elas, a janela de comando é o principal local de sinal de promptAéaparência dado porda>>janela a apresentada a interaçãoOcom o MATLAB. seguir: MATEMÁTICA ELEMENTAR MATLAB executa operações algébricas como se fosse uma calculadora, possuindo as seguintes operações aritméticas elementares: A ordem na qual essas operações são executadas em uma expressão é dada pelas regras usuais de precedência: as expressões são executadas da esquerda para direita com operação de potênciação tendo a maior precedência, seguida de multiplicação e divisão (ambas com mesma ordem de precedência), seguidas de adição e multiplicação (mesma ordem de precedência). Parênteses podem ser usados para alterar a ordem de precedência. ÁREA DE COMANDOS Você pode criar variáveis na memória do programa MATLAB e estas variáveis são armazenadas enquanto durar o uso do programa. >> teste=3; >> prova=7; >> teste+prova ans = 10 VARIÁVEIS Existem regras em relação aos nomes das variáveis na linguagem do MATLAB. •As variáveis são sensíveis a maiúsculas e minúsculas •Podem conter até 31 caracteres •Os nomes das variáveis devem começar com uma letra •Caracteres de pontuação não são permitidos, nem caracteres acentuados Observação: O MATLAB possui alguns nomes de variáveis especiais: COMENTÁRIOS E PONTUAÇÃO Todo texto digitado depois do sinal de % é considerado no ambiente MATLAB como um comentário. >> % PROGRAMA EXEMPLO >> X=10; % X REPRESENTA UMA VARIAVEL QUALQUER Observação: MATLAB armazena o valor x=10 e ignora os caracteres à direita de %. Pode-se também adicionar ou escrever vários comandos por linha, separando-os por vírgula ou ponto e vírgula: >> y=3, t=4, u=34 y=3 t= 4 u = 34 Quando se coloca o sinal de ponto e vírgula no final da sentença do MATLAB, o resultado de uma operação ou comando não é exibido na tela do MATLAB. Veja a diferença: >> p=3 p= 3 >> p=3; Uma sucessão de três pontos indica ao MATLAB que o resto do comando aparecerá na linha seguinte, mas lembre-se que o nome de uma variável não pode ser dividido entre linhas: >> valores_das_concentracoes=33+... 44; >> FUNÇÕES MATEMÁTICAS JANELA DE COMANDOS Todas as informações, dados e variáveis criados na janela de comandos são armazenados no espaço de trabalho do MATLAB. O comando who mostra os nomes das variáveis. O comando clear apaga variáveis do espaço de trabalho do MATLAB. O comando cls apaga as informações do espaço de trabalho, mas não da memória. O comando diary permite que você armazena em arquivo texto tudo o que você digitou. Sua sintaxe é diary nome do arquivo. Deve ser finalizado com o comando diary off. FORMATO DE VISUALIZAÇÃO DE NÚMEROS FORMATAÇÃO fprintf CARACTERES DE FORMATAÇÃO %d %e %f \n RESULTADOS Exibe valor como inteiro Formato exponencial Formato ponto flutuante Muda de linha Em problemas simples, é mais simples a digitação de comandos no prompt do MATLAB. Para problemas, mais complexos é conveniente, ou que você deseja repetir n vezes, o MATLAB apresenta a possibilidade de escrever os comandos em arquivo texto e depois executá-lo introduzindo o nome do arquivo na área de comandos do MATLAB. Clique em File, New, M-file. Vamos a um exemplo? Digite o nome do arquivo! ARQUIVO DE DADOS Existem muitas maneiras de carregar e gravar arquivos de dados no MATLAB. Inicialmente, vamos considerar os comandos load e save. O comando save grava dados do espaço de trabalho em arquivo de disco. Sua sintaxe é: Save nome_do_arquivo var1 var2 var3 Var1 var2 var3 … são as variáveis a serem gravadas no arquivo nome_do_arquivo. Salvando em formato que podem ser lidos por planilhas e programas escritos em outras linguages. Clique >> x=[1 2 5.6 789 4.5]; >> save x.dat x -ascii Explore esta área! Apenas como exercício, encerre o MATLAB e inicialize-o novamente. Digite *.dat Como você pode verificar os Dados foram gravados! Caso você queira utilizar os dados gravados diretamente na área de trabalho do MATLAB, pode utilizar: load nome_do_arquivo No nosso exemplo, load x.dat Agora digite x e verifique que a variável x, ou o vetor x, como queira, está como variável atualizada na memória. OPERAÇÕES COM VETORES E MATRIZES A criação de vetores no MatLab é muito simples. Você deve começar com um colchete esquerdo e inserir os valores desejados, separados por espaços ou vírgulas e fechar o conjunto com um colchete direito. >> x=[1.2 3 4.5 6 9]; Quantos elementos este vetor possui? Este vetor possui 5 elementos. Mais precisamente ele possui uma linha e 5 colunas, ou seja, é um vetor linha. No MATLAB o acesso aos elementos de um vetor é feito utilizando índices na forma nome_do_vetor(i). Veja Alguns Exemplos! >> x=[1.2 3 4.5 6 9]; >> x=[1.2 3 4.5 6 9]; >> x(0) ??? Index into matrix is negative or zero. >> X(1) ??? Undefined function or variable 'X'. >> x(1) ans = 1.20 >> x(5) ans = 9.00 Para ter acesso a um bloco de elementos utilize a notação de dois pontos (:) : >> x(1:5) ans = 1.20 9.00 3.00 4.50 >> x(1:3) ans = 1.20 3.00 4.50 >> x(2:4) ans = 3.00 4.50 6.00 6.00 A construção de vetores também pode ser feita, ao invés de digitar todos os elementos, sob algumas formas alternativas. Função linspace A função linspace possui a seguinte sintaxe: linspace(primeiro_valor,último_valor,número_de_valores) linspace(2,5,4) ans = 2.00 3.00 4.00 5.00 Mas você também pode criar o vetor utilizando o comando: x=início:incremento:fim >> x=[1:.8:5] x =1.00 1.80 2.60 3.40 4.20 5.00 ORIENTAÇÃO DE VETORES Você pode criar vetores com mais de uma linha, utilizando a notação de ponto e vírgula: OBSERVE A DIFERENÇA! >> x=[1 2 3 4 5] x= 1 2 3 >> x=[1; 2; 3; 4 ;5] x= 1 2 3 4 5 4 5 Você também pode transpor um vetor, utilizando a anotação apóstrofo: >> x=[1 4 5 89] x=1 >> x' 4 5 89 DIGITE! ans = 1 4 5 89 MATRIZES Usam-se espaços para separar os elementos de uma linha e utliza-se ponto e vírgula para criar linhas na matriz: Digite >> x=[1 2 3;4 5 6;7 8 9] x= 1 2 4 5 7 8 3 6 9 SOMA DE MATRIZES A soma de matrizes é exemplificada abaixo: x=[1 2 3;4 5 6;7 8 9] y=[4 5 6; 8 9 12; 5 6 7]; DIGITE x+y ans = 5 7 9 12 14 18 12 14 16 MULTIPLICAÇÃO OU DIVISÃO ELEMENTO POR ELEMENTO x=[1 2 3;4 5 6;7 8 9] y=[4 5 6; 8 9 12; 5 6 7]; DIGITE x.*y Ou x./y x.*y x./y O ponto ans anterior ao = Operador ans =indica Que a 0.4000 operação 0.5000 0.2500 Deve ser 4feita 10elemento 18 0.5000 0.5000 0.5556 A32 elemento! 45 721.2857 1.4000 1.3333 35 48 63 SISTEMAS LINEARES Muitas aplicações de Engenharia envolvem a solução de sistemas lineares. Considere o exemplo: O que é equivalente escrevermos , onde é .a matriz A solução doa sistema por ser dada A por dos coeficientes, a matriz dasser incógnitas dopor: sistema e No W MATLAB pode expresso >> A=[1.2 6 4; 5 8A0;7Álgebra 12 5]; B a matriz dos resultados. linear nos >> x=inv(A)*B B=[12;3;6]; fornece o conceito de >> que este x = sistema possui solução se >> det(A) o determinante da matriz A for diferente de zero. -3.9767 ans = problema -86.0000.utilizando o MATLAB: Vejamos a solução deste 2.8605 -0.0977 FATORAÇÃO LU No MATLAB a fatoração LU pode ser implementada pelo comando: A\B Matriz dos resultados Matriz dos coeficientes GRÁFICOS 2D x=linspace(0,2*pi,50); >> y=exp(x).*sin(x); >> plot(x,y) OUTRAS FUNÇÕES fplot f(x)=cos(x)*ex fplot(‘cos(x)*exp(x)’,[0 3*pi]) 2000 0 -2000 -4000 -6000 -8000 DIGITE -10000 -12000 -14000 0 1 2 3 4 5 6 7 8 9 polar r=3cos(4t), t=0:.01:2*pi; 90 r=3*cos(4*t); 3 120 60 2 150 polar(t,r) 30 1 180 0 210 330 240 300 270 y1=exp(x); y2=log(x) plotyy x=1:.1:6; y1=exp(x); y2=log(x); ax=plotyy(x,y1,x,y2); hy1=get(ax(1),'ylabel'); 500 2 log(x) set(hy1,'string','exp(x)'); exp(x) hy2=get(ax(2),'ylabel'); set(hy2,'string','log(x)'); 0 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 0 6 semilogx Também existe o comando semilogy( ) e o Comando loglog( ) 10 9 8 7 t=linspace(0,3*pi,300); >> x=exp(-t); >> y=t; >> semilogx(x,y); grid 6 5 4 3 2 1 0 -5 10 -4 10 -3 10 -2 10 -1 10 0 10 hist prof=char('Professor Quimico','Medico'); Universitario','Engenheiro sal=[999; 6789; 9999]; barh(sal); for i=1:3 gtext(prof(i,:)); end xlabel('Salario em reais'); title('Profissoes e Remuneraçao = Alerta',... 'fontsize',19); Profissoes e Remuneraçao = Alerta 3 Medico 2 Engenheiro Quimico Professor Universitario 1 0 1000 2000 3000 4000 5000 6000 Salario em reais 7000 8000 9000 10000 pie prof=char('Professor Quimico','Medico'); Universitario','Engenheiro sal=[999; 6789; 9999]; pie(sal); for i=1:3 gtext(prof(i,:)); end xlabel('Salario em reais'); title('Profissoes e Remuneraçao = Alerta',... 'fontsize',19); Profissoes e Remuneraçao = Alerta 6% Medico 38% Engenheiro Quimico Professor Universitario 56% USANDO SUBPLOT Uma janela pode conter mais de um conjunto de eixos e, neste caso, pode ser usado o comando subplot(m,n,p), que divide a janela de figuras em uma matriz m por n regiões , nas quais se pode traçar gráficos e ativa a região de ordem p. Os subgráficos são numerados da esquerda para direita, linha por linha. x=linspace(0,2*pi,30); >> y=sin(x); >> z=cos(x); >> a=sin(x).*cos(x); >> b=sin(x)./(cos(x)+eps); >> subplot(2,2,1) %seleciona o grafico à esquerda, no alto >> plot(x,y); >> subplot(2,2,2) %seleciona o grafico à direita, no alto >> plot(x,z); >> subplot(2,2,3) %seleciona o grafico à esquerda, embaixo >> plot(x,a); >> subplot(2,2,4) %seleciona o grafico à direita, embaixo >> plot(x,b); 1 1 0.5 0.5 0 0 -0.5 -0.5 -1 0 2 4 6 8 0.5 -1 0 2 4 6 8 0 2 4 6 8 20 10 0 0 -10 -0.5 0 2 4 6 8 -20 GRÁFICOS 3D Para gerar um arquivo que representa uma superfície 3D, primeiros representamos o conjunto de valores de x e y que representam as variáveis independentes e depois os valores de z que representam os valores da superfície. Gere o gráfico da superfície f(x,y)=z=1-x2-y2 para – 0.5<x<0.5 e -0,5<y<0.5. No MATLAB isto seria realizado por: >>[xgrid,ygrid]=meshgrid(-0.5:0.1:0.5,0.5:0.1:0.5); >> z=sqrt(abs(1-xgrid.^2-ygrid.^2)); >> mesh(z) 1 0.95 0.9 0.85 0.8 0.75 0.7 15 15 10 10 5 5 0 0 Também podemos utilizar a função surf: >>[xgrid,ygrid]=meshgrid(-0.5:0.1:0.5,-0.5:0.1:0.5); >> z=sqrt(abs(1-xgrid.^2-ygrid.^2)); >> surf(xgrid,ygrid,z) 1 0.95 0.9 0.85 0.8 0.75 0.7 0.5 0.5 0 0 -0.5 -0.5 GRÁFICOS DE CURVAS DE NÍVEL Gráficos de curva de nível mostram linhas de elevação ou altura constante. No MATLAB, gráficos de curvas de nível são obtidos pelo uso das funções contour e contour3. >>[xgrid,ygrid]=meshgrid(-0.5:0.1:0.5,-0.5:0.1:0.5); >> z=sqrt(abs(1-xgrid.^2-ygrid.^2)); >> contour(xgrid,ygrid,z) 0.5 0.4 0.3 0.2 0.1 0 -0.1 -0.2 -0.3 -0.4 -0.5 -0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5 [xgrid,ygrid]=meshgrid(-0.5:0.1:0.5,0.5:0.1:0.5); >> z=sqrt(abs(1-xgrid.^2-ygrid.^2)); >> contour3(xgrid,ygrid,z) 1 0.95 0.9 0.85 0.8 0.75 0.5 0.5 0 0 -0.5 -0.5 prof=char('Professor Quimico','Medico'); pie3 Universitario','Engenheiro sal=[999; 6789; 9999]; pie3(sal); xlabel('Salario em reais'); title('Profissoes e Remuneraçao = Alerta',... 'fontsize',19); Profissoes e Remuneraçao = Alerta 6% 56% 38% waterfall x=-3:.1:3; y=x; [X,Y]=meshgrid(x,y); 0 -5 Z=-15./(1+X.^2+Y.^2); -10 waterfall(Z) -15 80 60 hidden off 80 60 40 40 20 20 0 0