COMPUTAÇÃO E PROGRAMAÇÃO
1º Semestre 2010/2011
MEMec, LEAN
Ficha da Aula Prática 1:
Introdução ao MATLAB
Sumário das tarefas e objectivos da aula:
1.
2.
3.
4.
5.
6.
Abrir a aplicação MATLAB e contactar com o ambiente de trabalho
Identificar as componentes da janela do MATLAB
Entender o conceito de “directoria de trabalho”
Como obter ajuda no MATLAB
Utilizar o MATLAB como ferramenta para execução de operações matemáticas
Trabalhar com matrizes
Enquadramento
O MATLAB é um software computacional que pode ser utilizado para cálculo simples ou para cálculo
científico avançado, integrando também funcionalidades de visualização gráfica e ambiente de
programação. Possíveis aplicações do MATLAB incluem:






Cálculo matemático e computação;
Desenvolvimento de algoritmos;
Aquisição de dados;
Modelação, simulação e prototipagem de software;
Análise, simulação e preparação de dados;
Construção, análise, exploração e visualização de gráficos científicos e de engenharia.
O MATLAB foi inicialmente criado com o objectivo de manipular matrizes de forma eficiente - o acrónimo
MATLAB significa MATrix LABoratory. Hoje em dia, o MATLAB proporciona uma plataforma computacional
de elevado desempenho que disponibiliza diversas funcionalidades, incluindo:





Ambiente de trabalho;
Interpretador;
Linguagem de computação;
Editor de programas;
Bibliotecas de funções.
Ao nível de linguagem de programação, o MATLAB permite o desenvolvimento de aplicações, incluindo
desenvolvimento de interface gráfica. Os programas em MATLAB são escritos em m-files, ou seja ficheiros
com extensão “.m”, podendo ser estruturados em funções ou scripts. Não é necessário compilar o programa
uma vez que o MATLAB é uma linguagem interpretada. O código fonte deste tipo de ficheiros pode ser
livremente visualizado e editado.
José Borges, v1.1@2010
1
1. Abrir a aplicação MATLAB
1.1
Abrir o MATLAB
1
Clicar no ícone da aplicação existente no
ambiente de trabalho e/ou no Start menu do
Windows.
1.2
Abrir o MATLAB
1
Premir em simultâneo as teclas Windows + R.
+R
2
Escrever “matlab” na prompt e, de seguida,
prima a tecla ENTER ou clique no botão OK.
José Borges, v1.1@2010
2
2. Identificar as componentes da janela do MATLAB
Após inicialização do MATLAB deverá aparecer uma janela semelhante à que se apresenta na Figura 1.
Identifique e explore as seguintes componentes do ambiente:





Windows Menu
Command Window
Current Directory
Workspace
Command History
Menu do Windows, Barra de Ferramentas e Atalhos
Current Directory / Workspace
Command History
Command Window
Figura 1: Janela com o ambiente de trabalho do MATLAB.
José Borges, v1.1@2010
3
3. Entender o conceito de “directoria de trabalho”
A “Current Directory” corresponde a uma directoria existente no disco rígido que é utilizada pelo MATLAB
para armazenamento/leitura de dados e/ou acesso a funções locais durante a sessão de trabalho actual.
Assumindo que no disco rígido existe uma directoria C:\Program Files\MATLAB\R2009a\work
(NOTA: Substituir pela directoria adequada no seu computador!), a Figura 2 exibe a componente “Current
Directory” da Barra de Ferramentas, que indica qual é a directoria de trabalho actual.
Current Directory
Figura 2: Detalhe da janela do MATLAB com a caixa de texto da Current Directory.
Alteração da directoria de trabalho actual
3.1
Escolher uma nova directoria de trabalho pela linha de comandos
1
Na prompt da linha de comandos
escrever o comando cd, seguido do
caminho para a nova directoria
entre pelicas
2
Premir a tecla ENTER
3.2
Escolher uma directoria de trabalho existente no grupo “Current Directory”
1
Clicar na seta junto à caixa de texto
2
Escolher uma das directorias disponíveis
apresentadas como opção
José Borges, v1.1@2010
4
3.3
Escolher uma nova directoria de trabalho por navegação no explorador de pastas
1
Clicar no botão de selecção junto à
caixa de texto
2
Escolher a directoria pretendida na
nova janela gerada pelo MATLAB
3.4
Aceder à directoria no nível acima do actual
1
Clicar no botão de mudança de
nível selecção junto à caixa de
texto
Na prompt da linha de comandos
escrever o comando cd ..
seguido da tecla ENTER
José Borges, v1.1@2010
5
4. Utilizar o MATLAB como ferramenta para a execução de operações
matemáticas
Cálculos Simples
O MATLAB faz cálculos simples e científicos como uma calculadora. Por exemplo, suponha que pretende
calcular o perímetro de um rectângulo com lados a = 3 cm e b = 7 cm.
4.1
Introdução directa da expressão matemática
1
Escrever na prompt do MATLAB a operação
matemática para cálculo do perímetro, seguido
da tecla ENTER
>> 3 + 3 + 7 + 7
ans =
20
>> 3 * 2 + 7 * 2
ans =
20
4.2
NOTAS


O resultado da operação fica guardado na variável temporária ans.
A multiplicação tem precedência sobre a adição no MATLAB.
4.3
Utilização de variáveis na expressão matemática.
1
Criar duas variáveis a = 3 e b = 7 na prompt do
MATLAB, seguido da tecla ENTER
>> a = 3, b = 7
a =
3
b =
7
2
Escrever na prompt do MATLAB a operação
matemática para cálculo do perímetro, seguido
da tecla ENTER
4.4
>> perimetro = 2 * a + 2 * b
perimetro =
20
NOTAS


4.5
O sinal de igual significa atribuição da operação à sua esquerda à variável à sua direita.
O resultado da operação ficou guardado nas variável perimetro.
HANDS-ON



Escreva uma expressão matemática para o cálculo da área do rectângulo e atribua o
resultado à variável area. Antes de carregar na tecla ENTER, coloque um ponto e vírgula ;
no final da instrução. Averigúe o resultado após carregar na tecla ENTER.
Escreva na linha de comandos o nome da variável area seguido da tecla ENTER.
Justifique o que está a acontecer.
José Borges, v1.1@2010
6
Expressões Numéricas e Aritméticas
O MATLAB trabalha em notação decimal, hexadecimal, potência de 10 e exponencial em diversos formatos
numéricos com aproximadamente 16 algarismos significativos na gama de 10-308 (limite inferior ou de
underflow) a 10308 (limite superior ou de overflow).
4.6
Limites da representação numérica interna.
1
Criar as variáveis x =
ey=
>> x = 2e200
x =
2.0000e+200
>> y = 1e200
y =
1.0000e+200
2
Fazer o produto de x por y (
)
>> z = x * y
ans =
Inf
3
Criar a variável z =
>> z = 2e-200
z =
2.0000e-200
4
Dividir z por y (
)
>> z / y
ans =
0
As expressões podem ser construídas utilizando os operadores aritméticos abaixo indicados.
4.7
Operadores aritméticos
+
*
/
\
^
4.8
adição
subtracção
multiplicação
divisão à direita
divisão à esquerda
exponenciação
HANDS-ON
Defina duas variáveis x = 5 e y = 2. Escreva expressões para o cálculo de:





soma de x e y,
.
subtrai y a x,
.
multiplicação de x por y,
divisão de x por y,
.
calculo de x elevado a y,
José Borges, v1.1@2010
.
.
7
A ordem pela qual são avaliadas as expressões no MATLAB é dada pelas seguintes regras:
1) as expressões são avaliadas da esquerda para a direita
2) em termos de operadores a prioridade de avaliação é dada por ordem decrescente de acordo com:
i)
potência tem mais alta precedência,
ii)
segue-se a multiplicação e divisão, que têm igual precedência,
iii)
segue-se a adição e subtracção, que têm igual precedência.
3) podem ser usados parêntesis “(“ e “)”para alterar a ordem de avaliação das expressões. A prioridade
da avaliação no caso do uso de parêntesis é feita do interior para o exterior.
4.9
HANDS-ON
Averigúe o resultado das seguintes expressões:




4+2*5^2+2*3
4 + 2 * (5 ^ 2 + 2) * 3
((4 + 2) * 5) ^ 2 + 2 * 3
(4 + 2 * 5 ^ 2 + 2) * 3
4.10 NOTAS




Para avaliar múltiplas expressões em paralelo deve digitar cada linha correspondente
seguida de SHIFT+ENTER. No final pressione ENTER.
Para que o MATLAB execute um comando sem exibir resultado basta colocar um ponto-evírgula no final do comando.
As funções e variáveis são case-sensitive , isto é, “a” não é o mesmo que “A”.
O editor possui Syntax Highlighting e Parentheses Matching
4.11 Utilização de separadores e comentários nas expressões
, Permite separar comandos dados em uma mesma linha.
; Permite separar comandos dados em uma mesma linha. Se o último carácter da
declaração é um ponto e vírgula, a impressão na tela é suprimida, mas atarefa é
realizada.
… Permite dividir uma expressão em várias linhas usando um espaço em branco e três
pontos,"...", no final das linhas incompletas.
% Permite introduzir comentários para documentar expressões e/ou linhas de código.
O carácter de percentagem “%” inicia a linha de comentário, podendo seguir-se
qualquer outro carácter.
4.12 HANDS-ON


Escreva a instrução clear all na prompt do MATLAB e carregue na tecla ENTER
Escreva as seguintes expressões na prompt do MATLAB e averigúe o resultado:
o a = 3, b = 7, c = 2 * a + 2 * b % correcto
o z = 2 * x + 2 * y, x = 3, y = 7 % determinação do perímetro
José Borges, v1.1@2010
8
Variáveis
Variáveis são entidades computacionais que associam uma etiqueta, ou nome, a uma zona na memória
volátil do computador, sendo assim utilizadas para guardar informação.
Regras para definição do nome das variáveis em MATLAB:



Os nomes das variáveis iniciam-se sempre por uma letra, podendo seguir-se quaisquer outros
caracteres alfanuméricos excepto espaços em branco ou caracteres de pontuação.
Os nomes das variáveis podem consistir de até 19 caracteres.
O MATLAB é case sensitive, isto é, distingue entre letras maiúsculas e minúsculas.
4.13 HANDS-ON (Baseado no Tópico 4.2)



Defina as variáveis a = 3 e b = 7.
Averigúe o resultado da seguinte expressão: perimetro = 2 * A + 2 * b.
Escreva na prompt do MATLAB o nome da variável “a” e “b” e justifique o resultado obtido
no ponto anterior.
O MATLAB utiliza alguns nomes predefinidos para identificar variáveis específicas do programa.
4.14 Exemplos de nomes de variáveis predefinidos no MATLAB
ans variável temporária usada para armazenar o resultado da última operação
realizada no MATLAB
pi número
eps menor número tal que, quando adicionado a 1, cria um número maior que 1 no
computador
inf significa infinito
NaN ou nan significa não é um número, por exemplo, 0/0
i ou j unidade imaginária (
)
nargin número de argumentos de entrada de uma função
nargout número de argumentos de saída de uma função
realmin menor número que o computador pode armazenar
realmax maior número que o computador pode armazenar
4.15 NOTAS


As variáveis podem ser redefinidas a qualquer momento pela atribuição de um novo valor,
ainda que de um tipo numérico diferente do original.
Se bem que é possível redefinir as variáveis predefinidas do MATLAB, tal é uma má prática
de programação, podemos mesmo dificultar a depuração de erros no código do programa.
José Borges, v1.1@2010
9
Funções para cálculo científico
O MATLAB inclui um conjunto alargado de funções científicas predefinidas. A maioria destas funções é
identificada pelo respectivo nome em Inglês, ou por um acrónimo significativo, e usam uma sintaxe similar à
da escrita matemática.
4.16 Exemplos de funções predefinidas no MATLAB
date indicação da data
clock indicação da hora
abs(x) valor absoluto de x
cos(x) co-seno de x.
sin(x) seno de x.
tan(x) tangente de x.
acos(x) arco cujo co-seno é x
asin(x) arco cujo seno é x.
atan(x) arco cuja tangente é x.
exp(x) exponencial e x .
gcd(x,y) máximo divisor comum de x e y.
lcm(x,y) mínimo múltiplo comum de x e y.
log(x) logaritmo de x na base e.
log10(x) logaritmo de x na base 10.
rem(x,y) resto da divisão de x por y.
sqrt(x) raiz quadrada de x.
tan(x) tangente de x.
4.17 Utilização de Funções Científicas.
1
Criar a variável x = 2.
>> x = 2;
2
Calcular a raiz quadrada de x, dividir por 2 e
atribuir a y.
>> y = sqrt(x)/2
Calcular o arco cujo co-seno é y e atribuir à
variável z.
>> z = acos(y)
z =
3
y =
0.7071
0.7854
4
Converter z de radianos para graus.
>> z_graus = z*180/pi
z_graus =
45
4.18 NOTAS

As operações trigonométricas no MATLAB são realizadas em unidades de radianos.
José Borges, v1.1@2010
10
Formatos Numéricos
O MATLAB trabalha e armazena os dados numéricos em dupla precisão com 16 dígitos decimais. Mesmo
quando definimos uma nova variável, por exemplo a = 6, a representação interna desta é na forma de um
número real, logo a = 6,0. É possível fazer o cast do tipo e transformar uma variável, e.g., de real para inteira.
A visualização das variáveis não segue a mesma regra do armazenamento e processamento: se uma variável
tiver um valor com parte decimal nula, então é exibida na linha de comandos como se de um inteiro se
tratasse. Quando um número é inteiro, o MATLAB apresenta-o como um inteiro mas utiliza uma
representação interna real. Por omissão, o MATLAB exibe os números reais arredondados até à 4ª casa
decimal. Caso os dígitos significativos sejam em número superior, então o valor é apresentado utilizando
notação científica. O formato de visualização pode ser alterado pela utilização do comando format.
4.19 Modos de apresentação de dados numéricos (EXEMPLIFICADO COM NÚMERO )
format short
5 dígitos (formato default)
3.1416
format long
16 dígitos
3.141592653589793
format short e
5 dígitos mais expoente
3.1416e+000
format long e
16 dígitos mais expoente
3.141592653589793e+000
format rat
Formato racional
355/113
format +
Indicação do sinal (positivo, negativo ou
zero)
+
format hex
Formato hexadecimal
400921fb54442d18
4.20 Utilização do comando format
1
Calcular a raiz quadrada de 2.
>> sqrt(2)
ans =
1.4142
2
Mudar a representação para o modo de 16
dígitos e calcular a raiz quadrada de 2.
>> format long
>> sqrt(2)
ans =
1.414213562373095
3
Mudar a representação para o modo
hexadecimal e calcular a raiz quadrada de 2.
>> format hex
>> sqrt(2)
ans =
3ff6a09e667f3bcd
4
Mudar a representação para o modo de 5
dígitos
>> format short
>> sqrt(2)
ans =
1.4142
4.21 NOTAS

A utilização do comando format altera apenas o formato de exibição numérica, e não a
representação na memória interna gerida pelo MATLAB.
José Borges, v1.1@2010
11
4.22 Divisão inteira vs. Divisão real
1
Fazer a divisão com resultado inteiro 10 / 5.
>> 10 / 5
ans =
2
2
Fazer a divisão com resultado real 10 / 4.
>> 10 / 4
ans =
2.5
3
4
Fazer a divisão inteira 10 / 4, i.e.:
10 4
2 2
Resto da divisão inteira de 10 / 4, i.e.:
10 4
2 2
José Borges, v1.1@2010
>> fix(10/4)
ans =
2
>> rem(10,4)
ans =
2
12
5. Como obter ajuda no MATLAB
O sistema de ajuda no MATLAB está bastante desenvolvido e proporciona um suporte muito útil e eficaz na
utilização da ferramenta, bem como nas actividades de programação. Existem dois modos para utilizar a
ajuda do MATLAB: na forma de texto pela linha de comandos ou na forma gráfica através de uma GUI
apropriada.
Ajuda na linha de comandos
5.1
Obter ajuda na linha de comandos
1
Listar todas as toolboxes da
instalação actual do
MATLAB.
>> help
HELP topics:
Documents\MATLAB
-
(No table of contents file)
matlab\general
matlab\ops
-
General purpose commands.
Operators and special characters.
matlab\lang
matlab\elfun
-
Programming language constructs.
Elementary math functions.
matlab\specfun
-
Specialized math functions.
(apenas se mostra um excerto)
2
Listar todas as funções de
uma toolbox específica,
neste caso a toolbox elfun
que integra algumas funções
matemáticas predefinidas
no MATLAB.
>> help elfun
Elementary math functions.
Trigonometric.
sin
- Sine.
sind
sinh
- Sine of argument in degrees.
- Hyperbolic sine.
asin
- Inverse sine.
asind
asinh
- Inverse sine, result in degrees.
- Inverse hyperbolic sine.
cos
cosd
- Cosine.
- Cosine of argument in degrees.
cosh
acos
- Hyperbolic cosine.
- Inverse cosine.
acosd
acosh
- Inverse cosine, result in degrees.
- Inverse hyperbolic cosine.
tan
- Tangent.
(apenas se mostra um excerto)
3
Obter ajuda para uma
função específica, neste
caso a função seno.
>> help sin
SIN
Sine of argument in radians.
SIN(X) is the sine of the elements of X.
See also asin, sind.
Overloaded functions or methods (ones with the same
name in other directories)
help darray/sin.m
help sym/sin.m
Reference page in Help browser
doc sin
José Borges, v1.1@2010
13
Ajuda através da GUI do MATLAB
5.2
Utilização da GUI de ajuda no MATLAB
1
Clicar no
botão de
ajuda junto à
caixa de texto
2
Escrever na
prompt o
nome da
função que
pretende
pesquisar e
carregar na
tecla ENTER.
José Borges, v1.1@2010
14
6. Trabalhar com matrizes
Até ao momento foram apresentados casos de utilização do MATALAB com valores escalares. No entanto, o
MATLAB é especialmente adequado para a manipulação de matrizes. Uma matriz é uma entidade
matemática que agrega dados de um mesmo tipo (que poderão ser, por exemplo, tipo real ou complexo
). Dependendo das dimensões podem-se definir os seguintes casos: matrizes com dimensões
,
vectores linha com dimensões
, vectores coluna com dimensões
, escalares com dimensões
. Por exemplo, a matriz
pode ser definida como se segue,
onde os elementos da matriz
representa o número de colunas.
, o escalar
representa o número de linhas e o escalar
Definição da matriz no MATLAB
A criação de matrizes no MATLAB resulta da explicitação dos elementos da matriz entre parêntesis rectos “[“
e “]” e atribuição a uma variável. Os elementos da matriz são separados por vírgulas “,” ou espaços em
branco “ “ no caso das linhas, e por ponto e vírgula no caso das colunas. À semelhança do caso dos escalares,
o MATLAB não requer a declaração de tipos, mas todos os elementos são, obrigatoriamente, do mesmo tipo.
6.1
Criação de matrizes
>> A = [1 2; 3 4]
1
Criar a matriz
A =
1
2
3
4
>> A = [1,2; 3,4]
A =
1
3
2
4
>> linha_1 = [1,2]
linha_1 =
1
2
>> linha_2 = [3,4]
linha_2 =
3
4
>> A = [linha_1; linha_2]
A =
1
2
3
4
>> coluna_1 = [1;3]
coluna_1 =
1
3
>> coluna_2 = [2;4]
coluna_2 =
2
4
>> A = [coluna_1 coluna_2]
A =
José Borges, v1.1@2010
1
2
3
4
15
Os elementos da matriz podem ser acedidos pela explicitação dos índices respectivos na matriz ou através
do operador “:”.
6.2
Acesso aos elementos da matriz
1
Aceder ao elemento
da matriz A.
>> A(1,2)
ans =
2
2
Aceder à segunda linha, elementos
da matriz A.
e
,
>> [A(2,1) A(2,2)]
ans =
3
4
>> A(2,:)
ans =
3
3
Aceder à primeira coluna, elementos
da matriz A.
e
,
4
>> A(:,1)
ans =
1
3
As matrizes podem ser concatenadas ou redimensionadas, ou seja, podem-se remover ou acrescentar linhas
e/ou colunas.
6.3
Manipulação de matrizes
1
Criar a matriz
2
3
Concatenar as matrizes A e B e atribuir à matriz
C
Eliminar a 3ª coluna de C
>> B = [5 6; 7 8]
B =
5
6
7
8
>> C = [A B]
C =
1
2
5
6
3
4
7
8
>> C(:,3)=[]
C =
1
3
4
Acrescentar um elemento à matriz C na posição
linha = 3 e coluna = 2 com valor 9, ou seja,
José Borges, v1.1@2010
2
4
6
8
>> C(3,2) = 9
C =
1
3
2
4
6
8
0
9
0
16
Algumas funções para criar matrizes particulares no MATLAB
Existem funções para criar matrizes no MATLAB a partir da definição de parâmetros de entrada.
6.4
Funções para criar matrizes
eye(n,m) criação de uma matriz identidade com dimensão
zeros(n,m) criação de uma matriz de zeros
ones(n,m) criação de uma matriz
, i.e. preenchida com valores 0
unitária, i.e. preenchida com valores 1
diag(X) devolve a diagonal principal da matriz X
rand(n,m) criação de uma matriz
de valores aleatórios
linspace(x,y,n) gera um vector com n pontosigualmente espaçados no intervalo x a y
José Borges, v1.1@2010
17
Operações com Matrizes
As operações com matrizes seguem regras semelhantes às anteriormente apresentadas no caso da
operações com escalares. Uma grande diferença reside, por exemplo, no produto de matrizes que é bem
definido apenas se o número de colunas da matriz da esquerda é igual ao número de linhas da matriz da
direita. Se A é uma matriz
e B é uma matriz
, então seu produto AB é uma matriz com
dimensões
, então
. A comutação de B por A só será possível se
, pelo
que o produto BA poderá nem sequer existir.
6.5
Operações com matrizes
1
Criar a constante K = 3 e as matrizes,
,
e
>> K = 3
K =
3
>> A=[1 2 ; 3 4]
A =
1
2
3
4
>> B=[-3;1]
B =
-3
1
>> C=[3 5 ; -5 2]
C =
2
Somar A e B
3
5
-5
2
>> A + B
??? Error using ==> plus
Matrix dimensions must agree.
3
Somar A e C
>> A + C
ans =
4
Multiplicar K por A
4
7
-2
6
>> K * A
ans =
3
9
5
Multiplicar A por C
>> A * C
ans =
-7
-11
6
7
Multiplicar C por A
Multiplicar A por B
6
12
9
23
>> C * A
ans =
18
26
1
-2
>> A * B
ans =
-1
-5
8
Multiplicar B por A
>> B * A
??? Error using ==> mtimes
Inner matrix dimensions must agree.
José Borges, v1.1@2010
18
Para além da soma, subtracção e produto, há outras operações que também podem ser realizadas sobre
matrizes.
6.6
Funções para realizar operações com as matrizes
A^n implementa a exponenciação, i.e. assumindo
tipo
,
, implementa um produto do
inv(A) implementação da inversão da matrizes (é conhecido que a inversão de matrizes é
uma operação pesada em termos computacionais)
A / B implementa a divisão à esquerda de modo eficiente:
A \ B implementa a divisão à direita de modo eficiente:
A' apresenta a transposta de A
det(A) calcula o determinante da matriz A
size(A) apresenta as dimensões da matriz A
6.7
Operações com matrizes (continuação)
1
Criar as matrizes,
>> A=[1,2;2,4];
>> C=[3,5;-5,2];
,
2
Inverter a matriz A
(NOTA: A matriz A não tem inversa)
>> inv(A)
Warning: Matrix is singular to working precision.
ans =
Inf
Inf
3
4
5
6
7
Inverter a matriz B
Divisão à direita de A por B
Divisão à esquerda de A por B
Transposta da matriz A
Transposta da matriz B
>> inv(B)
ans =
0.0645
-0.1613
0.1613
0.0968
>> A / B
ans =
0.3871
0.0323
0.7742
0.0645
>> A \ B
Warning: Matrix is singular to working precision.
ans =
-Inf
-Inf
Inf
Inf
>> A'
ans =
1
2
2
4
>> B'
ans =
3
5
José Borges, v1.1@2010
Inf
Inf
-5
2
19
8
9
Determinante da matriz A
(NOTA: como o det = 0, conclui-se
que a matriz A é “singular”, i.e. tem
linhas linearmente dependentes.
Relacionar este resultado com os
exercícios 2 e 5.)
>> det(A)
Determinante da matriz B
>> det(B)
ans =
ans =
0
31
José Borges, v1.1@2010
20
Download

AP1