Você está na página 1de 15

1

1 Comandos bsicos em ambientes


MATLAB R e Octave

O objetivo deste apndice apresentar uma srie de comandos bsicos para famili-
arizao com os ambientes MATLAB R
e Octave1 de programao. Cumpre ressaltar que
este apndice no detalhar os resultados obtidos, cabendo ao leitor a interpretao dos
diversos comandos apresentados e tambm se aprofundar consultando o menu de ajuda do
programa.
A Figura 1 ilustra a tela inicial do MATLABR
, enquanto a mesma tela referente
ao ambiente Octave apresentada na Figura 2. Nesta tela, trs ambientes esto visveis:

Janela de comando - Command window: Nesta tela, o usurio digita atribuio


de variveis e pode realizar operaes matemticas diversas.

Pasta de trabalho - Current folder: Antes de iniciar a programao, o usurio


deve alterar a pasta onde o programa salvar os diversos arquivos. Isto pode ser feito
por meio da barra de endereos. A pasta de trabalho exibe todos os arquivos que
esto salvos na pasta indicada na barra de endereos.

Espao de trabalho - Workspace: Aqui o programa mostrar todas as variveis


ativas. possvel conhecer o valor dessas variveis por meio do espao de trabalho.
Uma outra forma de verificar o valor de uma varivel consiste em digitar seu nome
na janela de comando.

Figura 1 Tela inicial do software MATLAB


R
.

No canto superior esquerdo, existe o comando New script. Este comando abrir uma
outra aba para que um script (isto , um conjunto de comandos seja programado e, ento,
1
O Octave um software gratuito e que pode ser obtido neste link.
Captulo 1. Comandos bsicos em ambientes MATLAB
R
e Octave 2

Figura 2 Tela inicial do software Octave.

executado de uma nica vez). Na maior parte das vezes, interessante a programao de
um script para executar as tarefas desejadas como, por exemplo, a integrao numrica
de uma equao diferencial ordinria. Uma vez o script finalizado, o usurio deve salvar
o arquivo, produzindo uma m-file (arquivo com extenso .m) e execut-lo. Isto pode ser
feito atravs do cone destacado na Figura 3.

1.1 Comandos bsicos


Aqui, apresenta-se uma srie de comandos bsicos que o usurio dever testar
na rea de trabalho e compreender o resultado obtido. Por questo de organizao, tais
comandos esto ilustrados nas Tabelas 1 a 4. Recomenda-se que, uma vez compreendidos
os comandos de uma dada tabela, o usurio limpe a rea de trabalho, apague todas as
variveis e feche todas as figuras.
Antes de iniciar os testes, o usurio deve atentar para as seguintes observaes:

O separador decimal deve ser ponto (.) e no vrgula (,);

Evite nomear arquivos e variveis com caracteres como , acentos e espaos;

Evite nomear arquivos e variveis com primeiro caractere numrico;

Alguns comandos foram propositalmente deixados incorretos. Cabe ao usurio a


compreenso do erro;
Captulo 1. Comandos bsicos em ambientes MATLAB
R
e Octave 3

Figura 3 Tela de programao de um script em ambiente MATLAB


R
.

Tenha o hbito de comentar seu cdigo. Isto pode ser feito colocando um % e
escrevendo seu comentrio logo em seguida.

O MATLAB R
, assim como o Octave, conta com dois formatos de ajuda ao usurio.
Para uso do primeiro formato, o usurio deve digitar help < N omedaF uncao > na janela
de comando. Por exemplo, digitando help plot, o programa oferece uma descrio da funo
plot, alm de alguns exemplos de uso. O segundo tipo de ajuda, mais completo, pode ser
acessado por meio da barra de tarefas, localizada na poro superior da tela.
A Tabela 1 apresenta alguns comandos elementares de manipulao de variveis,
ilustrado operaes triviais. J a Tabela 2 tambm apresenta comandos elementares, porm
focados na manipulao de vetores e matrizes. Note que o MATLAB e o Octave consideram
a primeira posio em vetores como o ndice 1 e no 0.
O usurio tambm poder usar comandos como while, if/else e for, j bastante
conhecidos de outras linguagens de programao. No entanto estes comandos sempre
devem ser finalizados com um end.
Captulo 1. Comandos bsicos em ambientes MATLAB
R
e Octave 4

Tabela 1 Comandos bsicos de manipulao de variveis.


Comando Resultado
a=1
b = 3;
c=ab
d = a b + c;
e = a/b
f = a/b + c
g = a/(b + c)
h=3c
k = exp(1)
m=sqrt(2)
rand
figure
clc
clear all
close all

A Tabela 3 apresenta outros comandos de manipulao de vetores e matrizes,


porm em um nvel de profundidade maior do que aqueles apresentados na Tabela 2. J a
Tabela 4 ilustra o uso das diversas funes trigonomtricas e de manipulao de nmeros
complexos disponveis. importante ressaltar que o uso das funes trigonomtricas exige
que os ngulos sejam fornecidos em rad.
Tanto o MATLAB R
quanto o Octave so capazes de manipular arquivos-texto. A
Tabela 5 ilustra alguns comandos necessrios para salvar resultados de interesse em um
arquivo-texto e tambm como fazer sua leitura.
Tambm interessante exibir na forma grfica os resultados obtidos. Para tanto,
considere os comandos apresentados na Tabela 6. Tais comandos necessitam do arquivo
salvo por ocasio dos estudos realizados na Tabela 5. Note que o usurio deve saber, a
priori, a ordenao das colunas da matriz com os resultados de interesse.

1.2 Construindo funes


Conforme visto no exemplo anterior, caso fosse necessrio gerar um grande nmero
de sries temporais, o usurio deveria repetir exaustivamente o comando de criao de
sries temporais. Visando facilitar esta tarefa repetitiva, possvel construir funes. Uma
forma bastante fcil de construir funes acionar a criao de um novo script e iniciar
com a seguinte sequncia de comando:

f unction[saidas] = N omedaF uncao(entradas)


Captulo 1. Comandos bsicos em ambientes MATLAB
R
e Octave 5

Tabela 2 Comandos bsicos de manipulao de vetores e matrizes.


Comando Resultado
a=1
b = 3;
v1 = [a b]
v2 = [a; b]
v3 = v1
v4 = v1 v2
v5 = 34 + v1
v2 v1
v6 = linspace(0, 10)
v7 = linspace(0, 10, 50)
v8 = [0 : 0.01 : 5];
N = length(v8)
eye(3, 3)
M 1 = [1 2 3; 6 7 8; 1 14 16]
M 2 = [v1; v1]
M3 = 4 + M2
M4 = 5 M2
M 5 = M 2. 2
M 6 = inv(M 1)
det(M1)

O termo saidas indica qual(is) varivel(is) a funo ir devolver. J o termo entradas


indica qual(is) varivel(is) so necessrias para que a saidas seja calculado.
Antes de usar a funo, voc dever salvar o arquivo. fundamental que o nome do
arquivo .m seja exatamente igual ao nome da funo criada. Para usar sua funo dentro
de um script principal, basta digitar [saidas] = N omedaF uncao(entradas).
Um ltimo comentrio deve ser feito. A menos que voc declare uma determinada
varivel como global ou como uma sada, variveis internas s funes no so ecoadas na
janela de comandos e no espao de trabalho.

1.3 Construo de grficos tridimensionais


possvel utilizar o MATLAB
R
e Octave para gerar grficos tridimensionais.
Vejamos algumas funes.
Alm de curvas no espao, possvel tambm construir superfcies dadas como
funes de duas variveis. Uma forma de construir tais curvas utilizar o comando meshgrid.
Captulo 1. Comandos bsicos em ambientes MATLAB
R
e Octave 6

Tabela 3 Outros comandos de manipulao de vetores e matrizes.


Comando Resultado
x = linspace(0, 10)
y =x2
y = x. 2
int = trapz(x, y)
z = y + 45
w = 12 y
std(w)
mean(w)
abs(w)
aux = f ind(x > 5)
aux2 = f ind(x > 2 & x < 8)
aux3 = f ind(x > 2 | x < 8)
x(1)
x(2)
x(3 : 10)
M = magic(5)
M (1, 1)
M (3, 2)
M (2 : 4, 1 : 3)
M (:, 1)
M (:, 3 : 5)

Desejamos, por exemplo, construir o grfico da funo:


sin( x2 + y 2 )
f (x, y) = 2 ; 8 < x < 8, 8 < y < 8. (1.1)
x + y2
A Tabela 8 apresenta uma srie de comandos necessrios para a visualizao desta
funo, bem como outras formas representativas que podem ser de interesse do leitor.
Uma outra forma de exibir funes de duas variveis consiste em usar um grfico
de cores. Suponha que desejemos representar a funo dada pela Equao 1.1 por meio de
um grfico de cores.
O comando pcolor ideal para representar os valores de uma matriz por meio
de cores. Note que sua sintaxe tem como dois primeiros parmetros os vetores e um
terceiro que a matriz a ser representada. Neste exemplo, os elementos das matrizes esto
relacionados a elementos de dois vetores.
Este ltimo exemplo introduz uma srie de novos conceitos quando comparados
com os comandos at aqui apresentados. Em primeiro lugar, nota-se o uso do comando
for, bastante comum em programao. Cada comando for deve ser encerrado por um
comando end. As variveis contadoras contx e conty variam da primeira posio dos
Captulo 1. Comandos bsicos em ambientes MATLAB
R
e Octave 7

Tabela 4 Uso de funes trigonomtricas e de nmeros complexos.


Comando Resultado
pi
x = linspace(0, 2 pi)
y = cos(x)
z = sin(x)
w = tan(x)
help atan2
help asin
y. 2 + z. 2
i
j
exp(i x)
a = 1;
b = 4;
g =a+ib
modg = abs(g)
argg = angle(g)

Tabela 5 Manipulao de arquivos-texto.


Comando Resultado
x = linspace(0, 2 pi)
y = cos(x)
z = sin(x)
w = tan(x)
M atriz = [x y z w ];
save Resultados.txt Matriz -ascii
clc
clear all
close all
load Resultados.txt

vetores associados at a ltima. Note que, diferente de outras linguagens de programao,


o MATLAB R
utiliza 1 para a primeira posio do vetor.
Um outro comando bastante til apresentado o set. Este comando est associado
a trocar alguma propriedade de um elemento. No caso, foi definida uma varivel h como o
resultado da funo pcolor. Em seguida, foi trocada da varivel h a propriedade edgecolor
para none. Para que voc tenha acesso a todas as propriedades de um elemento, digite
get(NomedoElemento).
Captulo 1. Comandos bsicos em ambientes MATLAB
R
e Octave 8

Tabela 6 Comandos para gerao de grficos bidimensionais.


Comando Resultado
load Resultados.txt
x=Resultados(:,1);
y=Resultados(:,2);
z=Resultados(:,3);
w=Resultados(:,4);
Fig1=figure;
close(Fig1);
Fig2=figure(units,normalized,position,[.1 .1 .8 .8],color,w);
plot(x,y,k)
hold on
plot(x,z,r)
plot(x,w,g)
xlabel(x)
ylabel(funcao)
legend(y,z,w)
title(Resultados graficos)
set(gca,ylim,[-1.2 1.2])
set(gca,fontsize,18)

Tabela 7 Primeira sequncia de comandos para gerao de grficos bidimensionais.


Comando Resultado
t=linspace(0,2*pi);
x=cos(t);
y=sin(t);
z=t;
plot3(x,y,z,k);
xlabel(x);
ylabel(y);
zlabel(z);

1.4 Integrao de equaes diferenciais ordinrias


Tanto o MATLAB R
quanto o Octave so ferramentas bastante poderosas para a
integrao numrica de equaes diferenciais ordinrias lineares ou no-lineares. Estas
classes de equaes so encontradas em diversos problemas de engenharia, abrangendo
desde tpicos relativos engenharia civil como, por exemplo, dinmica de estruturas at
temas atinentes engenharia eltrica (anlise de circuitos eltricos). Esta Seo apresentar
uma srie de equaes diferenciais resolvidas numericamente.
Inicialmente, considera-se o problema de vibraes foradas e amortecidas, gover-
Captulo 1. Comandos bsicos em ambientes MATLAB
R
e Octave 9

Tabela 8 Sequncia de comandos para superfcies dadas por funes de duas variveis.
Comando Resultado
range = linspace(8, 8, 41);
[X, Y ] = meshgrid(range, range)
Z = sin(sqrt(X. 2 + Y. 2))./sqrt(X. 2 + Y. 2);
surf (X, Y, Z);
surf ace(X, Y, Z);
waterf all(X, Y, Z);
contour(X, Y, Z);

Tabela 9 Sequncia de comandos para produzir grficos de cores para funes de duas
variveis.
Comando Resultado
vetorx = linspace(8, 8, 41);
vetory = linspace(8, 8, 41);
f orcontx = 1 : length(vetorx);
f orconty = 1 : length(vetory);
xcalc = vetorx(contx);
ycalc = vetory(conty);
M atriz(contx, conty) = sin(sqrt(xcalc2 + ycalc2 ))/sqrt(xcalc2 + ycalc2 );
end
end
pcolor(vetorx, vetory, M atriz);
h = pcolor(vetorx, vetory, M atriz);
set(h, edgecolor , none );
colorbar;

nado pela Equao 1.2 e sujeita s condies iniciais indicadas:

F0
u + 2 u + 2 u = cos(t), u(0) = 0.1, u(0) = 0 (1.2)
m
Aqui, ser descrito o uso da funo ode45 do MATLAB R
, que utiliza o Mtodo
de Runge-Kutta para integrao numrica. Em ambiente Octave, a mesma sequncia
de comandos deve ser aplicada, porm substituindo o comando ode45 para lsode. Alm
disso, a sintaxe da funo lsode exige que a varivel de integrao (no caso, o tempo) seja
declarada aps a varivel que representa a incgnita.
Em ambos os ambientes de programao, necessrio transformar a Equao 1.1
(equao de segunda ordem) em um sistema de equaes de primeira ordem. Isto feito por
meio da seguinte mudana de variveis x1 = u e x2 = u. Esta mudana permite escrever a
Equao 1.2 na seguinte forma:
Captulo 1. Comandos bsicos em ambientes MATLAB
R
e Octave 10

x1 = u = x2 (1.3)
F0
x2 = u = 2 u 2 u = 2x2 2 x1 + cos(t) (1.4)
m

ou, na forma matricial, por:

x = Ax + b (1.5)
x = {x1 x 2 }t (1.6)
S T
0 1 V
A=U 2
(1.7)
2
S T
0
b=U V (1.8)
F0
m
cos(t)

Para a integrao numrica da Equao 1.2, sero construdos um script principal


e tambm uma funo annima. O script principal ter a seguinte sequncia de comandos:

Tabela 10 Sequncia de comandos para a integrao numrica de uma equao diferencial


ordinria.
Comando Resultado
clc;
clear all;
close all;
zeta=0.01;
w=2;
m=1;
F0=1;
wbarra=1.2*w;
T0=0;
Tf=30;
dt=0.01;
u0=0.1;
up0=0;
t = [T 0 : 0.01 : T f ];
x0 = [u0; up0];
f = @(t, x) Integrador(t, x, zeta, w, F 0, m, wbarra);
[tsim, xsim] = ode45(f, t, x0);
u = xsim(:, 1);
up = xsim(:, 2);

A Tabela 10 apresenta os comandos a serem utilizados no ambiente MATLAB R


.
Para o uso em Octave, o usurio dever utilizar f = @(x, t) Integrador(t, x, zeta, w, F 0, m, wbarra);
Captulo 1. Comandos bsicos em ambientes MATLAB
R
e Octave 11

e [tsim, xsim] = lsode(f, x0, t); ao invs de algumas das linhas mostradas na referida
Tabela. J a funo2 ser dada pela sequncia apresentada na Tabela 11

Tabela 11 Sequncia de comandos para a gerao de uma funo utilizada na rotina de


integrao numrica.
Comando Resultado
f unction xp = Integrador(t, x, zeta, w, F 0, m, wbarra);
A = [0 1; w2 2 zeta w];
b = [0; F 0/m cos(wbarra t)];
xp=A*x+b;

Note que o leitor pode, internamente funo, definir o deslocamento u e a veloci-


dade u acessando as posies correspondentes da varivel vetorial x. Este procedimento
pode ser interessante na resoluo de equaes diferenciais ordinrias no-lineares.
Retomando os comandos apresentados na Tabela 10, a varivel tsim contm o
vetor de tempo utilizado na integrao numrica. No caso, foi exigido que a funo ode45
utilizasse o vetor de tempo definido pelo usurio. A varivel xsim , neste caso, uma
matriz com duas colunas e nmero de linhas igual ao nmero de posies do vetor tsim.
A primeira coluna contm a srie temporal referente primeira posio do vetor x (aqui,
definido como o deslocamento u). J a segunda coluna contm a varivel correspondente
segunda posio do vetor x, no caso a velocidade u.

2
A segunda e a terceira linha da funo podem ser substitudas pela sequncia de comandos xp(1, 1) =
x(2); xp(2, 1) = 2 zeta w x(2) w2 x(1) + F 0/m cos(wbarra t). Estas expresses correspondem
exatamente equao diferencial de primeira ordem definida na forma matricial.
12

2 Exerccios propostos - temas gerais

2.1 Exerccio 1
Construa um script que iniciado limpando a janela de comandos, apagando todas
as variveis e fechando todas as figuras.
O seu script deve gerar sries temporais para a funo u(t) = Aen t cos(d t + ),
para 0 < t < 50 para os seguintes conjuntos de parmetros:


Srie 1: A = 1, = 90 , n = 2, = 0,05 e d = n 1 2

Srie 2: A = 1, = 90 , n = 2, = 0,15 e d = n 1 2

Exiba, em um mesmo grfico e com legendas, as duas sries temporais.

2.2 Exerccio 2
Construa cinco sries temporais anlogas do exerccio anterior, porm considerando
trs sries adicionais:


Srie 3: A = 1, = 90 , n = 2, = 0,25 e d = n 1 2

Srie 4: A = 1, = 90 , n = 2, = 0,35 e d = n 1 2

Srie 5: A = 1, = 90 , n = 2, = 0,75 e d = n 1 2

Exiba as cinco sries em um mesmo grfico. No se esquea de dar rtulos aos eixos
e tambm de identificar as legendas corretamente.

2.3 Exerccio 3
Considere a equao:

1
D= (2.1)
(1 2 )2 + (2)2

Considerando o intervalo 0 < < 6, construa um script que mostre, em um mesmo


grfico, a funo D para os mesmos valores de adotados nos Exerccios 1 e 2.
Captulo 2. Exerccios propostos - temas gerais 13

2.4 Exerccio 4
Considere a funo dada por f (x, y) = ax2 + by 2 . Considerando a = 1 e b = 2,
construa uma rotina que construa o grfico de f (x, y) no domnio 1 < x < 11 < y < 1.

2.5 Exerccio 5
Considere a Equao de van der Pol dada por q + (q 2 1)q + q = 0, sendo
= 0,01. Construa um simulador para a obteno numrica da soluo q(t) para um
determinado par de condies iniciais q(0) e q(0). Obtenha, em um mesmo grfico, as sries
temporais q(t) para as seguintes condies iniciais: q(0) = q(0) = 0; q(0) = 0.1, q(0) = 0 e
q(0) = 5, q(0) = 0.

2.6 Exerccio 6
Considere a Equao de Mathieu dada por u + (1 + sin(nt))u = 0. Considerando
como condies iniciais u(0) = 0.1 e u(0) = 0 e tambm = 0.2, obtenha as sries
temporais para n = 1 e n = 2.

2.7 Exerccio 7
Considere uma viga bi-apoiada, submetido ao carregamento uniforme q = 10kN/m.
Esta viga possui seo transversal retangular de dimenses b = 10cm e h = 30cm e
comprimento L = 3m. O momento fletor dado por: M (x) = (qx/2)(L x).
Mostre o diagrama de momentos fletores ao longo da viga, bem como a mxima
tenso normal de trao ao longo do comprimento. Dados Iy = bh3 /12 e (z) = M (x)z/Iy .

2.8 Exerccio 8
A equao de uma estrutura modelada como um sistema de um grau de liberdade
dada por:
mu + cu + ku = F0 cos(t) (2.2)

Sabe-se que a frequncia natural do sistema = k/m e sua taxa de amorteci-
mento dada por = c/2m valem, respectivamente 2rad/s e 0,05. Sabe-se que nenhuma
fora externa atua nesta estrutura. Sabendo-se que em t = 0 o seu deslocamento u = 0.1m
e sua velocidade nula, obtenha a srie temporal de deslocamento u(t)
Captulo 2. Exerccios propostos - temas gerais 14

2.9 Exerccio 9
Com base no mesmo exemplo anteriormente estudado, simule o problema de
vibrao livre condio para os seguintes valores de : = 0; 0,01; 0,10; 1; 1,2. Mantenha
os demais parmetros como indicados no Exerccio 2.

2.10 Exerccio 10
Com base no mesmo exemplo anteriormente estudado, retome o problema forado
harmonicamente. Obtenha a srie temporal de deslocamento na condio de ressonncia
para dois valores de taxa de amortecimento: = 0 e = 0,05.
15

Referncias