Notas de Aula - Scilab
Notas de Aula - Scilab
Notas de Aula - Scilab
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.
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;
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})
1.
2.
3.
4.
5.
6.
7.
2.
4.
6.
8.
10.
12.
14.
2.
5.
8.
11.
14.
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})
10.
0.
0.
13.
0.
0.
16.
0.
0.
19.
end
disp(Soma)
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')
( )
// 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')
Aula 6 12/09/2013
Comando if
if (expresso lgica)
comando 1;
comando 2;
end
for i = 1 : length(X)
if ( X(i) > maior) then
maior = X(i) ;
end
end
disp(maior)
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
--> 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