01. Laboratório MATLAB

Propaganda
Computação e Programação 2006/07
Aula Prática 1 (Laboratório 1)
Introdução ao sistema MATLAB
Esta aula prática tem como objectivo a apresentação do sistema MATLAB e algumas das suas
capacidades. Começamos por ver o MATLAB como uma máquina de calcular gráfica com
inúmeras funcionalidades.
Para começar a utilizar o sistema MATLAB em ambiente Windows basta invocar o programa a
partir do seu ícone. (no Desktop ou em StartPrograms)
O espaço de trabalho do MATLAB divide-se em várias janelas. Para já concentramo-nos na
janela de comandos. Nesta janela introduzimos as expressões a avaliar (input) e visualizamos os
resultados (output).
As expressões são introduzidas na janela de comandos na linha assinalada por >> e avaliados
premindo enter.
Comece por invocar o MATLAB
Avalie a expressão 1+1
1+1
Começamos por utilizar o MATLAB como uma simples calculadora.
Avalie as expressões
123+456*789
(123-456)*789
8/4
8\4
2^2*2
2^(2*2)
O MATLAB possui também funções trigonométricas e reconhece números complexos.
Avalie as expressões
pi
pi/4
Nota: As funções trigonométricas do MATLAB aceitam apenas valores em radianos.
sin(pi/6)+cos(pi/3)
tan(pi/4)
cos(pi/4)\sin(4\pi)
atan(1)
cosh(0)
asinh(0)
Ao lidar com números complexos o MATLAB aceita indistintamente i e j como unidade imaginária.
i
j
1+3i + 3+ j
i*i
3+4i * 1+2i
(3+4i) * (1+2i)
abs(3+4i)
conj(1+2j)
real(5+7i)
imag(5+7i)
2*angle(i)
Estão também disponíveis as funções exp, log e log10.
exp(1)
log(exp(3))
log10(10)
Vamos ver agora como podemos utilizar o MATLAB para desenhar o gráfico de uma função. Para
desenhar o gráfico precisamos de dois vectores, uma para as abcissas e outro para as ordenadas. No final
invocamos o comando plot.
O vector das abcissas é construido com a função linspace. Esta função gera um vector com 100 pontos
igualmente espaçados entre os dois valores dados.
A informação relativa a uma função pode ser obtida escrevendo help seguido do nome da função.
Obtenha informação acerca da função linspace
help linspace
Desenhe o gráfico da função seno no intervalo [-10,10]
x1=linspace(-10,10);
y1=sin(x1);
plot(x1,y1)
Desenhe o gráfico da função arco tangente no intervalo [-10,10]
x2=linspace(-10,10);
y2=atan(x2);
plot(x2,y2)
Sobreponha os dois gráficos
plot(x1,y1,x2,y2)
É importante reparar que em alguns dos comandos anteriores usámos ";" no final. O ponto e vírgula no
final de uma expressão diz ao MATLAB para avaliar a expressão e não apresentar o resultado.
Vejamos o que acontecia se não usássemos o ponto e vírgula.
linspace(-10,10)
O MATLAB também desenha gráficos 3D.
Experimente introduzir no MATLAB os seguintes exemplos
x3=-10:.5:10;
y3=x3;
[u,v]=meshgrid(x3,y3);
r=sqrt(u.^2+v.^2)+eps;
z3=sin(r)./r;
mesh(x3,y3,z3)
surf(x3,y3,z3)
Programar em MATLAB
Agora vamos criar, editar e avaliar ficheiros MATLAB (M-Files ou guiões). Estes ficheiros permitem a
submissão de uma sequência de comandos de uma só vez. O MATLAB avalia sequencialmente os
comandos de um ficheiro como se tivessem sido introduzidos directamente na janela de comandos.
À esquerda da janela de comandos encontra-se a janela Current Directory (caso não esteja, torne-a visível
indo na barra de ferramentas a View  Current Directory). A partir desta janela temos acesso a ficheiros
.m que estejam na directoria indicada.
O MATLAB só procura ficheiros em directorias que tenham sido previamente adicionadas à lista path. Por
isso, é importante começar por acrescentar a directoria onde vamos trabalhar a esta lista. Tal é possível
seleccionando File  Set Path na barra de ferramentas.
Para criar um ficheiro basta seleccionar na barra de ferramentas do MATLAB a opção FileNewM-file;
em alternativa, carregar em Ctrl-N produz o mesmo efeito.
Crie um novo ficheiro com os comandos que se seguem.
%
%Programa que soma os 50 primeiros naturais
%
I=1;
R=0;
while (I<=50)
R=R+I;
I=I+1;
end
R
Grave o código acima com o nome soma.m e de seguida avalie-o escrevendo soma na janela de
comandos.
Qual o resultado? O que aconteceu?
Adicione a pasta onde guardou o ficheiro ao path do MATLAB.
Tente avaliar de novo o ficheiro soma.m.
Nota: Para facilitar a leitura, o código deverá estar bem dividido e correctamente identado. É importante
que consigamos ler o nosso código e que os outros também o consigam. É igualmente importante comentar
o código.
Modifique o programa de modo a somar os primeiros 25 naturais e avalie novamente.
Experimente retirar o ";" do final do comando que incrementa a variável I (I=I+1;), grave e volte a
avaliar, agora somando até 7.
O que é que acontece?
Não é cómodo estar sempre a alterar o ficheiro quando queremos alterar o valor de N; podemos tornar o
programa interactivo.
Recorra agora às funções input e fprintf e modifique o programa que soma os N primeiros
naturais de modo a pedir interactivamente N e a devolver o resultado.
Nota: O novo programa é de certo modo mais geral; uma vez que o comentário deve reflectir a
funcionalidade do programa, altere-o.
Desenvolva um programa que resolva equações de segundo grau. O programa deverá pedir ao
utilizador os coeficientes do polinómio e devolver as soluções, caso existam, ou um aviso, caso não
haja soluções.
Expressões Booleanas
Uma expressão booleana é uma expressão que quando avaliada retorna um valor lógico. Em MATLAB os
valores lógicos true e false são representados por 1 e 0, respectivamente.
Experimente os seguintes exemplos, tentando prever antecipadamente qual o resultado da avaliação
de cada expressão.
2 < 3
(8+5) ~= 13
a= (1==1) & (2==2) & (3==4)
b= (0 <= -10) | (sin(pi/2)==1)
~b
~b & ~a
Os resultados obtidos estão de acordo com o esperado?
Matrizes
Crie duas matrizes M e N com dimensão 3x3. Por exemplo:
M=[1 -1 0;1 1 0;0 0 1]
N=[1 2 3;4 5 6;7 8 9]
Calcule M+N, M-N e M*N
M+N
M-N
Crie a matriz identidade ID de dimensão 3. Calcule ID*N e ID.*N.
ID=[1 0 0;0 1 0;0 0 1]
ID*N
ID.*N
Qual a diferença entre * e .* ? Por analogia, como deve proceder para dividir matrizes elemento a
elemento? Como multiplicar uma matriz por um escalar?
Experimente com as matrizes M e N e com outras matrizes à sua escolha. Tente multiplicar duas
matrizes não compatíveis e observe o que acontece.
O MATLAB também disponibiliza funções para resolver sistemas lineares. A solução do sistema linear
Ax=b é dada por x=A-1b. Vejamos um exemplo:
O sistema linear
x + 2 y + 3 z = 366
4 x + 5 y + 6 z = 804
7 x + 8 y = 351
é representado através de uma matriz e um vector.
A=[1 2 3;4 5 6;7 8 0]
b=[366;804;351]
Logo a solução do sistema é
x=inv(A)*b
Podemos verificar que x é realmente a solução:
A*x
Tente resolver os sistemas Mx=u e Ny=u onde u é o vector [1; 2; 3]. Verifique e comente os resultados
que obteve.
u=[1; 2; 3]
x=inv(M)*u
M*x
y=inv(N)*u
N*y
Crie um ficheiro que quando avaliado gera uma matriz com n linhas e m colunas em que todos os
elementos são x. Os parâmetros n, m e x devem ser pedidos interactivamente. Sugestão: use a função
ones.
Download