Escolar Documentos
Profissional Documentos
Cultura Documentos
para apoio
`as aulas de Metodos Numericos
Comandos do MatLab
2012/13
1 / 137
Introduc
ao ao MATLAB
Introducao ao MATLAB
O MATLAB (MATrix LABoratory) e um sistema interactivo para a
execucao de calculos cientficos e de engenharia, suportado por software
sofisticado baseado em calculo matricial.
O Matlab e um software de computacao numerica que integra:
computacao
visualizacao
programacao
Comandos do MatLab
2012/13
2 / 137
Introduc
ao ao MATLAB
O sistema Matlab
O sistema Matlab e constitudo pelas seguintes partes:
A linguagem
O ambiente de trabalho
Graficos
Toolboxes
Comandos do MatLab
2012/13
3 / 137
Introduc
ao ao MATLAB
O sistema Matlab
A linguagem
Permite a manipulacao e criacao de matrizes de forma rapida e intuitiva.
Diferentes solucoes para um problema podem ser testadas numa fraccao
do tempo que levaria com outras linguagens (C ou Fortran por ex.).
Possui um conjunto muito vasto de func
oes que permitem resolver
problemas complexos de forma eficiente.
O ambiente de trabalho
O Matlab proporciona um ambiente de trabalho que permite a gestao e
visualizacao das variaveis, ler e gravar variaveis em disco e gerar programas
em linguagem Matlab, possibilitando assim a automatizacao de calculos
complexos.
Comandos do MatLab
2012/13
4 / 137
Introduc
ao ao MATLAB
O sistema Matlab
Graficos
As funcoes de criacao, visualizacao e manipulacao de graficos sao muito
faceis de usar e permitem a criacao de graficos 2D e 3D.
O ajuste de escala e automatico e o utilizador pode comecar a utilizar as
funcoes de geracao de graficos pouco tempo depois do primeiro contacto
com o ambiente do Matlab.
Toolboxes
O Matlab disponibiliza um conjunto de pacotes de funcoes para as mais
variadas areas de calculo cientfico, sendo estes denominados toolboxes.
Existem toolboxes para optimizacao, estatstica, processamento de sinal,
processamento de imagem, controlo, calculo simb
olico, etc.
Ana Maria A. C. Rocha (DPS/UM)
Comandos do MatLab
2012/13
5 / 137
Introduc
ao ao MATLAB
O comando HELP
Para esclarecer a maior parte das d
uvidas acerca da utilizacao de uma
dada funcao do Matlab o comando help e de grande utilidade.
Se pretender, informacao sobre a funcao plot, basta fazer
>> help plot
Comandos do MatLab
2012/13
6 / 137
Introduc
ao ao MATLAB
O comando HELP
O Matlab possui todas as func
oes organizadas em grupos e a propria
estrutura de directorios onde o Matlab e armazenado em disco reflecte
esse facto. Por exemplo, todas as func
oes de algebra linear estao
armazenadas no directorio matfun. Para obter uma lista completa deste
tipo de funcoes basta fazer
>> help matfun
Comandos do MatLab
2012/13
7 / 137
Introduc
ao ao MATLAB
Expressoes
Comandos do MatLab
2012/13
8 / 137
Introduc
ao ao MATLAB
Variaveis
Todas as variaveis do Matlab sao do tipo matriz e a sua criacao e
automatica. Por exemplo, o comando
>> Custo = 1000
Comandos do MatLab
2012/13
9 / 137
Introduc
ao ao MATLAB
Variaveis
Para visualizar o valor de uma variavel basta escrever o seu nome.
>> Custo
Operac
ao
resposta mais recente
precisao da maquina
maior n
umero de ponto flutuante
menor n
umero de ponto flutuante
3.1415926535897....
unidades Imaginarias
Infinito
Not-a-Number
Comandos do MatLab
2012/13
10 / 137
Introduc
ao ao MATLAB
Numeros
O Matlab utiliza uma notacao standard para a representacao dos n
umeros,
admitindo notacao cientfica e n
umeros complexos.
Exemplos:
3
9.6397238
12i 2j
-99
1.60210e-20
-3.14159j
0.0001
6.02252e23
3e5i
Formato Numerico
O comando format define o modo como os valores numericos sao exibidos.
O comando format controla apenas a forma com os valores sao
apresentados e nao a forma como estes sao usados internamente.
Todos os calculos em Matlab sao executados em dupla precisao. short.
Comandos do MatLab
2012/13
11 / 137
Introduc
ao ao MATLAB
Formato Numerico
FORMAT
FORMAT
FORMAT
FORMAT
FORMAT
FORMAT
SHORT
LONG
SHORT E
LONG E
SHORT G
FORMAT LONG G
FORMAT HEX
FORMAT +
FORMAT BANK
FORMAT RAT
Comandos do MatLab
2012/13
12 / 137
Introduc
ao ao MATLAB
Formato Numerico
Exemplo 1
>> pi
ans = 3.1416
>> format long
>> pi
ans = 3.141592653589793
Exemplo 2
Comando
5/2
Formato
format short
format long
format short e
format long e
format short g
format long g
format hex
format rat
format bank
Sada
2.5000
2.50000000000000
2.5000e+000
2.500000000000000e+000
2.5
2.5
4004000000000000
5/2
2.50
Comandos do MatLab
2012/13
13 / 137
Introduc
ao ao MATLAB
Operadores
Operac
ao
Adicao
Subtraccao
Multiplicacao
Divisao `a esquerda
Potenciacao
Comandos do MatLab
2012/13
14 / 137
Introduc
ao ao MATLAB
Funcoes
O Matlab possui um conjunto muito grande de func
oes matematicas que
permitem resolver grande parte dos problemas de calculo.
Quando as funcoes sao aplicadas sobre matrizes a funcao e aplicada a
cada um dos elementos.
Funcoes matematicas
exp
log
log10
sqrt
abs
real
imag
conj
std
exponencial de x
logaritmo natural de x na base e
Logaritmo de x na base 10
raiz quadrada de x
Valor absoluto de x
parte real de n
umero complexo
parte imag. de n
um. complexo
conj. dos n
um. complexos
desvio padrao
Comandos do MatLab
ex
ln x
log x
x
|x|
2012/13
15 / 137
Introduc
ao ao MATLAB
Funcoes
Funcoes trigonometricas
sin
tan
sec
acos
atan
acsc
seno
tangente
secante
arco-coseno
arco-tangente
arco-cossecante
round(x)
fix(x)
floor(x)
ceil(x)
sign(x)
rem(x,y)
cos
csc
cot
asin
asec
acot
cosseno
co-secante
co-tangente
arco-seno
arco-secante
arco-cotangente
Comandos do MatLab
2012/13
16 / 137
Introduc
ao ao MATLAB
Introducao de dados
A forma de introducao de um vetor pode ser feita:
pela separacao dos elementos por um espaco ou vrgula, resultando
num vetor linha
pela separacao dos elementos por ponto e vrgula, resultando num
vetor coluna
>> u = [1 2 3]
>> v = [1; 2; 3]
Solucao:
Solucao:
u = 1 2 3
v =
1
2
3
Comandos do MatLab
>> x = [1
2
3]
Solucao:
x =
1
2
3
2012/13
17 / 137
Introduc
ao ao MATLAB
Introducao de dados
A forma de introducao de uma matriz envolve:
a separacao os elementos de uma linha por espaco ou ,
a separacao os elementos de uma coluna por ;
a insercao da lista dos elementos da matriz entre [ ]
Exemplo:
>> A=[2 2 3; 4 5 6; 7 8 9]
Solucao:
A
2
4
7
=
2 3
5 6
8 9
>> A = [2 2 3
4 5 6
7 8 9]
Solucao:
A
2
4
7
Comandos do MatLab
=
2 3
5 6
8 9
2012/13
18 / 137
Introduc
ao ao MATLAB
adicao de matrizes
subtraccao de matrizes
produto de 2 vetores
multiplicacao de matrizes
transposta de um vetor ou matriz
soma dos elementos de uma matriz
produto dos elementos de um vetor ou matriz
norma de vetores ou matrizes
determinante de uma matriz
inversa de uma matriz
Comandos do MatLab
2012/13
19 / 137
Introduc
ao ao MATLAB
Ficheiros .m
Comandos do MatLab
2012/13
20 / 137
Introduc
ao ao MATLAB
M-files
Scripts
Uma script e um ficheiro de texto onde sao armazenados os comandos a
serem executados pelo Matlab, um em cada linha e pela sequencia
desejada.
Este tipo de ficheiro e muito usado quando ha necessidade de executar um
grande n
umero de operacoes.
Funcoes
Uma funcao contem a palavra function no incio da primeira linha de
uma M-file.
As funcoes diferem das scripts visto que podem usar argumentos e as
variaveis definidas e manipuladas dentro de uma funcaao nao operam
globalmente no espaco de trabalho.
Comandos do MatLab
2012/13
21 / 137
Introduc
ao ao MATLAB
Funcoes
Sintaxe de definicao de uma funcao
function [arg saida] = nome_da_funcao (arg entrada)
ou
function[res1,res2,...] = nome_da_funcao (arg1,arg2,...)
% comentario
lista de procedimentos da funcao
return
Nota: gravar o ficheiro com o nome nome da funcao
Comandos do MatLab
2012/13
22 / 137
Introduc
ao ao MATLAB
Funcoes
Definic
ao de func
oes
Uma funcao pode ser criada num ficheiro .m (M-file) ou directamente na
linha de comandos atraves do comando inline.
Quando e definida numa M-file deve ser definida da seguinte forma, como
por exemplo:
function f=fact(n)
% funcao factorial
% retorna o factorial de n
f= prod(1:n);
n - e argumento de entrada
fact - nome da funcao
f - argumento de sada
function - palavra reservada
% -indica comentario
Comandos do MatLab
2012/13
23 / 137
Introduc
ao ao MATLAB
Representacao de funcoes
Comandos do MatLab
2012/13
24 / 137
Introduc
ao ao MATLAB
Comandos do MatLab
2012/13
25 / 137
Introduc
ao ao MATLAB
Argumentos de func
oes
Uma funcao pode ser definida com argumentos de entrada e/ou
argumentos de sada.
Exemplo:
function [x,y,z] = sphere (theta,phi,rho)
uma funcao que tem:
E
3 argumentos de entrada (theta,phi,rho);
3 argumentos de sada (x,y,z).
Comandos do MatLab
2012/13
26 / 137
Introduc
ao ao MATLAB
Comandos do MatLab
2012/13
27 / 137
Introduc
ao ao MATLAB
Comandos do MatLab
2012/13
28 / 137
Introduc
ao ao MATLAB
Comandos do MatLab
2012/13
29 / 137
Introduc
ao ao MATLAB
Graficos
Comandos do MatLab
2012/13
30 / 137
Introduc
ao ao MATLAB
Comando plot
Comandos do MatLab
2012/13
31 / 137
Introduc
ao ao MATLAB
>> x=0:0.1:10;
>> plot(x);
6
5
4
3
2
1
0
Passando
uma
funcao
20
40
60
80
100
120
20
40
60
80
100
120
e:
1
>> x=0:0.1:10;
>> plot(sin(x));
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
Comandos do MatLab
2012/13
32 / 137
Introduc
ao ao MATLAB
Tambem e possvel utilizar um segundo vetor para o eixo das abcissas tal
como no exemplo seguinte:
>> x=0:0.1:10;
>> y=sin(x);
>> plot(x,y);
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
10
Comandos do MatLab
2012/13
33 / 137
Introduc
ao ao MATLAB
Vejamos um exemplo:
>> w=0:pi/100:2*pi; >> x1= sin(w);
>> x2= sin(w+pi/2);
>> x3= x1.*x2;
>> plot(w,x1,w,x2,w,x3);
legend(0 sin0 ,0 cos0 ,0 asin cos0 );
1
sin
cos
asin*cos
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
A funcao plot permite escolher o tipo de linha, a cor, etc, e existem ainda
funcoes para, por exemplo, acrescentar etiquetas aos eixos, criar uma
grelha, etc.
Ana Maria A. C. Rocha (DPS/UM)
Comandos do MatLab
2012/13
34 / 137
Introduc
ao ao MATLAB
Comandos do MatLab
2012/13
35 / 137
Introduc
ao ao MATLAB
Cor
azul claro
magenta
amarelo
verde
azul
branco
preto
.
o
x
*
s
d
v
<
>
+
p
h
Tipo de smbolo
ponto
crculo
cruz
asterisco
quadrado
diamante
tri
angulo invertido
tri
angulo para cima
tri
angulo para esquerda
tri
angulo para direita
mais
pentagrama
hexagrama
Estilo de linha
s
olida
tracejada
.
pontos
-.
traco-ponto
none
nenhuma
Comandos do MatLab
2012/13
36 / 137
Introduc
ao ao MATLAB
Exemplos
1000
>> x=-10:1:10;
>> y=sin(x)+x.3;
>> plot(x,y ,0 m 0 );
800
600
400
200
0
-200
-400
-600
-800
-1000
-10
>> x=-10:1:10;
>> plot(x,sin(x),0 bs :);
-8
-6
-4
-2
10
10
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
Comandos do MatLab
2012/13
37 / 137
Introduc
ao ao MATLAB
Comando fplot
O comando fplot faz o grafico de func
oes.
A sintaxe de utilizacao e:
fplot(funcao,[intervalo pretendido]);
Exemplo:
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-10
Comandos do MatLab
-8
-6
-4
-2
2012/13
10
38 / 137
Introduc
ao ao MATLAB
Comandos do MatLab
2012/13
39 / 137
Introduc
ao ao MATLAB
Comando ezplot
O comando ezplot permite desenhar o grafico de uma funcao sem
especificar o intervalo dedomnio.
A sintaxe de utilizacao e:
ezplot(funcao);
Exemplo:
sin(x)+x3
250
200
>> ezplot(sin(x)+x^3)
150
100
50
0
50
100
150
200
250
6
Comandos do MatLab
0
x
2012/13
40 / 137
Introduc
ao ao MATLAB
Comandos do MatLab
2012/13
41 / 137
C
alculo de razes de equac
oes
Comandos do MatLab
2012/13
42 / 137
C
alculo de razes de equac
oes
Comando fzero
O comando fzero permite encontrar o zero (raiz) de uma funcao de uma
variavel.
A sintaxe de utilizacao e:
x = fzero(fun,x0)
x = fzero(fun,x0,options)
x = fzero(fun,x0,options,P1,P2,...)
[x,fval] = fzero (fun,x0,options,P1,P2,...)
[x,fval,exitflag,output] = fzero(fun,x0,options,...)
Comandos do MatLab
2012/13
43 / 137
C
alculo de razes de equac
oes
Comandos do MatLab
2012/13
44 / 137
C
alculo de razes de equac
oes
Comandos do MatLab
2012/13
45 / 137
C
alculo de razes de equac
oes
Exemplo 1
Encontrar o zero da funcao x3 2x 5 que esta pr
oximo de 2.
>> [x,fval,exitflag,output] = fzero(x3-2*x-5,2)
Solucao: x = 2.0946
Outra forma de resolver...
>> f=inline(x3-2*x-5)
>> [x,fval,exitflag,output] = fzero(f,2)
Solucao: x = 2.0946
Comandos do MatLab
2012/13
46 / 137
C
alculo de razes de equac
oes
Solucao: z = 2.0946
Comandos do MatLab
2012/13
47 / 137
C
alculo de razes de equac
oes
Exemplo 2
Solucao:
x = 1.5708
fval= 6.1232e-017
exitflag = 1
Comandos do MatLab
2012/13
48 / 137
C
alculo de razes de equac
oes
Exemplo 3
Igual ao exemplo anterior, mas cuja tolerancia em x e de 1 103 .
>> op = optimset(TolX,1e-3)
>> [x,fval,exitflag,output] = fzero(cos(x),[1,2],op)
Solucao:
x = 1.5710
fval= -1.8225e-004
exitflag = 1
output =
iterations: 4
funcCount: 4
cgiterations: 3
algorithm: bisection, interpolation
Ana Maria A. C. Rocha (DPS/UM)
Comandos do MatLab
2012/13
49 / 137
C
alculo de razes de equac
oes
Comando roots
A funcao roots permite encontrar as razes (os zeros) de um polinomio.
A sintaxe e:
roots(c)
Comandos do MatLab
2012/13
50 / 137
C
alculo de razes de equac
oes
Exemplo 1
Calcular as 4 razes de
P (x) = x4 + 2x3 13x2 14x + 24 = 0
Comandos do MatLab
2012/13
51 / 137
C
alculo de razes de equac
oes
Exemplo 2
Calcular as razes de
P (x) = x5 + 3x3 + 2x + 4 = 0
>> c = [1 0 3 0 2 4];
>> r = roots(c)
Solucao:
r =
-0.2804 + 1.6770i
-0.2804 - 1.6770i
0.7060 + 1.0616i
0.7060 - 1.0616i
-0.8513
Ana Maria A. C. Rocha (DPS/UM)
Comandos do MatLab
2012/13
52 / 137
Sistemas de equac
oes lineares
Definicao de matrizes
Introducao de um vetor ou matriz
a separacao dos elementos de uma linha por espaco ou , (vrgula)
a indicacao do fim de uma linha usando o ; (ponto e vrgula)
a insercao da lista dos elementos da matriz entre [ ] (parenteses retos)
Exemplo
A=[2 2 3; 4 5 6; 7 8 9]
A =
2
4
7
2
5
8
3
6
9
Comandos do MatLab
2012/13
53 / 137
Sistemas de equac
oes lineares
Vetores e matrizes
Geracao de vetores ordenados
>> a=1:1:4
a =
1
2
3
4
>> b=1:0.2:2
b =
1.0000
1.2000
1.4000
1.6000
1.8000
2.0000
Comandos do MatLab
2012/13
54 / 137
Sistemas de equac
oes lineares
Manipulacao de matrizes
>> A(1,:)
ans =
2
>> A(2,3)
ans =
6
>> A(2:3,1)
ans =
4
7
Ana Maria A. C. Rocha (DPS/UM)
Comandos do MatLab
2012/13
55 / 137
Sistemas de equac
oes lineares
Comando
rand(m,n)
rand(n)
eye(m,n)
eye(n)
zeros (m,n)
zeros(n)
ones(m,n)
ones(n)
magic(n)
Operac
ao
Gera uma matriz (m x n) de elementos aleatorios entre [0,1]
Gera uma matriz quadrada de elementos aleatorios [0,1]
Gera uma matriz com elementos na diagonal iguais a 1
Gera a matriz identidade de dimensao n
Gera matriz com todos elementos iguais a 0
Gera matriz quadrada com todos elementos iguais a 0
Gera matriz com todos elementos iguais a 1
Gera matriz quadrada com todos elementos iguais a 1
Gera uma matriz de n
umeros inteiros (n x n)
cuja soma dos elemtos de cada linha e igual `a soma
dos elementos de cada coluna
Comandos do MatLab
2012/13
56 / 137
Sistemas de equac
oes lineares
Atenc
ao que t
em de ter a mesma dimens
ao
>> A=[2 2 3; 4 5 6; 7 8 9]
>> B=[ 2 2 2; 3 3 3; 4 4 4]
A
2
4
7
=
2 3
5 6
8 9
B =
2 2 2
3 3 3
4 4 4
>> X=A+B
X =
4 4 5
7 8 9
11 12 13
Comandos do MatLab
>> X=A-B
X =
0 0 1
1 2 3
3 4 5
2012/13
57 / 137
Sistemas de equac
oes lineares
Produto de vetores
Atenc
ao `
as suas dimens
oes
>> u = [1 2 3]
>> v = [1; 2; 3]
u =
1 2 3
v =
1
2
3
>> u*v
ans =
14
>> y = v*u
y =
1 2 3
2 4 6
3 6 9
Comandos do MatLab
2012/13
58 / 137
Sistemas de equac
oes lineares
Multiplicacao de matrizes
Atenc
ao `
as suas dimens
oes
A
2
4
7
=
2 3
5 6
8 9
B =
2 2 2
3 3 3
4 4 4
>> A*B
ans =
22 22 22
47 47 47
74 74 74
>> B*A
ans =
26 30 36
39 45 54
52 60 72
Comandos do MatLab
>> A.*B
ans =
4
4 6
12 15 18
28 32 36
2012/13
59 / 137
Sistemas de equac
oes lineares
>> A=[2 2 3; 4 5 6; 7 8 9]
>> u=[1 2 3]
A
2
4
7
=
2 3
5 6
8 9
u =
1 2 3
>> x=u
x =
1
2
3
Comandos do MatLab
>> x=A
x =
2 4 7
2 5 8
3 6 9
2012/13
60 / 137
Sistemas de equac
oes lineares
Operac
ao
maximo valor
mnimo valor
elementos da diagonal principal de uma matriz
matriz triangular superior de uma matriz
matriz triangular inferior de uma matriz
ordenar ascendentemente
ordenar linhas ascendentemente
soma dos elementos de um vetor ou matriz
produto dos elementos de um vetor ou matriz
norma 1 de uma matriz ou vetor
norma 2 de uma matriz ou vetor
norma infinita de uma matriz ou vetor
Comandos do MatLab
2012/13
61 / 137
Sistemas de equac
oes lineares
>> A = [2 2 3; 4 5 6; 7 8 9]
A
2
4
7
=
2 3
5 6
8 9
>> sum(A)
ans =
13 15 18
>> sum(A,2)
ans =
7 15 24
Comandos do MatLab
>> sum(A)
ans =
7 15 24
2012/13
62 / 137
Sistemas de equac
oes lineares
=
2 3
5 6
8 9
u=[1 2 3]
norma 2
norma 1
norma infinita
>> norm(u,2)
ans = 3.7417
>> norm(u,1)
ans = 6
>> norm(u,inf)
ans = 3
>> norm(A)
ans = 16.9587
>> norm(A,1)
ans = 18
>> norm(A,inf)
ans = 24
Comandos do MatLab
2012/13
63 / 137
Sistemas de equac
oes lineares
Operacoes
Comando
size
length
Smbolo
.*
./
.
Operac
ao
Dimensoes de uma matriz
Comprimento de um vetor
Operac
ao
Multiplicacao elemento a elemento
Divisao `a esquerda elemento a elemento
Potenciacao elemento a elemento
Comandos do MatLab
2012/13
64 / 137
Sistemas de equac
oes lineares
=
2 3
5 6
8 9
B =
2 2 2
3 3 3
4 4 4
u = 2 3 5
v = 4 2 1
>> u.*v
ans =
8 6 5
>> u.3
ans =
8 27 125
>> u.\v)
ans =
0.5000 1.5000 5.0000
>> A.*B
ans =
4 4 6
12 15 18
28 32 36
>> B.2
ans =
4 4 4
9 9 9
16 16 16
>> A.\B
ans =
1.0000 1.0000 1.5000
1.3333 1.6667 2.0000
1.7500 2.0000 2.2500
Comandos do MatLab
2012/13
65 / 137
Sistemas de equac
oes lineares
Potencia de matrizes
A2
e equivalente a A*A
A.2
e equivalente ao quadrado de cada elemento de A
A =
2 2 3
4 5 6
7 8 9
>> A2
ans =
33 38 45
70 81 96
109 126 150
>> A.2
ans =
4
4 9
16 25 36
49 64 81
Comandos do MatLab
2012/13
66 / 137
Sistemas de equac
oes lineares
A
2
4
7
=
2 3
5 6
8 9
>> det(A)
ans = -3
B =
2 2 2
3 3 3
4 4 4
Comandos do MatLab
>> det(B)
ans = 0
2012/13
67 / 137
Sistemas de equac
oes lineares
A
2
4
7
=
2 3
5 6
8 9
>> inv(A)
ans =
1.0000 -2.0000 1.0000
-2.0000 1.0000 0
1.0000 0.6667 -0.6667
B =
2 2 2
3 3 3
4 4 4
>> inv(B)
Warning: Matrix is singular.
ans =
Inf Inf Inf
Inf Inf Inf
Inf Inf Inf
Comandos do MatLab
2012/13
68 / 137
Sistemas de equac
oes lineares
=
2 3
5 6
8 9
B =
2 2 2
3 3 3
4 4 4
>> x = A\B
x =
0.0000 0.0000 0.0000
-1.0000 -1.0000 -1.0000
1.3333 1.3333 1.3333
Comandos do MatLab
2012/13
69 / 137
Sistemas de equac
oes lineares
=
2 3
5 6
8 9
v =
1
2
3
>> x=A\v
x =
0.0000
0
0.3333
Comandos do MatLab
2012/13
70 / 137
Sistemas de equac
oes n
ao lineares
Comandos do MatLab
2012/13
71 / 137
Sistemas de equac
oes n
ao lineares
Algoritmos de optimizacao
Large-scale optimization
Por defeito, o FSOLVE usa este metodo de optimizacao (LargeScale
a on). O algoritmo consiste no metodo de Newton
interior-reflectivecuja tecnica de globalizacao e baseada nas regioes
de confianca. Cada iteracao envolve a resolucao de um sistema linear
de grandes dimensoes atraves do metodo pre-condicionado dos
gradientes conjugados (PCG).
Medium-scale optimization
Com LargeScale a off, usa o metodo de Gauss-Newton com um
metodo misto (quadratico e c
ubico) de procura linear.
Alternativamente, pode usar o metodo de Levenberg-Marquardt (se
options.LevenbergMarquardt estiver a on e options.LargeScale
estiver a off).
Ana Maria A. C. Rocha (DPS/UM)
Comandos do MatLab
2012/13
72 / 137
Sistemas de equac
oes n
ao lineares
parametros
compara o Jacobiano com diferenciacao finita
Nvel de apresentacao
nao apresenta nada
apresenta resultados em cada iteracao
(default) apresenta apenas o resultado final
Definicao do Jacobiano pelo utilizador ou nao
Algoritmo de grande dimensao
N
umero maximo de avaliac
oes da funcao
N
umero maximo de iterac
oes
Utiliza o metodo de Levenberg-Marquardt
Tipo de procura linear utilizada
Tolerancia de paragem relativamente a FUN
Tolerancia de paragem relativamente a X
Comandos do MatLab
2012/13
73 / 137
Sistemas de equac
oes n
ao lineares
Comandos do MatLab
2012/13
74 / 137
Sistemas de equac
oes n
ao lineares
Exemplo
Considere o sistema de equac
oes nao lineares
2x1 x2 ex1 = 0
x1 + 2x2 ex2 = 0
Para resolver este sistema no MATLAB, fazer:
1. Criar um ficheiro de nome fun1.m:
function F=fun1(x)
F(1)=2*x(1)-x(2)-exp(-x(1));
F(2)=-x(1)+2*x(2)-exp(-x(2));
ou
function F = fun1(x)
F = [2*x(1)-x(2)-exp(-x(1)) ; -x(1)+2*x(2)-exp(-x(2))];
Ana Maria A. C. Rocha (DPS/UM)
Comandos do MatLab
2012/13
75 / 137
Sistemas de equac
oes n
ao lineares
Exemplo (continuacao)
2. Criar um segundo ficheiro teste1.m (opcional):
clear all
x0=[-1 ; -1]; % estimativas iniciais para x(1) e x(2)
options=optimset(Display,iter); % mostra a soluc~ao em cada it.
[x,fval,exitflag,output]=fsolve(fun1,x0,options) % resolve
3. Ir `a janela de comando do MATLAB e digitar
>> teste1
Comandos do MatLab
2012/13
76 / 137
Sistemas de equac
oes n
ao lineares
Exemplo: solucao
Func
count
3
6
9
12
15
18
f(x)
27.6512
5.33464
0.137328
0.000122467
9.99189e-011
6.63847e-023
Norm of
step
1
0.986918
0.222302
0.00704881
6.37844e-006
Comandos do MatLab
First-order
optimality
13.8
3.82
0.437
0.0123
1.11e-005
9.03e-012
Trust-region
radius
1
1
1
2.47
2.47
2.47
2012/13
77 / 137
Sistemas de equac
oes n
ao lineares
Comandos do MatLab
2012/13
78 / 137
Sistemas de equac
oes n
ao lineares
Comandos do MatLab
2012/13
79 / 137
Sistemas de equac
oes n
ao lineares
Comandos do MatLab
2012/13
80 / 137
Interpolac
ao polinomial
Interpolacao polinomial
Comandos do MatLab
2012/13
81 / 137
Interpolac
ao polinomial
Comando spline
O comando spline e o comando que permite determinar no MATLAB
uma spline c
ubica.
A sua sintaxe de utilizacao e:
YY = SPLINE(X,Y)
YY = SPLINE(X,Y,XX)
Comandos do MatLab
2012/13
82 / 137
Interpolac
ao polinomial
Exemplo 1
0
0
2
20
4
60
5
110
Comandos do MatLab
2012/13
83 / 137
Interpolac
ao polinomial
Comandos do MatLab
2012/13
84 / 137
Interpolac
ao polinomial
Comandos do MatLab
2012/13
85 / 137
Interpolac
ao polinomial
pp
[0 2 4 5]
[3x4 double]
3
4
1
Comandos do MatLab
2012/13
86 / 137
Interpolac
ao polinomial
ver os coeficientes
>> cs comp.coefs
Solucao:
2
Comandos do MatLab
2012/13
87 / 137
Interpolac
ao polinomial
Comandos do MatLab
2012/13
88 / 137
Interpolac
ao polinomial
newx = [0:.1:10];
newy = spline(x, y, newx);
plot(x,y,o,newx,newy,r);
grid;
30
25
20
15
10
Comandos do MatLab
10
2012/13
89 / 137
Interpolac
ao polinomial
Exemplo 2
Considere o exemplo em que y contem uma funcao:
>>
>>
>>
>>
>>
>>
x = 0:10;
y = sin(x)+cos(x.2);
xx = 0:.05:10;
yy = spline(x,y,xx);
plot(x,y,o,xx,yy);
grid;
1.5
0.5
-0.5
-1
-1.5
-2
Comandos do MatLab
2012/13
10
90 / 137
Interpolac
ao polinomial
Exemplo 3
0
0
1
20
2
60
3
68
4
77
5
110
Comandos do MatLab
2012/13
91 / 137
Interpolac
ao polinomial
Exemplo 3 (continuacao)
Comandos do MatLab
2012/13
92 / 137
Interpolac
ao polinomial
x = [0,1,2,3,4,5];
y = [0,20,60,68,77,110];
newx = 0: 0.1 :5;
newy = spline(x,y,newx);
plot (x,y,o,newx,newy);
title (Spline C
ubica Completa);
xlabel(Tempos);
ylabel(Graus, F);
grid;
Comandos do MatLab
2012/13
93 / 137
Interpolac
ao polinomial
120
100
80
Graus, F
60
40
20
-20
0.5
1.5
2.5
Tempos
3.5
4.5
94 / 137
Interpolac
ao polinomial
Exemplo 4
Comandos do MatLab
2012/13
95 / 137
Interpolac
ao polinomial
x = [0,1,2,3,4,5];
y = [0,20,60,68,77,110];
newx = 0: 0.1 :5;
n newy = spline(x,[0 y 0],newx);
plot (x,y,o,newx,n newy);
title (Spline C
ubica Natural);
xlabel(Tempos);
ylabel(Graus, F);
grid;
Comandos do MatLab
2012/13
96 / 137
Interpolac
ao polinomial
120
100
80
Graus, F
60
40
20
-20
0.5
1.5
2.5
Tempos
Comandos do MatLab
3.5
4.5
2012/13
97 / 137
Aproximac
ao dos mnimos quadrados
Comandos do MatLab
2012/13
98 / 137
Aproximac
ao dos mnimos quadrados
Comando polyval
Comandos do MatLab
2012/13
99 / 137
Aproximac
ao dos mnimos quadrados
Exemplo 1
Comandos do MatLab
2012/13
100 / 137
Aproximac
ao dos mnimos quadrados
Exemplo 2
Suponha que quer saber o valor do polin
omio
g(x) = x5 + 3x3 2.5x2 2
para todos os valores de x no intervalo de [0,3], com espacamento de 0.5.
>> x = 0:0.5:2;
>> coef = [-1,0,3,-2.5,0,-2]
>> g = polyval(coef,x)
Solucao:
g(0) =
g(0.5)
g(1) =
g(1.5)
g(2) =
-2.0000
= -2.2813
-2.5
= -5.0938
-20.0000
Comandos do MatLab
2012/13
101 / 137
Aproximac
ao dos mnimos quadrados
Comando polyfit
Permite calcular analiticamente os coeficientes de um polinomio a ajustar
ao conjunto de pontos. Calcula tambem o resduo.
A sua sintaxe de utilizacao e:
[p,S] = polyfit(x,y,N)
x e um vetor com os pontos
y e um vetor com os valores da funcao nos pontos
N representa o grau do polin
omio
p e um vetor com os coeficientes do polin
omio
P (x) = c1 xn + c2 xn1 + . . . + cn x + cn+1
S e uma estrutura para usar com polyval para obter uma estimativa
dos erros. A estrutura contem os seguintes campos:
R, df
normr - e a norma dos resduos, i.e., e a raz quadrada da soma do
quadrado dos erros.
Ana Maria A. C. Rocha (DPS/UM)
Comandos do MatLab
2012/13
102 / 137
Aproximac
ao dos mnimos quadrados
Exemplo 3
xi
fi
0
0
1
20
2
60
3
68
4
77
5
110
103 / 137
Aproximac
ao dos mnimos quadrados
100
80
60
40
20
0
20
0.5
1.5
2.5
3.5
4.5
Comandos do MatLab
2012/13
104 / 137
Aproximac
ao dos mnimos quadrados
Exemplo 4
xi
fi
2.5
0
3.5
25
4
45
6
65
7
75
Comandos do MatLab
2012/13
105 / 137
Aproximac
ao dos mnimos quadrados
Exemplo 5
Considere a seguinte tabela de valores
xi
fi
-1
0
1
20
2
60
5.5
88
7
120
10
150
15
100
Comandos do MatLab
2012/13
106 / 137
Aproximac
ao dos mnimos quadrados
Exemplo 5 (continuacao)
x = [-1,1,2,5.5,7,10,15];
y = [0,20,60,88,120,150,100];
[p2,S2] = polyfit(x,y,2)
[p3,S3] = polyfit(x,y,3)
[p4,S4] = polyfit(x,y,4)
newx = -1:0.1:15;
newy2 = polyval(p2,newx);
newy3 = polyval(p3,newx);
newy4 = polyval(p4,newx);
plot(x,y,o,newx,newy2,m,newx,newy3,r,newx,newy4,k);
grid;
Comandos do MatLab
2012/13
107 / 137
Aproximac
ao dos mnimos quadrados
Exemplo 5 (continuacao)
Comandos do MatLab
2012/13
108 / 137
Aproximac
ao dos mnimos quadrados
Exemplo 5 (continuacao)
A representacao grafica dos 3 polin
omios e dos pontos e:
160
140
120
100
80
60
40
Pontos
p2(x)
20
p3(x)
p4(x)
20
2
Comandos do MatLab
10
12
14
16
2012/13
109 / 137
Integrac
ao num
erica
Integracao numerica
O MATLAB dispoe de algumas func
oes para calcular numericamente o
integral de uma funcao:
Comando trapz
Baseado no metodo trapezoidal
Comando quad
Maseado na quadratura adaptativa de Simpson
Comando quadl
Baseado na quadratura adaptativa de Lobatto.
Comandos do MatLab
2012/13
110 / 137
Integrac
ao num
erica
Comando trapz
O comando trapz(x,y) calcula uma aproximacao ao integral de y = f (x)
usando a regra do trapezio.
A sua sintaxe de utilizacao e:
Z = TRAPZ(Y)
Z = TRAPZ(X,Y)
Se os valores de X tiverem um espacamento unitario, entao o parametro x
pode ser omitido.
X e um vetor com os pontos de integracao
Y contem o valor da funcao nos pontos X.
Comandos do MatLab
2012/13
111 / 137
Integrac
ao num
erica
Comandos do MatLab
2012/13
112 / 137
Integrac
ao num
erica
Comandos do MatLab
2012/13
113 / 137
Integrac
ao num
erica
Exemplo 1
Considere a funcao
f (x) = cos(3x + 1)x2 + x1.5
cujo esboco se apresenta na figura seguinte:
100
80
60
40
20
-20
-40
-60
Comandos do MatLab
2012/13
114 / 137
Integrac
ao num
erica
Calcular
Z
cos(3x + 1)x2 + x1.5 dx
ou
>> area = trapz(y)
Comandos do MatLab
2012/13
115 / 137
Integrac
ao num
erica
Comandos do MatLab
2012/13
116 / 137
Integrac
ao num
erica
Comandos do MatLab
2012/13
117 / 137
Integrac
ao num
erica
Exemplo 2
A curva de carga tpica de uma
determinada cidade (MW) esta
representada na figura
ou pela correspondente tabela
tempo
pot
encia
1
30
3
29
5
33
7
40
8
39
10
33
12
39
14
38
16
30
18
31
20
45
21
50
22
44
24
30
Comandos do MatLab
2012/13
118 / 137
Integrac
ao num
erica
Comandos do MatLab
2012/13
119 / 137
Integrac
ao num
erica
Comandos do MatLab
2012/13
120 / 137
Integrac
ao num
erica
Integrac
ao num
erica
Exemplo 3
Calcular
Z
1
1
x +
x+1
2
dx
>> Q=quad(F,0,1);
ou
>> Q=quadl(F,0,1);
Ana Maria A. C. Rocha (DPS/UM)
Comandos do MatLab
2012/13
122 / 137
Integrac
ao num
erica
Exemplo 3: (continuacao)
Comandos do MatLab
2012/13
123 / 137
Integrac
ao num
erica
Exemplo 4
Calcular
Z
1.5
4 cos(x 1)
x
e(x+5)
3
dx
considerando T ol = 103 .
>> Q=quad(x.3-(4.*cos(x-1))./exp(x+5),1.5,5,1e-3);
ou
>> Q=quadl(x.3-(4.*cos(x-1))./exp(x+5),1.5,5,1e-3);
Solucao: Q = 227.4988
Comandos do MatLab
2012/13
124 / 137
Equac
oes Diferenciais
Equacoes Diferenciais
Os comandos do MATLAB para resolver uma equacao diferencial do tipo
dy
= f (x, y)
dx
ou um sistema de equacoes
dy1
dx
dy2
dx
dyn
dx
sao:
diferenciais ordinarias
=
f1 (x, y1 , y2 , . . . , yn )
f2 (x, y1 , y2 , . . . , yn )
...
=
fn (x, y1 , y2 , . . . , yn )
Comandos do MatLab
2012/13
125 / 137
Equac
oes Diferenciais
Comandos do MatLab
2012/13
126 / 137
Equac
oes Diferenciais
Comandos do MatLab
2012/13
127 / 137
Equac
oes Diferenciais
Opcoes
Comandos do MatLab
2012/13
128 / 137
Equac
oes Diferenciais
Exemplo 1
A taxa de escoamento de um lquido que esta dentro de um cilindro
vertical atraves de um buraco na base e dada por:
dy
= kt y
dt
onde y(t) e a altura da agua no tanque ao fim de t minutos. Supondo que
k = 0.1 e que a altura inicial da agua e de 2 metros determine a altura da
agua no tanque ao fim de 2 minutos.
Use um passo de 0.5 e um metodo de 4a /5a ordem.
>> odefun=inline(-0.1.*t.*sqrt(y));
>> [t,y]=ode45(odefun,[0 0.5 1 1.5 2],[2])
Comandos do MatLab
2012/13
129 / 137
Equac
oes Diferenciais
Exemplo 2
dy1 = y2
dt
dy2
= y2 1 y12 y1
dt
Comandos do MatLab
2012/13
130 / 137
Equac
oes Diferenciais
Exemplo 2 (continuacao)
Comandos do MatLab
2012/13
131 / 137
Equac
oes Diferenciais
Exemplo 2 (continuacao)
Para resolver o sistema de equac
oes diferenciais definido em volpol.m
atraves do Metodo de Runge-Kutta 2a /3a ordem,
no intervalo 0 t 20
(i.e, com escolha adaptativa do comprimento do passo)
com as seguintes condic
oes iniciais y(0) = 0 e
dy(0)
= 0.25
dt
Comandos do MatLab
2012/13
132 / 137
Equac
oes Diferenciais
Exemplo 2: solucao
t
0
0.0003
0.0019
0.0099
0.0499
0.2499
0.5207
0.7772
1.0230
...
18.6575
18.8696
19.1018
19.3339
19.5565
19.7832
19.9708
20.0000
y1
0
0.0001
0.0005
0.0025
0.0128
0.0703
0.1631
0.2645
0.3688
...
-1.6053
-1.4417
-1.2338
-0.9862
-0.6970
-0.3288
0.0505
0.1164
y2
0.2500
0.2501
0.2505
0.2525
0.2625
0.3117
0.3720
0.4139
0.4299
...
0.7192
0.8263
0.9725
1.1723
1.4429
1.8282
2.2231
2.2860
3
y1
y2
2
-1
-2
-3
Comandos do MatLab
10
12
14
16
2012/13
18
20
133 / 137
Equac
oes Diferenciais
Exemplo 3
Suponha agora que pretende resolver o sistema de equacoes diferenciais
definido em volpol.m
atraves do Metodo de Runge-Kutta 4a /5a ordem,
no intervalo 0 t 20 com comprimento do passo h = 2,
com as seguintes condic
oes iniciais y(0) = 0 e
dy(0)
= 0.25
dt
Comandos do MatLab
2012/13
134 / 137
Equac
oes Diferenciais
Exemplo 3: solucao
t
0
2.0000
4.0000
6.0000
8.0000
10.0000
12.0000
14.0000
16.0000
18.0000
20.0000
y1
0
0.6876
-0.7872
-0.9784
1.9535
-0.0948
-1.6047
1.6993
0.9948
-1.9766
0.0813
y2
0.2500
0.1172
-1.6217
1.0624
-0.2744
-2.2627
0.7194
1.6143
-1.1648
0.3223
2.2548
Comandos do MatLab
2012/13
135 / 137
Equac
oes Diferenciais
Exemplo 3: opcoes
Para a resolucao com os paremetros anteriores e visualizacao grafica, fazer
>> op = odeset(OutputFcn,@odeplot);
>> [t,y] = ode45(volpol, tspan, y0, op)
Comandos do MatLab
2012/13
136 / 137
Equac
oes Diferenciais
Exemplo 3: opcoes
Para resolver o sistema de equac
oes com uma tolerancia relativa de
1 104 , devemos fazer os seguintes comandos:
>> options=odeset(RelTol,1e-4)
>> [t,y] = ode45(volpol, tspan, y0, options);
Solucao:
t
y1
y2
0
0
0.2500
2.0000
0.6876
0.1163
4.0000 -0.7899 -1.6223
6.0000 -0.9759 1.0663
8.0000
1.9531 -0.2734
10.0000 -0.0942 -2.2618
12.0000 -1.6041 0.7196
14.0000 1.7002
1.6102
16.0000 0.9936 -1.1657
18.0000 -1.9688 0.3242
20.0000 0.1075
2.2772
Ana Maria A. C. Rocha (DPS/UM)
Comandos do MatLab
2012/13
137 / 137