Escolar Documentos
Profissional Documentos
Cultura Documentos
Técnicas de Programação
(SUP.0980)
Informações iniciais
Sumário
1. Breve introdução aos softwares SCILAB e MATLAB;
2. Declaração de matrizes e vetores;
3. Funções matemáticas básicas;
4. Principais operadores;
5. Estruturas de decisão condicional e de repetição;
6. Estruturas de controle e de seleção através de flags;
7. Criação de Functions dedicadas;
8. Programação recursiva;
9. Exemplos gerais;
10.Exemplos a serem resolvidos;
11.Desenvolvimento de códigos e algoritmos para aplicações em engenharia
elétrica
➢ Processamento digital de sinal;
➢ Cálculo de grandezas elétricas;
➢ Representação fasorial e a Transformada Discreta de Fourier (TDF);
➢ Regressão linear;
➢ Componentes simétricas. •3
Técnicas de
programação
•4
Técnicas de
programação
SCILAB
Fonte: www.scilab.org
•5
Técnicas de
programação
SCILAB
Principais janelas
Fonte: www.scilab.org •6
Técnicas de
programação
SCILAB
Editor de texto
•7
Técnicas de
programação
MATLAB
Matlab (Matrix Laboratory) é um software de computação numérica que permite, dentre suas
várias funcionalidades, manipulações matriciais, plotagem gráfica de funções e dados,
implementação de códigos e algoritmos e criação de interfaces gráficas.
Fonte: www.mathworks.com •8
Técnicas de
programação
MATLAB
Principais janelas
•9
Técnicas de
programação
MATLAB/SIMULINK
Sistema Eólico e Fotovoltaico Híbrido
Fonte: www.mathworks.com
• 10
Técnicas de
programação
MATLAB/SIMULINK
Sistema Eólico e Fotovoltaico Híbrido
Fonte: www.mathworks.com
• 11
Técnicas de
programação
MATLAB/SIMULINK
Modelagem de veículo elétrico híbrido (HEV)
Fonte: www.mathworks.com
• 12
Técnicas de
programação
MATLAB/SIMULINK
Simulação V2G (Vehicle to Grid)
Fonte: www.mathworks.com
• 13
Técnicas de
programação
SCILAB e MATLAB
• 14
Técnicas de
programação
• 15
Técnicas de
programação
Introdução
Introdução
➢ Quando m=n (número de linhas igual ao de colunas), a matriz é
denominada como sendo quadrada. É de suma importância salientar
que esse tipo de matriz é frequentemente usada no desenvolvimento
de códigos e/ou algoritmos para modelagem de sistemas físicos
representados por um conjunto de n equações simultâneas, com n
variáveis desconhecidas.
• 17
Técnicas de
programação
Introdução
➢ Quando m=n (número de linhas igual ao de colunas), a matriz é
denominada como sendo quadrada. É de suma importância salientar
que esse tipo de matriz é frequentemente usada no desenvolvimento
de códigos e/ou algoritmos para modelagem de sistemas físicos
representados por um conjunto de n equações simultâneas, com n
variáveis desconhecidas.
• 18
Técnicas de
programação
Declaração clássica
➢ A declaração de matrizes e vetores no Console do SCILAB ou no
Command Window do MATLAB deve ser feita através do emprego de
colchetes:
−→ 𝐴 = 1 2 3 4
𝐴= 1234
−→ 𝐵 = 1 2; 3 4
1 2
𝐵=
3 4
−→ 𝐶 = 5 9; 1 7
5 9
𝐶=
1 7
• 19
Técnicas de
programação
Declaração clássica
➢ A declaração de matrizes e vetores no Console do SCILAB ou no
Command Window do MATLAB deve ser feita através do emprego de
colchetes:
−→ 𝐴 = 1 2 3 4 Subscritos
−→ 𝐵 = 1 2; 3 4
1 2
𝐵= 𝐵(1,1) = 1 𝐵(1,2) = 2 𝐴(2,1) = 3 𝐵(2,2) = 4
3 4
−→ 𝐶 = 5 9; 1 7
5 9
𝐶= 𝐶(1,1) = 5 𝐶(1,2) = 9 𝐶(2,1) = 1 𝐶(2,2) = 7
1 7
• 20
Técnicas de
programação
Declaração clássica
➢ A declaração de matrizes e vetores no Console do SCILAB ou no
Command Window do MATLAB deve ser feita através do emprego de
colchetes:
−→ 𝐴 = 1 2 3 4 Subscritos
−→ 𝐵 = 1 2; 3 4
1 2
𝐵= 𝐵(1,1) = 1 𝐵(1,2) = 2 𝐴(2,1) = 3 𝐵(2,2) = 4
3 4
Ponto e vírgula (;) determina
−→ 𝐶 = 5 9; 1 7 as linhas de uma matriz
5 9
𝐶= 𝐶(1,1) = 5 𝐶(1,2) = 9 𝐶(2,1) = 1 𝐶(2,2) = 7
1 7
• 21
Técnicas de
programação
Declaração clássica
−→ 𝐴 = 7 8 1 ;
−→ 𝐵 = 3 5 9 ;
−→ 𝐶 = 2 4 6 ;
−→ 𝐷 = 𝐶 𝐵 𝐴
𝐷 = 246359781
−→ 𝐸 = 𝐴 𝐵 𝐶
𝐸 = 781359246
−→ 𝐹 = 𝐴; 𝐵; 𝐶
7 8 1
𝐹= 3 5 9
2 4 6 • 22
Técnicas de
programação
Declaração clássica
Subscritos
−→ 𝐴 = 7 8 1 ;
𝐷(1,1) = 2 𝐷(1,2) = 4 𝐷(1,3) = 6
−→ 𝐵 = 3 5 9 ;
𝐷(1,4) = 3 𝐷(1,5) = 5 𝐷(1,6) = 9
−→ 𝐶 = 2 4 6 ; 𝐷(1,7) = 7 𝐷(1,8) = 8 𝐷(1,9) = 1
−→ 𝐷 = 𝐶 𝐵 𝐴
𝐸(1,1) = 7 𝐸(1,2) = 8 𝐸(1,3) = 1
𝐷 = 246359781
𝐸(1,4) = 3 𝐸(1,5) = 5 𝐸(1,6) = 9
−→ 𝐸 = 𝐴 𝐵 𝐶
𝐸(1,7) = 2 𝐸(1,8) = 4 𝐸(1,9) = 6
𝐸 = 781359246
−→ 𝐹 = 𝐴; 𝐵; 𝐶 𝐹(1,1) = 7 𝐹(1,2) = 8 𝐹(1,3) = 1
7 8 1 𝐹(2,1) = 3 𝐹(2,2) = 5 𝐹(2,3) = 9
𝐹= 3 5 9 𝐹(3,1) = 2 𝐹(3,2) = 4 𝐹(3,3) = 6
2 4 6 • 23
Técnicas de
programação Declaração de vetores
linearmente espaçados
1) Declaração convencional
−→ 𝐴 = 1: 1: 10
Vetor linearmente espaçado de 1 unidade
𝐴 = 1 2 3 4 5 6 7 8 9 10 no intervalo fechado de 1 a 10
−→ 𝐵 = 1: 0.5: 5
Vetor
Vetorlinearmente
linearmenteespaçado
espaçadodede0.50,5 no
𝐵 = 1 1.5 2 2.5 3 3.5 4 4.5 5 no intervalo fechado do
de de
1 a 15.a 5
−→ 𝐶 = 3: −0.1: 2
Vetor linearmente espaçado de -0.1
𝐶 = 3 2.9 2.8 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2 no intervalo fechado de 3 a 2
2) Declaração usando a função linspace
Vetor com 11 elementos linearmente
−→ 𝐷 = 𝑙𝑖𝑛𝑠𝑝𝑎𝑐𝑒(1,2,11) espaçados no intervalo
fechado de 1 a 2
𝐷 = 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2
• 24
Técnicas de
programação
Função Retorno
Retorna um vetor linha cujos elementos representam a
size(A) dimensão da matriz genérica A (idem para vetor)
det(A) Retorna o determinante de um matriz quadrada genérica A
• 25
Técnicas de
programação
Função Retorno
inv(A) Retorna a matriz inversa da matriz quadrada genérica A
Retorna a matriz transposta da matriz genérica A
A’ (idem para vetor)
Retorna a soma dos elementos da diagonal principal de
trace(A) uma matriz quadrada genérica A
lu(A) Retorna a fatorização LU de uma matriz genérica A
Retorna a decompisção de Cholesky de uma matriz
chol(A) genérica A
Retorna a decomposição triangular ortogonal de uma
qr(A) matriz genérica A
Retorna a decomposição em valores singulares de uma
svd(A) matriz genérica A
• 26
Técnicas de
programação
• 27
Técnicas de
programação
Funções clássicas
• 28
Técnicas de
programação
Funções trigonométricas
• 29
Técnicas de
programação
Funções trigonométricas
secante
secd (grau)
secd(20) 1.0641778
cossecante
csc (radiano)
cos(pi/9) 2.9238044
cossecante
cscd (grau)
cosd(10) 5.7587705
cotangente
cotg (radiano)
cotg(pi/25) 7.9158151
cotangente
cotd (grau)
cotd(30) 1.7320508
• 30
Técnicas de
programação
Funções trigonométricas
arco-cosseno
acosd (graus)
acosd(-0.5) 120
Arco-tangente
atan (radiano)
atan(pi/45) 0.0697001
Arco-tangente
atand (grau)
atand(1) 45
• 31
Técnicas de
programação
Funções trigonométricas
• 32
Técnicas de
programação
Funções trigonométricas
arco-cosseno
acosh hiperbólico
acosh(pi) 1.8115263
arco-tangente
atanh hiperbólico
atanh(pi) 0.329 + 1.570i
arco-cotangente
acoth hiperbólico
acoth(pi) 0.3297653
Arco-secante
asech hiperbólico
asech(pi) 1.2468502i
Arco-cossecante
acsch hiperbólico
acsch(pi) 0.3131659
• 33
Técnicas de
programação
Funções complexas
Parte z=20+8i,
imag imaginária imag(z)
8
x=4+3i,
real Parte real
real(x)
4
MATLAB
ângulo y=8-5i,
angle (radiano) angle(y)
-0.5586
Ângulo
SCILAB
atan(imag(x),real(x)) x=0+5i 1.5707963
(radiano)
• 34
Técnicas de
programação
• 35
Técnicas de
programação
• 36
Técnicas de
programação
2 5 7 −5 1 −1
𝐴= 1 6 3 𝐵 = −2 2 5 𝐴 + 𝐵 =?
6 7 2 −7 2 −1
4 9 4 1 2 2
𝐴= 8 6 5 𝐵= 8 5 4 𝐴 − 𝐵 =?
7 9 2 2 2 1
1 2 3 9 8 7
𝐴= 4 5 6 𝐵= 6 5 4 𝐴 ∗ 𝐵 =?
7 8 9 3 2 1
• 37
Técnicas de
programação
2 5 7 −5 1 −1 −3 6 6
𝐴= 1 6 3 𝐵 = −2 2 5 𝐴 + 𝐵 → −1 8 8
6 7 2 −7 2 −1 −1 9 1
4 9 4 1 2 2 3 7 2
𝐴= 8 6 5 𝐵= 8 5 4 𝐴−𝐵 → 0 1 1
7 9 2 2 2 1 5 7 1
1 2 3 9 8 7 30 24 18
𝐴= 4 5 6 𝐵= 6 5 4 𝐴 ∗ 𝐵 → 84 69 54
7 8 9 3 2 1 138 114 90
• 38
Técnicas de
programação
2 5 7 5 1 1
𝐴= 1 6 3 𝐵= 2 2 5 𝐴\𝐵 = 𝐴−1 ∗ 𝐵 =?
6 7 2 7 2 1
2 5 7 5 1 1
𝐴= 1 6 3 𝐵= 2 2 5 𝐴/𝐵 = 𝐴 ∗ 𝐵 −1 =?
6 7 2 7 2 1
9 8 7
𝐴= 6 8 4 𝐴2 = 𝐴 ∗ 𝐴 =?
3 2 6
• 39
Técnicas de
programação
• 40
Técnicas de
programação
Operador Descrição
Multiplicação
.*
ponto-a-ponto
Divisão à esquerda
.\
ponto-a-ponto
Divisão à direita
./
ponto-a-ponto
Exponenciação
.^
ponto-a-ponto
Transposição
’
matricial
• 41
Técnicas de
programação
2 5 7 −5 1 −1
𝐴= 1 6 3 𝐵 = −2 2 5 𝐴.∗ 𝐵 =?
6 7 2 −7 2 −1
4 3 4 4 9 2
𝐴= 8 2 5 𝐵= 8 5 5 𝐴. \𝐵 =?
7 9 2 14 18 4
9 8 21 1 8 7
𝐴= 6 5 8 𝐵= 6 5 4 𝐴./𝐵?
9 8 9 3 2 1
• 42
Técnicas de
programação
2 5 7 −5 1 −1 −10 5 −7
𝐴= 1 6 3 𝐵 = −2 2 5 𝐴.∗ 𝐵 → −2 12 15
6 7 2 −7 2 −1 −42 14 −2
4 3 4 4 9 2 1 3 0,5
𝐴= 8 2 5 𝐵= 8 5 5 𝐴. \𝐵 → 1 2,5 1
7 9 2 14 18 4 2 2 2
9 8 21 1 8 7 9 1 3
𝐴= 6 5 8 𝐵= 6 5 4 𝐴./𝐵 → 1 1 2
9 8 9 3 2 1 3 4 9
• 43
Técnicas de
programação
2 5 7
𝐴= 1 6 3 𝐴. ^2 =?
6 7 2
1 −3 −2
𝐵= 2 4 2 𝐵. ^3 =?
1 3 3
2 5 7
𝐶= 1 6 3 𝐶 ′ =?
6 7 2
1 −3 −2
𝐷= 2 4 2 𝐷 ′ =?
1 3 3
• 44
Técnicas de
programação
2 5 7 4 25 49
𝐴= 1 6 3 𝐴. ^2 → 1 36 9
6 7 2 36 49 4
1 −3 −2 1 −27 −8
𝐵= 2 4 2 𝐵. ^3 → 8 64 8
1 3 3 1 27 27
2 5 7 2 1 6
𝐶= 1 6 3 𝐶′ → 5 6 7
6 7 2 7 3 2
1 −3 −2 1 2 1
𝐷= 2 4 2 𝐷′ → −3 4 3
1 3 3 −2 2 3
• 45
Técnicas de
programação
Operadores relacionais
Realiza a comparação entre dois ou mais objetos (variáveis) entre
si. Esses operadores habilitam as seguintes comparações: menor,
maior, menor ou igual, maior ou igual, igual e não igual.
• 46
Técnicas de
programação
Operadores relacionais
1 2 3 9 8 7 1 1 1
𝐴= 4 5 6 𝐵= 6 5 4 𝐴<𝐵→ 1 0 0
7 8 9 3 2 1 0 0 0
1 2 3 9 8 7 0 0 0
𝐴= 4 5 6 𝐵= 6 5 4 𝐴>𝐵→ 0 0 1
7 8 9 3 2 1 1 1 1
1 2 3 9 8 7 1 1 1
𝐴= 4 5 6 𝐵= 6 5 4 𝐴 <= 𝐵 → 1 1 0
7 8 9 3 2 1 0 0 0
• 47
Técnicas de
programação
Operadores relacionais
1 2 3 9 8 7 0 0 0
𝐴= 4 5 6 𝐵= 6 5 4 𝐴 >= 𝐵 → 0 1 1
7 8 9 3 2 1 1 1 1
1 2 3 9 8 7 0 0 0
𝐴= 4 5 6 𝐵= 6 5 4 𝐴 == 𝐵 → 0 1 0
7 8 9 3 2 1 0 0 0
1 2 3 9 8 7 1 1 1
𝐴= 4 5 6 𝐵= 6 5 4 𝐴~ = 𝐵 → 1 0 1
7 8 9 3 2 1 1 1 1
• 48
Técnicas de
programação
Operadores relacionais
1 2 3 9 8 7
𝐴= 4 5 6 𝐵= 6 5 4 t=isequal(𝐴, 𝐵 ) 0
7 8 9 3 2 1
1 2 3 1 2 3
𝐴= 4 5 6 𝐵= 4 5 6 t=isequal(𝐴, 𝐵) 1
7 8 9 7 8 9
9 8 7 9 8 7
𝐴= 6 5 4 𝐵= 6 5 4 t=isequal(𝐴, 𝐵) 0
3 2 1.1 3 2 1
• 49
Técnicas de
programação
Operadores lógicos
Realiza operações lógicas AND, OR e NOT. Os operadores lógicos são
predominantemente usados em laços de estruturas condicionais.
AND OR Not
1 1 1 1 1 1
• 50
Técnicas de
programação
Exemplos gerais
• 51
Técnicas de
programação
Exemplos gerais
ExemploAbásico
função2:
input permite
Código para ao usuáriooentrar
computar com valores
valor resultante da função
no Console do Scilab
10 −2
ou
2 no Command Window do Matlab.
𝑦 𝑥 = 15 − 𝑥 2 ÷ 5 × para um dado valor de entrada da variável x.
𝑥2
• 52
Técnicas de
programação
Exemplos gerais
• 53
Técnicas de
programação
Exemplos gerais
Exemplo básico 3: Código que gera uma tabela equivalente de temperatura
em grau Celsius (°C), Fahrenheit (°F), e Kelvin (K), na faixa entre 0 °C e 100
°C, linearmente espaçada de 5 °C.
Celsius = 0:5:100;
Fahrenheit = 1.8*Celsius+32;
Kelvin = Celsius+273.15;
disp('***********************')
disp('Tabela de temperaturas')
disp('***********************')
A= ['Celsius Fahrenh Kelvin'];
B = [Celsius' Fahrenheit' Kelvin'];
disp(A), disp(B)
disp('***********************')
• 54
Técnicas de
programação
Exemplos gerais
Exemplo básico 3: Código que gera uma tabela equivalente de temperatura
em grau Celsius (°C), Fahrenheit (°F), e Kelvin (K), na faixa entre 0 °C e 100
°C, linearmente espaçada de 5 °C.
Celsius = 0:5:100;
Fahrenheit = 1.8*Celsius+32;
Kelvin = Celsius+273.15;
A função disp mostra caracteres ou valores de
disp('***********************')
variáveis no Console do Scilab
disp('Tabela ou no Command Window do Matlab
de temperaturas')
disp('***********************')
A= ['Celsius Fahrenh Kelvin'];
B = [Celsius' Fahrenheit' Kelvin'];
disp(A), disp(B)
disp('***********************')
• 55
Técnicas de
programação
Exemplos gerais
sinh(𝑥)
Exemplo básico 4: Código que verifica a igualdade tanh 𝑥 = para 20
valores lineramente espaçados no interval de 0 ≤ 𝑥 ≤ 2𝜋. cosh(𝑥)
x = linspace(0,2*pi,20);
y1 = tanh(x);
y2 = sinh(x)./cosh(x);
disp('********Resultados************')
disp(' x tanh(x) sinh(x)/cosh(x)');
disp('********************************')
A=[x' y1' y2'];
disp(A)
disp('********************************')
• 56
Técnicas de
programação
Exemplos gerais
x=0:0.001:2*pi;
f1=sin(x);
f2=cos(x);
plot(x,f1,x,f2)
• 57
Técnicas de
programação
Exemplos gerais
x=0:0.1:360;
f1=sind(x);
f2=cosd(x);
plot(x,f1,x,f2)
• 58
Técnicas de
programação
Exemplos gerais
f=60;
T=1/f;
t=0:0.0001:T;
i=sin(2*pi*f*t + pi/18);
v=sin(2*pi*f*t + pi/8);
plot(t,i,t,v)
• 59
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
c) 𝑊 = (𝐴 × 𝐵 × 𝐶) ÷ (𝐶 × 𝐷 × 𝐸)
1
4
d) R=E× (𝐴 ÷ 𝐵) × (𝐷 ÷ 𝐸)
e) V = 𝐴𝐵 + 𝐶𝐷 + 𝐸 (𝐶×𝐴)
3
f) K= (𝐷 𝐴 +𝐴𝐶 ) ÷ (𝐴 × 𝐶 − 𝐵 × 𝐸)
• 63
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
4) Para um dado valor da variável x, avalie as seguintes expressões usando uma
calculadora e escreva um código para confirmação dos resultados:
a) 𝑓 𝑥 = 4 × ln(𝑥)
𝑥
b) 𝑓 𝑥 = (4 − 𝑥) × 𝑒
𝑥
c) 𝑓 𝑥 = 𝑠𝑖𝑛2 − cos 2𝑥
6
d) 𝑓 𝑥 = ln 𝑥 + log(2𝑥)
e) 𝑓 𝑥 = 10 × log(𝑒 𝑥 )
1 4𝑥 2
f) 𝑓 𝑥 = 𝑥3
× 0,25
g) 𝑓 𝑥 = 𝑒 2𝜋 3 𝑥
• 64
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
sabendo que 𝑁 = 5,7 × 𝑒 −0,015𝑛 (milhões), escreva um código que gere a tabela da
taxa de natalidade (em permilagem) com base no crescimento populacional de 1985
a 2050, obtido no exercício anterior.
• 65
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
𝑒 𝑥 − 𝑒 −𝑥 𝑒 𝑥 + 𝑒 −𝑥
𝑠𝑖𝑛ℎ 𝑥 = 𝑐𝑜𝑠ℎ 𝑥 =
2 2
no intervalo fechado de 0 ≤ 𝑥 ≤ 2𝜋, com 20 valores linearmente espaçados.
𝑓 𝑥 = 𝑠𝑖𝑛ℎ2 𝑥 − 𝑐𝑜𝑠ℎ2 𝑥
no intervalo fechado de 0 ≤ 𝑥 ≤ 2𝜋, com 30 valores linearmente espaçados.
• 66
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
2 2
𝑦2 − 𝑦1
𝑑𝑖𝑠𝑡â𝑛𝑐𝑖𝑎 = 𝑥1 − 𝑥2 + 𝑦1 − 𝑦2 𝑚=
𝑥2 − 𝑥1
15) Escreva um código generalizado que converta um vetor de seis dígitos de tempo
(hh/mm/ss) para minutos.
• 67
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
1+𝑖 𝑛
×𝑖 ➢ Valor = valor total do empréstimo
𝑃𝑎𝑟𝑐𝑒𝑙𝑎 = 𝑉𝑎𝑙𝑜𝑟 × ➢ n = número de meses
1+𝑖 𝑛−1
➢ i = taxa de juros
escreva um código que retorne a parcela fixa para 4, 6, 8, 10, 12, 14, 16, 18, 20, 22
e 24 meses assumindo uma taxa de juros de 4% ao mês para um empréstimo de
R$ 100.000,00.
17) Repita o exemplo anterior assumindo o mesmo período de meses, porém, com
uma taxa de juros de 5,5% ao mês para um empréstimo de R$ 500.000,00.
• 68
Técnicas de
programação
• 69
Técnicas de
programação
Sintaxe
✓ O bloco if expressão, instrução, end avalia uma
expressão e executa um grupo de instruções
if expressão
quando a expressão é verdadeira.
instrução ✓ Uma expressão é verdadeira quando seu
elseif expressão resultado não é vazio e contém elementos não-
instrução nulos (lógico ou real).
else ✓ Caso contrário, a expressão é falsa.
instrução ✓ Os blocos elseif e else são opcionais. A instrução
end é executada somente se as expressões prévias do
bloco if ...end são falsas.
✓ Um bloco if pode conter múltiplos blocos elseif.
• 70
Técnicas de
programação
Fluxograma
Verdadeira
Condição? Sintaxe
if condição
Bloco
instrução
verdadeiro end
• 71
Técnicas de
programação
Fluxograma
Sintaxe
Falsa Verdadeira
Condição?
if condição
instrução
else
Bloco Bloco
falso verdadeiro instrução
end
• 72
Técnicas de
programação
Bloco4 Bloco3
• 73
Técnicas de
programação
Exemplos gerais
Exemplo básico 1: Código para computar a raiz quadrada, a exponencial, o
logaritmo (base 10) e o logaritmo natural do produto entre duas variáveis de
entrada se, e somente se, o valor resultante da multiplicação for um número real
positivo no intervalo aberto de 0 a 10.
• 74
Técnicas de
programação
Exemplos gerais
Exemplo básico 2: Código para comparar as dimensões (mxn) de duas
matrizes, A e B. Caso possuam a mesma dimensão, as matrizes C e D serão
criadas com dimensões (mx2n) e (2mxn), respectivamente.
A = ones(2,3);
B = rand(2,3);
if size(A)==size(B)
C = [A B];
D = [A;B];
else
disp('A e B não possuem a mesma dimensão. ')
C = [];
D = [];
end
• 75
Técnicas de
programação
Exemplos gerais
Exemplo básico 3: Código para avaliar se o valor da variável x está abaixo,
dentro ou acima do intervalo fechado de 2 a 6.
x = 10; //Variável
minVal = 2; //Valor mínimo especificado
maxVal = 6; //Valor máximo especificado
if (x >= minVal) & (x <= maxVal)
disp('Variável dentro do limite especificado. ')
elseif (x > maxVal)
disp('Variável acima do valor máximo especificado.')
else
disp('Variável abaixo do valor mínimo especificado. ')
end
• 76
Técnicas de
programação
Exemplos gerais
Exemplo básico 4: Código para avaliar as relações condicionais de magnitude
entre 3 variáveis de entrada.
switch expressão
case valor1 ✓ A expressão do switch é avaliada e o controle é
instrução passado para o case.
case valor2 ✓ Cada case é avaliado, e aquele que tiver seu valor
instrução associado à expressão do switch terá sua instrução
... executada.
✓ Caso contrário, o otherwise executará sua
otherwise
instrução.
instrução
end
• 78
Técnicas de
programação
• 79
Técnicas de
programação
Exemplos gerais
Exemplo básico 1: Código para avaliar se o número digitado pelo usuário é igual
a -1, 0 ou 1.
• 80
Técnicas de
programação
Exemplos gerais
Exemplo básico 2: Código que avalia o quadrante do ângulo (em graus) digitado
pelo usuário (0 a 360°), de modo a computar uma dada função trigonométrica.
Exemplos gerais
Exemplo básico 3: Código que retorna um vetor de 5, 10 ou 15 elementos que
se encontra em uma estrutura function.
function x=vetor(num)
vetor5=[1 2 3 4 5];
Scilab
vetor10=[1 2 3 4 5 6 7 8 9 10];
vetor15=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15];
switch num
case 5
x = vetor5;
case 10
x=vetor10;
case 15
x=vetor15;
end
endfunction
num=5;
x=vetor(num);
• 82
Técnicas de
programação
Exemplos gerais
Exemplo básico 3: Código que retorna um vetor de 5, 10 ou 15 elementos que
se encontra em uma estrutura function.
function x=vetor(num)
vetor5=[1 2 3 4 5];
Scilab
vetor10=[1 2 3 4 5 6 7 8 9 10];
vetor15=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15];
A declaração de uma function
switch numé uma poderosa ferramenta de programação,
pois, uma function pode case
ser 5chamada quantas vezes for necessário por um
x = vetor5;
código ou algoritmo. É case
possível
10
até mesmo utilizá-la para, por exemplo,
computar de modo recursivo o valor de uma variável. Várias estruturas
x=vetor10;
functions podem estar presentes
case 15 em um mesmo código ou algoritmo.
x=vetor15;
end
endfunction
num=5;
x=vetor(num);
• 83
Técnicas de
programação
Exemplos gerais
Exemplo básico 3: Código que retorna um vetor de 5, 10 ou 15 elementos que
se encontra em uma estrutura function.
function x=vetor(num)
vetor5=[1 2 3 4 5];
Scilab
vetor10=[1 2 3 4 5 6 7 8 9 10];
vetor15=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15];
switch num
case 5
No SCILAB a declaração de uma function é realizada no mesmo
x = vetor5;
arquivo do códigocase
ou10 algoritmo que está sendo desenvolvido.
x=vetor10;
case 15
x=vetor15;
end
endfunction
num=5;
x=vetor(num);
• 84
Técnicas de
programação
Exemplos gerais
Exemplo básico 3: Código que retorna um vetor de 5, 10 ou 15 elementos que
se encontra em uma estrutura function.
• 85
Técnicas de
programação
Exemplos gerais
Exemplo básico 3: Código que retorna um vetor de 5, 10 ou 15 elementos que
se encontra em uma estrutura function.
• 86
Técnicas de
programação
Estrutura de repetição
while-end (laço while): Executar um bloco de instruções se a expressão
(condição) for verdadeira. Após a execução do bloco de instruções, a
condição é avaliada novamente. Se ela ainda for verdadeira, o bloco é
executado novamente. Este processo se repete continuamente até que a
condição seja falsa.
Fluxograma
Sintaxe
Grupo de
instruções
• 87
Técnicas de
programação
Estrutura de repetição
while-end (laço while): Executar um bloco de instruções se a expressão
(condição) for verdadeira. Após a execução do bloco de instruções, a
condição é avaliada novamente. Se ela ainda for verdadeira, o bloco é
executado novamente. Este processo se repete continuamente até que a
condição seja falsa.
Fluxograma
Sintaxe
Grupo de
instruções
• 88
Técnicas de
programação
Exemplos gerais
Exemplo básico 1: Código para Exemplo básico 2: Código para
computar a quantidade de anos para computar a sequência
que um investimento de R$ 10.000,00 1 1 1 1 1 1 1 1
chegue a R$100.000,00 de rendimento, 𝐶= 1
assumindo uma taxa de 10% de 2 3 4 5 6 7 8 9
aumento por ano.
p = 10000;
anos 𝐴 = 𝜋𝑟 2
= 0;
n = 1;
while n<10
while p < 100000
C(n) =1/n;
anos = anos + 1;
n = n+1;
p = p*(1 + 0.10);
end
end
disp(C')
disp(anos)
• 89
Técnicas de
programação
Exemplos gerais
Exemplo básico 3: Código genérico para computar o fatorial de um número
inteiro não-negativo.
• 90
Técnicas de
programação
Exemplos gerais
Exemplo básico 4: Código genérico para computar o fatorial de um número
inteiro não-negativo, porém, usando a declaração de uma function.
function x = fatorial(num)
if num<=1
x=1;
else
x = num .* fatorial(num-1) ;
end
endfunction
num=input('Digite um número inteiro não-negativo: ');
x=fatorial(num);
disp(‘fatorial: ')
disp(x)
• 91
Técnicas de
programação
Exemplos gerais
Exemplo básico 4: Código genérico para computar o fatorial de um número
inteiro não-negativo, porém, usando a declaração de uma function.
function x = fatorial(num)
if num<=1
x=1;
else
Atente que a function está se “auto-chamando”.
x = num .* fatorial(num-1) ;
Intrinsecamente, pode-se inferir que ela está desenvolvendo um loop while.
end
endfunction
num=input('Digite um número inteiro não-negativo: ');
x=fatorial(num);
disp(‘fatorial: ')
disp(x)
• 92
Técnicas de
programação
Exemplos gerais
Exemplo básico 5: Código para gerar dois contadores: um decrescente de 10 a
1 e outro crescente de 1 a 10. Os valores de cada contador são armazenados em
vetores com elementos inicialmente nulos.
contador1 = 11;
contador2 = 0;
n=1;
a=zeros(1,10);
b=zeros(1,10);
while n<11
contador1 = contador1 - 1;
a(n)=contador1;
contador2 = contador2 + 1;
b(n)=contador2;
n=n+1
end
disp(a)
disp(b)
• 93
Técnicas de
programação
Estrutura de repetição
for-end (laço for): Executar um bloco de instruções em uma quantidade
específica de vezes.
Fluxograma
Sintaxe
Inicialização
da variável
for variável=expressão
instrução Condição
Falsa
Sair do loop
end Verdadeira
Grupo de instruções
incremento ou
decremento
• 94
Técnicas de
programação
Estrutura de repetição
for-for-end-end (laços for): Executar um bloco de instruções do laço for
interno em uma quantidade específica de vezes, na medida em que a
variável do laço for externo é incrementada ou decrementada.
end
• 95
Técnicas de
programação
Estrutura de repetição
for-for-end-end (laços for): Executar um bloco de instruções do laço for
interno em uma quantidade específica de vezes, na medida em que a
variável do laço for externo é incrementada ou decrementada.
end
• 96
Técnicas de
programação
Estrutura de repetição
for-for-end-end (laços for): Executar um bloco de instruções do laço for
interno em uma quantidade específica de vezes, na medida em que a
variável do laço for externo é incrementada ou decrementada.
end
• 97
Técnicas de
programação
Exemplos gerais
Exemplo básico 1: Código para computar sequencialmente as funções seno, cosseno,
tangente e secante, assumindo ângulos na faixa de 0o a 360o, linearmente espaçados de 1o.
y1 = zeros(1,360);
y2 =y1;
y3 =y1;
y4 =y1;
for n = 0:1:360
y1(n+1) = sind(n);
y2(n+1) = cosd(n);
y3(n+1) = tand(n);
y4(n+1) = secd(n);
end
• 98
Técnicas de
programação
Exemplos gerais
Exemplo básico 1: Código para computar sequencialmente as funções seno, cosseno,
tangente e secante, assumindo ângulos na faixa de 0o a 360o, linearmente espaçados de 1o.
y1 = zeros(1,360);
y2 =y1;
y3 =y1; dos vetores de armazenamento dos resultados de um laço for
Em geral, a dimensão
pode ser especificada
y4 =y1; antecipadamente. Para tanto, basta criar um vetor composto
com elementos nulos tendo a dimensão desejada. Os elementos inicialmente
for n = 0:1:360
nulos serão substituídos (sobrescritos) sequencialmente pelos resultados obtidos.
y1(n+1) =importante,
Essa técnica mostra-se sind(n); sobretudo, no desenvolvimento de algoritmos
associados
y2(n+1)a métodos numéricos que usam matrizes esparças.
= cosd(n);
y3(n+1) = tand(n);
y4(n+1) = secd(n);
end
• 99
Técnicas de
programação
Exemplos gerais
Exemplo básico 2: Código para computar a representação polar - magnitude e ângulo de
fase (em grau) - de números complexos originalmente obtidos na representação retangular,
cujas partes real e imaginária são dadas pelos elementos dos vetores x e y,
respectivamente.
x=[5 8 9 6 2];
y=[2 -1 -3 8 5];
z=zeros(1,5);
for n=1:1:5
z(1,n)=x(1,n) + y(1,n)*i;
end
disp('Magnitude')
disp(abs(z))
disp('Ângulo de fase (grau)')
disp(atan(imag(z),real(z))*180/pi)
• 100
Técnicas de
programação
Exemplos gerais
Exemplo básico 3: Código para computar os seguintes somatórios:
10 10 10 10
W=0;
X=0;
Y=0;
Z=0;
for x = 1:1:10
W=W + x^2;
X=X + log(x);
Y=Y + log10(x);
Z=Z + sqrt(x);
end
disp([W X Y Z]')
• 101
Técnicas de
programação
Exemplos gerais
5 6
Etapas do cálculo
m=1
𝑓1 = 1 + 1 + 1 + 2 + 1 + 3 + 1 + 4 + 1 + 5 + (1 + 6)
K = 0; m=2
for m = 1:1:5 𝑓2 = 2 + 1 + 2 + 2 + 2 + 3 + 2 + 4 + 2 + 5 + (2 + 6)
for n = 1:1:6
m=3
K= K+(m+n);
end 𝑓3 = 3 + 1 + 3 + 2 + 3 + 3 + 3 + 4 + 3 + 5 + (3 + 6)
end m=4
disp(f) 𝑓4 = 4 + 1 + 4 + 2 + 4 + 3 + 4 + 4 + 4 + 5 + (4 + 6)
m=5
𝑓5 = 5 + 1 + 5 + 2 + 5 + 3 + 5 + 4 + 5 + 5 + (5 + 6)
Resultado
𝐾 = 𝑓1 + 𝑓2 + 𝑓3 + 𝑓4 + 𝑓5
• 102
Técnicas de
programação
Exemplos gerais
Exemplo básico 5: Código que gera uma matriz randômica de dimensão 5x5 com elementos
no intervalo [0 1). Elementos cujo valor é menor ou igual a 0,5 são armazenados na matriz A,
caso contrário, são armazenados na matriz B.
x=rand(5,5,'uniforme')
A=zeros(5,5);
B=zeros(5,5);
for m = 1:1:5
for n=1:1:5
if x(m,n)<=0.5
A(m,n)=x(m,n);
else
B(m,n)=x(m,n);
end
end
end
disp(x); disp(A);disp(B)
• 103
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
1) Escreva um código, usando estrutura de repetição, para computar os somatórios:
10
1
a) 𝑄= 3
𝑥−2
𝑥=1
125
5×3 𝑥
c) 𝑅=
0,5
𝑥=1
10 20
𝑛
e) 𝑆 = 𝑙𝑛
𝑚
𝑚=1 𝑛=1
5 15 25
log(𝑖) × log(𝑚)
g) 𝑊=
𝑛
𝑖=1 𝑚=1 𝑛=1 • 105
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
2) Escreva um código, usando estrutura de repetição, para computar os somatórios:
360°
1
a) 𝐴=
°
cos(2𝜃)
𝜃=0
180°
cos 𝜃 + sin 𝜃
c) 𝐵=
°
2
𝜃=0
3𝜋 𝜋
2 2
e) 𝑆 = sin(𝛼) × cos(𝛽)
𝛼=0 𝛽=0
5 15 25
sec(𝑖) × cos 𝜃
g) 𝑊 =
tan(𝑛)
𝑖=1 𝑚=1 𝑛=1 • 106
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
3) Dado o vetor linearmente espaçado
𝑋 = 0 1 2 3 4 5 6 … 47 48 49 50
escreva um código que compute a soma dos elementos pares e ímpares usando as seguintes
equações:
50
𝑆𝑜𝑚𝑎𝑝𝑎𝑟 = 𝑋(𝑛 × 2)
𝑛=0
50
𝑆𝑜𝑚𝑎í𝑚𝑝𝑎𝑟 = 𝑋( 𝑛 × 2 + 1)
𝑛=0
𝑋 = 100 99 98 97 … 6 5 4 3 2 1 0
• 107
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
Relembrando:
𝑛
Limite: Convergência para um ponto.
𝑧 𝑖 = 1 + 𝑧 + 𝑧 2 + ⋯ + 𝑧 𝑛−1
Derivada: Taxa
𝑖=0
de variação (média ou instantânea).
Integral: Cálculo de área.
• 108
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
5) A seguinte equação define uma série geométrica:
𝑛
𝑧 𝑖 = 1 + 𝑧 + 𝑧 2 + ⋯ + 𝑧 𝑛−1
𝑖=0
escreva um código que mostre que a série é convergente no intervalo -1<z<1, e divergente caso
contrário.
∞ ∞ ∞ ∞
log(𝑛) 1 −1 𝑛−2 −1 𝑛
𝑊= 𝑇= 𝑛 𝑉= 𝐿=
𝑛3 2 −1 𝑛 4𝑛
𝑛=1 𝑛=1 𝑛=1 𝑥=1
• 109
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
7) Escreva um código para avaliar a equação:
𝐾
1 1 1
𝑌 = 1+ + 2+ 3 𝐾 = 10, 20, 30, … , 990, 1000
𝐾 𝐾 𝐾
• 110
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
10) Escreva um código para computar o valor da função exponencial de um dado número real x
usando a seguinte série:
𝑘
𝑥 𝑛
𝑒𝑥 =
𝑛!
𝑛=0
11) Com base no exercício anterior, escreva um código para mostrar que as seguintes igualdades
são válidas:
𝑒 𝑥 − 𝑒 −𝑥
sinh(𝑥) =
2
𝑒 𝑥 + 𝑒 −𝑥
cosh(𝑥) =
2
sinh 𝑥 𝑒 𝑥 − 𝑒 −𝑥
tanh 𝑥 = = 𝑥
cosh 𝑥 𝑒 + 𝑒 −𝑥
• 111
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
12) Com base no Princípio da Indução Finita, escreva um código para provar que:
𝑘
σ𝑘𝑛=1 𝑛2 ≡ 12 + 22 + 32 + ⋯ + 𝑘 2 = 𝑘 + 1 2𝑘 + 1 , 𝑘 ∈ ℕ.
6
13) Sabendo que a Série de Maclaurin expressa as funções seno e cosseno da seguinte forma
𝜃3 𝜃5 𝜃7 𝜃2 𝜃4 𝜃6
sen θ = θ − + − +⋯ cos θ = 1 − + − +⋯
3! 5! 7! 2! 4! 6!
14) Com base no exercício anterior, escreva um código para validar o Teorema de Moivre:
• 112
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
15) Escreva um código que gere duas matrizes aleatórias – A e B de dimensão 5x5 – e compute
os seguintes valores:
16) Escreva um código que gere três matrizes aleatórias - A, B e C de dimensão 11x11 – e
compute os seguintes valores:
18) Escreva um código, usando o conceito de function, para computar o resultado do polinômio:
𝑃 𝑥 = 𝑥 5 + 8𝑥 4 − 2𝑥 3 + 5𝑥 + 17
19) Escreva um código, usando o conceito de function, para computar a variância (var) e o desvio
padrão (dp) de um vetor aleatório V de n elementos, sabendo que:
𝑛
𝑉 𝑥 − 𝑉ത 2
𝑣𝑎𝑟 =
𝑛−1
𝑥=1
𝑉ത valor médio
𝑛 1
𝑉 𝑥 − 𝑉ത 2 2
𝑑𝑝 =
𝑛−1
𝑥=1
• 114
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
20) A resistência equivalente Req_s de um circuito elétrico formado por n resistores conectados em
série é dada por
𝑛
𝑅𝑒𝑞_𝑠 = 𝑅𝑖
𝑖=1
𝐷𝐵0. 𝐴16 = 𝐷 × 162 + 𝐵 × 161 + 0 × 160 + 𝐴 × 16−1 = 13 × 162 + 11 × 161 + 0 × 160 + 10 × 16−1
= 3504,62510
• 117
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
Um número decimal inteiro pode ser convertido para qualquer outra base quando sua parte inteira
é dividida repetidamente pela base desejada até que o quociente seja menor que 1. O primeiro
resto obtido torna-se o dígito menos significativo e o último resto torna-se o dígito mais significativo.
Um número decimal fracionário pode ser convertido para qualquer outra base quando ele é
multiplicado repetidamente pela base desejada até que a parte fracionária seja igual a 0.
Porém, nem sempre essa condição é realizável, pois, pode haver conversões sem fim.
Um número decimal misto (inteiro e fracionário) pode ser convertido para qualquer outra base
realizando-se as duas etapas supracitadas e, por fim, combinando-as.
• 118
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
3910 = 1001112
0,3965410 = 0,01100 …2
0,3965410 = 0,01100 …2
0,8437510 = 0,110112
0,8437510 = 0,110112
39,8437510 = 10011,110112
3910 = 1001112
0,8437510 = 0,110112
39,8437510 = 100111,110112
• 124
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
345,15810 = 531,12 …8
Parte inteira
389,12510 = 185,216
Parte inteira
Parte fracionária
• 126
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
• 127
Técnicas de
programação
• 128
Técnicas de
programação Cálculo de grandezas elétricas:
Geração de ondas alternadas senoidais
Gerador
Seno
elétrico
Cosseno
• 129
Técnicas de
programação Cálculo de grandezas elétricas:
Geração de ondas alternadas senoidais
• 130
Técnicas de
programação Cálculo de grandezas elétricas:
Valores característicos das ondas senoidais
• 131
Técnicas de
programação Cálculo de grandezas elétricas:
Fase e suas relações
• 132
Técnicas de
programação Cálculo de grandezas elétricas:
Fase e suas relações
• 133
Técnicas de
programação Cálculo de grandezas elétricas:
Fase e suas relações
• 134
Técnicas de
programação Cálculo de grandezas elétricas:
Fase e suas relações
• 135
Técnicas de
programação Cálculo de grandezas elétricas:
Valor RMS
• 136
Técnicas de
programação Cálculo de grandezas elétricas:
Valor RMS
• 137
Técnicas de
programação Cálculo de grandezas elétricas:
Valor RMS
• 138
Técnicas de
programação Cálculo de grandezas elétricas:
Valor RMS
• 139
Técnicas de
programação Cálculo de grandezas elétricas:
Valor RMS
• 140
Técnicas de
programação Cálculo de grandezas elétricas:
Valor RMS
• 141
Técnicas de
programação
Exemplos gerais
Exemplo básico 1: Código para extrair amostras de um sinal genérico no domínio do tempo
contínuo.
Matlab
f=60; %Frequência do sinal
N=12; %Número de amostras
t=0:0.00001:1/f; %Tempo no domínio do tempo contínuo
tsamp=linspace(0,(1/f),N+1); %Tempo no domínio do tempo discreto
• 142
Técnicas de
programação
Exemplos gerais
Exemplo básico 2: Código para extrair amostras de um sinal genérico no domínio do tempo
contínuo.
Scilab
Desenvolver!
• 143
Técnicas de
programação
Exemplos gerais
Exemplo básico 3: Código para calcular o valor RMS de um sinal genérico no domínio do
tempo contínuo.
Matlab
f=60; %Frequência do sinal
N=24; %Número de amostras
t=0:0.00001:1/f; %Tempo no domínio do tempo contínuo
tsamp=linspace(0,(1/f),N+1); %Tempo no domínio do tempo discreto
n=0;
for k=1:N
n=n+(ysamp(k)^2);
end
yrms=sqrt((1/N)*n);
• 144
Técnicas de
programação
Exemplos gerais
Exemplo básico 4: Código para calcular o valor RMS de um sinal genérico no domínio do
tempo contínuo.
Scilab
Desenvolver!
• 145
Técnicas de
programação Cálculo de grandezas elétricas:
Potência monofásica - definições
• 146
Técnicas de
programação Cálculo de grandezas elétricas:
Medição clássica de energia e potência elétrica
Tensãoéchantillonnée
Tension amostrada
3
2
Energia
1
N −1
0
E = (V n I n) Os sinais de tensão e corrente
-1 n =0 devem estar sincronizados.
-2
-3
0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016
Potências
Corrente amostrada
Courant échantillonné N −1
P = (V n I n) N
3
2
n =0
1
N −1
S = VRMS I RMS
V n
1
=
2
0
VRMS
-1
N n =0
Q = S 2 − P2
N −1
I n
-2
1
=
2
I RMS
-3
0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016
N n =0 pf = P S
Tempo
inicial • 147
Técnicas de
programação Representação fasorial e a Transformada
Discreta de Fourier (TDF)
• 148
Técnicas de
programação Representação fasorial e a Transformada
Discreta de Fourier (TDF)
• 149
Técnicas de
programação Representação fasorial e a Transformada
Discreta de Fourier (TDF)
• 150
Técnicas de
programação Representação fasorial e a Transformada
Discreta de Fourier (TDF)
• 151
Técnicas de
programação Representação fasorial e a Transformada
Discreta de Fourier (TDF)
• 152
Técnicas de
programação Representação fasorial e a Transformada
Discreta de Fourier (TDF)
• 153
Técnicas de
programação Representação fasorial e a Transformada
Discreta de Fourier (TDF)
• 154
Técnicas de
programação Representação fasorial e a Transformada
Discreta de Fourier (TDF)
• 155
Técnicas de
programação Representação fasorial e a Transformada
Discreta de Fourier (TDF)
2 N −1 2kn 2kn
X r − jX i = n
x cos
N n =0 N
− j sin
N
• 156
Técnicas de
programação Representação fasorial e a Transformada
Discreta de Fourier (TDF)
2 N −1 2kn 2kn
X r − jX i = n
x cos
N n =0 N
− j sin
N
k=0 (componente DC)
k=1 (componente fundamental)
k=2 (harmônica de segunda ordem)
k=3 (harmônica de terceira ordem)
...
• 157
Técnicas de
programação Representação fasorial e a Transformada
Discreta de Fourier (TDF)
2 N −1 2kn 2kn
X r − jX i = n
x cos
N n =0 N
− j sin
N
k=0 (componente DC)
k=1 (componente fundamental)
k=2 (harmônica de segunda ordem)
k=3 (harmônica de terceira ordem)
...
• 158
Técnicas de
programação Representação fasorial e a Transformada
Discreta de Fourier (TDF)
• 159
Técnicas de
programação Representação fasorial e a Transformada
Discreta de Fourier (TDF)
• 160
Técnicas de
programação
Exemplos gerais
Exemplo básico 5: Considere o sinal x(t) formado por uma componente DC, a
componente fundamental de 60 Hz, a segunda harmônica de 120 Hz e a quinta
harmônica de 300 Hz
𝜋 𝜋
𝑥 𝑡 = 0,5 + cos 120𝜋𝑡 + + 0,2cos 240𝜋𝑡 + + 0,3cos 600𝜋𝑡
4 8
• 161
Técnicas de
programação
Exemplos gerais
Matlab
f=60; %Frequência fundamental do sinal
N=24; %Número de amostras por período
t=0:0.00001:1/f; %Tempo no domínio do tempo contínuo
tsamp=linspace(0,(1/f),N+1); %Tempo no domínio do tempo discreto
• 162
Técnicas de
programação
Exemplos gerais
Matlab
f=60; %Frequência fundamental do sinal
N=24; %Número de amostras
t=0:0.00001:1/f; %Tempo no domínio do tempo contínuo
tsamp=linspace(0,(1/f),N+1); %Tempo no domínio do tempo discreto
• 163
Técnicas de
programação
Exemplos gerais
Scilab
Desenvolver!
• 164
Técnicas de
programação Cálculo de grandezas elétricas:
Medição de energia e potência elétrica via TDF
Tensãoéchantillonnée
Tension amostrada
3
Equação geral
( k = 1)
2
2 N −1 2kn
1
Xr = xn cos N
N n =0
0
2 N −1 2kn
Xi = n N
-1
x sin
-2
N n =0
-3
0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016
Corrente amostrada
Courant échantillonné Energia e potência
3
P = (Vr I r ) + (Vi I i )
2
1 S = P + jQ
Q = (Vi I r ) − (Vr I i )
0
-1
S = P2 + Q2
-2
-3
E = P N pf = P S
0 0.002 0.004 0.006 0.008 0.01 0.012 0.014 0.016
Tempo
inicial • 165
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
1) Considere o sinal x(t) operando em 60 Hz
𝜋
𝑥 𝑡 = 100. cos 120𝜋𝑡 +
4
sendo amostrado a uma taxa de 12 amostras por ciclo (período), ou seja, na frequência de
amostragem de 720 Hz. Escreva um código para computar as 36 primeiras amostras do sinal.
sendo amostrado a uma taxa de 12 amostras por ciclo (período), ou seja, na frequência de
amostragem de 720 Hz. Escreva um código para computar as 36 primeiras amostras do sinal
• 167
Técnicas de
programação
Exercícios... A prática leva à
experiência que conduz ao conhecimento!
4) Com base nos arquivos volt_1 e current_1, escreva um código para computar os valores RMS
de tensão e corrente, as potências ativa, reativa e aparente, assim como o fator de potência,
assumindo que os sinais de tensão e corrente estejam em regime permanente durante 1 minuto.
(Método clássico)
5) Com base nos arquivos volt_2 e current_2, escreva um código para computar os valores RMS
de tensão e corrente, as potências ativa, reativa, aparente e complexa, assim como o fator de
potência, assumindo que os sinais de tensão e corrente estejam em regime permanente durante 5
minutos. (Método TDF)
6) Com base nos arquivos volt_3 e current_3, escreva um código, usando a estrutura function,
para computar os valores RMS de tensão e corrente, as potências ativa, reativa, aparente e
complexa, assim como o fator de potência, assumindo que os sinais de tensão e corrente estejam
em regime permanente para qualquer intervalo de análise. (Método TDF)
• 168
Técnicas de
programação
• 169
Técnicas de
programação
Referências
Básicas
1. Material didático criado pelo prof. Rodrigo Albuquerque.
2. Notas técnicas fornecidas pelos fabricantes dos softwares SCILAB (www.scilab.org) e MATLAB (www.mathworks.com).
3. M. Kalechman, Practical Matlab Basics for Engineers. New York, CRC Press, 2009.
4. J. Leis, Digital Signal Processing Using Matlab for Students and Researches, Wiley, 2011.
Complementares
5. A. Phadke & J. Thorp, Synchronized Phasor Measurements and Their Applications, Springer, 2008.
6. G. D’Antona & A. Ferrero, Digital Signal Processing for Measurement Systems: Theory and Applications, Springer,
2006.
7. Massachusetts Institute of Technology (MIT), Linear Regression (disponível
online: http://www.mit.edu/~6.s085/notes/lecture3.pdf).
8. R. Charnet, C. Freire, E. Charnet e H. Bonvino, Análise de Modelos de Regressão Linear com Aplicações. São Paulo,
Editora da UNICAMP, 2ª Ed., 2008.
• 170