Você está na página 1de 20

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
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
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 3 9 No Full
ans 1 by 1 1 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.
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.0001 1.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

2
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
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.

3
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
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

4
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.


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).
finite checa valores finitos.
isinf detecta infinitos.
isempty detecta matrizes vazias.
isstr detecta variavel tipo string.
issparse detecta matrizes esparsas.

5
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, ...
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 produz x= 0.0 0.78 1.57 2.35 3.14
y = 6:-1:1 produz y= 6 5 4 3 2 1
z = 1:5 produz z= 1 2 3 4 5
(incremento foi omitido)

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

produz ans = 0 0
0.2 0.16
: :

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


k=logspace(1,6,6) produz k = 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.

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

v=2:2:6;
w=[3 1 4 1 6];
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 produz A = 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])
eye(5)
rand(4)
4.6 Construindo matrizes maiores.

7
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


fliplr reflete matriz da esquerda para a direita.
flipud reflete 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]
length se é 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
median valor mediano
std desvio padrão
sort ordenação
sum soma dos elementos
prod produto dos elementos
cumsum soma 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
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

8
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
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:

9
fmin minimo de uma função de 1 variável.
fmins minimo de uma função de várias variáveis.
fsolve soluçã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


loglog escala 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.

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

10
verde g
azul b
branco w
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

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

11
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)
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.

12
Exemplo:
function y=mean(x)
[m,n] = size(x);
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'
delete Deleta um arquivo especificado.
chdir Muda de diretorio.
diary Coloca os comandos de uma sessão MATLAB em um arquivo de texto.
(Por default gera um arquivo de nome diary na area do usuario).

Exemplo: diary aula1


diary on

13
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.

14
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
ossí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.

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.

15
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) ?

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

16
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 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.

17
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
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 ];

18
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 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)

19
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 isto
no manual do MATLAB.

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


matriz A = magic(4).

20