Escolar Documentos
Profissional Documentos
Cultura Documentos
SUMRIO
CAPTULO I
1 INTRODUO ................................................................................................
1.1 Breve Histrico e Viso Geral do Software MATLAB .............................
CAPTULO II
2 CONCEITOS BSICOS .................................................................................
2.1 Controle da janela de comandos ...............................................................
2.2 Variveis ......................................................................................................
2.3 Caracteres especiais ..................................................................................
2.4 Operadores aritmticos ..............................................................................
2.5 Operadores condicionais ...........................................................................
2.6 Operadores lgicos ....................................................................................
CAPTULO III
3 FUNES ELEMENTARES DO MATLAB .....................................................
3.1 Funes Cientficas .....................................................................................
3.2 Formatos Numricos .................................................................................
3.3 Entrada de Matrizes ....................................................................................
3.4 Polinmios ...................................................................................................
3.5 Sistemas de Equaes Lineares ...............................................................
3.6 Operaes com Conjuntos ........................................................................
3.7 Data e Hora ...................................................................................................
3.8 Nmeros Complexos ..................................................................................
3.9 Operaes com vetores e matrizes ...........................................................
CAPTULO IV
4 RECURSOS GRFICOS ..................................................................................
4.1 Visualizao de Curvas ...............................................................................
4.1.1 Estilos de linhas, marcadores e cores ..................................................
4.1.2 Especialidades dos grficos bidimensionais ......................................
4.1.3 Funes grficas 2D especiais ..............................................................
4.1.4 Funes para grficos bidimensionais ................................................
4.2 Visualizao de Superfcies ........................................................................
4.2.1 Grficos de linha tridimensional ............................................................
4.2.2 Grficos de Malha e Superfcie ...............................................................
4.2.3 Funes para grficos tridimensionais .................................................
4.3 Visualizao de imagens ...........................................................................
4.4 Demais funes de manipulao de grficos do MATLAB ...................
4.5 Salvando figura em um formato bitmap (extenso BMP) .......................
4.6 Slidos de revoluo ..................................................................................
CAPTULO V
5 PROGRAMAO MATLAB ..........................................................................
5.1 O Editor do MATLAB ..................................................................................
5.2 M-Files: Criando seus prprios programas e funes .............................
5.3 Principais comandos de programao .....................................................
5.4 Interface com o usurio .............................................................................
CAPTULO VI
6 EXPRESSES SIMBLICAS .........................................................................
6.1 Definindo variveis simblicas ................................................................
CAPTULO VII
7 TPICOS ESPECIAIS .....................................................................................
Otimizando a performance de cdigos MATLAB ...................................
Estatstica, Matemtica Financeira e Programao Linear ....................
Listas de Exerccios e Referncias Bibliograficas ........................................
3
3
5
5
5
6
6
6
6
7
7
8
8
10
12
14
15
15
16
17
17
18
18
20
22
23
23
24
26
27
27
28
28
29
29
30
32
36
38
38
49
49
49
66
CAPTULO I
1 INTRODUO
1.1 Breve Histrico e Viso Geral do Software MATLAB
O MATLAB original foi desenvolvido em linguagem Fortran por Clever Moler. Essas
novas verses (5 e 6) foram desenvolvidas em linguagem C por: Steve Bangeret, Steve
Kleiman e Clever Moler Stanford University.
Desde a sua primeira verso (1984), o MATLAB tido como produto lder na rea de
computao numrica e cientfica. Mais do que um software, o MATLAB um ambiente
integrado de modelagem de sistemas e algoritmos, ideal para implementao de
projetos complexos, e que por esta razo vem sendo adotado como ferramenta de
desenvolvimento padro pelas principais universidades do Brasil e do mundo.
O MATLAB um software destinado a fazer clculos com matrizes (matriz o seu
elemento essencial). O nome MATLAB derivado de MATrix LABoratory, ou seja, um
laboratrio de matrizes.
O MATLAB um sistema interativo cujo elemento bsico da informao uma matriz
que no requer dimensionamento. Esse sistema permite a resoluo de muitos
programas numricos em apenas uma frao do tempo que se gastaria para escrever
um programa semelhante em linguagem tradicional como Fortran, Basic, C/C++, Delphi,
Visual Basic, etc.
O MATLAB o ncleo de um ambiente de computao numrica baseado em matrizes
que integra:
Funes de tratamento numrico de alta performance;
Sofisticados recursos de gerao de grficos para visualizao de dados;
Poderosa linguagem de programao de alto nvel.
Assim, o MATLAB pode ser usado para:
Clculos matemticos;
Desenvolvimento de algoritmos;
Modelagem, simulao e visualizao de prottipos;
Anlise, explorao e visualizao de dados;
Grficos cientficos e de engenharia;
Desenvolvimento de aplicaes, incluindo a elaborao de interfaces grficas com o
usurio.
O MATLAB um software matemtico interativo de alta performance utilizado em
clculos numricos por cientistas, engenheiros, pesquisadores, estudantes, etc. O
MATLAB composto de um mdulo matemtico bsico fundamental ao qual podemos
agregar os mais variados toolbox (caixas de ferramentas) como: estatsticas,
matemtica financeira, matemtica simblica, otimizao, etc. O MATLAB integra a
anlise numrica, clculo matricial, processamento de sinais e grficos, de uma forma
tal que os problemas e solues so expressos de maneira bem prximos como so
escritos matematicamente. Assim, como os comandos so muito prximos da forma
como so escritas as expresses algbricas, torna-se mais simples o seu uso.
CAPTULO II
2 CONCEITOS BSICOS
2.1 Controle da janela de comandos
As principais funes para o controle da janela de comandos so:
clc
clear
computer
delete
demo
diary
dir
fclose
flops
fopen
format
help
home
load
lookfor
save
size
ver
version
what
who
whos
2.2 Variveis
Cada varivel um local na memria do computador capaz de conter um valor
que pode ser modificado durante a execuo do programa. Quando o MATLAB
faz clculos, ele utiliza os valores conhecidos para as variveis no momento
em que o clculo foi solicitado. Cuidado com lixos, use sempre o comando clear.
O MATLAB possui constantes numricas predefinidas que podem ser utilizadas na
definio de vetores e matrizes, bem como na manipulao de dados. So elas:
ans
eps
i ou j
inf
NaN ou nan
nargin
nargout
pi
realmax
realmin
Exemplo
matriz1
matriz5_ex8
as variveis A e a so diferentes
variavel1234_exercicio22_lista03
indexao; gerao de vetores. como nico ndice, empilha matriz em uma coluna
ordem de precedncia em clculos; envolver ndices; envolver variveis de entrada
definir vetores e matrizes; envolver variveis de sada
ponto decimal
linha de continuao
separador
Termina linhas suprimindo a sua impresso na tela
comentrios
Seguida de um comando do DOS, acionar esse comando digitado
define string
efetua atribuio de varivel
Significado
adio
subtrao
multiplicao
multiplicao elemento a elemento
diviso direita
diviso elemento a elemento
diviso esquerda
potenciao
potenciao elemento a elemento
transposta
Exemplo
2+3
5-4
2*3
[1 2].*3
2/4
[8 4]./2
2\4
2^3
[3 4].^2
[3 4]
transpose
Resultado
5
1
6
3 6
0.5000
4 2
2
8
9 16
3
4
Resultado
0 (falso)
1(verdadeiro)
1(verdadeiro)
0(falso)
1(falso)
1(verdadeiro)
Descrio
e (and)
ou (or)
no (not)
a ou b, mas no a e b (exclusive or) ou exclusivo
verdadeiro se algum elemento do vetor for verdadeiro
verdadeiro se todos os elementos do vetor forem verdadeiros
CAPTULO III
3 FUNES ELEMENTARES DO MATLAB
2
, inicialmente em radianos, depois
2
abs(x)
exp(x)
fix
floor
ceil
gcd(x,y)
lcm(x,y)
log(x)
log10(x)
log2
rat
rats
rem (x,y)
round
sign
sqrt(x)
Funes Trigonomtricas
sinh (x)
seno de x
seno hiperblico de x
cosh (x)
coseno de x
coseno hiperblico de x
tanh (x)
tangente de x
tangente hiperblica de x
coth (x)
cotangente de x
cotangente hiperblica de x
sech (x)
secante de x
secante hiperblica de x
csch (x)
cosecante de x
cosecante hiperblica de x
asinh (x)
arco cujo seno x
arco cujo seno hiperblico x
acosh (x)
arco cujo cosseno x
arco cujo coseno hiperblico x
atanh (x)
arco cuja tangente x.
arco cuja tangente hiperblica x
acoth (x)
arco cuja cotangente x
arco cujo cotangente hiperblica x
acsch (x)
arco cuja cosecante x
arco cujo cosecante hiperblica x
asech (x)
arco cuja secante x
arco cujo secante hiperblica x
Funes Elementares
valor absoluto, ou seja, mdulo de x
x
exponencial (base e), ou seja, e
arredonda em direo ao zero, considera apenas a parte inteira: Exemplo: 2.98 = 2
arredonda em direo a menos infinito (-)
arredonda em direo a mais infinito (+)
mximo divisor comum de x e y
mnimo mltiplo comum de x e y
logaritmo natural (base e), ou seja, logaritmo de x na base e
logaritmo decimal (base 10), ou seja, logaritmo de x na base 10
logaritmo base 2 e desmembra nmeros em ponto-flutuante
aproximao racional: Exemplo: rat(pi)= 3 + 1/(7 + 1/16) = 355/113
sada no formato racional: Exemplo: rats(pi) = 355/113
resto da diviso de x por y: Exemplo: rem(8,3) = 2
arredonda para o inteiro mais prximo: Exemplo: 2.98 = 3
funo sinal
raiz quadrada de x
RESULTADO
Ponto fixo, 4 casas decimais (formato predefinido, default padro)
Notao cientifica, 4 casas decimais
Ponto fixo, 14 casas decimais
Notao cientifica, 14 casas decimais
Valor monetrio (dlares e centavos), 2 casas decimais
Formato racional (aproximadamente), isto , razo de inteiros
Essa a maneira mais fcil de entrar com pequenas matrizes. Nessa lista, os
elementos so separados por espao(s) " " ou por vrgula ",", estando entre colchetes
"[ ]", e usando ponto e vrgula ";" para indicar o final de cada linha.
Exemplos:
1) Usando ponto e vrgula
A=[1 2 3;4 5 6;7 8 9] Pressionando ENTER, tem-se o resultado:
A=
3
6
9
1
4
7
2
5
8
1
4
7
2
5
8
3
6
9
Para gerar uma matriz atravs desta opo, basta declarar a funo e seu respectivo
argumento.
Exemplos:
1) Gerar uma matriz identidade 3X3
I3=eye(3)
I3 =
Z0 =
0
0
UM =
1
0
0
0
1
0
0
0
1
0
0
0
0
1
1
1
Para criar um arquivo com extenso M, utilizamos um editor de texto, como por
exemplo o EDIT do DOS, o WORDPAD do WINDOWS, o editor do MATLAB, etc.
Exemplo:
1) Utilizando o editor do MATLAB, criar o arquivo matriz1.m (a extenso sempre m)
contendo uma matriz M: 2x3, formada pelos elementos (1, 2, 3, 4, 5, e 6, nessa ordem).
Para entrar no editor faa: Clique em File, New e M-File
Para que a matriz M esteja disponvel basta digitar o nome do arquivo nas linhas de
comando.
matriz1
M=
1
4
2
5
3
6
Sempre que escrevermos uma matriz e encerrarmos com ponto e vrgula ";" a sua
exibio na tela ser omitida. Isto til principalmente no caso em que a expresso
resulta em matrizes de grandes dimenses. Neste caso, para termos a matriz na tela,
basta digitar o nome dado a ela.
Exemplo:
I50=eye(50); Pressionando ENTER, aparece apenas a prxima linha de comando
% ao digitar o nome da matriz, a mesma mostrada de forma explcita.
I50
I50 =
Columns 1 through 12
1
0 ...
...
Lembrete: 1) Deve-se dar ENTER aps cada linha de comando para que o MATLAB
execute o mesmo.
2) Os parmetros devem estar entre parnteses "( )"
10
3.4 Polinmios
Os polinmios so representados, no MATLAB, como vetores linhas contendo os
coeficientes ordenados segundo as potncias decrescentes dos termos. Existem vrias
funes que trabalham com polinmios so elas:
FUNO
conv
conv2
deconv
poly
polyadd
polyder
polyfit
polyval
residue
roots
OBJETIVO
multiplicar polinmios; convoluo
multiplicar polinmios bidimensionais
dividir polinmios; deconvoluo
construir polinmio a partir de suas razes. polinmio caracterstico
efetuar a soma de polinmios
calcular a derivada de polinmio
efetuar ajuste polinomial de dados
avaliar uma matriz polinomial
resduo de diviso de polinmios
determinar as razes de um polinmio (zeros)
3.4.1 Razes
Considere o vetor p = [1 5 6], correspondente aos coeficientes da equao do
segundo grau: x2 5x + 6 = 0 e r = [3 2] o vetor contendo as razes dessa equao.
A funo MATLAB roots(p): determina as razes da equao cujos coeficientes esto
contidos em p, enquanto que a funo poly( r) retorna os coeficiente do polinmio que
possui como razes os componentes do vetor r.
Assim, tem-se:
p=[1 5 6];
r=roots(p)
r =
3
2
p=poly(r)
p =
1
-5
3.4.2 Adio
Se a dimenso dos polinmios p1 e p2 forem iguais, pode-se fazer: p1 + p2 para obter a
sua soma. Se a dimenso de p1 for diferente da dimenso de p2, pode-se usar um dos
dois casos:
-
3.4.3 Multiplicao
A funo conv(p1,p2) multiplica o polinmio p1 pelo polinmio p2.
3.4.4 Diviso
A sintaxe [q,r] = deconv(p1,p2) retorna o resultado da diviso do polinmio p1 pelo
polinmio p2. Nessa sada aparecem duas variveis, onde:
q: o quociente da diviso de p1 por p2 e r: o resto dessa diviso
11
3.4.5 Avaliao
A sintaxe polyval(p,a) avalia o polinmio p para o valor a
Exemplo: Calcular o valor de p(5) para o polinmio p(x) = x2 5x + 6
p = [1 5 6];
polyval(p,5)
ans =
6
% como no foi atribudo um nome para a varivel resposta, a sada ans
abreviao de answer = resposta
3.4.6 Derivada
A funo que determina a derivada do polinmio p a funo: polyder (p). Sero
exibidos os coeficientes do polinmio que representam a derivada.
Exemplo: Calcular a derivada da funo x2 5x + 6 = 0
p = [1 5 6];
der=polyder(p)
der =
2
-5
Portanto, a derivada dada por: 2x-5
3.0000
function ajuste_poli2
x=[0 1 2 3 4 5];
y=[6 2 0 0 2 6];
plot(x,y,'.')
pause
close
p1=polyfit(x,y,1)
p2=polyfit(x,y,2)
p3=polyfit(x,y,3)
p1 =
-0.0000 2.6667
p2 =
1.0000 -5.0000 6.0000
p3 =
0.0000 1.0000 -5.0000
6.0000
12
ou
x=A\b
ou
x=pinv(A)*b
x1 + 2 x2 + x3 = 8
Assim, a
representa:
soluo
encontrada
x1 = 1;
x2 = 2 e
x3 = 3
17 x1 + 24 x 2 + x3 + 8 x 4 + 15 x5 = 175
33x + 5 x + 7 x + 14 x + 16 x = 190
2
3
4
5
1
Exemplo 2 : Resolver o sistema: 4 x1 + 6 x 2 + 13x3 + 20 x 4 + 22 x5 = 245
10 x + 12 x + 19 x + 21x + 3 x = 190
2
3
4
5
1
11x1 + 18 x 2 + 25 x3 + 2 x 4 + 9 x5 = 175
Dica: Use a funo inversa e a formatao de nmeros racionais
260 883 1171 1589 1952
,
,
,
,
)
Resposta: SPD: S = (
393 393 393 393 393
13
x y = 2
x1 + 2 x2 + x3 = 8
2 x1 x2 + x3 = 3
x + x 2 x = 5
2
3
1
x
6
y
4
x
1
y
2
z
3
[x,y]=solve('x+y=10', 'x-y=2')
=
=
[x,y,z]=solve('x+2*y+z=8','2*x-y+z=3','-x+y-2*z=-5')
=
=
=
Exerccio 1: Construir um programa para a resoluo de sistemas lineares com uma nica
soluo ou seja det(A) 0.
function sislin
disp(' ')
disp(' Resoluo de sistemas lineares do tipo Ax=b, com det(A)~=0')
disp(' ')
A=input(' Entre com a matriz dos coeficientes (entre [ ]): A ==> ' )
disp(' ')
b=input(' Entre com o vetor das constantes (entre [ ]): b ==> ' )
disp(' ')
if det(A)==0
disp(' ')
disp (' Fim do Programa')
disp(' ')
else
disp(' Soluo encontrada para o sistema')
disp(' ')
x=inv(A)*b;
i=1;
while i<=(length(b))
disp([' x_'num2str(i),' = ' num2str(x(i)) ]);
i=i+1;
end
disp(' ')
end
14
15
retorna dia-ms-ano
retorna data e hora atual (ano, ms, dia, hora, minutos, segundos) nesta ordem
converte a data numrica em literais
retorna o dia da semana
calendrio de qualquer ms
inserir data em grficos (eixo x)
tempo de CPU (unidade central de processamento) utilizado pelo MATLAB
retorna tempo (em segundos) transcorrido entre dois momentos especificados.
sintaxe: t1 = clock; t2 = clock ; tempo = etime(t2,t1)
aciona e faz a leitura de um cronmetro, respectivamente
Exemplo
function tempo
t1=clock;
disp(' ')
c=clock;
c1=c(1);c2=c(2);c3=c(3); c4=c(4);c5=c(5);c6=c(6);
disp([' Data: 'num2str(date),' 'num2str(c4),' horas ' num2str(c5), ' minutos
'num2str(c6),' segundos'])
disp(' ')
disp('OUTRA FORMA ')
disp(' ')
disp([' dia: 'num2str(c3),' ms: 'num2str(c2),' ano: 'num2str(c1)])
disp(' ')
disp([' 'num2str(c4),' horas ' num2str(c5), ' minutos 'num2str(c6),' segundos'])
pause(2)
t2=clock;
t=etime(t2,t1);
disp(' ')
disp([' tempo transcorrido: 'num2str(t),' segundos'])
disp(' ')
Exemplo:
a=1+1i;
Real=real(a)
Real =
1
Imag=imag(a)
Imag =
1
Modulo=abs(a)
Modulo =
1.4142
angulo_radiano=angle(a)
angulo_radiano =
0.7854
% Obtm-se o argumento(ngulo)do nmero complexo
angulo_radiano normalizado, isto , no intervalo [-pi,pi]
angulo_graus=angulo_radiano*180/pi
angulo_graus =
45
16
Vetores
DECLARAO
sum(v)
std(v)
max(v)
mean(v)
min(v)
abs(v)
norm(v)
length(v)
sort(v)
prod(v)
x * y
SIGNIFICADO
A soma dos componentes do vetor v
Desvio padro com respeito mdia
Maior componente de um vetor
Mdia das componentes do vetor v
Menor componente do vetor v
Mdulo das componentes do vetor v
Norma euclidiana do vetor v
Nmero de componentes do vetor v
Ordena o vetor v em ordem crescente
Produto das componentes do vetor v
Produto interno dos vetores x e y
SIGNIFICADO
Determinante de uma matriz
Inversa de uma matriz
Inversa generalizada de uma matriz
Matriz identidade
Matriz escalar
Trao de uma matriz (soma dos elementos da diagonal principal)
Matriz transposta
Posto de uma matriz (rank=nmero de linhas Linearmente Independentes)
Gera dados com distribuio uniforme no intervalo (0, 1)
Gera dados com distribuio normal padronizada (mdia = 0 e varincia = 1)
Matriz diagonal ou diagonal de uma matriz (exibe os elemento da diagonal)
Matriz nula
Autovalores de uma matriz
Autovetores de uma matriz (Os autovetores j saem normalizados)
Raiz de uma matriz (extrai a raiz de cada elemento da matriz)
1/2 1/2
Raiz quadrada de uma matriz A .A =1
Matriz idempotente
Matriz ortogonal (A inversa da matriz a sua transposta)
Matriz ortonormal
Matriz simtrica
Matriz anti-simtrica
17
Captulo IV
4 RECURSOS GRFICOS
O MATLAB possui ferramentas poderosas e amigveis para a visualizao de dados,
bem de acordo com a filosofia de um laboratrio de dados: fcil de experimentar e fcil
de averiguar. Nesta seo apresentar-se- aspectos bsicos e uma viso geral dos
recursos grficos disponveis. Informaes detalhadas ou sobre grficos especficos
podem ser obtidos no Help do MATLAB.
4.1 Visualizao de Curvas
Os dados a serem visualizados em um grfico devem estar, tipicamente, em um vetor.
O MATLAB no desenha diretamente grficos de funes como no MAPLE ou
MATHEMATICA. Por exemplo, para se desenhar o grfico da funo seno, de -pi at
pi, devemos criar um vetor com os valores da funo seno e depois plotar o vetor:
1
0.8
0.6
O resultado do
plot
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
10
20
30
40
50
60
70
Note que o eixo das abcissas no reflete a faixa de valores que foi usada para produzir
o vetor y, de -pi at pi. Ao invs disso, o plot assume que o eixo das abcissas deve
ser o ndice do vetor. Para plotar os valores corretos no eixo das abcissas, basta usar
uma pequena variao desse comando (plot(x,y)).
Quando passamos dois vetores para o comando plot, a funo assume que o primeiro
vetor o das abcissas, e o segundo vetor o das ordenadas. O resultado :
1
0 .8
0 .6
0 .4
0 .2
0
-0 .2
-0 .4
-0 .6
-0 .8
-1
-4
-3
-2
-1
18
Exemplo 1: Construir um programa para plotar duas curvas no mesmo grfico, sendo a
primeira com linha slida, na cor vermelha e os pontos representados por asteriscos e
a segunda com linha pontilhada e na cor azul.
1a forma:
function grafico_2x1a
x=-1:0.1:1;
y=x.^2;
z=x.^3;
plot(x,y,'r*',x,z,'b:')
pause
close
2a forma:
function grafico_2x1b
x=-1:0.1:1;
y=x.^2;
z=x.^3;
plot(x,y,'r*')
pause % pausa at ser pressionada uma tecla
hold on % Mantm o grfico atual
plot(x,z,'b:')
pause
close
Marcadores de ponto
. point
ponto
o circle
crculo
x x-mark
x
+ plus
+
* star
asterisco
s square
quadrado
d diamond
diamante
v triangle
tringulo
^ triangle
tringulo
< triangle
tringulo
> triangle
tringulo
p pentagram estrela de 5 pontas
h hexagram
estrela de 6 pontas
Tipos de linhas
- solid
slida
: dotted
pontilhada
-. dashdot trao-ponto
-- dashed tracejada
Construo do eixo X
Construo do eixo X
axis ('ij')
axis ('off')
axis([Xmin Xmax Ymin Ymax])
axis(auto)
19
Destaca-se que podem ser gerados vrios grficos em uma mesma janela, com o
comando subplot e que as janelas grficas podem ficar abertas simultaneamente com
os comandos figure e hold.
A sintaxe subplot(m,n,p): particiona a tela para construo do grfico em um nmero
igual a mxn, onde p representa a posio de cada novo grfico, ou seja, cada grfico
ter uma posio de acordo com elementos matriciais (m linhas e n colunas).
Exemplo 3:
function sub_plot
subplot(2,2,1)
x=-4:0.01:4;
y=x.^2;
plot(x,y)
subplot(2,2,2)
x=-4:0.01:4;
y=x.^2-5*x+6;
plot(x,y)
subplot(2,2,3)
x=-4:0.01:4;
y=x.^2 + 5;
plot(x,y)
subplot(2,2,4)
x=-2:0.01:2;
y=x.^3;
plot(x,y)
pause
close
20
eixo d os sen os
0.2
0
-0 .2
-0 .4
-0 .6
-0 .8
-1
-1
-0 .5
0
eixo d os cossen os
0.5
Exemplo 2: Cardiide
2
t=-pi:0.1:pi;
x=2*cos(t)-cos(2*t);
y=2*sin(t)-sin(2*t);
plot(x,y);
-1
-2
-3
-3
-2 .5
-2
-1 .5
-1
-0 .5
0 .5
1 .5
Com esse exemplo fica claro que o comando plot adequado para a visualizao de
curvas paramtricas em 2D. A curva exibida uma poligonizao (interpolao linear)
dos pontos p(i)=(x(i),y(i)) passados como parmetros. O caso de grfico de uma funo
y = f(x) deve ser tratado como um caso particular de grficos de curvas (a saber, o
grfico da funo y=f(x) o mesmo que o da curva x=t ; y=f(t) ). Existe tambm o plot3
que tem o mesmo princpio do plot, mas destina-se a visualizao de curvas
paramtricas em 3.
4.1.3 Funes grficas 2D especiais
pie: grficos de pizza (setores). A sintaxe pie(x, x == max(x)): plota os valores de x,
sendo destacada a fatia que representa a parte maior deste conjunto de dados. Para
referenciar o que representa cada fatia deve-se usar o comando legend.
Exemplo:
function fatia
x=[40 30 20 10];
pie(x,x==max(x))
legend('TIMOS','BONS','MDIOS',... 'REGULARES')
pause
close
10 %
40 %
20 %
30 %
T IM O S
BO NS
M D IO S
R EG UL AR ES
21
200
100%
180
90%
160
LINHA D E PARET O
HIST O G RAMA
80%
140
70%
120
60%
100
50%
80
40%
60
30%
40
20%
20
10%
0%
1
eixo y
60
50
40
30
20
10
0
-3
-2
-1
0
eixo x
20
15
EIXO Y
function graf_area
x1=-5:0.01:5;
y1=x1.^2;
plot(x1,y1)
hold on
x2=1:0.01:3;
y2=x2.^2;
area(x2,y2)
title('GRFICO DE REA')
xlabel('EIXO X')
ylabel('EIXO Y')
pause
close
10
0
-5
0
EIXO X
comet: gera grfico com exibio da trajetria animada, ou seja, plota com trajetria
de cometa.
Exemplo:
x=0:0.001:2*pi;
comet(x,sin(x))
22
23
3 .5
2 .5
2
5
4
5
4
2
1
40
30
Eixo Z
function ex_plot3b
t=0:pi/50:10*pi;
plot3(sin(t),cos(t),t);
title('DIAGRAMA DE LINHAS')
grid
xlabel('Eixo X')
ylabel('Eixo Y')
zlabel('Eixo Z')
pause
close
20
10
0
1
0.5
1
0.5
-0.5
Eixo Y
-0.5
-1
-1
Eixo X
O comando comet3 exibe o traado de uma curva em trs dimenses, com trajetria
de cometa.
Exemplo:
function helice
% comet3: exibe o traado de uma curva em trs dimenses, visualiza-se o
desenho de uma hlice sendo traado, por exemplo
t=0:pi/100:10*pi;
comet3(sin(t),cos(t),t)
title('HLICE')
xlabel('sen(t)')
ylabel('cos(t)')
zlabel('t')
pause
close
24
Y =
4
5
6
7
4
5
6
7
4
5
6
7
1
0 .5
0
-0 .5
-1
1
0 .5
1
0 .5
-0 .5
-0 .5
-1
-1
25
function graf_fdp2normal
x=-2:0.1:2;
y=-2:0.1:2;
z=transpose(exp(-(x .*x))) * exp(-(y.*y));
surf(x,y,z)
% surf(x,y,z,'FaceColor','red','EdgeColor',...
'none'); % somente para a verso 6.0
camlight left
lighting phong % para incrementar o grfico
pause
close
Exemplo 2:
function ex_contour3
x=-2:0.2:2;
y=-2:0.2:2;
[X,Y]=meshgrid(x,y);
Z=X.^2+Y.^2;
surf(X,Y,Z)
pause
contour3(Z)
pause
close
0
20
20
15
15
10
5
10
5
26
f ( x, y ) =
1
2
1
( x2 + y2 )
2
para - 3 x 3 e - 3 y 3.
function distr_normal
[X,Y]=meshgrid(-3:0.1:3,-3:0.1:3);
Z=(1/sqrt(2*pi)*exp(-0.5*(X.^2+Y.^2)));
mesh(X,Y,Z)
title('DISTRIBUIO NORMAL BIDIMENSIONAL')
xlabel('eixo X')
ylabel('eixo Y')
zlabel('eixo Z')
pause
close
waterfall
brighten(n)
27
x = -2:0.1:2 ;
y = -2:0.1:2 ;
z = transpose(exp(- (x .*x) ) ) * exp( -(y.*y) );
imagesc(z) ; % comando para visualizao da imagem
28
Exemplos:
print dbitmap c:windows\parabola1 a figura atual ser salva, num arquivo com o nome
parabola1.bmp, na pasta windows do drive c
print dbitmap a:\parabola1
a figura atual ser salva, num arquivo com o nome
parabola1.bmp, no seu disquete
29
CAPTULO V
5 PROGRAMAO MATLAB
Os comandos do MATLAB so normalmente digitados na Janela de Comandos, onde
uma nica linha de comando introduzida e processada imediatamente. O MATLAB
tambm capaz de executar seqncias de comandos armazenadas em arquivos.
Os arquivos que contm as declaraes do MATLAB so chamados arquivos ".m", e
consistem de uma seqncia de comandos normais do MATLAB, possibilitando incluir
outros arquivos ".m" escritos no formato texto (ASCII).
5.1 O Editor do MATLAB
Uma das ferramentas disponveis no MATLAB um editor de textos especfico para
programas .m (o M-File Editor). Embora seja possvel editar um arquivo .m em
qualquer editor de textos, o editor do MATLAB possui caractersticas que facilitam
muito o trabalho do programador. Por exemplo, ele enfatiza as palavras chaves com
cores diferentes, verifica balano de parnteses em expresses e prov uma interface
amigvel para o uso do DEBUG. Podemos invocar o M-File Editor:
1) Usando o comando:
>> edit nome-do-arquivo
ou, para abrir o editor com um arquivo vazio,
>> edit
2) Selecionando NEW M-FILE para criar um novo arquivo ou OPEN M-FILE para
editar um arquivo j existente, a partir do menu FILE.
3) Selecionando os cones:
30
Esse arquivo pode ser criado com qualquer editor de texto e deve ter uma extenso .m;
por exemplo, o script acima poderia estar no arquivo distancia_p_q.m . Para chamlo basta entrar com o nome do arquivo na janela de comandos (Command Window):
p=[1 0 0];
q=[0 1 0];
distancia_p_q
temp =
2
distancia =
1.4142
31
Salienta-se que essa funo determina a distncia entre dois vetores quaisquer,
independente do nmero de componente dos mesmos (desde que ambos vetores
sejam de mesma dimenso, claro).
O arquivo tipo function tambm tem que ter extenso .m e deve ter o mesmo nome
usado na definio da funo, descrita na primeira linha do arquivo; no exemplo
anterior o nome do arquivo deve ser calcula_distancia.m. Veja que para executar
essa funo usamos o Command Window da mesma forma como se executa um
comando nativo do MATLAB:
A seguir, tem-se uma lista com alguns comandos de programao para o controle de
fluxo, bem como comandos de programao geral e interfaces com o usurio.
break
clc, home
clear
continue
display
disp
if
else
elseif
end
error
errordlg
eval
feval
for
fprintf
fscanf
function
global
helpdlg
input
keyboard
lasterr
menu
nargchk
pause
pause(n)
questdlg
rbbox
return
sprintf
switch e case
uigetfile
uiputfile
warndlg
while
32
f ( x) = x 2 , se - 1 x 1
x + 2 , se x > 1
function a=program1(x)
if x<-1
a=1;
elseif x>=-1 & x<=1
a=x ^2;
else
a=-x+2;
end
A sintaxe do FOR :
for variavel = vetor
..........
end
33
f ( x) = x 2 , se - 1 x 1
x + 2 , se x > 1
Exemplo 07: Criar um programa que verifique se o nmero dado positivo, se sim
determinar se o mesmo par ou mpar.
function par_impar(n)
if n<0 % se n negativo
disp ('O nmero dado negativo')
elseif rem(n,2)==0 % se nmero positivo e par
disp ('O nmero dado positivo e par')
else
disp('O nmero dado positivo e mpar')
end
34
35
Exemplo 10:
% multiplos condicionais em cada caso
function ex_switch1
var=input('Entre com um dos valores: function ex_switch2
var=input('Entre com um valor ==> ');
-1, 0 ou 1 ==> ');
switch var
switch var
case 1
case 1
disp('1')
disp('Nmero negativo')
case {2,3,4}
case 0
disp('2 ou 3 ou 4')
disp('Zero')
case 5
case 1
disp('5')
disp('Nmero positivo')
otherwise
otherwise
disp('outro valor')
disp('outro valor')
end
end
O comando break permite uma sada antecipada de um for ou while. Esse comando
faz com que o lao mais interno seja terminado imediatamente.
Exemplo 11:
function modifica_matriz
A=[1 2 3 4 5; 1 2 3 4 5; 1 2 3 4 5; 1 2 3 4 5; 1 2 3 4 5];
X='s';
for i=1:5
if x=='q'
break
end
j=1;
while j<=5
['A('num2str(i),','num2str(j),')='num2str(A(i,j))]
x=input('Modifica? (s-sim, n-no, p-prxima linha, q-sair)==>','s');
if x=='s'
A(i,j)=input('Entre como novo valor de A(i,j)==>');
j=j+1;
clc % limpa a tela
end
if x=='n'
j=j+1;
clc
end
if x=='p'
clc
break % interrompe o WHILE, para mudar para outra linha
end
if x=='q'
clc
break
end
end
end
36
disponveis
no
MATLAB
para
Caixas de dilogos
As caixas de dilogos possibilitam a construo de programas com interface mais
amigvel. Por exemplo, ao invs de utilizarmos a funo input podemos usar a funo
inputdlg (entrada de dados com caixa de dilogos), a qual tambm permite que se
insira dados atravs do teclado.
Exemplo 13:
function area_retangulo
%CALCULO DA REA DE UM RETNGULO
aviso={'Entre com a largura:' ,'Entre com o comprimento:'};
titulo='REA DE UM RETNGULO';
linhas=1;
resposta=inputdlg(aviso,titulo,linhas);
larg=str2num(char(resposta(1)));
comp=str2num(char(resposta(2)));
disp('
**************')
disp('
*
REA
*')
disp('
**************')
area=larg*comp;
disp(' 'area)
MENU: Lista de escolhas que aparece na tela enquanto determinado programa est
sendo executado, ou seja, gera um menu de escolhas para entrada do usurio.
Exemplo 11:
function imc
k=menu('AVALIAO FSICA - IMC','QUER VER SUA SITUAO FSICA', ...
'FIM - PROGRAMA');
if k==1
dados = {'ENTRE COM O SEU PESO (kg):','ENTRE COM A SUA ALTURA (m):'};
titulo = 'NDICE DE MASSA CORPREA IMC';
linhas=1;
resposta=inputdlg(dados,titulo,linhas);
peso=str2num(char(resposta(1)));
altura=str2num(char(resposta(2)));
format bank
indice = peso/(altura*altura);
disp(' ----------------------------------------------------------')
disp(' |PESO (kg) | ALTURA (m) | NDICE DE MASSA CORPREA - IMC |')
disp(' ----------------------------------------------------------')
saida=[peso altura indice];
disp(sprintf('%10.2f %11.2f %17.2f',saida'))
disp(' ')
if indice < 20
disp(' ')
do programa
')
-------------------------')
|OBRIGADO POR USAR: IMC |')
-------------------------')
')
end
37
38
CAPTULO VI
6 EXPRESSES SIMBLICAS
Agora, vamos ver como podemos manipular com expresses que alm de nmeros e
variveis numricas, contm tambm variveis simblicas.
6.1 Definindo variveis simblicas
Primeiro precisamos dizer ao MATLAB que x uma varivel simblica.
sym: Cria objeto simblico
syms: Atalho para criar mltiplos objetos simblicos
Uma vez definido que a varivel x uma varivel simblica, podemos definir
expresses que envolvem esta varivel.
Exemplo:
Ou
syms x
y=x+2*x
y =
3*x
x=sym('x')
x=
x
y=x+2*x
y=
3*x
x
x
y
y
z
z
Ou simplesmente:
x= sym('x')
=
syms x y z
y= sym('y')
=
z= sym('z')
=
3
+ 3 x
+ 2 x
39
Exemplo 2
x=sym('x');
f=(x+1)*(x-1)
f =
(x+1)*(x-1)
simples=simple(f)
simples =
x^2-1
Exemplo
x=sym('x');
f=(x-1)*(x-2)*(x-3)*(x+1)
f =
(x-1)*(x-2)*(x-3)*(x+1)
expans=expand(f)
expans =
x^4-5*x^3+5*x^2+5*x-6
3
- 5 x
2
+ 5 x
+ 5 x - 6
- 5 x + 6
Exemplo:
(2n 1) 2
1
syms n
soma=symsum(2*n-1,1,n)
soma =
(n+1)^2-2*n-1
expande=expand(soma)
expande =
n^2
pretty(expande)
2
n
40
41
a) fog=f(g(x))
syms x
f_x=x+1;
g_x=x^2;
f_o_g=compose(f_x,g_x)
f_o_g =
x^2+1
pretty(f_o_g)
2
x + 1
+ 4 x + 4
pretty(expand((x+2)^3))
3
x
2
+ 6 x
+ 12 x + 8
pretty(expand((x+2)^4))
4
x
3
+ 8 x
2
+ 24 x
+ 32 x + 16
pretty(expand((x+2)^5))
5
4
3
2
x + 10 x + 40 x + 80 x + 80 x + 32
pretty(expand((x+2)^6))
6
5
4
3
2
x + 12 x + 60 x + 160 x + 240 x + 192 x + 64
Exemplo geral:
Dadas duas funes f(x) = 2x2+3x-5 e g(x) = x2-x+7, podemos fazer uma srie de
operaes algbricas envolvendo estas funes, tais como:
a) f+g
b) f-g
c) f*g
d) expandir (f*g)
e)f/g
f) expandir(f/g)
g) usar o comando pretty para tornar mais fcil a visualizao dos resultados
h) f3
i) expandir(f3)
42
43
O MATLAB pode resolver equaes literais. Por exemplo, para resolver a equao:
ax2+bx+c = 0
algebricamente, podemos usar os comandos:
a=sym('a');
b=sym('b');
c=sym('c');
x=sym('x');
Ou simplismente:
syms a b c x
% define as variveis a, b, c e x como simblicas
raizes=solve(a*x^2+b*x+c)
raizes =
[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]
O MATLAB pode exibir este resultado de uma forma mais fcil de enxergar usando a
funo pretty.
pretty(raizes)
[
[
[1/2
[
[
[
[
[1/2
[
2
1/2]
-b + (b - 4 a c)
]
--------------------]
a
]
]
2
1/2]
-b - (b - 4 a c)
]
--------------------]
a
]
Determinante 3x3
syms a b c d
syms a b c d e f g h i
A=[a b c; d e f;g h i]
A=[a b; c d]
DET=det(A)
DET=det(A)
DET =
DET =
i*a*e-a*f*h-i*d*b+d*c*h+g*b*f-g*c*e
a*d-b*c
exemplo 1:
ezplot(sin(x))
exemplo 2:
ezplot(x^2)
44
calcula a derivada de f
determina a composta f(g(x))
expande uma expresso expr
determina a inversa funcional da expresso expr
exibe a expresso expr numa forma mais bonita
procura encontrar uma forma mais simples de escrever uma expresso expr
simplifica a expresso expr
acha a(s) soluo(es) da equao expr = 0
substitui na expresso expr a varivel x por a
define as variveis simblicas x, y, z, a e b
Existem vrias outras funes para manipulao de expresses algbricas. Voc pode
obter informaes sobre elas digitando help symbolic. Uma funo interessante que
mostra as capacidades do MATLAB em tratar com funes matemticas funtool que
uma calculadora para funes.
6.13 Limites
Sintaxe: limit(funo,valor) % Determina o limite de uma expresso, para um valor
Exemplos:
sen( x)
lim
0
x
x
syms x
limit(sin(x)/x,0)
1
x2 4
x2 x 2
syms x
limit((x^2-4)/(x-2),2)
4
lim
Exerccio:
x
Usar mudana de varivel e o MATLAB para provar que: lim1 + 1 = 2,71 = e xp(1)
x
Soluo: Fazendo t =
1
1
quando x , t 0 ! lim(1 + t )t =
t 0
t
syms t
limit((1+t)^(1/t),0)
exp(1)
45
b) Em relao a varivel y
syms x y
der1_y=diff(x^2+y^2,y,1)
der1_y =
2*y
.
cos
Exemplo 03: f (x ) = sen 2
f ' ( x) = 2
x + 1
( x + 1) 2
x + 1
sym x
a=diff(sin((x^3)/(x^2+1)))
a =
cos(x^3/(x^2+1))*(3*x^2/(x^2+1)-2*x^4/(x^2+1)^2)
pretty(a)
3
/
2
4
\
x
|
x
x
|
cos(------) |3 ------ - 2 ---------|
2
|
2
2
2|
x + 1 \ x + 1
(x + 1) /
sym x
b=diff((sin(x))^2*log(x^3))
b =
2*sin(x)*log(x^3)*cos(x)+3*sin(x)^2/x
pretty(b)
2
sin(x)
2 sin(x) log(x ) cos(x) + 3 ------x
3
1
cos 3 x f ' ( x) = sen( x) + cos 2 ( x). sen x = sen 3 x
3
sym x
c=diff(cos(x)-(1/3)*(cos(x)^3))
c =
-sin(x)+cos(x)^2*sin(x)
pretty(c)
2
-sin(x) + cos(x)
sin(x)
syms x e
d = diff((sec(x))^2)+((e)^(6*x))
d =
2*sec(x)^2*tan(x)+e^(6*x)
pretty(d)
2
2 sec(x)
(6 x)
tan(x) + e
46
47
6.15 Integrao
Clculo numrico da integral definida
So dadas trs funes para calcular a rea sob a curva num intervalo finito.
A integrao numrica usando o processo chamado de quadratura, no MATLAB,
pode ser feita atravs das funes:
quad Integrao numrica usando a regra de Simpson recursiva (baixa
ordem).
quad8 Integrao numrica usando a regra de Newton-Cotes adaptativa (alta
ordem).
Alm dos mtodos anteriores, o MATLAB, determina a integral definida atravs
das funes:
trapz aproxima a integral sobre a funo, pelo somatrio das reas dos
trapzios
trapz (x,y) d o valor da integral de y com seu respectivo x usando para isso
o mtodo dos trapzios. Mtodo trapezoidal.
Integrais simblicas
f ( x)dx
a
x3
1 x
x3
1 x
dx
dx
integ_sen=int('sin(x)',a,b)
integ_sen =
-cos(b)+cos(a)
pretty(integ_sen)
- cos(b) + cos(a)
integral=int('x^3/sqrt(1-x)')
integral =
2/7*(1-x)^(7/2)-6/5*(1-x)^(5/2)+2*(1-x)^(3/2)-2*(1-x)^(1/2)
pretty(integral)
7/2
5/2
3/2
1/2
2/7 (1 - x)
- 6/5 (1 - x)
+ 2 (1 - x)
- 2 (1 x)
integral=int('x^3/sqrt(1-x)',0,1)
integral =
32/35
48
dy
= 1 + y 2 com condio inicial y(0)=1
dt
sol=dsolve('Dy=1+y^2,y(0)=1','x')
sol=
tan(x+1/4*pi)
sol=dsolve('D2y=5*cos(x)-2*sin(x)','y(0)=3','Dy(0)=4','x')
sol =
-5*cos(x)+2*sin(x)+8+2*x
Resolve equaes diferenciais pelo mtodo de Runge-Kutta de 2/3 ordens (baixa ordem)
Resolve eq. dif. atravs de ode23, plotando o resultado
Resolve eq. dif. pelo mtodo de Runge-Kutta-Fehlberg de 4/5 ordens (alta ordem)
49
CAPTULO VII
7 TPICOS ESPECIAIS
OTIMIZANDO A PERFORMANCE DE CDIGOS MATLAB
Pode-se freqentemente melhorar a velocidade de execuo de um cdigo em
MATLAB ao trocar os laos for e while por vetores ou matrizes que so os elementos
essenciais do MATLAB.
Exemplo: Calcular o valor do seno de 1001 no intervalo [0, 1] com elementos
igualmente espaados
1) Usando a forma de vetor
function performance
tic
t=0:0.01:10;
y=sin(t);
pause(1)
toc
Resultado:
elapsed_time =
1.0400
ESTATSTICA
Funo
Distribuio
Acumulada
DISTRIBUIO
Beta
Binomial
Qui-quadrado
Exponencial
F de Snedecor
Gama
Geomtrica
Hipergeomtrica
Normal
Poisson
t de Student
Uniforme discreta
Uniforme contnua
Weibull
COMANDO
betacdf
binocdf
chi2cdf
expcdf
fcdf
gamcdf
geocdf
hygecdf
normcdf
poisscdf
tcdf
unicdf
unifcdf
weibcdf
Funo
Distribuio
Acumulada
Inversa
COMANDO
betainv
binoinv
chi2inv
expinv
finv
gaminv
geoinv
hygeinv
norminv
poissinv
tinv
unidinv
unifinv
weibinv
Funo
Densidade de
Probabilidade
COMANDO
betapdf
binopdf
chi2pdf
exppdf
fpdf
gampdf
geopdf
hygepdf
normpdf
poisspdf
tpdf
unipdf
unifpdf
weibpdf
Gerao de
Amostra
Aleatrias
COMANDO
betarnd
binornd
chi2rnd
exprnd
frnd
gamrnd
geornd
hygernd
normrnd
poissrnd
trnd
unirnd
unifrnd
weibrnd
Estatstica descritiva
coeficiente de correlao
matriz covarincia
mdia geomtrica
mdia harmnica
coeficiente de curtose
mdia aritmtica
mediana
momento centrado
coeficiente de assimetria
desvio padro
varincia
Significado
valor mximo
valor mnimo
ordenar em ordem crescente
soma dos elementos
produto dos elementos
soma acumulada
produto acumulado
diferena entre elementos
nmero de componentes do vetor
Anlise Grfica
Declarao
boxplot
normplot
hist
histfit
bar
barh
scatter
plot
pareto
pie, pie3
area
Significado
boxplot da anlise exploratria
anlise de normalidade
histograma
histograma ajustado a normal
grfico de barras
grfico de colunas
grfico disperso dos dados
grfico de linha
grfico de pareto ou curva ABC
grfico em setores (pizza)
grfico de rea
50
51
Exemplos
1) Exemplo de boxplot para 3 amostras normais
30
25
Value s
x1=normrnd(10,2,50,1);
x2=normrnd(15,4,50,1);
x3=normrnd(20,5,50,1);
x=[x1 x2 x3];
boxplot(x)
20
15
10
5
1
2
Column Numb er
2) Gerar uma amostra normal de tamanho 100, de mdia zero e desvio padro 1,
construir o histograma e determinar: o valor mximo, o valor mnimo e a soma total.
x=normrnd(0,1,100,1);
hist(x)
maximo_x=max(x)
minimo_x=min(x)
soma_x=sum(x)
20
18
16
14
12
10
8
RESULTADOS
maximo =
minimo =
soma
=
2.9199
-2.7532
-2.2903
4
2
0
-3
-2
-1
3) Gerar uma amostra normal com 100 elementos, de mdia 70 e desvio padro 10 e
analisar a normalidade atravs do comando normplot
No rma l Pro b a b ility Plo t
0 .9 9 7
0 .9 9
0 .9 8
0 .9 5
x=normrnd(70,100,100,1);
normplot(x)
Pro b a b ility
0 .9 0
0 .7 5
0 .5 0
0 .2 5
0 .1 0
0 .0 5
0 .0 2
0 .0 1
0 .0 0 3
-2 0 0
-1 5 0
-1 0 0
-5 0
50
100
D ata
150
200
52
4) Dados x = [ 1 2 3 4 5 6 7 8 9 10] e y = [ 8 2 6 0 1 3 6 8 3 5]
a) Representar o diagrama de disperso para x e y plot(x,y,'o')
x=[1 2 3 4 5 6 7 8 9 10]
y=[8 2 6 0 1 3 6 8 3 5]
plot(x,y,'o')
x=[1 2 3 4 5 6 7 8 9 10]
y=[8 2 6 0 1 3 6 8 3 5]
plot(x,y)
5) Para as variveis alturas e pesos de um grupo de 10 pessoas adultas, dadas pela
tabela a seguir, calcular:
altura(cm) 180
pesos(kg) 80
a)
b)
c)
d)
e)
181
82
170
75
165
68
178
78
156
60
165
63
190
85
175
70
173
72
a) med_alt =
173.30
med_peso =
73.30
b) desv_alt =
9.75
desv_peso =
8.21
c) coef_corr =
1.0
0.94
d) maior_alt =
190.00
maior_peso =
85.00
e) menor_alt =
156.00
menor_peso =
60.00
0.94
1.00
6) Gerar uma amostra aleatria Normal de tamanho 100, de mdia 0 e desvio padro
1, construindo o histograma ajustado a curva normal.
20
18
16
v=normrnd(0,1,100,1);
histfit(v)
14
12
10
8
6
4
2
0
-3
-2
-1
7) Gerar uma amostra Normal com mdia 0 e desvio padro 1, com o tamanho n da
amostra, sendo informado via teclado.
n = input('Entre com o tamanho da amostra, n ==> ');
amostra = normrnd(0,1,n,1)
53
'%'])
'%'])
'%'])
'%'])
sigma','+ ou - 1 sigma')
>> distr_normal_integral
MAIS ou MENOS 1 SIGMA = 68.2691%
MAIS ou MENOS 2 SIGMA = 95.4499%
MAIS ou MENOS 3 SIGMA = 99.733%
MAIS ou MENOS 4 SIGMA = 99.9938%
PROF. M. Sc. JOS DONIZETTI DE LIA
'%'])
'%'])
'%'])
'%'])
54
55
10
12
14
16
18
22
24
26
32
Milho (Y)
40
44
46
48
52
48
60
68
74
80
function reglinear(X,Y)
% DETERMINAO DA FUNO DE REGRESSO LINEAR E DO COEFICIENTE DE CORRELAO e R2
m_est=(mean(X.*Y)-mean(X)*mean(Y))/(mean(X.^2)-(mean(X).^2));
q_est=mean(Y)-m_est*mean(X);
a=(mean(X.*Y)- mean(X)* mean(Y)).^2;
b=(mean(X.^2)-(mean(X)).^2)*((mean(Y.^2)-(mean(Y)).^2));
RSQUARE=sqrt(a/b)*100;
RSQUARE2=(a/b)*100;
disp(' ')
disp(' -------------------------------------------------------------------')
disp('| MODELO DE REGRESSO LINEAR SIMPLES: MTODO DOS MNIMOS QUADRADOS |')
disp(' -------------------------------------------------------------------')
disp(' -----------------------------------------------------------')
disp(['|FUNO DE REGRESSO ESTIMADA:Y ='num2str(q_est),' + 'num2str(m_est),'*X |']);
disp( ' -----------------------------------------------------------')
disp( ' -----------------------------------------------------')
disp([' | COEFICIENTE DE CORRELAO LINEAR: ' num2str(RSQUARE),' % |']);
disp( ' -----------------------------------------------------')
disp(' ')
disp( ' ------------------')
disp([' | R2 = ' num2str(RSQUARE2),' % |']);
disp( ' ------------------')
disp(' ')
56
km
3203
3203
2603
3105
1305
804
1604
2706
805
1903
3203
3702
litros
400
400
340
400
150
100
200
300
100
200
400
450
Medida
13
14
15
16
17
18
19
20
21
22
23
km
3203
3203
803
803
1102
3202
1604
1603
3203
3702
3403
litros
400
400
100
100
130
400
150
200
400
450
440
57
MATEMTICA FINANCEIRA
A seguir tem-se alguns programas escritos em MATLAB, voltados para a rea de
matemtica financeira.
k=menu('MATEMTICA FINANCEIRA - PROF.M.Sc.: DONIZETTI',...
'MONTANTE - JUROS COMPOSTO','PRESTAO - SISTEMA PRICE', ...
'MONTANTE - SRIE DE PGTO UNIFORMES',...
'FIM DO PROGRAMA - matfin');
if k==1
%CALCULO DO MONTANTE
clear % limpa as variveis (lixos)
clc % limpa a tela
aviso={'ENTRE COM O CAPITAL:','ENTRE COM A TAXA:','ENTRE COM O PERODO:'};
titulo='MONTANTE - JUROS COMPOSTOS';
linhas=1;
resposta=inputdlg(aviso,titulo,linhas);
pv=str2num(char(resposta(1)));
i=str2num(char(resposta(2)));
n=str2num(char(resposta(3)));
format bank
fv=pv*(1 + i/100)^n;
disp(' ')
disp(' ----------')
disp(' |MONTANTE|')
disp(' ----------')
disp('
')
disp(fv)
pause
clc % limpa a tela
matfin
elseif k==2
%CALCULO DA PRESTAO PELO SISTEMA PRICE
clear % limpa as variveis (lixos)
clc % limpa a tela
aviso={'ENTRE COM O CAPITAL:','ENTRE COM A TAXA:','ENTRE COM O PERODO:'};
titulo='MONTANTE - JUROS COMPOSTOS';
linhas=1;
resposta=inputdlg(aviso,titulo,linhas);
pv=str2num(char(resposta(1)));
i=str2num(char(resposta(2)));
n=str2num(char(resposta(3)));
format bank
pmt=pv*(i/100*(1+ i/100)^n)/((1+i/100)^n-1);
disp(' -------------')
disp(' | PRESTAO |')
disp(' -------------')
disp('
')
disp(pmt)
% CLCULO DA TABELA DE AMORTIZAO, PERODO A PERODO - PRICE
SaldoDevedor=pv;
pause(1)
disp('
---------------------------------------------------------------- ')
disp('
|PERIODO|
|JURO|
|AMORTIZAO| |SALDO_DEVEDOR| |GASTO| ')
disp('
---------------------------------------------------------------- ')
for j=1:n % nmero de prestaes
Juro=SaldoDevedor*(i/100); % juros de cada periodo
Amort=pmt-Juro; % valor da amortizao do perodo
SaldoDevedor=SaldoDevedor-Amort; % atualizao do saldo devedor
J=fix(j);
format bank
gasto=(pmt*j);
periodo=[J Juro Amort SaldoDevedor gasto];
disp(periodo)
pause(1)
end
58
if K==1
clear
clc
% SISTEMA PRICE (FRANCS) DE AMORTIZAO
% PRICIPAL CARACTERSTICA: PRESTAO CONSTANTE
% BASTANTE UTILIZADO NAS COMPRAS COM POUCAS PRESTAES
% CALCULO DA PRESTAO PELO SISTEMA PRICE
disp(' ')
aviso={'ENTRE COM O CAPITAL:','ENTRE COM A TAXA:','ENTRE COM O PERODO:'};
titulo='SISTEMA PRICE - PRESTAO CONSTANTE';
linhas=1;
resposta=inputdlg(aviso,titulo,linhas);
pv=str2num(char(resposta(1)));
i=str2num(char(resposta(2)));
n=str2num(char(resposta(3)));
format bank
pmt=pv*(i/100*(1+ i/100)^n)/((1+i/100)^n -1);
disp(' -----------------------------------------------------------------------')
disp(' |VALOR EMPRESTADO | N.0 DE PRESTAO | TAXA DE JUROS | VALOR PRESTAO|')
disp(' -----------------------------------------------------------------------')
sai=[pv n i pmt];
disp(sprintf('%13.2f %15.0f %17.2f %17.2f\n',sai'))
% CLCULO DA TABELA DE AMORTIZAO PERODO A PERODO - PRICE
SaldoDevedor=pv;
%pause(1)
disp(' -----------------------------------------------------------------')
disp(' |PERIODO|PRESTAO| JUROS |AMORTIZAO|SALDO_DEVEDOR|TOTAL GASTO|')
disp(' -----------------------------------------------------------------')
prest=0;
ju=0;
amt=0;
for p=1:n % nmero de prestaes
Juro=SaldoDevedor*(i/100); % juros de cada periodo
Amort=pmt-Juro; % valor da amortizao do perodo
SaldoDevedor=SaldoDevedor-Amort; % atualizao do saldo devedor
gasto=(pmt*p);
resp=[p pmt Juro Amort SaldoDevedor gasto];
disp(sprintf('%8.0f %10.2f %8.2f %9.2f %12.2f %12.2f\n',resp'))
59
60
61
62
PROGRAMAO LINEAR
Pea A
(minutos/unidade)
11
7
6
Pea B
(minutos/unidade)
9
12
6
10
Disponibilidade
(horas/ms)
165
140
160
(1)
(2)
(3)
Assim, temos
11x1 + 9x2 9.900
7x1 + 12x2 8.400
6x1 + 6x2 9.600
Obs.: 60 usado para acerto das unidades
Lucro obtido L = 9x1 + 10x2
Como no possvel nmero negativo de peas acrescentamos as condies de
positividade que so: x1 0 e x2 0
Logo o problema proposto encontrando valores de x1 e x2 satisfazendo
11x1 + 9x2 9.900
7x1 + 12x2 8.400
6x1 + 6x2 9.600
x1 0 e x20
tal que L = 9x1 + 10x2 represente o lucro mximo.
63
Observaes:
1) possvel encontrar graficamente os valores x1, x2 que satisfazem as equaes
acima.
Considere as retas
1) 11x1 + 9x2 9.900 ! Intereseco com os eixos coordenados (900;0) e (0, 1100)
2) 7x1 + 12x2 8.400 ! Intereseco com os eixos coordenados (1200;0) e (0; 700)
3) 6x1 + 6x2 9.600 ! Intereseco com os eixos coordenados (1600;0) e (0; 1600)
A regio R descreve todos os pontos (x1, x2) 2 que satisfazem as condies do
problema. Pode se provar que a soluo para o lucro ocorre sempre em algum vrtice
(no necessariamente em um nico) desta regio.
x11=[900 0];
x12=[0 1100];
x21=[1200 0];
x22=[0 700];
x31=[1600 0];
x32=[0 1600];
plot(x11,x12,x21,x22,x31,x32)
legend('11x1+9x2=9900','7x1+12
x2=8400','6x1+6x2=9600')
hold on
c=[-9 -10];
A=[11 9; 7 12; 6 6];
b=[9900; 8400; 9600];
minimo=lp(c,A,b)
x=minimo(1);
y=minimo(2);
plot(x,y,'ko')
text(x+20,y+20,'ponto timo')
16 00
11 x1+9x2 =99 00
7x1+1 2x2 =84 00
6x1+6 x2=960 0
14 00
12 00
10 00
80 0
60 0
40 0
po nto timo
20 0
0
0
20 0
40 0
60 0
80 0
10 00
12 00
14 00
16 00
Min cx
Problema: s. a : Ax b
x0
Sintaxe: lp(c,A,b)
c=[-9 -10];
A=[11 9; 7 12; 6 6];
b=[9900; 8400; 9600];
minimo=lp(c,A,b)
minimo =
626.0870
334.7826
64
Exemplo 02:
(Covest-PE) Eric necessita de complementos das vitaminas A e C. Diariamente precisa
de pelo menos 63 unidades de A e no mnimo 55 unidades de C. Ele pode escolher
entre os compostos I e II, que apresentam, por cpsula, as caractersticas abaixo:
Composto
I
II
Vitamina A
7 unidades
4 unidades
Vitamina C
4 unidades
5 unidades
Valor R$
0,70
0,50
Sujeito a 4 x 2 + 5x 2 55
x e x 0
2
2
Segunda etapa: A soluo via MATLAB:
O padro da funo MATLAB lp(c,A,b) (lp, a abreviao de linear programming) :
Min cx
Ax b
sujeito a
x 0
Assim, tem-se que adaptar o sistema anterior, ficando o mesmo da seguinte forma:
Min 0,70x1 + 0,50x 2
- 7x1 4x 2 63
S . a 4 x1 5x 2 55
x e x 0
1 2
Implementao MATLAB
A=[-7 -4;-4 -5]
A =
-7
-4
-4
-5
b=[-63 55]
b =
-63
-55
c=[0.70 0.50]
c =
0.7000
0.5000
resp=lp(c,A,b)
resp =
5.0000
7.0000
custo=c*resp
custo =
7.0000
% Portanto, o custo
ser de R$ 7,00
mnimo
dirio
Exerccio 01: Elaborar um aplicativo, usando a funo lp, de forma que torne mais fcil
a utilizao dessa funo por parte do usurio final. Dica: Construa uma interface com
o usurio, sendo solicitado do mesmo: a matriz A e os vetores c e b
65
60
x1 +2 x2 =8 0
3 x1 +2 x2 =1 2 0 0
50
40
p o n to timo
30
20
10
0
0
10
20
30
40
50
60
70
80
qp(A,b,C,d)
Exemplo
Min 2x2 - 5x + 6
s.a: x 10
qp(A,b,C,d)
a=qp(2,-5,1,10)
a=2.5000
Nota:
O MATLAB possui um toolbox para a rea de otimizao (help optim), assim consulte
a ajuda online ou a apostila do prprio MATLAB, apostila em ingls, no formato pdf e
inclusa no CD de instalao do mesmo.
66
7 8 , calcule:
4 3
A+B
A'+B'
A-B
A*B
A.*B
2*A+B'
det(A)
h)
i)
j)
k)
l)
m)
det(B)
det(A*B)
inv(A)
inv(B)
inv(A)*A
inv(B)*B
x y z = 2
3 x y + z = 6
x + 3 y + 4 z = 4
2 x + 3 y + z = 2
23 7
b) x y + z = 3 SPD S= ( , ,3)
5 5
x y + 2z = 0
c) x2 - 4x + 4 = 0
67
6) Em uma sala de aula esto 8 pessoas, reunidas em uma mesa circular. Cada uma
escolhe um nmero aleatrio e pega o seu nmero e soma com os nmeros das
pessoas ao lado, a sua direita e esquerda. Passa-se as 8 somas para voc, que
estava fora da sala. Como voc faz para descobrir o nmero que cada um
escolheu?
Nota: Considere que as somas sejam: Soma1=6; Soma2=9; Soma3=12;
Soma4=15; Soma5=18; Soma6=21; Soma7=16; Soma8=11
Resoluo:
Equacionamento
a + b + c = soma1
b + c + d = soma
2
c + d + e = soma3
d + e + f = soma4
e + f + g = soma5
f + g + h = soma6
g + h + a = soma7
h + a + b = soma
8
1
1
0
0
0
0
0
1
1
1
1
0
0
0
0
0
0
1
1
1
0
0
0
0
0
0
1
1
1
0
0
0
0
0
0
1
1
1
0
0
0
0
0
0
1
1
1
0
0
0
0
0
0
1
1
1];
Soluo MATLAB
x =
1.00
2.00
3.00
4.00
5.00
6.00
7.00
8.00
b=[6;9;12;15;18;21;16;11];
x=inv(A)*b
f =
6
c =
3
g =
7
d =
4
h =
8
68
35
-50
24];
-50
24
p=[1 2 3];
q=[4 5 6];
a=conv(p,q)
=
4
13
28
27
18
38
69
Construo de Grficos
1) Construa o grficos das seguintes funes (com titulo ao grfico, nomes a seus
eixos e linhas de grade)
a) f(x) = x3 no intervalo [-5;5]
b) f(x) = ex no intervalo [-10;10]
c) f(x) = cos(x) no intervalo [-2, 2]
d) y = sen (x) no intervalo 0 x 4.
2) Plotar o grfico da funo humps, dada por:
f ( x) =
1
1
+
6
( x 0,3) 2 + 0,01 ( x 0,9) 2 + 0,04
100
80
60
40
20
-20
-2
-1.5
-1
-0.5
0.5
1.5
3) Construir o grfico das funes: sen (x), sen (2x), sen (3x), sen(4x), sen (x/2) e sen
(x/3), no intervalo [0, 4] usando o comando subplot.
4) Fazer em um mesmo grfico, usando o comando plot, os grficos das funes:
a) sen (x) e sen (x + )
b) cos (x) e cos (x + )
5) Plotar o grfico cuja equao : y = x3 - 8x2 +15x, no intervalo [-2, 7].
x2 y2
com - 2 x 2 e - 2 y 2, usando o
comando mesh. Fornecer um ttulo ao grfico, rotular os eixos x , y e z, inserir linha
de grade.
x=-2:0.1:2;
y=-2:0.1:2;
[X Y]=meshgrid(x,y);
Z=X.*exp(-X.^2-Y.^2);
mesh(X,Y,Z)
title('GRFICO DA SUPERFCIE
Z=X.*exp(-X.^2-Y.^2');
xlabel('eixo x')
ylabel('eixo y')
zlabel('eixo z')
70
x2 4
x2
X1=-2:0.1:(2-10*eps);
x2=(2+10*eps):0.1:6;
y1=(x1.^2-4)./(x1-2);
y2=(x2.^2-4)./(x2-2);
plot(x1,y1,'g',x2,y2,'g')
pause
close
0
-2
x1=-5:0.1:(1-10*eps); % eps=2,22x10-16
y1=1./(x1-1);
x2=(1+10*eps):0.1:5; % eps=2,22x10-16
y2=1./(x2-1);
plot(x1,y1,'b',x2,y2,'b')
axis([-5 5 -10 10])
grid
xlabel('x')
ylabel('y = 1 /(x-1) ')
title('grfico da funo: 1/(x-1))')
hold on
plot([0 0],[-10 10],'k')
plot([-5 5],[0 0],'k')
plot([1 1],[-10 10],'r') % Assintota
pause; close
fun o invers a de x
10
8
6
4
2
y = 1/x
12)
-1
1
, no intervalo [-5, 5].
x
0
-2
-4
-6
-8
-10
-5
-4
-3
-2
-1
1
, no intervalo [-5, 5].
x 1
gr fic o da fun o: 1/ (x -1))
10
8
6
4
2
y = 1 /(x -1)
0
-2
-4
-6
-8
-10
-5
-4
-3
-2
-1
0
x
71
2) Usando dois comandos for criar uma matriz do tipo 4x3 com todos elementos iguais
a 10.
for m=1:4
for n=1:3
A(m,n)=10;
end
end
disp(A)
Segunda forma:
Usando o comando eval
For i=1:n
For j=1:n
A(i,j)=1/(i+j-1);
End
End
t='1/(i+j-1)';
for i=1:n
for j=1:n
A(i,j)=eval(t)
end
end
x
2
2
72
function soma=soma3(n)
soma=0;
while n~=0
soma=soma+n;
n=n-1;
end
function soma=soma2(n)
soma=0;
i=1;
while i<=n
soma=soma+i;
i=i+1;
end
Funo MATLAB (built in function) sum
Exemplo: sum(1:100)
7) Elabore um programa que calcula a soma dos quadrados dos n primeiros nmeros
naturais no nulos.
function soma=soma_quad(n)
Soma=0;
For i=1:n
soma=soma+i*i;
end
8) Elaborar uma funo que determina o maior nmero fatorial calculado pelo MATLAB
function max_fatorial
% Determinar o maior nmero fatorial calculado pelo MATLAB
n=1;
while prod(1:n) < realmax
n=n+1;
end
disp(' ')
disp(n-1)
73
13) Em uma sala de aula esto 8 pessoas, reunidas em uma mesa circular. Cada uma
escolhe um nmero aleatrio e pega o seu nmero e soma com os nmeros das
pessoas ao lado, a sua direita e esquerda. Passa-se as 8 somas para voc, que
estava fora da sala. Como voc faz para descobrir o nmero que cada um
escolheu? Elaborar um aplicativo que solicite do usurio as 8 somas e determina os
nmeros escolhidos.
Os valores A, B, ..., H so recebidos do usurio
a + b + c = A
atravs da sintaxe:
b + c + d = B
A = input ('Entre com o valor da primeira soma ==> ')
....
c + d + e = C
H = input ('Entre com o valor da oitava soma ==> ')
d
e
f
D
+ + =
Assim, basta resolver o sistema: x = inv(A)*b
e + f + g = E
f + g +h = F
g + h + a = G
h + a + b = H
14) Gerar 1000 nmeros aleatrios com distribuio normal e verificar a distribuio
dos dados atravs da funo histfit
>> a=randn(10000,1);
>> histfit
15) Elabore um aplicativo que determine as razes e o vrtice de uma funo quadrtica
function zero_para
clear; clc
disp(' ENTRE COM OS COEFICIENTES: a, b e c')
disp (' ')
disp(' O COEFICIENTE "a" NO PODE SER ZERO')
disp (' ')
disp(' POIS UMA FUNO DO SEGUNDO GRAU')
disp (' ')
a=input(' ENTRE COM O COEFICIENTE, a = ');
disp(' ')
b=input(' ENTRE COM O COEFICIENTE, b = ');
disp(' ')
c=input(' ENTRE COM O COEFICIENTE, c = ');
disp(' ')
disp(' ----------------------------')
disp(' RAZES (ZEROS) DA PARBOLA ')
disp(' ----------------------------')
delta=b^2-4*a*c;
if delta >=0
x=(-b-sqrt(delta))/(2*a)
x=(-b+sqrt(delta))/(2*a)
else
i=sym ('i');
x=(-b-sqrt(-delta)*i)/(2*a)
x=(-b+sqrt(-delta)*i)/(2*a)
end
disp(' ')
disp(' ------------------------------------')
disp(' COORDENADAS DO VRTICE DA PARBOLA ')
disp(' ------------------------------------')
disp(' ')
xv=-b/(2*a)
yv=-(b^2-4*a*c)/(4*a)
74
Exerccio: Elaborar um aplicativo que solicite do usurio o seu salrio bruto e que determine o
seu salrio lquido, isto , j descontado o INSS e o IRPF
Nota:
Considere que as alquotas do INSS podem ser: 8%, 9%, 10%, 11%, sendo que o valor
mximo no possa ultrapassar R$156,00 (valor mximo).
As alquotas do IRPF so:
1. Isento para valores at R$ 1.057,50;
2. 15,00% para valores de R$ 1.057,50 at R$ 2.115,00;
3. 27,50% para valores acima de 2.115,00;
4. Assim o valor mximo para deduo de R$ 423,00.
75
REFERNCIAS BIBLIOGRFICAS
01 Curso de MATLAB for Windows, Departamento de Engenharia Mecnica, UNESP,
Campus de Ilha Solteira.
02 JOHNSON, R. A.; WICHERN, D. W. Applied multivariate statistical analysis. 4. ed.
New Jersey: PrenticeHall, inc., 1998.
03 LECKAR, H.; SAMPAIO, R. Aproximando solues de AX=B com o MATLAB,
PUC-RJ.
04 MARQUES, J. M. MATLAB BSICO Curitiba 1999
05 MATLAB for Windows Users Guide, version 5.2 Student, The Math Works Inc.,
1991.
06 MATLAB: The Language of Technical computing Using MATLAB: Version 5.
Natick, MA: The Math Works, Inc, 1998.
07 MATSUMOTO, E. Y. MATLAB 6 Fundamentos de programao, Ed. rica, 1. ed.,
2001.
08 OPTIMIZATION TOOLBOX: For use with MATLAB. User's Guide: version 5. Natick,
MA: The Math Works, Inc, 1997.
09 PUCCINI, A. de Lima e PIZZOLATTO, N. Introduo a Programao Linear. Rio de
Janeiro. Livros Tcnicos e Cientficos ed., 1983
10 SAMPAIO, R.; CATALDO, E.; RIQUELME, R. Introduo ao MATLAB, Laboratrio
de vibraes, PUC-RJ.
11 STATISTICS TOOLBOX: For use with MATLAB. User's Guide: version 2.1. Natick,
MA: The Math Works, Inc., 1998.
12 SWOKOWSKI, E. W Clculo com Geometria Analtica. 2. ed. Vol I e II Makron
Books So Paulo, 1994
13 SYMBOLIC MATH TOOLBOX: User's Guide: version 2. Natick, MA: The Math
Works, Inc, 1997.
14 THE STUDENT EDITION OF MATLAB: Version 5 User's Guide. New Jersey,
1998.
15 ZIONTS, Stanley Linear and Integer Programming. New Jersey, Prentice-Hall, inc.,
1974.
ELEMENTOS BSICOS DE
PROGRAMAO EM MATLAB