Você está na página 1de 23

Curso Básico de MATLAB ( Capítulo 2 - USERS'S GUIDE )

1. Fundamentos

O MATLAB trabalha com um unico tipo de dado, que é a matriz retangular de


números reais ou complexos. Em particular estas matrizes podem ser somente uma
coluna ou uma linha, ou seja, vetores.

1.1 Entrando matrizes simples

As matrizes são geradas por uma das seguintes formas:


* Digitando uma lista explícita de elementos.
* Gerando através de comandos internos e funções.
* Carregando à partir de M-files (MATLAB files).
* Carregando de arquivos de dados externos.

Não é necessário dimensionar as matrizes. Todo espaço de memória do computador


será usado automaticamente. A lista explícita pode ser: A = [ 1 2 3; 4 5 6; 7 8
9 ] que produz

A =
1 2 3
4 5 6
7 8 9

também poderia ser digitado:

A = [ 1 2 3
4 5 6
7 8 9 ]

Ou poderia estar em um arquivo matriz.m, então executando matriz a matriz A


seria carregada.

1.2 Elementos de uma matriz

Se x = [ -1.3 10 1500.5 ] então x(1) = -1.3, x(2)=10 e x(3)=1500.6

Executando x(5)=2001 produz x = [ -1.3 10 1500.5 0 2001 ]

Se r = [ 10 11 12 ], fazendo A = [A ; r ] produz

A =
1 2 3
4 5 6
7 8 9
10 11 12

Se r = [10; 11; 12], fazendo A = [A r ] produz

A =
1 2 3 10

1
4 5 6 11
7 8 9 12

Se A = [ 1 2
3 4]

então A = A(1:2,1) produz (linhas de 1 até 2 da coluna 1)

1
3

1.3 Comandos e Variáveis

Os comandos em MATLAB têm o seguinte formto geral:

variável = expressão

ou simplesmente,

expressão

A expressão é avaliada, mostrada na tela e atribuída à variàvel, que é


sempre uma matriz. Quando não for digitado o nome da variável será atribuída à
variável interna 'ans'. Por exemplo, 100/30 produz ans = 3.3333

Para evitar que uma expressão seja mostrada na tela sempre que for
avaliada, acrescente ao final da expressão ';' (ponto-e-vírgula).

Quando o comando não couber em uma linha, basta colocar '...' (tres
pontos) e continuar na outra linha. Exemplo:

s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - ...


1/6 - 1/7;

Nomes de variáveis e funções são formados por letra seguido de até 18


letras ou números. Letras minúsculas são diferentes de letras maiúsculas, de
modo que a variável 'a' é diferente da variàvel 'A'.

1.4 Obtendo informações do espaço de trabalho

O comando who mostra quais variáveis foram definidas durante a sessão. O


comando whos mostra as seguintes informações:

Name Size Total Complex Sparsity


A 3 by 39 No Full
ans 1 by 11 No Full

Grand Total is (10*8) = 80 bytes

A variàvel interna eps contem a tolerância para funções que calculam


singularidade e rank. Por default, é igual à 2.22e-16, mas pode ser modificada
para outro valor qualquer.

2
1.5 Números e expressões aritméticas

Os números são escritos na convenção científica usual, ou seja,

3 -99 0.00011.6E-20 10.0e+7

Os operadores aritméticos são:

+ - * / \(divisao à esquerda) ^(exponeciação)

A constante pi já está definida internamente. EXiste uma representação


especial para infinito, de modo que a divisão por zero não aborta a execução do
programa, mas produz uma advertência e gera um inf. Exemplo:

s = 1/0 produz
Divisão por zero
s =
inf

Em operações do tipo 0/0 e inf/inf produz-se o seguinte resultado NaN


(Not a Number):

s = 0/0 produz

s =
NaN

1.6 Números e matrizes complexas

Números complexos são representados com as variáveis i ou j.


Exemplo:
z = 3+4*i ou z=3+4*j ou então w=r*exp(i*theta)

Matrizes complexas podem ser escritas como:

A = [ 1 2; 3 4] + i*[5 6; 7 8]
ou
A = [1+5*i 2+6*i; 3+7*i 4+8*i ] (Não tem espaço em branco entre os
digitos de um numero)

1.7 Formato de Saída

O comando format permite mudar a forma como os números de uma matriz são
mostrados na tela. (Não é alterado a representação interna, que está sempre em
precisão dupla). Se todos os elementos da matriz são inteiros exatos não é
mostrado nenhuma casa decimal.
Os formatos possíveis para x = [4/3 1.2345e-6] são:

format short 1.3333 0.0000


format short e 1.3333E+000 1.2345E-006
format long 1.333333333333333 1.234500000000000E-006
format hex 3FF55...553 3EB0....4ED

3
format + ++

No formato + os números positivos são mostrados como '+', os números


negativos como '-' e os zeros como ' ' (branco).

1.8 HELP Facility

Para obter um help on-line digite:


help
Para obter help em um tòpico específico digite:
help tópico
Para obter help sobre o help digite:
help help

1.9 Saindo e salvando o espaço de trabalho

Para sair do MATLAB digite quit ou exit. Neste caso para salvar todas as
variáveis do espaço de trabalho, digite save e será gerado um arquivo
matlab.dat, que pode ser recuperado na proxima seção com o comando load. Para
salvar em (ou carregar de) outro arquivo digite save arquivo (ou load arquivo).
Para salvar apenas a variável X no arquivo temp digite save temp X.

2. Operações com matrizes.

2.1 Transposição.

A = [ 1 2 ; 3 4 ]
B = A'

produz

A = 1 2 B = 1 3
3 4 2 4

2.2 Adição e Subtração (+,-)

C = A + B

produz

C = 2 5
5 8

Estas operações também podem ser aplicadas no caso de escalares, e neste


caso o escalar é somado ou subtraído de cada elemento da matriz.

C = 2 + A

produz

C = 3 4
5 6

4
2.3 Multiplicação de Matrizes (*)

Só é possível quando as dimensões internas forem iguais. Também é


possível multiplicar uma matriz por um escalar.

3.14 * A

produz

ans = -3.14
0
6.28

2.4 Divisão de Matrizes (/,\)

X = A\B é a solução de A * X = B obtido por inv(A) * B


X = B/A é a solução de X * A = B obtido por B * inv(A)

2.5 Potenciação de Matrizes (^)

A^p onde A é uma matriz quadrada e p um escalar. Se p > 1 e inteiro,


então é equivalente à uma multiplicação convencional. Caso contrário, é
calculado por
[V,D] = eig(A) e então A^p = V * D.^p/V

2.6 Funções elementares sobre matrizes

expm(A) eA
logm(A) log A
sqrtm(A)
poly polinomio caracteristico
det determinante
trace traço (soma dos elementos da diagonal)
kron delta de Kronecker

3 Operações com Array

As operações com array se referem à operação de elemento à elemento, e


não à matriz como um todo. Todos os operadores que forem precedidos por um
ponto (.) representam operação com array.

3.1 Soma e subtração de array

Não hà diferença para operações com matrizes.

3.2 Multiplicação e divisão de array.

.* é a multiplicação elemento à elemento.


./ .\ é a divisão de elemento à elemento.

3.3 Potenciação de arrays.

.^ é a potenciação elemento à elemento.

5
3.4 Operações relacionais.

Os operadores relacionais são aplicados na comparação de duas matrizes de


igual dimensão. A comparação é feita entre dois pares correspondentes de
elementos, resultando 1 (verdadeiro) ou 0 (falso). Os operadores são:

< menor que


<= menor ou igual que
> maior que
>= maior ou igual que
== igual à
~= diferente de

A comparação produz uma matriz de 0 e 1, que pode ser melhor visualizada


usando o format +.

3.5 Operadores Logicos

Os operadores lógicos são:

& And
| Or
~ Not

Estes operadores trabalham elementos à elemento das matrizes. Elementos


não nulos são considerados verdadeiros e 0 é considerado falso. Eles sempre
retornam 1 quando for verdadeiro e 0 quando for falso. Outras funções lógicas
são:

any algum elemento do array por coluna é verdadeiro.


all todos elementos do array são verdadeiros.
find indices do array que são verdadeiros.
exist checa se variável existe.
isnan detecta NAN (not a number).
finitecheca valores finitos.
isinf detecta infinitos.
isempty detecta matrizes vazias.
isstr detecta variavel tipo string.
issparse detecta matrizes esparsas.
isglobal detecta variáveis globais.

3.6 Funções Matematicas Elementares

Existe um conjunto de funções que são aplicadas em cada elemento de um


array. As funções trigonométricas:

sin, cos, tan, asin, acos, atan ...

e funções elementares comuns:

abs, angle, sqrt, real, imag, round, fix, floor, ceil, sign, ...

6
3.7 Funções matemáticas especiais.

bessel
gamma
rat aproximação racional.
erf error function
inverf

4. Manipulação de Matrizes e Vetores.

4.1 Geração de Vetores.

X = inicio:incremento:fim

Exemplos:
x = 0:pi/4:pi produzx= 0.0 0.78 1.57 2.35 3.14
y = 6:-1:1 produzy= 6 5 4 3 2 1
z = 1:5 produzz= 1 2 3 4 5
(incremento foi omitido)

Exercício: x = (0.0:0.2:3.0)';
y = exp(-x).* sin(x);
[ x y ]

produzans = 0 0
0.2 0.16
: :

k=linspace(-pi,pi,4) produzk = -3.16 -1.04 1.04 3.16


k=logspace(1,6,6) produzk = 1 10 100 1000 10000 100000

4.2 Subscritos

Elementos individuais de uma matriz podem ser accessados através de


subscritos (indices) entre parenteses.

Exemplo: Se A = 1 2 3 então A(2,3) produz 6


4 5 6

B(1:5,3) é a submatriz 5x1 das 5 primeiras linhas e a terceira coluna de B.


B(1:5,7:10) é a submatriz 5x4 das 5 primeiras linhas e as colunas de 7 até 10.
B(:,3)é a submatriz com todas as linhas da terceira coluna, ou seja, a
terceira coluna.
B(1:5,:) é a submatriz com as 5 primeiras linhas e todas as colunas de B.

Exercício:
B(:,[3 5 10]) = A(:,1:3) copia as 3 colunas de A nas colunas 3, 5 e 10 de
B.

A(:,n:-1:1) reverte as colunas de A.

v=2:2:6;
w=[3 1 4 1 6];

7
A(v,w)

A=[1 2; 3 4; 5 6]
b=A(:)
produz
A = 1 2 b = 1
3 4 2
5 6 3
4
5
6

A(:) = 11:16 produzA = 11 14


12 15
13 16

As dimensoes de A(3x2) já foram definidas antes.

4.3 Subscritos com vetores 0-1.

L vetor de dimensoes m de 0-1


A matriz de dimensão mxn
A(L,:)são linhas de A onde o elemento L é não for nulo.

Exercício: explicar

L = X(:,3) > 100; compara cada elemento da coluna 3 com 100 e devolve 1
se é verdadeiro ou 0 caso contrario.

X = X(L,:); coloca em X as linhas cuja terceira coluna seja maior que


100.

4.4 Matrizes Vazias

X = [] x tem dimensão 0x0. Não ocupa espaço de memória. Estas matrizes


existem no workspace e podem ser testados com a função exist.
É útil para remover linhas e colunas de uma matriz. Exemplo: A(:,[2
4])=[] deleta as colunas 2 e 4 da matriz A.

4.5 Matrizes especiais. (utilizadas em Algebra LInear).

compan matriz companheira


diag matriz diagonal
hadamard
haenkel
hilb
zeros matriz de zeros.
ones matriz de uns.
rand matriz randômica
eye matriz identidade

Exercício:
ones(3), ones([1 2]), ones([ 1 2; 3 4])

8
eye(5)
rand(4)

4.6 Construindo matrizes maiores.

C = [A eye(4); ones(A) A^2]

produz

C = A eye(4)
ones(A) A^2

4.7 Manipulação de Matrizes.

rot90 rotacao da matriz


fliplrreflete matriz da esquerda para a direita.
flipudreflete matriz de cima para baixo.
diag extrai ou cria a matriz diagonal.
tril triangular inferior.
triu triangular superior.
reshape remodela uma matriz.
size retorna um vetor com dois elementos [linhas colunas]
lengthse é um vetor então retorna o tamanho.

5 Análise de Dados

As capacidades básicas de análise de dados aplicadas à matrizes são:

max valor máximo


min valor mínimo
mean valor médio
medianvalor mediano
std desvio padrão
sort ordenação
sum soma dos elementos
prod produto dos elementos
cumsumsoma cumulativa dos elementos
cumprod produto cumulativo dos elementos
diff derivada aproximada
hist histograma
corrcoef coeficientes de correlação
cov matriz de covariância
polyfit ajuste de curvas e regressão linear.

6. Funções de Matrizes

Funções de Matrizes são que tem como argumento matrizes e retornam


matrizes como resultado de alguma operação. Algumas destas funções estão
baseadas no LINPACK e EISPACK. Estão divididas em quatro grupos:

Fatoração Triangular
Fatoração Ortogonal
Decomposição em Autovalores

9
Decomposição em Autovetores

6.1 Fatoração Triangular (Fatoração LU)

Decompor uma matriz quadrada como o produto de duas matrizes (uma


permutação de uma trinagular inferior e outra uma matriz triangular superior).
Estas matrizes são usadas como base para a solução de sistemas de equações
lineares.

Exemplo: [L,U] = lu(A) onde A=L*U


X = inv(A) det(A) = det(L) * det(U)
X = inv(U) * inv(L)

Dado o sistema Ax= b então x = A\b. Usando a decomposição LU o mesmo sistema


linear de equações é resolvido como:

y = L\b; x =U\y

6.2 Fatoração Ortogonal (Fatoração QR)

Usado para fatorar tanto matrizes quadradas como retangulares, é expresso


como o produto de uma matriz ortogonal e uma matriz triangular superior.

Exemplo: [Q,R] = qr(A) onde Q é ortogonal e R é trinagular superior. A


fatoração QR é usada onde o número de equações é maior que o número de
variaveis.

Para o sistema Ax = b a solução é obtida como:


y = Q' * b;
x = R\y

6.3 Fatoração do Valor Singular.

Exemplo: [U,S,V] = svd(A) onde os tres fatores de decomposição são A = U


* S * V' onde as matrizes U e V são ortogonais e S é uma matriz diagonal.
Esta decomposição é usada em muitas outras funções: pseudoinversas, rank,
norma euclideana e número de condição.

6.4 Autovalores

Se A é uma matriz nxn, os n números L que satisfazem Ax=Lx são os


autovalores de A. Exemplo:
[X,D] = eig(A) onde X são os autovetores e D os autovalores
tal que A*X = X*D.

A forma de Hessenberg, hess(A), e a forma de Schur, schur(A), são


resultados intermediários obtidos no cálculo dos autovalores.

6.5 Rank e Condição.

cond número de condição em 2-norm.


norm 1-norm,2-norm,F-norm,oo-norm
rank rank de uma matriz

10
rcond estimativa da condição.

7 Polinômios e Processamento de Sinal

8. Função FUNÇÃO

Uma função FUNÇÃO é uma função que pode ser aplicada à outra função
matemática. Uma função matemática pode ser representada em MATLAB, por exemplo:

força(x) = sin(x2) + cos2(x)

é escrita em MATLAB (dentro de um M-file) como:

function y = forca(x)
y = sin(x .^ 2) + cos(x) .^ 2;

As funções FUNÇÃO são:

Integração Numérica:
quad Regra de Simpson quad('forca',0,1)
quad8 Regra de Newton

OtimizaçãO e Equações Não-Lineares:


fmin minimo de uma função de 1 variável.
fmins minimo de uma função de várias variáveis.
fsolvesolução de um sistema de equações não-lineares.
fzero zero de uma função de uma variável.

Equações Diferenciais:
ode23 Runge-Kutta de segunda/terceira ordem.
ode45 Runge-Kutta-Fehlberg de quarta/quinta ordem.

9. Gráficos

Podem ser criados os seguintes tipos de gráficos:

plot grafico x-y linear


loglogescala logaritmica em X e Y
semilogx escala logaritmica em X
semilogy escala logarítmica em Y
polar
bar gráfico de barras

9.2 Forma Básica

Se Y é um vetor, então plot(y) produz um gráfico dos elementos versus o


índice dos elementos de Y. Exemplo:

Y = [ 1 2 5 7 10];
plot(Y)

As escalas são feitas automaticamente.

11
title('titulo')
xlabel('tempo')
ylabel('forca')
text(5,10,'potencia') coloca a palavra 'potencia' nas coordenadas
(5,10)
gtext('potencia') coloca 'potencia' posicionando com o mouse.
grid

plot(X,Y,'+') traça um gráfico do vetor X versus o vetor Y usando


marcas '+' nos pontos do gráfico.

Tipo de Linha
sólida-
tracejada --
pontilhada :
mista -.

Tipo de Marca
ponto .
circulo o
marca-x x
sinal + +
sinal * *

As marcas podem ser combinadas com cores para traçar o gráfico. Exemplo:
plot(x,Y,'c+') produz um gráfico na cor cyan com marcas '+'.

Cores
amarelo y
magenta m
cyan c
vermelho r
verde g
azul b
brancow
preto k

9.3 Múltiplos Gráficos.

[1] Y é uma matriz e X é um vetor, então plot(X,Y) produz uma curva para cada
coluna de Y e o vetor X com tipo de linha diferente.

[2] X é matriz e Y é um vetor, então são aplicadas as mesmas regras de [1].

[3] Se X e Y são ambas matrizes do mesmo tamanho, então plot(X,Y) produz uma
curva com cada coluna de X versos outra coluna de Y.

[4] Se X não é especificado , então são plotados as colunas de Y versos o


índice da linha.

10. Controle de Fluxo

10.1 Comando FOR

12
for i=1:n, x(i)=0, end

for i=1:n
for j=1:n
A(i,j) = 1/(i+j-1);
end
end
A

Seja t = -1
0
1
3
5

n = max(size(t));
for j=1:n
for i=1:n
A(i,j) = t(i)^(n-j);
end
end

Variação mais eficiente que a anterior:


A(:,n) = ones(n,1); Matriz com n linhas e 1 coluna (ultima coluna
OK)
for j = n-1:-1:1 Gera as demais colunas.
A(:,j) = t .* A(:,j+1); Coluna anterior (j+1).
end

O comando for tem a seguinte forma geral:

for v = expressão
comandos
end

10.2 Comando WHILE

n = 1;
while prod(1:n) < 1.e100, n=n+1; end
n

O comando while tem a seguinte forma geral:

while expressão
comandos
end

10.3 IF e BREAK

if n < 0
A = negative(n)

13
elseif rem(n,2)==0
A = even(n)
else
A = odd(n)
end

%Problema '3n+1' da teoria dos numeros

while 1
n = input('Entre n, negativo sai. ');
if n <= 0, break, end
while n > 1
if rem(n,2)==0
n=n/2
else
n=3*n+1
end;
end
end

11. M-Files: Scripts e Funções

O MATLAB é capaz de executar comandos que estejam armazenados em


arquivos, chamados M-Files. (Estes arquivos têm extensão .m) Um M-File pode
conter todos os comandos normais do MATLAB e chamados scripts quando contem
sequencias de comandos MATLAB, e são chamados arquivos de funções quando contem
a definição de uma nova função. Os M-files são arquivos ASCII comuns e são
criados com qualquer editor de texto.

11.1 Arquivos Script

Os scripts são executados quando se digite o nome do M-File


correspondente. As variáveis declaradas dentro de um script são sempre globais
e as variáveis do workspace são acessíveis diretamente pelo script.

Exemplo:
% Calcular números de Fibonacci
f = [ 1 1]; i=1;
while f(i) + f(i+1) < 1000
f(i+2) = f(i) + f(i+1);
i=i+1;
end
plot(f)

11.2 Arquivos de Funções

É um M-file cuja primeira palavra no arquivo é function. Ao contrário de


um script, um arquivo de função pode receber parâmetros e as variáveis usadas
dentro do arquivo são apenas locais.

Exemplo:
function y=mean(x)
[m,n] = size(x);

14
if m==1
m=n;
end
y = sum(x)/m;

Eemplo:
function [mean,stdev] = stat(x)
[m,n] = size(x);
if m==1
m=n;
end
mean = sum(x)/m;
stdev = sqrt(sum(x .^ 2)/m - mean .^ 2);

Observações:
* Quando um arquivo de função é chamado pela primeira vez, os comandos são
compilados e colocados em memória, de modo que estão sempre prontos para
executar. E permanecem assim enquanto durar a sessão MATLAB.

* O comando what mostra todos os M-files que estão disponíveis no diretório


corrente. O comando type mostra o conteudo do arquivo na tela.

11.3 Dicas de Memória e Velocidade

* Sempre que possível vetorizar as operações.


Exemplo:
% gera 1000 numeros (gasta 15 segundos)
i=0;
for t=0:0.01:10
i=i+1;
y(i)=sin(t);
end

% Forma mais eficiente (gasta 0.6 segundos)


t = 0:0.01:10;
y = sin(t);

*Prealocar vetores de saida.


Exemplo:
y = zeros(1,100);
for i=1:100
y(i) = det(x^i);
end

12 Arquivos

12.1 Manipulação de Arquiivos em Disco

dir Mostra o diretorio corrente.


type Lista um arquivo qualquer. Se for M-file não precisa '.m'
deleteDeleta um arquivo especificado.
chdir Muda de diretorio.
diary Coloca os comandos de uma sessão MATLAB em um arquivo de

15
texto. (Por default gera um arquivo de nome diary na area do usuario).

Exemplo: diary aula1


diary on
comandos MATLAB
diary off

12.2 Rodando programas externos.

Use a exclamação, !, seguido de um comando UNIX qualquer.


Exemplos:
!lp arquivo.m Imprime o arquivo.m
!matrizes Executa o programa matrizes

12.3 Importando e exportando dados.

* O comando diary pode ser usado para salvar pequenas matrizes, que podem ser
recuperadas com um editor de texto qualquer.

* Os comandos save/load podem ser usados para salvar/recuperar grandes


matrizes. Exemplo:
A = rand(4,3);
save temp.dat A /ascii
load temp.dat A

* É possível escrever um programa em C ou FORTRAN para ler arquivos gerados com


o comando load.

16
MATLAB Exercícios

1 - Fundamentos

1. Digite a seguinte matriz: matriz A quadrada (3x3)


cujo elemento (i,j) é igual à i+j.

2. Entre o vetor x = [ -1.3 sqrt(3) (1+2+3)*4/5 ]

3. Calcule a seguinte série até 12 termos:


1 - 1/2 + 1/3 - 1/4 + ... (use tres pontos)

4. Execute 1/0, 0/0, NaN/inf, inf/inf. O que acontece ?

5. Imprima x = [ 4/3 1.2345e-6 ] para todos os formats


possíveis.

6. Chame o comando help e veja quais tópicos estão


disponíveis.

7. O que faz os comandos who e whos ?

8. Salve todas as matrizes em memória para um arquivo


'cap1.mat'. Em seguida limpe a memoria com o comando
clear e execute um load.

9. O que acontece quando se executa o exercício 2 com


';' no final ?

2 - Operações com Matrizes

1. Para a matriz A do exercício 1 do capítulo 1 execute:


B = A', C = A+B, D=A-B, E=A*A'

2. Monte um exemplo onde X=A\B e Y=C\D façam sentido. Ou


seja, criar as matrizes A,B,C e D.

17
3. Usando a matriz A do exercício 1, calcule A^p para p
inteiro e fracionario.

4. Com a ajuda do Help veja o que faz as funções da


seção 2.6.

3 - Operações com Array

1. Calcule o produto interno entre os vetores x = (1 10


-5) e y=(-10 -1 2).

2. Qual é a diferença entre x ./ y e x .\ y para os


vetores x e y acima ?

3. Gere duas matrizes A=magic(3) e B=rand(3) (O que faz


magic ?) Efetue as comparações entre A e B: A <= B, A ~=
B. Atribua o resultado à uma matriz C. Examine C com
format +.

4. Experimente A < 10 para a matriz A acima. Como é


feita esta comparação ?
5. O que acontece com all(A < 10) e any(A < 10) ?
Explique.

6. Consulte o manual do MATLAB e veja como são usadas as


funções da seção 3.6

4 - Manipulação de Matrizes e Vetores

1. Execute o exercício da seção 4.1.

2. Execute o exercício da seção 4.2.

3. Execute o exercício da seção 4.3.

4. O que produz os seguintes comandos:


ones(3), ones([1 2]), ones([1 2; 3 4]), eye(5),
rand(4) ?

18
5. Execute C = [A eye(4); ones(A) A^2] onde A=magic(4).

6. Entre a seguinte matriz: 1 2 3 4


5 6 7 8
9 10 11 12
então execute os seguintes comandos sobre esta matriz:
rot90, fliplr, flipud.

7. Para a mesma matriz acima execute os comandos: diag,


tril, triu.

8. Como determinar o tamanho de uma matriz e um vetor


com uma função MATLAB ?

6 - Funções de Matrizes

1. Crie uma matriz A não singular e aplique a


decomposição lu para resolver o sistema Ax=b. Crie o
vetor b convenientemente. Execute diretamente x=A\b.
Qual é o resultado ?

2. Repita o exercício anterior para resolver com a


fatoração ortogonal QR.

3. Obtenha os autovalores e autovetores da matriz A.

4. Para que serve as funções: cond, norm, rank, rcond ?

8 - Função FUNÇÃO

1. Edite um arquivo forca.m com a função dada no


exemplo.

2. Faça uma integração numérica usando o comando quad e


quad8.

3. Calcule o mínimo desta função no intervalo entre 0 e

19
1.

4. Calcule o zero desta função no intervalo entre 0 e 1.

5. Veja no manual do MATLAB como efetuar a solução de


equações diferenciais.
9 - Gráficos

1. Gere o gráfico sugerido na seção 9.2. Acrescente


título, legendas nos eixos X e Y e grid.

2. Repita o exercício anterior, mas acrescentando o


gráfico do cosseno sobre o seno.

3. Repita o exercício 2, substituido as linhas contínuas


por marcas '+' para o seno e '*' para o cosseno.
Experimente também com as cores vermelho e azul.

4. Subdivida a tela em duas regiões com o comando


subplot. Em uma região plote o seno e em outra o
cosseno. Restaure o modo default.

5. Com a ajuda dos comandos axis e hold modifique as


escalas em x e y e veja o efeito.

6. Experimente imprimir o grafico do seno com o comando


print.

10 - Controle de Fluxo

1. Executar e explicar o trecho de programa MATLAB da


seção 10.1.

2. Idem ao anterior para a seção 10.2.

3. Execute e explique o programa da teoria de números da


seção 10.3

20
11 - M-files, scripts e Funções

1. Criar um arquivo fibno.m com o código do exemplo da


seção 11.1 Tente executar fibno(5).

2. Executar os exemplos da seção 11.2

3. Experimente os comandos what e type no arquivo


fibno.m.

4. Execute novamente o exercício 2, mas executando antes


o comando echo.

5. Escreva um pequeno trecho de código MATLAB que use os


comandos input e pause.

Lista Suplementar de Exercicios

1. Calcule a transposta de A=[ 1+5*i 2+6*i ; 2+7*i 4+8*i


]. A resposta está correta ? Explique.

2. Experimente o executar A .' e também conj(A).

3. Como calcular a potencia cúbica do vetor [ 1 5 3 ] ?


E o que produz 2 .^ [ 1 5 3 ] ?

4. Explique este trecho de código MATLAB:


Y = [5 8 15 1 ];
i = find(Y > 8.0);
Y(i) = 10*ones(i)

5. Dado X = [1 100; NaN 0 ] execute X==NaN. O resultado


está correto ? Experimente isnan(X). E agora ?

6. Crie uma matriz B (4x4) e experimente A(:,[2 4])=[].


Como seria eliminar a linha 3 desta matriz ?

7. Gerar uma matriz complexa 4x3 de números randômicos

21
com distribuição normal.

8. Veja no help como usar o coamndo reshape para


transformar uma matriz 3x4 em uma 2x6.

9. Consulte o manual do MATLAB e veja como a função


polyfit pode ser usada para aproximar um conjunto de
dados randômicos por um polinômio de grau 3. Trace o
grafico dos dados junto com o do polinômio.

10. Crie um M-file com a função

1 1
f(x) = ----------------- + --------------- - 6
2 2
(x-.3) + 0.01 (x - .9) + 0.04

Plote a função no intervalo [-1,2] com intervalo 0.01.


Obtenha a integral numérica entre 0 e 1 com diversas
tolerâncias e a opção trace.

11. O comando mesh permite desenhar uma superfície 3D à


partir dos elementos de uma matriz. Estude como o
programa abaixo realiza isto na matriz Z.

x=-8:.5:8;
y=x';
X=ones(y)*x;
Y=y*ones(x);
R=sqrt(X .^ 2 + Y .^ 2) + eps;
Z=sin(R) ./ R;
mesh(Z)

12. Compare os tempos de execução dos trechos de


programa apresentados na seção 11.6.

13. O coamndo pack pode auxiliar na execução do programa


MATLAB quando a memória do computador ficar cheia. Veja

22
isto no manual do MATLAB.

14. Use a matriz vazia [] para deletar as linhas 1 e 3


da matriz A = magic(4).

23