Você está na página 1de 137

Comandos do MatLab

para apoio
`as aulas de Metodos Numericos

Ana Maria Alves Coutinho da Rocha


arocha@dps.uminho.pt
Departamento de Producao e Sistemas
Universidade do Minho
2012/2013

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

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.

Ana Maria A. C. Rocha (DPS/UM)

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

obtendo-se a seguinte descricao


PLOT Linear plot.
PLOT(X,Y) plots vetor Y versus vetor X...
PLOT(Y) plots the columns of Y versus their index...

Ana Maria A. C. Rocha (DPS/UM)

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

Como nao e facil decorar os nomes de todas as categorias de funcoes,


existe uma janela de ajuda mais organizada, bastando para tal escrever o
comando
>> helpwin

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

7 / 137

Introduc
ao ao MATLAB

Expressoes

O Matlab permite a construcao de express


oes matematicas sem qualquer
declaracao do formato numerico ou dimensao das matrizes.
Existem quatro constituintes basicos nas express
oes do Matlab:
Variaveis
N
umeros
Operadores
Funcoes

Ana Maria A. C. Rocha (DPS/UM)

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

resulta na criacao em mem


oria de uma matriz de 1 1 (guardada na
variavel Custo) com o valor 1000.
Declaracao de uma variaveis:
variaveis sao alocadas na mem
oria ao serem declaradas;
nomes de variaveis sao sensveis a letras mai
usculas e min
usculas;
vetores e matrizes devem ser declarados entre [ ];
elementos de uma mesma linha numa matriz sao separados por
espaco(s) ou vrgula;
ponto-e-vrgula(;) indica o final de uma linha de uma matriz ou
expressao.
Ana Maria A. C. Rocha (DPS/UM)

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

Constantes e variaveis especiais


Smbolo
ans
eps
realmax
realmin
pi
i, j
inf
NaN

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

Ana Maria A. C. Rocha (DPS/UM)

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.

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

(Default) Format igual a SHORT


Formato de ponto fixo com 5 dgitos
Formato de ponto fixo com 15 dgitos
Formato de vrgula flutuante com 5 dgitos
Formato de vrgula flutuante com 15 dgitos
Melhor formato entre ponto fixo
ou vrgula flutuante com 5 dgitos
Melhor formato entre ponto fixo
ou vrgula flutuante com 15 dgitos
Formato hexadecimal
Escreve os smbolos +, - e espaco para positivos,
negativos e zeros, respectivamente
Formato fixo para d
olares e centimos
Formato racional

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

Ana Maria A. C. Rocha (DPS/UM)

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

As operacoes nas expressoes do Matlab seguem as regras habituais de


precedencia e podem ser aplicadas quer a matrizes quer a n
umeros.
Operadores matematicos
Smbolo
+

Operac
ao
Adicao
Subtraccao
Multiplicacao
Divisao `a esquerda
Potenciacao

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

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

Converte x para o inteiro mais perto


Converte x para o inteiro mais perto em direccao a zero
Converte x para o inteiro mais perto em direccao a
Converte x para o inteiro mais perto em direccao a +
Devolve -1 se x<0 ou 1 se x0
Resto da divisao de x/y

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

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

Operacoes basicas com vetores/matrizes

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

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

19 / 137

Introduc
ao ao MATLAB

Ficheiros .m

As instrucoes em MATLAB sao geralmente dadas e executadas linha


a linha na janela de comandos.
Tambem e possvel executar uma sequencia de comandos que esta
guardada num ficheiro (M-file).
Tipos de M-files
scripts : executam os argumentos diretamente, automatizando uma
serie de comandos
func
ao : argumentos podem ser passados para a funcao, havendo
uma manipulacao de variaveis.

Ana Maria A. C. Rocha (DPS/UM)

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.

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

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

O MATLAB representa func


oes matematicas exprimindo-as em M-files ou
directamente na linha de comandos sob a forma de string.
Por exemplo, para a funcao
1
1
+
6
2
(x 3) + 0.01 (x 0.9)2 + 0.04

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

24 / 137

Introduc
ao ao MATLAB

1. Pode criar-se um ficheiro (M-file) de nome humps.m com o seguinte


conte
udo:
function y=humps(x)
y=1./((x-0.3).2+0.01)+1./((x-0.9).2+0.04)-6;
Para saber o valor da funcao quando x=2.5 faz-se:
>> humps(2.5);

2. Pode inserir-se na linha de comando


f=inline(1./((x-0.3).2+0.01)+1./((x-0.9).2+0.04)-6);
Para saber o valor de f(2.5) faz-se:
>> f(2.5);

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

26 / 137

Introduc
ao ao MATLAB

Se uma funcao nao tem argumentos de sada e tem, por exemplo, um


argumento de entrada x, pode ser definida por:
function printresults(x)
ou
function []=printresults(x)

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

27 / 137

Introduc
ao ao MATLAB

As variaveis nargin e nargout indicam quantos argumentos de entrada e


de sada, respectivamente, tem uma funcao.
Exemplo:
function c=testarg(a,b)
if (nargin==1)
c=a2;
elseif (nargin==2)
c=a+b;
end

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

28 / 137

Introduc
ao ao MATLAB

Em alguns casos, podem considerar-se os argumentos (tanto de entrada


como de sada) como vetores.
function [p,j]=exerc(v)
a=v(1);
b=v(2);
c=v(3);
p=[(a+b)*(c-b),(a-c)*b];
j=(a-b)2+(b-2)-(c+5)3;
em que:
v e um vetor de dimensao 3,
p e um vetor de dimensao 2 e
um escalar.

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

29 / 137

Introduc
ao ao MATLAB

Graficos

A geracao de graficos no Matlab representa um dos seus aspectos mais


u
teis.
O MatLab oferece uma vasta biblioteca de func
oes voltadas `a construcao
de graficos.
Atraves de comandos simples, o Matlab pode produzir graficos
bidimensionais ou tridimensionais (ex: graficos de contornos, de superfcie,
etc).

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

30 / 137

Introduc
ao ao MATLAB

Comando plot

A funcao plot e a mais utilizada no Matlab para gerar graficos variando o


seu comportamento consoante os parametros de entrada.
A sintaxe de utilizacao e:
plot(X)
plot(X,Y)
plot(X,Y,S)

desenha X (sendo X um vetor ou uma funcao)


desenha a funcao Y em funcao do vetor X
desenha X em funcao de Y, segundo os parametros S

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

31 / 137

Introduc
ao ao MATLAB

A sua forma mais simples consiste em passar como entrada apenas um


vetor:
10
9
8
7

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

O grafico gerado apresenta em abcissas os ndices i dos elementos do vetor e em


ordenadas o valor de cada um dos elementos do vetor.
Ana Maria A. C. Rocha (DPS/UM)

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

A funcao plot admite a representacao simultanea de varias curvas,


acrescentando mais argumentos de entrada, devendo os vetores possuir o
mesmo n
umero de amostras.
Ana Maria A. C. Rocha (DPS/UM)

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

Destas funcoes destacam-se as seguintes:


xlabel
ylabel
title
legend
figure
figure(gcf)
zoom
grid
axis

Etiqueta do eixo das abcissas


Etiqueta do eixo das ordenadas
Nome da figura
legenda com o significado de cada linha
Cria uma janela nova
Coloca a janela de grafica corrente `a frente
Para aumentar zonas de um grafico
Grelha
Define os limites dos eixos do grafico

O Matlab possui uma funcao que permite gerar um certo n


umero de
valores num dado intervalo. Se pretender, por exemplo, gerar 100 pontos
no intervalo de a :
>> x = linspace(-pi,pi,100);

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

35 / 137

Introduc
ao ao MATLAB

Pode-se definir o estilo de linha, smbolo ou cor de um grafico atraves de


um conjunto de caracteres formado por um elemento de cada uma das
seguintes 3 colunas:
c
m
y
g
b
w
k

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

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

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

>> fplot(sin(x),[-10 10]);

0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-10

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

-8

-6

-4

-2

2012/13

10

38 / 137

Introduc
ao ao MATLAB

A funcao pode ser especificada:


directamente na instrucao fplot
>> fplot(0 sin(x)0 ,[-10 10]);

numa instrucao atraves do comando inline


>> f = inline(0 sin(x)0 );
>> fplot(f,[-10 10]);

num ficheiro e invocada atraves do comando @


>> fplot(@func seno,1);

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

0
x

2012/13

40 / 137

Introduc
ao ao MATLAB

Para alterar um grafico, pode-se recorrer `as opc


oes/menus da janela do
grafico.

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

41 / 137

C
alculo de razes de equac
oes

Calculo de razes de equacoes

O MATLAB possui duas func


oes para o calculo da raiz de uma equacao:
Comando fzero
Determina uma raiz de uma equacao algebrica ou transcendente
Comando roots
Obtem todas as razes de uma equacao algebrica

Ana Maria A. C. Rocha (DPS/UM)

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

O algoritmo utilizado usa uma combinacao do metodo da bisseccao, da


secante e metodos de interpolacao quadratica inversa.

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

43 / 137

C
alculo de razes de equac
oes

Comando fzero: Parametros de entrada


x0 e um ponto proximo da solucao ou entao um intervalo cujos valores da
funcao nos limites tem sinais opostos.
fun e a funcao que se pretende encontrar a sua raz
Options - definicao de parametros
Display
Nvel de apresentacao
off nao apresenta nada
iter apresenta resultados em cada iteracao
final apresenta apenas o resultado final
notify (default) apresenta apenas o resultado final
TolX
Tolerancia de paragem relativamente a X

Para ver as opcoes disponveis para o fzero fazer:


>> optimset(fzero)
Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

44 / 137

C
alculo de razes de equac
oes

Comando fzero: Parametros de sada

x contem o valor da raiz


fval contem o valor da funcao na raiz
exitflag - descreve valores de sada do fzero
> 0 indica que a funcao encontrou a raiz em X
< 0 indica que a funcao nao convergiu
output - estrutura que contem informacao acerca da optimizacao
iterations indica o n
umero de iterac
oes realizadas
algorithm
indica o algoritmo usado
funcCount
indica o n
umero de avaliac
oes da funcao

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

46 / 137

C
alculo de razes de equac
oes

Exemplo1: outra forma de resolver

1. Criar um ficheiro fun.m


function y = fun(x)
y = x3-2*x-5;

2. Digitar na linha de comandos a seguinte instrucao:


>> [x,fval,exitflag,output] = fzero(@fun, 2)

Solucao: z = 2.0946

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

47 / 137

C
alculo de razes de equac
oes

Exemplo 2

Encontrar o zero da funcao cosseno entre 1 e 2


>> [x,fval,exitflag] = fzero(@cos,[1,2])

Solucao:
x = 1.5708
fval= 6.1232e-017
exitflag = 1

Ana Maria A. C. Rocha (DPS/UM)

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)

em que c e um vetor linha com os coeficientes de um polinomio.


Se o vetor linha c contem os coeficientes do polin
omio
P (x) = c1 xn + c2 xn1 + . . . + cn x + cn+1
entao a funcao roots(c) fornece um vetor coluna contendo as n razes de
P (x) = 0.
Ana Maria A. C. Rocha (DPS/UM)

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

>> c = [1 2 -13 -14 24];


>> r = roots(c)

Solucao: r = -4.0000 3.0000 -2.0000 1.0000

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

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

Transposta de matriz ou vetor


>> A
ans =
2
4
7
2
5
8
3
6
9
Ana Maria A. C. Rocha (DPS/UM)

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

Funcoes especiais de geracao de matrizes

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

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

56 / 137

Sistemas de equac
oes lineares

Adicao e subtraccao de matrizes

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

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

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

Transposta de um vetor ou matriz

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

Ana Maria A. C. Rocha (DPS/UM)

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

Operacoes basicas com matrizes/vetores


Comando
max
min
diag
triu
tril
sort
sortrows
sum
prod
norm(x,1)
norm(x,2)
norm(x,inf)

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

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

61 / 137

Sistemas de equac
oes lineares

Soma das colunas ou linhas de uma matriz

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

=
2 3
5 6
8 9

Ana Maria A. C. Rocha (DPS/UM)

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

Norma de vetores ou matrizes


A
2
4
7

=
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

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

64 / 137

Sistemas de equac
oes lineares

Operacoes elemento a elemento


A
2
4
7

=
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

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

>> A.2
ans =
4
4 9
16 25 36
49 64 81

Comandos do MatLab

2012/13

66 / 137

Sistemas de equac
oes lineares

Determinante de uma matriz

A
2
4
7

=
2 3
5 6
8 9

>> det(A)
ans = -3

Ana Maria A. C. Rocha (DPS/UM)

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

Inversa de uma matriz

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

Ana Maria A. C. Rocha (DPS/UM)

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

Resolucao de sistemas de equacoes lineares


(Eliminac
ao de Gauss)
Resolucao de Ax = B sendo A e B matrizes.
A
2
4
7

=
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

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

69 / 137

Sistemas de equac
oes lineares

Resolucao de sistemas de equacoes lineares


(Eliminac
ao de Gauss)
Resolucao de Ax = v sendo A uma matriz e v um vetor coluna.
A
2
4
7

=
2 3
5 6
8 9

v =
1
2
3

>> x=A\v
x =
0.0000
0
0.3333

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

70 / 137

Sistemas de equac
oes n
ao lineares

Resolucao de sistemas de equacoes nao lineares

No MATLAB o comando utilizada para resolver sistemas de equacoes nao


lineares e denominada fsolve e localiza-se na toolbox de optimizac
ao.
A sua sintaxe de utilizacao e:
[X,FVAL]=FSOLVE(FUN,X0,...)
[X,FVAL,EXITFLAG]=FSOLVE(FUN,X0,...)
[X,FVAL,EXITFLAG,OUTPUT]=FSOLVE(FUN,X0,options,...)
[X,FVAL,EXITFLAG,OUTPUT,JACOB]=FSOLVE(FUN,X0,options,...)

Ana Maria A. C. Rocha (DPS/UM)

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

Comando fsolve: Parametros de entrada


x0 e um vetor proximo da solucao
fun e o nome da M-file com o sistema de func
oes
Para ver as opcoes disponveis fazer: >> optimset(fsolve)
Options - definicao de
DerivativeCheck
Display
off
iter
final
Jacobian
LargeScale
MaxFunEvals
MaxIter
LevenbergMarquardt
LineSearchType
TolFun
TolX
Ana Maria A. C. Rocha (DPS/UM)

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

Comando fsolve: Parametros de sada


x contem o de solucoes
fval contem o vetor das func
oes na solucao
exitflag - descreve valores de sada do fsolve
> 0 indica que convergiu para uma solucao X
= 0 indica que atingiu o MaxFunEvals ou MaxIter
< 0 indica que nao convergiu para uma solucao
output - estrutura que contem informacao acerca da optimizacao
iterations
indica o n
umero de iterac
oes realizadas
funcCount
indica o n
umero de avaliac
oes da funcao
algorithm
indica o algoritmo usado
cgiiterations indica o n
umero de iterac
oes GC realizadas (se large-scale)
stepsize
indica o comprimento de passo final (se medium-scale)
firstorderopt condicao de optimalidade de 1a ordem (se large-scale)
Ana Maria A. C. Rocha (DPS/UM)

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

ou (em substituicao de 2. e 3.)


Ir `a janela de comando do MATLAB e digitar os comandos apresentados
em 2.

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

76 / 137

Sistemas de equac
oes n
ao lineares

Exemplo: solucao

Primeiro apresenta alguns resultados por iteracao.


Iter.
0
1
2
3
4
5

Func
count
3
6
9
12
15
18

f(x)
27.6512
5.33464
0.137328
0.000122467
9.99189e-011
6.63847e-023

Ana Maria A. C. Rocha (DPS/UM)

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

Exemplo: solucao (continuacao)

Depois, o programa retorna os seguintes resultados:


x = 0.5671 0.5671
fval = 1.0e-006 * ( -0.1965 -0.1965)
exitflag = 1
output =
firstorderopt: 3.0791e-007
iterations: 5
funcCount: 16
cgiterations: 4
algorithm: large-scale: trust-region reflective Newton

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

78 / 137

Sistemas de equac
oes n
ao lineares

Exemplo com opcoes


Resolvendo com 2 opcoes (T olX = 103 e T olF un = 102 )
>> options=optimset(TolFun,1e-2,TolX,1e-3);
>> [x,fval,exitflag,output]=fsolve(fun1,x0,options)
Solucao:
x = 0.5663 0.5663
fval = -0.0013 -0.0013
exitflag = 1
output =
firstorderopt: 0.0020
iterations: 4
funcCount: 13
cgiterations: 3
algorithm: large-scale:
Ana Maria A. C. Rocha (DPS/UM)

trust-region reflective Newton

Comandos do MatLab

2012/13

79 / 137

Sistemas de equac
oes n
ao lineares

Exemplo: com Jacobiano


Se quisermos dar a matriz do jacobiano temos que redefinir a M-file:
function [F,G]=fun1(x)
F(1)=2*x(1)-x(2)-exp(-x(1));
F(2)=-x(1)+2*x(2)-exp(-x(2));
if (nargout>1)
G=[2+exp(-x(1)) -1; -1 2+exp(x(2))];
end
E digitar na linha de comandos as seguintes instruc
oes:
>> options=optimset(Jacobian,on);
>> x0=[-1 ; -1];
>> [x,fval,exitflag,output]=fsolve(fun1,x0,options)

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

80 / 137

Interpolac
ao polinomial

Interpolacao polinomial

Uma das tecnicas mais utilizadas para estimar o comportamento de uma


determinada funcao entre dois pontos considerados, e a interpolacao.
Interpolac
ao Spline
Uma spline c
ubica e uma curva suave ajustada ao conjunto de pontos
considerados que, entre cada par de pontos, e determinada por um
polinomio do 3o grau.
Esta tecnica permite obter uma curva suave, ao inves da interpolacao
linear, onde os pontos sao unidos com segmentos de recta.

Ana Maria A. C. Rocha (DPS/UM)

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)

X e um vetor que contem os pontos para a interpolacao


Y contem a funcao ou os respectivos valores da funcao
XX e o valor do ponto (ou vetor de pontos) interpolador
Se quiser determinar uma spline c
ubica natural, tem que forcarque haja
curvatura nula nos extremos.
Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

82 / 137

Interpolac
ao polinomial

Exemplo 1

Considere a seguinte tabela que representa a evolucao da temperatura de


um solido ao longo do tempo:
tempo
temperatura

0
0

2
20

4
60

5
110

Primeiro deve definir os vetores x (tempo) e y (temperatura) com os


dados da tabela.
>> x = [0,2,4,5];
>> y = [0,20,60,110];

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

83 / 137

Interpolac
ao polinomial

Como determinar o valor da spline num ponto

Se pretende determinar a temperatura no instante 4.2 segundos, atraves de


Spline c
ubica completa
>> temp = spline(x, y, 4.2)
Solucao: temp = 67.8720
Spline c
ubica natural
>> temp = spline(x, [0 y 0], 4.2)
Solucao: temp = 72.7130

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

84 / 137

Interpolac
ao polinomial

Como determinar cada segmento da spline

No subintervalo [xi , xi+1 ] a spline e reprsentada por


si (x) = cl1 (x xi )3 + cl2 (x xi )2 + cl3 (x xi ) + cl4
em que [cl1 , cl2 , cl3 , cl4 ] corresponde `a linha l da matriz dos coeficientes.

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

85 / 137

Interpolac
ao polinomial

Como determinar cada segmento da spline (continuacao)


>> cs comp = spline(x,y)
E aparece a seguinte estrutura:
cs_comp =
form:
breaks:
coefs:
pieces:
order:
dim:
pp
breaks
coefs

pp
[0 2 4 5]
[3x4 double]
3
4
1

indica que e da forma polinomial por partes


representa os varios pontos da interpolacao
a matriz dos coeficientes para construir os varios segmentos

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

86 / 137

Interpolac
ao polinomial

Como determinar cada segmento da spline (continuacao)


Para determinar a spline completa (polin
omio de grau 3), para cada um
dos segmentos, deve:
1

ver os coeficientes
>> cs comp.coefs

Solucao:
2

1.5000 -6.5000 17.0000 0


1.5000 2.5000 9.0000 20.0000
1.5000 11.5000 37.0000 60.0000

construir os varios segmentos


(1)

s3 = 1.5(x 0)3 6.5(x 0)2 + 17(x 0) + 0 para x [0, 2]


(2)
s3 = 1.5(x 2)3 + 2.5(x 2)2 + 9(x 2) + 20 para x [2, 4]
(3)
s3 = 1.5(x 4)3 + 11.5(x 4)2 + 37(x 4) + 60 para x [4, 5]
Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

87 / 137

Interpolac
ao polinomial

Como determinar cada spline (continuacao)


Para estimar o valor da spline no ponto 4.2 podemos fazer:
>> cs comp = spline(x,y)
>> a=ppval(cs comp,4.2)
ou
>> a=spline(x,y,4.2)
Se pretende determinar a spline natural, para cada um dos segmentos,
deve fazer:
>> cs nat = spline(x,[0 y 0])
>> cs nat.coefs

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

88 / 137

Interpolac
ao polinomial

Representacao grafica das splines


Se pretender determinar e representar graficamente uma spline completa
noutro intervalo de tempo, deve gerar um novo vetor newx e usa-lo como
3o argumento do comando spline.
>>
>>
>>
>>

newx = [0:.1:10];
newy = spline(x, y, newx);
plot(x,y,o,newx,newy,r);
grid;
30

25

20

15

10

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

10

90 / 137

Interpolac
ao polinomial

Exemplo 3

Considere a seguinte tabela de valores


tempo
temperatura

0
0

1
20

2
60

3
68

4
77

5
110

Pretende-se usar uma spline c


ubica completa para estimar o valor da
temperatura quando x=4.6 segundos:
>> x = [0,1,2,3,4,5];
>> y = [0,20,60,68,77,110];
>> temp1 = spline(x,y,4.6)
Solucao: temp1 = 92.9813

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

91 / 137

Interpolac
ao polinomial

Exemplo 3 (continuacao)

Se quisermos determinar, simultaneamente, a temperatura em diferentes


momentos podemos usar os seguintes comandos:
>> x = [0,1,2,3,4,5];
>> y = [0,20,60,68,77,110];
>> temp2 = spline(x,y,[2.6,4.9])
Solucao: temp2 = [67.3013,105.2020]

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

92 / 137

Interpolac
ao polinomial

Exemplo 3: Representacao grafica


Se quisermos representar graficamente uma curva spline completa
abrangendo outro intervalo de valores, podemos gerar um novo vetor newx
e coloca-lo como terceiro argumento do comando spline.
>>
>>
>>
>>
>>
>>
>>
>>
>>

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;

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

93 / 137

Interpolac
ao polinomial

Exemplo 3: Representacao grafica (continuacao)


Spline Cbica Completa

120

100

80

Graus, F

60

40

20

-20

0.5

1.5

2.5
Tempos

3.5

4.5

Note que na interpolacao linear (cor azul), o grafico de x e y percorre as


coordenadas por meio de rectas, enquanto que o grafico de newx e newy
representa
a spline definida por interpola
cao c
ubica (cor verde).
Ana Maria A. C. Rocha (DPS/UM)
Comandos do MatLab
2012/13

94 / 137

Interpolac
ao polinomial

Exemplo 4

Para o exemplo anterior, determine uma spline c


ubica natural para
estimar o valor da temperatura y quando x = 4.6 segundos:
>> x = [0,1,2,3,4,5];
>> y = [0,20,60,68,77,110];
>> temp1 = spline(x,[0 y 0],4.6)
Solucao: temp1 = 101.4555

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

95 / 137

Interpolac
ao polinomial

Exemplo 4: Representacao grafica


Se quisermos representar graficamente a curva spline natural abrangendo
outro intervalo de valores, podemos gerar um novo vetor newx e inseri-lo
como terceiro argumento do comando spline.
>>
>>
>>
>>
>>
>>
>>
>>
>>

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;

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

96 / 137

Interpolac
ao polinomial

Exemplo 4: Representacao grafica (continuacao)


Spline Cbica Natural

120

100

80

Graus, F

60

40

20

-20

0.5

Ana Maria A. C. Rocha (DPS/UM)

1.5

2.5
Tempos

Comandos do MatLab

3.5

4.5

2012/13

97 / 137

Aproximac
ao dos mnimos quadrados

Aproximacao dos mnimos quadrados

O metodo dos mnimos quadrados permite fazer um ajuste de curvas, para


um conjunto de pontos, por exemplo, adquiridos numa experiencia.
O metodo analtico dos mnimos quadrados, permite encontrar o melhor
modelo que se ajusta ao conjunto de pontos, podendo acontecer que
nenhum dos pontos pertenca ao mesmo.
De notar que este metodo e muito distinto da interpolacao, dado que na
interpolacao a curva ajustada passa por todos os pontos.

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

98 / 137

Aproximac
ao dos mnimos quadrados

Comando polyval

Este comando permite determinar os valores de um polinomio para um


dado conjunto de pontos.
A sua sintaxe de utilizacao e:
y = polyval(coef,x)
coef e um vetor com os coeficientes do polin
omio
x contem os valores para os quais desejamos avaliar o polinomio
y contem os valores do polin
omio

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

99 / 137

Aproximac
ao dos mnimos quadrados

Exemplo 1

Considere os seguinte polin


omio p(x) = 3x2 + 2x + 5.
Pretende-se determinar os valores do polin
omio para x = 4.
>> coef = [3, 2, 5];
>> f = polyval(coef,4)
Solucao: f = 61
Estes comandos tambem podem ser combinados num so:
>> f = polyval([3, 2, 5],4);

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

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

Determine o polinomio de grau 3 que melhor se ajusta aos dados da


tabela, no sentido dos mnimos quadrados.
>> x = [0,1,2,3,4,5];
>> y = [0,20,60,68,77,110];
>> [p,S] = polyfit(x,y,3)
Solucao: p = 1.1019 -9.3175 41.1918 -3.0556
S =
R: [4x4 double]
df: 2
normr: 15.3853
Polinomio: 1.1019x3 9.3175x2 + 41.1918x 3.0556
A
soma dos quadrados dos resduos
e: S.normr2 = 236.7063
Ana Maria A. C. Rocha (DPS/UM)
Comandos do MatLab
2012/13

103 / 137

Aproximac
ao dos mnimos quadrados

Representacao grafica do polinomio


120

Por fim se quiser desenhar o grafico


com os varios pontos e o polin
omio
encontrado (a verde), basta fazer:

100
80
60
40
20
0
20

0.5

1.5

2.5

3.5

4.5

>> newx = 0:0.1:5;


>> newy = polyval(p,newx);
>> plot(x, y, o, newx, newy, g);

Ana Maria A. C. Rocha (DPS/UM)

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

Determine o polinomio de grau 2 que melhor se ajusta aos dados da


tabela, no sentido dos mnimos quadrados, e calcule a soma dos quadrados
dos resduos.
>>
>>
>>
>>

x = [2.5, 3.5, 4, 6, 7];


y = [0, 25, 45, 65, 75];
[p,S] = polyfit(x,y,2)
S.normr2

O polinomio e: f (x) = 3.3464x2 + 47.9971x 98.8069


A soma dos quadrados dos resduos e: 55.9580.

Ana Maria A. C. Rocha (DPS/UM)

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

Determine um polinomio de grau 2, um polin


omio de grau 3 e um
polinomio de grau 4 para ajustar aos dados da tabela, no sentido dos
mnimos quadrados. Avalie os modelos.

Calcule a soma dos quadrados dos resduos, para cada um dos


polinomios determinados.

Represente graficamente os varios pontos dados e os polinomios


calculados.

Ana Maria A. C. Rocha (DPS/UM)

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;

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

107 / 137

Aproximac
ao dos mnimos quadrados

Exemplo 5 (continuacao)

Os polinomios determinados sao:


p2 (x) = 1.0932x2 + 22.6613x + 13.0522
p3 (x) = 0.0956x3 + 0.9314x2 + 13.3587x + 13.7053
p4 (x) = 0.0111x4 + 0.1950x3 1.1758x2 + 16.7218x + 16.3203
A soma dos quadrados dos resduos para
o polinomio de grau 2 e 1079.4
o polinomio de grau 3 e 499.1589
o polinomio de grau 4 e 397.2293

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

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.

Ana Maria A. C. Rocha (DPS/UM)

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.

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

111 / 137

Integrac
ao num
erica

Comando trapz (continuacao)


Os valores de Y podem ser especificados de varias formas:
Directamente no linha de comandos
>> x = 0:0.1:5;
>> y = x.2+2.*x;
>> Z = trapz(x,y)
Atraves do comando inline
>> x = 0:0.1:5;
>> g = inline(x.2+2.*x);
>> Z = trapz(x,g(x))

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

112 / 137

Integrac
ao num
erica

Comando trapz (continuacao)

Definida numa M-file


function y = fun(x)
y = x.2+2.*x;
e invocando o calculo na linha de comandos
>> x = 0:0.1:5;
>> Z = trapz(x,fun(x))
Nota: como X
e um vetor, a func
ao deve ser definida de forma a
fazer operac
oes elemento a elemento.

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

114 / 137

Integrac
ao num
erica

Calcular
Z


cos(3x + 1)x2 + x1.5 dx

a) usando a regra do trapezio com espacamento 1.


>> x = 1:1:9;
>> y = cos(3.*x+1).*x.2+x.1.5;
>> area = trapz(x,y)

ou
>> area = trapz(y)

Solucao: area = 93.8111


b) usando a regra do trapezio com espacamento 0.1.
>> x = 1:0.1:9;
>> y = cos(3.*x+1).*x.2+x.1.5;
>> area = trapz(x,y)
Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

115 / 137

Integrac
ao num
erica

Outra forma de resolver, usando o comando inline

A funcao a ser integrada pode ser definida atraves do comando inline.


Assim, para calcular o integral acima, basta fazer:
>> x = 1:0.1:9;
>> g = inline(cos(3.*x+1).*x.2+x.1.5);
>> area = trapz(x,g(x))
Solucao: area = 102.4429

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

116 / 137

Integrac
ao num
erica

Ainda, outra forma de resolver, usando uma M-file


A funcao a ser integrada pode estar definida numa M-file, por exemplo,
myfun.m
function y = myfun(x)
y = cos(3.*x+1).*x.2+x.1.5;
Se quisessemos calcular com espacamento 0.01:
>> x = 1:0.01:9;
>> area = trapz(x,myfun(x))
Solucao: area = 102.5100
Sabendo que o valor do integral e 102.5106, o resultado da integracao
numerica torna-se mais exacto, quando se diminui o espacamento.

Ana Maria A. C. Rocha (DPS/UM)

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

Estime o consumo de energia diario desta cidade.


>> x = [1 3 5 7 8 10 12 14 16 18 20 21 22 24]
>> y = [30 29 33 40 39 33 39 38 30 31 45 50 44 30]
>> consumo = trapz(x,y)
Solucao: consumo = 828
Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

118 / 137

Integrac
ao num
erica

Comandos quad e quadl

Um modo mais eficiente de calcular numericamente um integral e atraves


dos comandos
quad
quadl
O comando quad calcula numericamente um integral atraves da regra
recursiva de Simpson.
O comando quadl calcula numericamente um integral atraves da
quadratura adaptativa de Gauss/Lobatto.

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

119 / 137

Integrac
ao num
erica

Comandos quad e quadl


As suas sintaxes de utilizacao sao:
Q = QUAD(FUN,A,B)
Q = QUAD(FUN,A,B,TOL)
Q = QUADL(FUN,A,B)
Q = QUADL(FUN,A,B,TOL)
FUN e o nome da funcao (ou a funcao) a ser integrada
A e o limite inferior de integracao
B e o limite superior de integracao
TOL especifica a tolerancia (valor predefinido de 106 ).
Em geral, o comando quadl produz resultados mais exactos do que quad.
Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

120 / 137

Integrac
ao num
erica

Comandos quad e quadl (continuacao)


A funcao FUN pode ser especificada de varias formas:
Directamente no comando quad
>> Q = quad(1./(x.3-2*x-5),0,2);

Atraves do comando inline


>> F = inline(1./(x.3-2.*x-5));
>> Q = quad(F,0,2);
Definida numa M-file, por exemplo, myfun.m
function y = myfun(x)
y = 1./(x.3-2.*x-5);
e invocando o calculo na linha de comandos
>> Q = quad(@myfun,0,2);
Ana Maria A.que
C. Rocha
(DPS/UM)
Note-se
como
x e um vetor asComandos
operacdo
oMatLab
es devem ser elemento a 2012/13
elemento.121 / 137

Integrac
ao num
erica

Exemplo 3
Calcular
Z

1

1
x +
x+1
2


dx

Directamente na linha de comandos


>>Q=quad(x.2+1./(1+x.2),0,1);
ou
>> Q=quadl(x.2+1./(1+x.2),0,1);
Atraves do comando inline
>> F = inline(x.2+1./(1+x.2));

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

Definida numa M-file, por exemplo, func.m


function y = func(x)
y = x.2+1./(1+x.2);
e invocando o calculo na linha de comandos
>> Q=quad(@func,0,1);
ou
>> Q=quadl(@func,0,1);
Solucao: Q = 1.1187

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

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 )

ode23 - Metodo de Runge-Kutta 2a /3a ordem.


ode45 - Metodo de Runge-Kutta 4a /5a ordem.
Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

125 / 137

Equac
oes Diferenciais

Comandos ode23 e ode45


A sintaxe de utilizacao e:
[T,Y] = ODE23(ODEFUN,TSPAN,Y0,OPTIONS)
[T,Y] = ODE45(ODEFUN,TSPAN,Y0,OPTIONS)

T e um vetor com os valores da variavel independente


Y e um vetor com os valores da solucao
ODEFUN e o nome da funcao que contem a equacao diferencial deve
ser definida numa M-file ou atraves do comando inline.
TSPAN e um vetor com os valores da variavel independente, i.e.,
TSPAN = [T0 TFINAL] ou TSPAN = [T0 T1 ... TFINAL]
Y0 e o vetor das condic
oes iniciais para a variavel dependente
OPTIONS sao opcoes de resolucao (opcional)

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

126 / 137

Equac
oes Diferenciais

Comandos ode23 e ode45 (continuacao)

A funcao ODEFUN pode ser especificada de varias formas:


Atraves do comando inline
Se existir apenas 1 equacao diferencial e que contenha a variavel
dependente e a variavel independente
Atraves de numa M-file
Se existir 1 ou mais (um sistema) equac
oes diferenciais

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

127 / 137

Equac
oes Diferenciais

Opcoes

Para ver as opcoes disponveis fazer:


>> odeset

Alguns dos parametros da funcao odeset mais utilizados sao:


Options - definicao de parametros
OutputFcn
Permite a visualizacao grafica dos resultados
AbsTol
Tolerancia absoluta (por defeito e 1e-6)
InitialStep Passo inicial
MaxStep
Passo maximo
RelTol
Tolerancia relativa (por defeito e 1e-3)

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

129 / 137

Equac
oes Diferenciais

Exemplo 2

Consideremos a equacao diferencial de segunda ordem denominada


Equacao de Van der Pol:
d2 y
dy
+ (y 2 1) + y = 0
2
dt
dt
Podemos rescrever esta equacao como um sistema de equacoes diferenciais
de
primeira ordem

dy1 = y2
dt

dy2

= y2 1 y12 y1
dt

Ana Maria A. C. Rocha (DPS/UM)

Comandos do MatLab

2012/13

130 / 137

Equac
oes Diferenciais

Exemplo 2 (continuacao)

O primeiro passo para simular o sistema e criar um ficheiro .mcontendo


as equacoes diferenciais.
function ydot=volpol(t,y)
ydot(1)=y(2);
ydot(2)=y(2).*(1- y(1).2) - y(1);
ydot=ydot;

Ana Maria A. C. Rocha (DPS/UM)

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

utilizam-se os seguintes comandos:


>> tspan = [0 20];
>> y0 = [0 0.25];
>> [t,y] = ode23(volpol, tspan, y0)

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

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

utilizam-se os seguintes comandos:


>> tspan = 0:2:20;
>> y0 = [0 0.25];
>> [t,y] = ode45(volpol, tspan, y0)

Ana Maria A. C. Rocha (DPS/UM)

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

Ana Maria A. C. Rocha (DPS/UM)

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)

cujo esboco se apresenta na figura seguinte:

Ana Maria A. C. Rocha (DPS/UM)

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

Você também pode gostar