Você está na página 1de 11

TUTORIAL MATLAB

MATEMTICA COMPUTACIONAL
Aula 20-Novembro-2013
MATLAB (MATrix LABoratory) um software de alta performance direccionado para o clculo
numrico. O MATLAB integra reas como anlise numrica, clculo com matrizes, processamento de
sinais e construo de grficos.
O MATLAB um sistema interativo cujo elemento bsico de informao uma matriz que no requer
dimensionamento. Esse sistema permite a resoluo de muitos problemas numricos em relativamente
menos tempo que linguagens semelhantes como o C ou Fortran. As solues dos problemas so
expressas matematicamente.
Ao abrir o MATLAB duas janelas so exibidas: a Janela de Comando (Command Windows) e Janela
Grfica (Graphic Windows).
Janela de Comando ou "prompt" padro (>>) pode ser usado como um shell interativo de matemtica.
Sequncias de comandos podem ser guardadas em um arquivo de texto, tipicamente utilizando o
MATLAB Editor, como um script ou encapsulado em uma funo e estes so guardados em ficheiros
do tipo M-File (.m)
MATLAB no IST
O MATLAB est disponvel no IST para Sistema Operativo Windows, UNIX ou Mac.
As ltimas verses do MATLAB esto disponveis para download no site:
https://delta.ist.utl.pt/software/matlab.php
Note que, estas licenas no permitem acesso Toolbox Symbolic. Para requerer
esta toolbox dever enviar um email para ci@ist.utl.pt.
MATLAB O Bsico
Vamos comear com algo simples, como a definio de um vector linha cujos elementos so os
nmeros 1, 2, 3, 4, 5. O vector ser guardado na variavel x.
>>x=[12345]
x=
1

Para criar um vector coluna, podemos utilizar o ponto e vrgula entre elementos ou, criar inicialmente
um vector linha e depois calcular o seu transposto (').
>>y=[1;2;3;4;5]
y=
1

2
3
4
5
>>x=[12345]'
Vectores e Matrizes
interessante tambm ver como se definem vectores e matrizes com elementos igualmente espaados.
Isto feito definindo o primeiro elemento do vector, o incremento e o ltimo elemento. Por exemplo,
vamos criar o vector u cujos elementos so 0, 1, 2, 3, 4, 5, e o vector u2 cujos elementos so os
nmeros pares de 0 a 8.
>>u=[0:5]
u=
0

>>u2=[0:2:8]
u2=
0

O Matlab permite-nos localizar partes especficas de um vector/matriz. Para exemplo, queremos apenas
os 3 primeiros elementos do vector u2.
>>u2(1:3)
ans=
0

Definir uma matriz muito semelhante a definir um vector. Podemos tratar cada linha de uma matriz
como um vector.
>>A=[123;456;789]
A=
1
4
7

2
5
8

3
6
9

Podemos referir-nos a um elemento particular da matriz utilizando os parntises. Por exemplo, o


nmero 5 encontra-se na segunda linha, segunda coluna, logo:
>>A(2,2)

ans=
5
Podemos tambm extrair uma coluna/lina inteira, usando :. Por exemplo, se quisermos todos os
elementos da segunda coluna.
>>A(:,2)
ans=
2
5
8
Uma das principais vantagens do MATLAB a facilidade com que se manipulam vectores e matrizes.
Por exemplo, se quisermos somar/subtrair 2 matrizes.
>>A=[123;456;789];
>>B=[101;210;333];
>>A+B
ans=
224
666
101112
Omesmoacontececomvectores.
>>s=[123]
s=
123
>>t=[2;3;5]
t=
2
3
5
>>st
Errorusing
Matrixdimensionsmustagree.
Tal como esperado, no nos possvel substrair um vector de tamanho 1-por-3 por um de 3-por-1.

Como tal teriamos que usar s t'.


O mesmo cuidado tem que ser mantido quando se trata da multiplicao.

>>B*s
Errorusing*
Innermatrixdimensionsmustagree.

>>B*t
ans=
7
7
30
H outras operaes que queremos ver executadas elemento a elemento da matriz ou vector.
Por exemplo, se quisermos multiplicar cada elemento do vector por si prprio. s2 = [s(1)*s(1), s(2)*s(2),
s(3)*s(3)].
>>s*s
Errorusing*
Innermatrixdimensionsmustagree.
Neste caso, para que tal operao seja possvel, necessrio especificar que a multiplicao feita
elemento a elemento, utilizando .* ou .^2.

>>s.*s
ans=
149
>>s.^2
ans=
149
Os operadores disponveis no matlab so
+

*
^
'
\
/

adio
subtraco
multiplicao
potncia
transposto
divisoesquerda
divisodireita

O MATLAB permite-nos visualizar valores reais de duas formas: 4 casas decimais ou 16 casas
decimais
>>formatshort
>>formatlong

(4casasdecimais)
(16casasdecimais)

Algumas funoes disponveis em MATLAB (para escalares e que operam elemento a elemento
quando aplicadas a vectores ou matrizes)
sin
cos
tan
exp
log
abs
sqrt
rem
round

senotrigonomtrico
cossenotrigonomirco
tangent
exponencial
logaritmonatual
valorabsoluto
raizquadrada
resto
arredondamentoaointeiromaisprximo

Funes disponveis em MATLAB para vectores e que retornam escalares.


Max
min
length
sort
sum
prod

maiorelemento
menoreemento
tamanhodovector
ordenarvector(ascendente)
somadoselementos
produtodoselementos

>>length(s)
ans=
3
>>max(s)
ans=
3
Funes disponveis em MATLAB para martizes.
Eye
zeros
ones
diag

matrizidentidade
matrizdezeros
matrizdeuns
extraiadiagonaldeumamatriz(ouusadaparacriar
diagonaldeumamatriz)

triu
partetriangularsuperiordeumamatriz
tril
partetriangularinferiordeumamatriz.
>>eye(4,4)
ans=
1000
0100
0010
0001
>>ones(2)
ans=
11
11
Alguns comandos que podem ser teis para o trabalho de MC.
Det
inv
eig
poly
norm

determinantedamatriz
inversodeumamatriz
valoresprprios/vectoresprprios
polinmiocaracteristico
normadamatriz(norma1,norma2,normainfinita)

>>K=[9,70;0,8,2;7,2,3]
K=
970
082
723
>>det(A)
ans=
278
Podemos confirmar os nossos resultados fazendo: KK-1 = I.
>>K*inv(K)
ans=
1.000000.0000

01.00000
0.00000.00001.0000
Grficos (Plot)
Dados 2 vectores, de tamanho igual, podemos facilmente desenhar o grfico da funo utilizando a
funo plot.
Por exemplo, vamos criar o grfico da funo y = cos(x), de - a (com incremento de 0.01)

>>x=[pi:0.01:pi];
>>y=cos(x);
>>plot(x,y)

Para melhor representar o grafico podemos catalogar cada eixo.


>>xlabel('x');
>>ylabel('y=cos(x)');
>>title('Graficodafuno');

possvelutilizardiferenteslinhas,coresesmbolosparadefinir
osgrficos.
Algunsexemplos.
Y
m
r
g
v

amarelo
magenta
vermelho
verde
azul

.
o
*

ponto
crculo
estrela
tracejado

Condies Ifs
if

condio
operao
elseif
condio
operao
else
operao
end

Para exemplo valor definir uma funo definida por ramos

Definimos o dominio de -1 a 1.
>>x=1:0.01:1;
>>fori=1:length(x)
ifx(i)<0.5

F(i)=x(i).^2;
else

F(i)=0.25;
end
end
>>plot(x,F)

Para criarmos rotinas no matlab, criamos ficheiros .m que so consideradas funes.


A ttulo de exemplo vamos criar uma funo com o mtodo da biseco.
>>symsx
>>f=x^3+1

f=

x^3+1

>>f=inline(f)
f=

Inlinefunction:
f(x)=x.^3+1.0
>>r=bisection(f,3,2,15,10^3);
Omtodoconvergiu
p=
0.9999
Ficheirobisection.m
function [ r ] = bisection( f, a, b, nmaxIter, tolerancia )
%f : funo
%a : limite inferior do intervalo
%b : limite superior do intervalo
%nmaxIter : nr mximo de iteradas
%tolerancia : criterio de paragem
if ( f(a) == 0 )
r(1) = a;
return;
elseif ( f(b) == 0 )
r(1) = b;
return;
elseif ( f(a) * f(b) > 0 )
error( 'f(a) and f(b) no tm sinais contrrios' );
end
p = (a+b)/2;
for i = 1:nmaxIter
if f(a)*f(p)<0
b = p;
else
a = p;
end
p = (a + b)/2;
err = abs(f(p));
if err < tolerancia
disp('O metodo convergiu');
p
f(p)
break;
end;
r(i) = p;
end

end

if i == nmaxIter
disp('O metodo no convergiu');
end

Imprimirresultados
printf('%s %d\n', 'iteradas= ',i);
printf('%s %d %d %s\n', 'Raiz = ',p);
printf('%s %d\n', 'erro= ',err);
%sTexto
%dvalorreal/inteiro

Derivada de Funes (diff)


>>symsx
>>f=x^2+3

f=

x^2+3

>>df=diff(f)

df=

2*x

>>d2f=diff(f,2)

d2f=

Você também pode gostar