Você está na página 1de 15

Aula 1 08/08/13

Scilab
clear limpa memria das variveis
; ao final da linha omite o resultado
: gera sequncia
EX: k2=0:2:10
0. 2. 4. 6. 8. 10.
EX: gerar sequncia - 4. - 1. 2. 5. 8.
k3=-4:3:8
%pi retorna o valor de
Funes trigonomtricas, em radianos
sin()
cos()
Exerccio1: gerar uma sequncia de ngulos, em radianos, comeando em 0 at 360
graus, com intervalo de 18 graus.
s=0:%pi/10:%pi
0. 0.3141593 0.6283185 0.9424778 1.2566371 1.5707963 1.8849556 2.1991149
2.5132741 2.8274334 3.1415927
*+ para matrizes vetores
EX: V1(3) retorna o valo do 3 item da matriz
transposta de um vetor ou matriz. EX: v1t = v1
Exerccio: criar uma tabela (matriz) com trs colunas: a primeira coluna apresenta os
ngulos variando de 0 at 360 graus com um passo de 18 graus, a segunda o
argumento em radianos e a terceira a funo seno do argumento.
M =
0.
18.
36.
54.
72.
90.
108.
126.
144.
162.
180.
198.
216.
234.
252.
270.
288.
306.
324.
342.
360.

0.
0.3141593
0.6283185
0.9424778
1.2566371
1.5707963
1.8849556
2.1991149
2.5132741
2.8274334
3.1415927
3.4557519
3.7699112
4.0840704
4.3982297
4.712389
5.0265482
5.3407075
5.6548668
5.969026
6.2831853

0.
0.3090170
0.5877853
0.8090170
0.9510565
1.
0.9510565
0.8090170
0.5877853
0.3090170
1.225D-16
0.3090170
0.5877853
0.8090170
0.9510565
1.
0.9510565
0.8090170
0.5877853
0.3090170
2.449D-16

1.
0.9510565
0.8090170
0.5877853
0.3090170
6.123D-17
0.3090170
0.5877853
0.8090170
0.9510565
1.
0.9510565
0.8090170
0.5877853
0.3090170
1.837D-16
0.3090170
0.5877853
0.8090170
0.9510565
1.

Aula 2 15/08/13
Modo de trabalho com o Scilab: linhas de comando ou usando editor de textos (ctrl+L
para executar) do Scilab.

* Trabalhando com o editor de textos. Arquivo matrizes.sce


* Execuo da atividade Lista_01_2010_2.doc e salvo no Ava como mdidone_lista1.pdf
Aula 3 22/08/13

Utilizando os recursos grficos do Scilab. Comandos:


Plot
SubPlot
Comando plot gera a representao grfica de dois argumentos.
Sintaxe:
plot(t,x)
Onde x representa valores em funo do tempo.
Exemplo: gerar a forma de onda da funo seno: f(t)= 2seno(1000t)
Enquadrar trs ciclos.
OBS: funo seno...
f(t)=Aseno(t), A a amplitude da senoide, a frequncia angular e t a varivel
independente.
=2f, frequncia em Hertz.
f=1/T, T o perodo em segundos

// Exemplo 1: gerar a funo


// f(t) = 2seno(1000t) (trs cilos)
clear;
A =2;
w=1000;
f=w/(2*%pi);
T=1/f
Tt=3*T
dt=T/60;
t= 0 : dt: Tt;
f=A*sin(w*t);
plot(t,f); title('Funo seno');
xlabel('seg'); ylabel('Amplitude');
xgrid;

Exemplo 2: gerar forma de onda a seguir


f(t)=10cos(500t - 30)+ 3sin(1500t + 20)
// Exemplo 2: gerar a funo
// f(t) = 10cos(500t -30) + 3sin(1500t + 20)
clear;
A1 = 10 ; A2 = 3 ;
w1 = 500 ; w2 = 1500 ;
f = w1 / (2*%pi) ;
T= 1/f
Tt = 3*T
dt = T/60 ;
t= 0 : dt: Tt ;
arg1 = 30 * %pi / 180 ;
arg2 = 20 * %pi / 180 ;
f1 = A1 * cos(w1*t - arg1) ;
f2 = A2 * sin(w2*t + arg2) ;
f = f1 + f2 ;
plot(t,f); title('Funo seno');
xlabel('seg'); ylabel('Amplitude');
xgrid;

Comando SubPlot: permite gerar mltiplos grficos numa mesma moldura.


Sintaxe: sibplot(L,C,P), L = nmero de linhas. C = colunas, P = posio.
Exemplo 3: gerar uma moldura com trs grficos: f1, f2 e f = f1 + f2 do exemplo
anterior.
// Exemplo 3: gerar as funes em uma mesma moldura
clear;
A1 = 10 ; A2 = 3 ;
w1 = 500 ; w2 = 1500 ;

f = w1 / (2*%pi) ;
T= 1/f
Tt = 3*T
dt = T/60 ;
t= 0 : dt: Tt ;
arg1 = 30 * %pi / 180 ;
arg2 = 20 * %pi / 180 ;
f1 = A1 * cos(w1*t - arg1) ;
f2 = A2 * sin(w2*t + arg2) ;
f = f1 + f2 ;
subplot(3,1,1)
plot(t,f1); title('Funo cosseno');
xlabel('seg'); ylabel('Amplitude');
xgrid;
subplot(3,1,2);
plot(t,f2); title('Funo seno');
xlabel('seg'); ylabel('Amplitude');
xgrid;
subplot(3,1,3);
plot(t,f); title('Funo cosseno + seno');
xlabel('seg'); ylabel('Amplitude');
xgrid;

Exemplo 4: gerar grfico da funo f(t) = 2exp(-10t)*cos(100t)


OBS: o comando .* realiza a multiplicao elemento por elemento de vetores da
mesma dimenso.
// Exemplo 4: gerar a funes em uma mesma moldura
// ft) = 2exp(-10t)*cos(100t)
clear;
A=1;
w = 100 ;
f = w / (2*%pi) ;
T= 1/f

Tt = 3*T
dt = T/60 ;
t= 0 : dt: Tt ;
f1 = 2 * exp(-10*t) ;
f2 = cos(100*t);
f = f1 .* f2 ;
plot(t,f)

Aula 4 - 29/08/13
Programando no Scilab...
O comando for permite que um grupo de linhas de comando sejam executados
repetidamente por um numero fixo predeterminadas vezes.
Sintaxe:
for i = 1:N
comando1;
comando2;
end
Onde: i uma varivel indexada.
Exemplo 1: gerar a sequncia 2 4 6 8 10 12 14
// Exemplo 1: gerar a sequncia 2 4 6 8 10 12 14
clear;
for i = 1:7
x(i) = 2 * i ;
k(i) = i ;
end
disp({k x})

-->// Exemplo 1: gerar a sequncia 2 4 6 8 10 12 14


-->clear;
-->for i = 1:7
--> x(i) = 2 * i ;
--> k(i) = i ;
-->end
-->disp({k x})

1.
2.
3.
4.
5.
6.
7.

2.
4.
6.
8.
10.
12.
14.

Exemplo 2: gerar a seguencia 2 5 8 11 14


// Exemplo 2: gerar a seguencia 2 5 8 11 14
clear;
for i = 1:5
x(i) = 3 * i - 1 ;
k(i) = i ;
end
disp({k x})

-->// Exemplo 2: gerar a seguencia 2 5 8 11 14


-->clear;
-->for i = 1:5
--> x(i) = 3 * i - 1 ;
--> k(i) = i ;
-->end
-->disp({k x})
1.
2.
3.
4.
5.

2.
5.
8.
11.
14.

Exemplo 3: gerar a sequncia 3 0 9 0 15 0 21


// Exemplo 3: gerar a sequncia 3 0 9 0 15 0 21
clear;
for i = 1:2:7
z(i) = 3 * i ;
k(i) = i ;
end
disp({k z})

-->// Exemplo 3: gerar a sequncia 3 0 9 0 15 0 21


-->clear;
-->for i = 1:2:7
--> z(i) = 3 * i ;
--> k(i) = i ;
-->end
-->disp({k z})
1. 3.
0. 0.
3. 9.

0.
5.
0.
7.

0.
15.
0.
21.

Exemplo 4: gerar X = [ 10 0 0 13 0 0 16 0 0 19 ]
// Exemplo 4: gerar X = [ 10 0 0 13 0 0 16 0 0 19 ]
clear;
for i = 1:3:10
z(i) = i + 9 ;
k(i) = i ;
end
disp({k z})

-->// Exemplo 4: gerar X = [ 10 0 0 13 0 0 16 0 0 19 ]


-->clear;
-->for i = 1:3:10
--> z(i) = i + 9 ;
--> k(i) = i ;
-->end
-->disp({k z})
1.
0.
0.
4.
0.
0.
7.
0.
0.
10.

10.
0.
0.
13.
0.
0.
16.
0.
0.
19.

Soma de elementos com o comando for


X = [ x1 x2 ... xn ]
Soma = x1 + x2 + ... + xn
Soma = 0
for i = 1:n
Soma = Soma + x(i) ;
end
Soma
Exemplo 5: calcule a soma
X = [ 8 9 5 10 2 6 ]
// Exemplo 5: calcule a soma X = [ 8 9 5 10 2 6 ]
clear;
X = [ 8 9 5 10 2 6 ]
Soma = 0;
for i = 1:6
Soma = Soma + X(i) ;

end
disp(Soma)

-->// Exemplo 5: calcule a soma X = [ 8 9 5 10 2 6 ]


-->clear;
-->X = [ 8 9 5 10 2 6 ]
X =
8. 9. 5. 10. 2. 6.
-->Soma = 0;
-->for i = 1:6
--> Soma = Soma + X(i) ;
-->end
-->disp(Soma)
40.
Comando length(): informa o nmero de elementos de um vetor.
// Exemplo 5: calcule a soma X = [ 8 9 5 10 2 6 ]
clear;
X = [ 8 9 5 10 2 6 9]
n = length(X)
Soma = 0;
for i = 1:6
Soma = Soma + X(i) ;
end
Media = Soma / n
disp({Soma Media})

-->// Exemplo 5: calcule a soma X = [ 8 9 5 10 2 6 9 ]


-->clear;
-->X = [ 8 9 5 10 2 6 9]
X =
8. 9. 5. 10. 2. 6. 9.
-->n = length(X)
n =
7.
-->Soma = 0;
-->for i = 1:6
--> Soma = Soma + X(i) ;
-->end
-->Media = Soma / n
Media =
5.7142857
-->disp({Soma Media})
40. 5.7142857
Aula 5 05/09/13

Gerando formas de onda com o comando for


-> Funes senoidais (seno e cosseno)
f(t) = sin(wt + teta)
w = frequncia angular = 2*pi*f
f = frequncia em ciclos / segundos (Hertz)
f = 1/T (onde T o perodo da funo)
Exemplo 1: gerar a forma de onda de uma senoidal com frequncia de 60 Hz e a amplitude
igual a 100.
// 05/09/13
// Gerar forma e onda usando o comando for
clear/
A = 100
f = 60
w = 2*%pi*f
T=1/f
//Gerar valores para a varivel tempo "t"
dt = T / 100
t = 0: dt : 3*T;
N = length(t)
for i = 1 : N
y(i) = A * sin(w*t(i));
end
plot(t,y)

Exemplo 2: gerar trs formas de ondas defasadas de 120 graus . Utilizar cores diferentes.
// 05/09/13
// Gerar forma e onda usando o comando for
clear/
A = 100
f = 60
w = 2*%pi*f
T=1/f
//Gerar valores para a varivel tempo "t"
dt = T / 100
t = 0: dt : 3*T;
N = length(t)
a = 120 * %pi / 180 ; //graus -> rad
for i = 1 : N
ya(i) = A * sin(w*t(i));
yb(i) = A * sin(w*t(i) - a);
yc(i) = A * sin(w*t(i) + a);
end
plot(t,ya,'b',t,yb,'r',t,yc,'k')

Exemplo 3: calcular o valor mdio e eficaz de uma funo senoidal.


( )

( )
// 05/09/13
// Gerar forma e onda usando o comando for
clear ;
A = 100 ;
f = 60 ;
w = 2 * %pi * f ;
T=1/f;
//Gerar valores para a varivel tempo "t"
dt = T / 100
t = 0: dt : T;
N = length (t)
a = 120 * %pi / 180 ; //graus -> rad
for i = 1 : N
ya(i) = A * sin(w*t(i));
end
// Calculo do valor meio e eficaz
soma = 0;
soma2 = 0;
for i = 1 : N
soma = soma + ya(i)*dt;
soma2 = soma2 + ya(i)^2*dt;
end
Ymedio = soma / T
Yeficaz = sqrt(soma2 / T)
for i = 1 : N
yef(i) = Yeficaz;
end
plot(t,ya,'b',t,yef,'k')

Exerccio a: gerar 60 nmeros inteiros (0 ~ 10) e calcular a mdia


Exerccio b: gerar um grfico com os valores de X e a mdia
Exerccio c: calcular o desvio da mdia e gerar um grfico com os valores de Xmedio e do
desvio
desvio = | ( nota(i) media) |
// Exerccios parte 2
clear;
// a
X = ceil(10 * rand(1:60)) ;
// b ... Xmedio
N = length (X);
soma = 0 ;
for i = 1 : N
soma = soma + X(i);
end
Xmedio = soma / N
for i = 1 : N
Xm(i) = Xmedio;
n(i) = i ;
end
plot(n,X,n,Xm)

Aula 6 12/09/2013
Comando if
if (expresso lgica)
comando 1;
comando 2;
end

Exemplo 1: gerar uma sequencia aleatria de 10 nmeros inteiros e identificar o nmero de NI


maiores ou iguais a 5.
// Estudo do comando if
clear ;
// Exemplo1:
X = ceil(10*rand(1,10));
X'
conta = 0 ;
for i = 1 : length(X)
if ( X(i) >= 5 ) then
conta = conta + 1;
end
end
disp(conta)

& = lgica E AND


| = lgica OU OR
Exemplo 2: gerar uma sequencia aleatria de 100 nmeros inteiros e identificar o nmero de
NI no intervalo entre [5, 7].
// Estudo do comando if
clear ;
// Exemplo2:
X = ceil(10*rand(1,100));
X';
conta = 0 ;
for i = 1 : length(X)
if ( X(i) >= 5 & X(i) <= 7) then
conta = conta + 1;
end
end
disp(conta)

a) Identifique o maior valor de X;


// Estudo do comando if
clear ;
// Exemplo 2a :
X = ceil(10*rand(1,100));
X' ;
maior = 0 ;

for i = 1 : length(X)
if ( X(i) > maior) then
maior = X(i) ;
end
end
disp(maior)

b) Identifique o maior, menor e a mdia


// Estudo do comando if
clear ;
// Exemplo 2b :
X = ceil(10*rand(1,100));
X';
maior = 0 ;
soma = 0 ;
menor = 10 ;
N = length (X)
for i = 1 : N
if ( X(i) > maior) then
maior = X(i) ;
end
if ( X(i) < menor) then
menor = X(i) ;
end
soma = soma + X(i);
end
media = soma / N
disp({maior, menor, media})

Exemplo 3: gerar 20 nmeros inteiros e dividi-los em trs faixas: (0, 5), (5, 7) e (7, 10). Contar
quantos nmeros h em cada faixa.
// Estudo do comando if
clear ;
// Exemplo 3 :
X = ceil(10*rand(1,20));
X' ;
f1 = 0 ;
f2 = 0 ;
f3 = 0 ;
N = length (X)
erro = 0;
for i = 1 : N
if ( X(i) < 5) then
f1 = f1 + 1 ;
elseif ( X(i) >= 5 & X(i) < 7 ) then
f2 = f2 + 1 ;
elseif ( X(i) >= 7 & X(i) <= 10 ) then
f3 = f3 + 1 ;
else
erro = 1 ;
end
end
disp({f1, f2, f3, erro})

Aula 7 19/09/2013
Escrevendo funes no Scilab:
funcion variveis = function_name (argumentos
endfunction
corpo da funo
// Primeira funo
// Dado um nmero "x" esta funo retorna "2*x"
function xr=x2(x)
xr = x * 2;
endfunction

Exerccio 1: criar uma funo para calcular a resistncia equivalente srie de resistores
quaisquer.
// Exerccio 1
// Calcula a resistncia equivalente em srie
function Res=ReqS(r)
nr = length (r) ;
soma = 0 ;
for i = 1 : nr ;
soma = soma + r(i) ;
end
Res = soma
Endfunction
// Exerccio 2
// Calcula a resistncia equivalente em paralelo
clear;
function Rep=ReqP(r)
nr = length (r) ;
soma = 0 ;
for i = 1 : nr ;
soma = soma + ( 1 / r(i)) ;
end
Rep = (1 / soma)
endfunction

Exerccio 3: escreva uma funo no Scilab para calcular o fatorial de um nmero n;


n! = n(n-1)(n-2)...(2)(1)
Teste o resultado calculando:
x = 7!/3!*4!
-->// Exerccio 3
-->// Escreva uma funo no Scilab para calcular o fatorial de um nmero n
-->clear;
-->function Xf = fatN (x)
--> produto = 1;
-->
for i = x : -1 : 1;
-->
produto = produto * i ;

--> end
--> Xf = produto
-->endfunction
-->s= fatN(7) / (fatN(3) * fatN(4))
s =
35.

Aula 8 26/09/2013
Reviso para a prova:
sin(arg)
cos(arg)
arg = (arg em graus) * pi / 180
sqrt(x) clculo da raiz quadrada de x
exp(x) calcula a exponencial de x
x^5= x elevado a quinta
Grfico: comando plot
plot(x,y) cria um grfico com valores de x e y.
O tamanho de x deve ser igual ao tamanho de y.
subplot(lcp) cria molduras num mesmo grfico.
l = nmero de linhas, c = nmero de coluna e p = posio da figura.
Matrizes e vetores:
A = [ 1 4 5 ; 2 5 6 ] define uma matriz com duas linhas e trs colunas.
det(A) = determinante de matriz
inv(A) = inversa de uma matriz.
Resolvendo um sistema linear: A*x = b
Clculo de x: x=inv(a)*b ou X=A\b (usando barra invertida)
// Matrizes
clear;
A = 10*rand(3,3)
b = 10*rand(3,1)
x1 = inv(A)*b
x2 = A\b
[ x1 x2]

Programao:
for i = 1:N
comando1;

comando2;
end
if (expresso lgica)
comando 1;
comando 2;
end
Exerccios da prova o semestre passado...
//Q1
-->t = 0 : 0.1 : 10;
-->T2 = 2*sin(5*t-(5*%pi/180))-4;
-->T1 = 10*exp(-t) .* cos(5*t - (15*%pi/180)) ;
-->i = T1 + T2;
-->plot(t,i)
//Q2
clear;
T=2.5;
f=1/T;
w=2*%pi*f;
dt=T/40;
t=0:dt:4*T;
n=length(t);
for i=1:n
g(i)=10*sin(w*t(i));
if (g(i) <= -1) then
g(i) = -1;
end
end
plot(t,g); xgrid;
//Q3
soma=0;
N=0;
for i=1:n
soma=soma+g(i)^2*dt;
N = N+dt;
end
Grms = sqrt(1/N*soma)

Aula 9 03/10/2013
Prova 1