Академический Документы
Профессиональный Документы
Культура Документы
morales@ita.br
2012
1 Janelas do Matlab
Uma breve descrição das janelas do Matlab:
• command window: janela na qual são colocadas linhas de comando
e na qual são apresentados os resultados e as mensagens de erro.
Se quisermos limpar a janela command window devemos comandar
clc ;
1
• current folder: janela que mostra todo o conteúdo presente na pasta
selecionada no toolbar current folder.
2 Criando um escalar
x = 0.2
• guarda o valor escalar 0, 2 na variável x;
• deve-se utilizar o ponto decimal no lugar da vı́rgula;
• para que o matlab não repita o valor da variável na “command window”
acrescente um ponto-vı́rgula no final (exemplo: x = 0.2;);
• o nome de uma variável pode ser composto por várias letras e números,
iniciando sempre com uma letra (exemplo: variavelx1 = 0.2)
2
3.2 colon operator
x = x1:step:xn
x = [1,2,3]’
3
5 lendo o comprimento de um vetor - co-
mando length
n = length(x)
• retorna o número de elementos de um vetor linha ou coluna x.
4
7.2 comando ones
A = ones(m,n)
• constrói uma matriz de unitários com m linhas e n colunas.
5
10 criando funções
Uma função possui a seguinte estrutura:
• quando criamos uma m-file para uma função, devemos salvá-la com o
mesmo nome da função, exemplo: NomeDaFuncao.m;
x = 0.2;
y = NomeDaFuncao(x);
function y = PolarArrasto(x,a0,a1,a2)
y = a0 + a1*x + a2*x^2;
6
Também podemos colocar os valores dos parâmetros CD0, k1 e k em um
vetor paramPolar:
function CD = PolarArrasto(CL,paramPolar)
CD0 = paramPolar(1);
k1 = paramPolar(2);
k = paramPolar(3);
CD = CD0 + k1*CL + k*CL^2;
11 structures
Dados de vários tipos podem ser agrupados em uma “structure”: escalares,
vetores, matrizes etc ...
H0 = 0 m
T0 = 288, 15 K
g0 = 9, 80665 m/s2
ρ0 = 1, 225 kg/m3
L = −6, 5 × 10−3 K/m
R = 287, 053 m2/s2 -K
7
paramAtm.H0 = 0;
paramAtm.T0 = 288.15;
paramAtm.g0 = 9.80665;
paramAtm.rho0 = 1.225;
paramAtm.L = -6.5*10^(-3);
paramAtm.R = 287.053;
R = paramAtm.R
12 if - else
Estrutura do if - else:
if estrutura lógica
.
.
.
else
.
.
.
end
Na estrutura lógica podemos utilizar operadores relacionais e operado-
res lógicos. Exemplos de operadores relacionais: igual (==), diferente ( =),
maior (>), maior ou igual (>=), menor (<), menor ou igual (<=). Exemplos
de operadores relacionais: e (&), ou (|).
8
function T = temperatura(H,paramAtm)
T0 = paramAtm.T0;
L = paramAtm.L;
H0 = paramAtm.H0;
if H <= 11000
T = T0 + L*(H-H0);
else
T = temperatura(11000,paramAtm);
end
9
13 for
Estrutura do for:
for k = kinicial:passo:kfinal
.
.
.
end
ou simplesmente:
ẏy (t) = f (t, y (t))
onde t ∈ I ⊂ R, y ∈ N ⊂ Rn e f : I × N → Rn .
10
O Teorema Fundamental do Cálculo estabelece uma importante cone-
xão entre as equações diferenciais e as intregrais, dentro de algumas condições
(vide mat-12): Z tf
y (tf ) = x (ti ) + f (s, y (s))ds
ti
• a condição inicial yi ;
14.1 ode45
Para utilizar o ode45 devemos comandar:
• o nome da função dinâmica (f), deve ser prefixada pelo “arroba” (@);
11
O resultado numérico ficará guardado na estrutura sol. Para extrair o
vetor tempo escolhido pelo ode45 comanda-se:
T = sol.x;
Este vetor T possui a seguinte forma:
T = ti t2 t3 . . . tf
E para extrair a solução associada a este vetor tempo comanda-se:
Y = sol.y;
Note que Y é uma matriz e que possui a seguinte forma:
y1 (ti ) y1 (t2 ) y1 (t3 ) . . . y1 (tf )
y2 (ti ) y2 (t2 ) y2 (t3 ) . . . y2 (tf )
Y = .. .. .. ..
. . . .
yn (ti ) yn (t2 ) yn (t3 ) . . . yn (tf )
12
14.4 Exemplo: Atrator Caótico de Lorenz
As equações de Lorenz resultam da simplificação de modelos de convecção
atmosférica, e são descritas pelo sistema de equações diferenciais ordinárias
a seguir:
ẏ1 = σ(y2 − y1 )
ẏ2 = y1 (ρ − y3 ) − y2
ẏ3 = y1 y2 − βy3
parametros.sigma = 10;
parametros.r = 28;
parametros.b = 8/3;
tf = 25;
yi = [5;5;15];
sol = ode45(@LorenzDinam,[0 tf],yi,[],parametros);
T = 0:0.01:tf;
Y = deval(sol,T);
15 plotagem
15.1 plot
Para visualizar a trajetória de cada um dos estados podemos usar o comando
plot:
13
figure
plot(T,Y(1,:))
xlabel(’tempo’),ylabel(’y1’)
figure
plot(T,Y(2,:))
xlabel(’tempo’),ylabel(’y2’)
figure
plot(T,Y(3,:))
xlabel(’tempo’),ylabel(’y3’)
parametros.sigma = 10;
parametros.r = 28;
parametros.b = 8/3;
tf = 25;
yiA = [5;5;15];
yiB = yiA + [1e-5;0;0];
solA = ode45(@LorenzDinam,[0 tf],yiA,[],parametros);
solB = ode45(@LorenzDinam,[0 tf],yiB,[],parametros);
T = 0:0.01:tf;
YA = deval(solA,T);
YB = deval(solB,T);
figure
plot(T,YA(1,:),T,YB(1,:))
xlabel(’tempo’),ylabel(’y1’)
legend(’simulacao A’,’simulacao B’)
figure
plot(T,YA(2,:),T,YB(2,:))
xlabel(’tempo’),ylabel(’y2’)
legend(’simulacao A’,’simulacao B’)
figure
plot(T,YA(3,:),T,YB(3,:))
xlabel(’tempo’),ylabel(’y3’)
legend(’simulacao A’,’simulacao B’)
14
15.2 subplot
Se quisermos colocar vários gráficos numa mesma figura podemos usar o
comando subplot antes de cada plot:
subplot(linhas,colunas,numero)
figure
subplot(311),plot(T,YA(1,:),T,YB(1,:))
xlabel(’tempo’),ylabel(’y1’)
legend(’simulacao A’,’simulacao B’)
subplot(312),plot(T,YA(2,:),T,YB(2,:))
xlabel(’tempo’),ylabel(’y2’)
legend(’simulacao A’,’simulacao B’)
subplot(313),plot(T,YA(3,:),T,YB(3,:))
xlabel(’tempo’),ylabel(’y3’)
legend(’simulacao A’,’simulacao B’)
15.3 plot3
Para a visualização de uma linha tri-dimensional podemos usar o comando
plot3.
figure
plot3(YA(1,:),YA(2:),YA(3,:))
xlabel(’y1’), ylabel(’y2’), zlabel(’y3’)
15
segunda lei de Newton para rotação é ignorada e os efeitos de rotação são
considerados instantâneos.
onde:
V é a velocidade aerodinâmica;
γ é o ângulo de trajetória;
α é o ângulo de ataque;
forças aerodinâmicos:
CL = CL0 + CLα α
onde CLα é uma derivada de estabilidade;
CD = CD0 + K1 CL + KCL2
obs: os coeficientes da polar de arrasto também são funções do número
de Mach e do número de Reynolds.
16
modelo da força propulsiva:
nV nρ
V ρ
F = δmFmaxi ;
Vi ρi
onde:
δm é a deflexão da manete do motor (0 ≤ δm ≤ 1);
Fmaxi , Vi e ρi são valores de referêcia do modelo propulsivo.
estados e controles:
V
γ δm
x= , u=
H α
xo
Para uma aeronave tipo Airbus 320, cruzando a 10000 metros de altitude
com velocidade aerodinâmica de 210 m/s:
16.1 exercicio
Faça uma simulação da aeronave com controles α = 5 graus e δm = 0.5.
Repare que a velocidade, o ângulo de trajetória e a altitude apresentam um
movimento oscilatório, também conhecido como “fugoidal”. Neste movimento
há uma troca oscilatória de energia potencial e energia cinética, há dissipação
pela força de arrasto e há trabalho da força propulsiva.
17 fsolve
Intuitivamente, um ponto de equilı́brio é uma condição em que não há ten-
dencia de alteração do movimento ao longo do tempo. Colocar a aeronave
em um ponto inicial de equilı́brio significa encontrar os valores dos estados
e controles tais que a aeronave continuaria voando sem as oscilações apre-
sentadas na simulação anterior. Para isso é necessário que as derivadas dos
estados V , γ e H sejam nulas. Assim, temos que encontrar a solução para o
sistema de equações não lineares:
17
0 = F cos(α + αF ) − D − mg sin γ
0 = F sin(α + αF ) + L − mg cos γ
0 = V sin γ
0 = F cos(α + αF ) − D − mg sin γ
0 = F sin(α + αF ) + L − mg cos γ
18 Trabalho
Utilize o comando fsolve para realizar esta tarefa. Se o aluno já estiver
familiarizado com qualquer outro algoritmo que substitua o fsolve pode
utilizá-lo.
18.1 dicas
• Lembre-se que para resolver um sistema de duas equações precisamos
usar duas variáveis. Como a velocidade e a altitude de cruzeiro são
dados de entrada do problema, e γ deve ser zero para que Ḣ seja nulo,
sobraram apenas as variáveis de controle δm e α para resolver o sistema
de duas equações.
• não deixe para última hora! Envie já suas dúvidas para morales@ita.br
18