Você está na página 1de 10

ENGENHARIA Mini Curso MatLab I

goo.gl/w6sG1u

ROTEIRO DO MINI CURSO: MatLab I

APLICAÇÕES BÁSICAS COM O MatLab

1. Funções definidas pelo usuário

 Potenciação
 Raiz quadrada
 Logaritmo (logaritmo natural)
 Função exponencial
 Constantes predefinidas

2. Gráficos

 Atributos das funções gráficas

3. Laços de repetição

 for
 while
o Exibição de variáveis
o Conversão de tipo de variáveis

4. Estruturas condicionais

 if
 else
 elseif

Prof. Adriano C. Mazotti

1
ENGENHARIA Mini Curso MatLab I
goo.gl/w6sG1u

Exemplo 1 (função que depende de apenas uma variável)

Calculando o valor de 𝜁 em função dos valores de 𝑀𝑝 no command window:

Escrevendo a equação 𝑝/ 𝑀𝑝 = 0,15 (15%):


zeta = (-log(.15))/(sqrt(pi^2 +(log(.15)^2)))

No command window irá aparecer a seguinte resposta:


zeta =

0.5169

Escrevendo a equação 𝑝/ 𝑀𝑝 = 0,08 (8%):


zeta = (-log(.08))/(sqrt(pi^2 +(log(.08)^2)))

No command window irá aparecer a seguinte resposta:


zeta =

0.6266

Também pode-se declarar a variável 𝑀𝑝 , atribuindo um valor para ela e declarar


a equação com a variável explicita. 𝑝/ 𝑀𝑝 = 0,08 (8%):
M_p = .08;
zeta = (-log(.08))/(sqrt(pi^2 +(log(.08)^2)))

No command window irá aparecer a seguinte resposta:


zeta =

0.6266

2
ENGENHARIA Mini Curso MatLab I
goo.gl/w6sG1u

Escrevendo uma função que realiza esse cálculo: Abra um novo script (opção “new
script” no menu do MatLab), o que é escrito neste editor de textos, será salvo e
executado no command window quando for invocado o nome definido pelo
usuário. Nesse exemplo é criada a função que retorna o valor de 𝜁 (zeta) em
função de 𝑀𝑝 , cujo nome será “amortecimento”:
function zeta = amortecimento(M_p)

zeta = (-log(M_p))/(sqrt(pi^2 +(log(M_p)^2)));

Agora para se obter o valor de 𝜁 𝑝/ 𝑀𝑝 = 0,15 (15%) se escreve no command


window:
zeta = amortecimento(0.15)

No command window irá aparecer a seguinte resposta:


zeta =

0.5169

Exemplo 2 (função que depende de apenas uma variável)

Calculando o valor de 𝑀𝑝 em função dos valores de 𝜁 no command window:

Escrevendo a equação 𝑝/ 𝜁 = 0,12:


M_p = exp((-.12*pi)/(sqrt(1-.12^2)))

No command window irá aparecer a seguinte resposta:


M_p =

0.6840

Criando a função que realiza esse mesmo cálculo no editor de textos:


function M_p = overshoot(zeta)

M_p = exp((-zeta*pi)/(sqrt(1-zeta^2)));

3
ENGENHARIA Mini Curso MatLab I
goo.gl/w6sG1u

Executando a partir da função:


M_p = overshoot(.12)

No command window irá aparecer a seguinte resposta:


M_p =

0.6840

Exemplo 3 (função que depende de mais de uma variável)

Implementando a função que calcula a corrente de um diodo segundo o modelo


de Schockley:
function I_D = i_diodo(I_S, V_D, n, V_T)

I_D = I_S*(exp(V_D/(n*V_T))-1);

Calculando o valor da corrente do diodo 𝐼𝐷 , com a função definida pelo usuário


𝑝/ 𝐼𝑆 = 10−6 𝐴; 𝑉𝐷 = 0,7 𝑉; 𝑛 = 2; 𝑉𝑇 = 0,0257 𝑉:
I_D = i_diodo(1e-6, .7, 2, .0257)

No command window irá aparecer a seguinte resposta:


I_D =

0.8213

Exemplo 4 (função que depende de mais de uma variável)

Criando o script para calcular a função do 𝐻𝑠𝑔𝑚𝑎𝑥 :


function N_sgmax = head(p_2, p_v, gamma, sigma_min, H, H_ps, c_3, g)

N_sgmax = (p_2-p_v)/gamma -sigma_min*H -H_ps -(c_3.^2)/(2*g);

Criando o script para calcular a função do 𝑁𝑃𝑆𝐻𝑅 :


function NPSH_R = npsh(lambda_1, lambda_2, w_3, c_3, g)

NPSH_R = (lambda_1*w_3^2 +lambda_2*c_3.^2)/(2*g);

4
ENGENHARIA Mini Curso MatLab I
goo.gl/w6sG1u

Criando o script para calcular ambas as variáveis ao mesmo tempo (salve com o
nome “exemplo_4”):
p_2 = 10174.44;
p_v = 322;
gamma = 997;
sigma_min = 0.5;
H = 10;
H_ps = 0;
g = 9.81;
c_3 = 6;
H_sgmax = head(p_2, p_v, gamma, sigma_min, H, H_ps, c_3, g)

w_3 = 5;
lambda_1 = .3;
lambda_2 = 1.2;
NPSH_R = npsh(lambda_1, lambda_2, w_3, c_3, g)

No command window irá aparecer a seguinte resposta:


H_sgmax =

3.0472

NPSH_R =

2.5841

5
ENGENHARIA Mini Curso MatLab I
goo.gl/w6sG1u

Exemplo 5 (gráficos de múltiplas funções no MatLab)

Criando o script para realizar o gráfico de ambas as funções ao mesmo tempo


(salve com o nome “exemplo_5”):
p_2 = 10174.44;
p_v = 322;
gamma = 997;
sigma_min = 0.5;
H = 10;
H_ps = 0;
g = 9.81;
c_3 = 0:8;
H_sgmax = head(p_2, p_v, gamma, sigma_min, H, H_ps, c_3, g);
plot(c_3, H_sgmax,'--r','linewidth',2);
hold on

w_3 = 5;
lambda_1 = .3;
lambda_2 = 1.2;
NPSH_R = npsh(lambda_1, lambda_2, w_3, c_3, g);
plot(c_3, NPSH_R,'-b','linewidth',2);

legend('H_{sgmax}', 'NPSH_{R}');

ylabel('mca');
xlabel('c_{3} [m/s]');

Resposta na janela gráfica do MatLab:

5
Hsgmax
4.5
NPSHR
4

3.5

3
mca

2.5

1.5

0.5

0
0 1 2 3 4 5 6 7 8
c 3 [m/s]

6
ENGENHARIA Mini Curso MatLab I
goo.gl/w6sG1u

Exemplo 6 (gráficos de múltiplas funções no MatLab e laço for)

Alterando-se o código e salvando como “exemplo_6”:


clear all
p_2 = 10174.44;
p_v = 322;
gamma = 997;
sigma_min = 0.5;
H = 10;
H_ps = 0;
g = 9.81;
c_3 = 0:8;
H_sgmax = head(p_2, p_v, gamma, sigma_min, H, H_ps, c_3, g);
plot(c_3, H_sgmax,'--r','linewidth',2);
hold on

w_3 = [2 5 7];
lambda_1 = .3;
lambda_2 = 1.2;
for i = 1:length(w_3)
NPSH_R(:,i) = npsh(lambda_1, lambda_2, w_3(i), c_3, g);
end
plot(c_3, NPSH_R(:,1),'-sb','linewidth',2);
plot(c_3, NPSH_R(:,2),'-^b','linewidth',2);
plot(c_3, NPSH_R(:,3),'-ob','linewidth',2);
legend('H_{sgmax}', 'NPSH_{R}1', 'NPSH_{R}2', 'NPSH_{R}3');
ylabel('mca');
xlabel('c_{3} [m/s]');

Resposta na janela gráfica do MatLab:

5
Hsgmax
4.5
NPSHR1
4 NPSHR2
NPSHR3
3.5

3
mca

2.5

1.5

0.5

0
0 1 2 3 4 5 6 7 8
c 3 [m/s]

7
ENGENHARIA Mini Curso MatLab I
goo.gl/w6sG1u

Exemplo 7 (laço while)

O código para gerar a sequência Fibonacci pode ser escrito da seguinte maneira
(salvar como “exemplo_7”):
close all
clear all
clc

format compact
n = 20; % quantidade de valores a serem mostrados
f_1 = 1; % primeiro valor
f_2 = 1; % segundo valor
disp(num2str(f_1));
disp(num2str(f_2));
i = 1; % contador
while(i <= (n-2))
f = f_1 + f_2;
disp(num2str(f));
f_1 = f_2;
f_2 = f;
i = i + 1;
end
format loose

No command window irá aparecer a seguinte resposta:


1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765

8
ENGENHARIA Mini Curso MatLab I
goo.gl/w6sG1u

Exemplo 8 (blocos if, else e elseif)

Realizar script para fazer a classificação de sistemas de segunda ordem no


MatLab, salvar o arquivo como “exemplo 8”:
clear all
close all
clc

K = 0; % 0->inst 5->mar 9->crit


poli = [1 4 (-5+K)];
r = roots(poli);

if(real(r(1))>0 || real(r(2))>0)
disp('instavel');
elseif(real(r(1))==0 || real(r(2))==0)
disp('estabilidade marginal');
else
disp('estável e');
if(imag(r(1))==0 && imag(r(2))==0 && real(r(1))==real(r(2)))
disp('criticamente amortecido');
elseif(imag(r(1))==0 && imag(r(2))==0)
disp('superamortecido');
else
disp('sub amortecido');
end
end

x_min = -6;
x_max = 2;
y_min = -4;
y_max = -y_min;
plot([x_min x_max],[0 0],'-k'); hold on
plot([0 0],[y_min y_max],'-k');
plot(real(r),imag(r),'xr','linewidth',3,'markersize',16)
axis([x_min x_max y_min y_max]);
ylabel('eixo \omega');
xlabel('eixo \sigma');

figure(2)
step(tf(K,poli));

No command window irá aparecer a seguinte resposta:


estável e
sub amortecido

9
ENGENHARIA Mini Curso MatLab I
goo.gl/w6sG1u

Resposta na janela gráfica do MatLab:

1
eixo 

-1

-2

-3

-4
-6 -5 -4 -3 -2 -1 0 1 2
eixo 

Step Response
1.6

1.4

1.2

1
Amplitude

0.8

0.6

0.4

0.2

0
0 0.5 1 1.5 2 2.5 3
Time (seconds)

10

Você também pode gostar