Escolar Documentos
Profissional Documentos
Cultura Documentos
ScilabAulas PDF
ScilabAulas PDF
Introduo ao Scilab
Softwarelivreparaclculonumricoesimulaodesistemasfsicos
comoumalinguagemdealtonvel(maisfcildecompreender)
Interpretado
Matrizesevetoressodadospadres
5. um software livre
Por que o Scilab foi criado?
Help
Prompt de comando Editor
Variveis especiais
Comando who
Constantes especiais
%e:constanteneperiana
%i:raizquadradade-1,nmeroimaginrio
%pi:constante
%eps:mximovalortalque1+%eps=1
%inf:infinito
%nan:noumnmero
%t:verdadeiro
%f:falso
Operadores de comparao
< menor
<= menorouigual
> maior
>= maiorouigual
== igual
~= diferente
<> diferente
& e
| ou
~ no
Comandos bsicos
pwd: Mostraodiretrioatual.
SCI: MostraodiretrioondeoScilabfoiinstalado.
ls: Listaosarquivosdodiretrio.
mkdir(dir): Criaumdiretrio.
exec(arquivo.sci): ExecutaumscriptScilab.
help(): MostraohelpdoScilab.
disp(var):Mostraocontedodevariveis.
binrio.
clear: Apagaasvariveisnoprotegidasdoambiente.
Comandos bsicos
Exerccio 1:
CrieumdiretriochamadoFile.
Entrenessediretrio.
Executeoscomandos:
A=ones(2,2);
disp(A);
SalveavarivelAnoarquivoteste.dat
ApagueavarivelA
Carregueovalordeteste.datnavarivelAnovamente;
VerifiqueovalordeA;
RemovaodiretrioFile.
Definio das variveis
Exerccio 2
Verificarsepossveldeclararasseguintesvariveis:
a=1;
Var_1=2;
2var=3;
estavarivel=3;
tens=2;
b=2;B=3;verifiquesebeBtmomesmovalor.
Como salvar os comandos executados
Comandodiary:Armazenaoscomandosemumtexto
Exemplo:
diary('arquivo.txt');
a=100;
b=200;
c=a+b;
disp(c);
diary(0);
Calculadora X Ambiente de programao
Calculadora
Oscomandossodigitadosdiretamentedoprompt.
Ambiente de programao
Oscomandossodigitadosemumarquivotexto.
Operaes e estruturas bsicas
Nmeros complexos
Z = a + %i*b
Exerccio 3:
1. Dadososseguintesnmeroscomplexos,
Z1=3+5i;Z2=7+3i
executeasseguintesoperaes:
a) Z1+Z2;
b) Z1*Z2;
c) Z1+sqrt(-20);
d) CalculeosmdulosdeZ1eZ2ecomparecomabs(z);
Lembre-se
z= a b
2 2
Vetores
Declarao de vetores:
X=[x1x2x3...]vetorlinha
X=[x1;x2;x3;...]vetorcoluna
Transposio de vetores:X
Exerccio 4:
1. Verifiqueadiferenaentre:x=[123]ex=[1;2;3]
2. Dadososvetores:
x=[1,2,3,4,5]ey=[2,4,6,8,10]
Calcule:
a)z=x+y;
b)z=x*y;
c)Formastranspostasdexey;
d)Dadosz1=x*y;ez2=x*y;
Verifiquesez1=z2.
Vetores
A = Valor_inicial:incremento:Valor_final
Exemplos:
A = 1:10;
B = 1:2:10;
C = 1:0.2:10;
D = 10:-1:1;
E = 1:%pi:20;
F = 0:log(%e):20;
G = 20:-2*%pi:-10
Operaes com vetores
Dimenso: length(x)
Nmero de linhas e colunas: [nr,nc] = size(x)
Elementos iguais a 1: x = ones(N,1)
Vetores nulos: x = zeros(N,1)
Vetores com valores aleatrios: x =rand(N,1)
Exerccio 5:
Crie:
Umvetorunitriocom10elementos
Umvetornulocom5elementos
Umvetorcom10elementosaleatrios
Verifiquesuasdimenses
Operaes com vetores
Exerccios 6:
1-DadoovetorX=[12345];
Insiraovalor10nofinal
Apagueoquintoelementodovetor
Atribuavalorzeroaoselementosentre2e4
2-Dadososvetores
X = [ e sin() log(10)]
Y = [10,3 1,1 -2,2]
crieumvetorZquesejadadopelauniodeXeY.
Matrizes
Umamatrizgeralconsisteemm*nnmerosdispostosemm
linhasencolunas:
Matrizes
Exemplo
No Scilab:
M = [1 2 3; 4 5 6; 7 8 9]
Operaes com Matrizes
Exerccio 7:
Dadasasmatrizes
A=[123;456];eB=[7;8;9]
Determine:
A*B
B*A
A*identidade(A)
A*ones(A)
A*ones(A)+identidade(A)
Operaes com Matrizes
Exerccio 8:
1. DadaamatrizA=[246;81012;123]
Atribuavalorzerolinha3;
Multipliquealinha2por10;
Removaaltimalinha
InsiraovetorB=[123]naltimalinhadeA
Operaes com Matrizes
Exerccio 9:
1. Crieumamatriz5X5denmerosaleatrios.
Atribuavalor0coluna2.
Multipliqueoselementosde2a4dacoluna3por10.
Dividaoselementosde1a3dacoluna5por5.
Removaacoluna3.
Removaalinha2.
Operaes com Matrizes
Soma: C = A + B
Multiplicao: C = A*B
Multiplicao por um escalar: B = A
Matriz complexa: C = A + B*%i (A e B reais)
Matriz transposta: C = A
Determinante: d = det(A)
Diagonal: d = diag(A).
Operaes com Matrizes
Exerccios 10: 1 3 4 6 8 9
2 3 4 9 1 3
3 3 3 6 5 3
Dadasasmatrizesaolado, A = 8 8 7 9 9 2
Calcule: 9 8 2 3 4 1
1. C=A+B 1 1 3 8 7 9
2. C=A*B
3. C=10*A+5*B 2 2 2 3 4 5
4. C=A+B*%i 9 0 0 1 2 3
5. C=A+rand(B) 0 1 2 3 7 8
6. DeterminantedeA
B = 1 9 2 3 5 6
7. DeterminantedeB 8 9 0 1 2 3
8. DiagonaldeA 4 2 3 4 5 5
Polinmios
Definindo polinmios:
y = poly([1 2 3], x, coeff); y = 1 + 2x + 3x2
ou: x = poly(0,x); y = 1+2*x + 3*x^2;
Exerccio 11:
Dadososseguintespolinmios:
y=1+4x+5x2+6x3
z=3x+5x3+7x4
Calcule:
a) y+z e)z*y/(z3)
b) y*z
c) y2+3z
d) z/y
Polinmios
Exerccio 12:
Dadososseguintespolinmios:
y=5+3x+10x2+8x3+10x4+6x5
z=2x+3x3+4x4+5x5
Calcule:
a) suasrazes
b) oscoeficientes
c) orestoeoquocientedasdivises:
y/zez/y
Matrizes de polinmios
Exerccio 13:
Dadasasmatrizesdepolinmios:
A=[2*x^2+3*xx;1x^3+2];
B=[3*x^4+x^2x^5;8*x+15];
Calcule:
A*B
A/B
DeterminantesdeAeB
Matrizes de polinmios
Exemplo:
s = poly(0, s);
A = [(1+2*s+3*s^3)/(s+2) 3*s+1/(2*s+1);s^4/(s^2+2)
3*s^2+4*s^3]
N = A(num);
D = A(den);
Matrizes simblicas
Aresoluodestesistemax=A-1 b,ouseja,bastaobteramatriz
inversadeA emultiplic-lapelovetorb.NoScilabistopodeser
feitodestaforma:
A=[1 3;3 4];b=[5;2]; 1x + 3y = 5
x=inv(A)*b 3x + 4y = 2
Estasoluopodeserobtidacomooperadordivisoesquerda
cujosmbolo\:
x=A\b
Exerccio 14:
1. Resolvaosistemalinear.Substituaassoluesnaequaopara
confirmarasoluo.
2X + 3y + 3z = 2
4x + 3y+ 2z = 1
3x + 7y + 9z = 5
Matrizes: operadores especiais
Operador . (ponto)
Esteoperadorusadocomoutrosoperadorespararealizar
operaeselementoaelemento.
Exemplo:
A = [1 2 3; 3 4 6; 7 8 9];
B = [2 4 6; 8 10 12; 14 16 18];
-->A.*B -->A./B
ans = ans =
2. 8. 18. 0.5 0.5 0.5
24. 40. 72. 0.375 0.4 0.5
98. 128. 162. 0.5 0.5 0.5
Matrizes esparsas
Umamatrizditaesparsaquandopossuiumagrandequantidade
deelementosiguaisazero.
Amatrizesparsaimplementadaatravsdeumconjuntodelistas
ligadasqueapontamparaelementosnozero.Deformaqueos
elementosquepossuemvalorzeronosoarmazenados.
Em Scilab:
A = [0 0 1; 2 0 0; 0 3 0]
-->sparse(A)
ans =
( 3, 3) sparse matrix
( 1, 3) 1.
( 2, 1) 2.
( 3, 2) 3.
Matrizes esparsas
Exemplo:
A=[001;200;030];
A=sparse(A);
B=[010;202;300];
B=sparse(B);
C=A*B;
ParaobteramatrizCnaformacompleta:
B = full(B);
Matrizes esparsas
Exerccio 15:
Verifiqueasformascompletasdasmatrizesabaixocomcomando
full.
A=sprand(2,2,0.1);
B=speye(2,2);
C=spzeros(2,2);
D=spones(A);
Listas
Exemplo:
L=list(23,1+2*%i,'palavra',eye(2,2))
-->L
L = [2 3 , 1 + 2 i, p a la v r a , 1 0 ]
L=
L(1)
23.
0 1
L(2)
1.+2.i Exerccio 16:
L(3)
palavra Verifiqueosvaloresde:
L(4)
1.0. L(1),L(2),L(4)eL(4)
0.1.
Listas
Podemoscriarsublistas,ouseja,listasdentrodelistas.
Exemplo:
L=list(23,1+2*%i,'palavra',eye(2,2))
L(4)=list('outrapalavra',ones(2,2))
Acessandoelementosdentrodalistadalista:
L(4)(1)
L(4)(2)
Agrupandoduaslistas:
L1=list(5,%pi,velocidade,rand(2,2));
L2=list(1+2*%i,ones(3,3),acelerao);
L=list(L1,L2);
Funes elementares
Exerccio 17:
Calcule:
a=sin(%pi/2);
b=tan(%pi);
c=cotg(%pi/3);
d=cos(%pi/4)+sin(%pi/4);
Funes elementares
Exerccios 18:
Dados:
x=[0.53.442.81.5];
y=[0.92.251.11.7];
Calcule:
a)seno(x),cosseno(x*.y),tangente(y)
b)log(x),log10(x*y),log2(x*y)
c)ceil(x)
d)floor(y)
e)round(x.*y)
f)sqrt(x)+floor(y.*y)
g)Verifiqueseabs(2+2*%i)=sqrt(8)
Programando com o Scilab
Caractersticas da linguagem Scilab
OScilabuminterpretadordecomandoseporissoocdigo
geradonoprecisasercompilado.
Facilidadeesimplicidadedalinguagemestruturada.
Nohnecessidadededeclaraoprviadasvariveis.
Comandos para iterao: for
O lao for
for variavel = inicio:incremento:fim
instrucao_1
Instrucao_2
...
instrucao_n
end
Exemplo: L=list(2,[12;34],'elemento');
a=0;
fork=L
fori=1:1:3
disp(k);
a=a+1;
end end
Comandos para iterao: while
O lao while
while condicao
instrucao_1
instrucao_2
... ...
instrucao_n
end
Olaowhile repeteumaseqnciadeinstruesenquanto
umacondioforsatisfeita.
tilquandonosesabeonmerodeiteraes.
Comandos para iterao: while
O lao while
Operadorespermitidos:
= =ou=(iguala)
<(menorque)
>(maiorque)
<=(menorouigual)
>=(maiorouigual)
< >ou~=(diferente)
Exemplo:
x=1;v=[];
whilex<=16;
v=[vx];x=x*2;
end
Comandos condicionais: if then else
if then else
if condicao_1 then
sequencia_1
else
sequencia_2
end
Forma geral:
if condicao_1 then
sequencia_1
elseif condicao_2
sequencia_2
...
else
sequencia_n
end
Exemplo:
x = -1; x = 10;
if x < 0 then if x < 0 then
y = 2*x; y = -x;
else elseif x == 1
y = x; y = x;
end elseif x == 2
disp(y); y = 2*x;
else
y = 5*x;
end
disp(y);
Comandos condicionais: select case
Forma geral:
select var
case expressao_1
sequencia_1
case expressao_2
Sequencia_2
...
else
sequencia_n
end
Exemplo:
M = ['a','c','d'];
x = ['a' 'b'];
select M(1,1)
case 'a'
y = 'Letra a encontrada';
case 'b'
y = 'Letra b encontrada';
end
disp(y);
Scripts
Exerccio 20:
Dadoovetorposiodeumobjetoqueestsedeslocandoa
umaaceleraoconstantea=10m/s2,comvelocidadeinicial
v=5m/seposioS0=1m,calculeasuaposioe
velocidadeentret=1e10s.Armazeneosdadosemvetores.
Definio:
function [y1,...,yn]= nome_da_funcao(x1,...,xm)
instrucao_1
instrucao_2
...
instrucao_p
endfunction
onde:
x1,...,xm so os argumentos de entrada;
y1,...,yn so argumentos de sada e
instruco_1,...,instrucao_p so as instrues executadas
pela funo.
Recomendao para construir programas e funes em Scilab
Exemplo:
1. Definirumafunoqueconverteumnmerocomplexoda
formacartesianaparaapolar.
Noarquivo:cart_to_polar.sci,digite:
function [mod,ang] = cart_to_polar(re,im)
mod = sqrt(re^2 + im^2);
ang = atan(im/re) * 180/%pi;
endfunction
Noarquivoprogram.sce(arquivodeexecuo)digite:
exec(' cart_to_polar.sci');
z = 2 + 2*%i;
[mod,ang] = cart_to_polar(real(z),imag(z));
disp(mod);
disp(ang);
Funes
Exerccio 21:
1Denvolvaumafunoquecalculeasrazesdeumaequao
dosegundograuusandoafrmuladeBskara.Afuno
devereceberumpolinmioeretornarumvetorcomas
solues.Deve-secriarumarquivotextoparaafunoeum
paraaexecuodoprograma.
2Crieumafunoquecalculeofatorialdeumnmero
usandoocomandodeiteraofor.Faaomesmousandoo
comandowhile.
Grficos no Scilab
Grficos no Scilab
Comandos bsicos:
clf: limpa a tela, evitando que o prximo grfico se
sobreponha ao anterior:
Exemplo:
y=sin(x);
plot2d(x,y);
z=cos(x);
plot2d(x,z);
Mas:
clf;plot2d(x,y);
Grficos no Scilab
Comandos bsicos:
xtitle ('titulo'): apresenta o ttulo do grfico
legend('legenda1', 'legenda2',)
Exemplo:
t=0:0.1:10;
S=5+10*t+0.5*2*t.*t;
V=10+2*t;
plot2d(t,S,-2);
plot2d(t,V,-4);
xtitle(Cinematica);
legend(Posio,Velocidade);
Grficos no Scilab
Comandos bsicos:
subplot: divide um janela de um grfico em sub-graficos
Exemplo:
subplot(221)
plot2d(x,sin(x))
subplot(222)
plot2d(x,cos(x))
subplot(223)
plot2d(x,tan(x))
subplot(224)
plot2d(x,sin(x).*cos(x))
Grficos no Scilab
Comandos bsicos:
logflag: define escala linear ou logartmica
nnlinearxlinear
nllinearxlogartmica
lllogartmicaxlogartmica
Exemplo:
x=1:100;
subplot(1,2,1);
plot2d(x,y,logflag='nn');
xtitle(Escalalinear);
subplot(1,2,2);
plot2d(x,y,logflag='ll');
xtitle(Escalalog-log);
Grficos no Scilab
Grficos tridimensionais
meshgrid: cria matrizes ou vetores 3D
Exemplo:
-->[xy]=meshgrid(-1:0.5:4,-1:0.5:5)
y= x=
-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1. -1.-0.50.0.51.1.52.2.53.3.54.
-0.5-0.5-0.5-0.5-0.5-0.5-0.5-0.5-0.5-0.5-0.5 -1.-0.50.0.51.1.52.2.53.3.54.
0.0.0.0.0.0.0.0.0.0.0. -1.-0.50.0.51.1.52.2.53.3.54.
0.50.50.50.50.50.50.50.50.50.50.5 -1.-0.50.0.51.1.52.2.53.3.54.
1.1.1.1.1.1.1.1.1.1.1. -1.-0.50.0.51.1.52.2.53.3.54.
1.51.51.51.51.51.51.51.51.51.51.5 -1.-0.50.0.51.1.52.2.53.3.54.
2.2.2.2.2.2.2.2.2.2.2. -1.-0.50.0.51.1.52.2.53.3.54.
2.52.52.52.52.52.52.52.52.52.52.5 -1.-0.50.0.51.1.52.2.53.3.54.
3.3.3.3.3.3.3.3.3.3.3. -1.-0.50.0.51.1.52.2.53.3.54.
3.53.53.53.53.53.53.53.53.53.53.5 -1.-0.50.0.51.1.52.2.53.3.54.
4.4.4.4.4.4.4.4.4.4.4. -1.-0.50.0.51.1.52.2.53.3.54.
4.54.54.54.54.54.54.54.54.54.54.5 -1.-0.50.0.51.1.52.2.53.3.54.
5.5.5.5.5.5.5.5.5.5.5. -1.-0.50.0.51.1.52.2.53.3.54.
Grficos no Scilab
Grficos tridimensionais
mesh: gera grficos em 3D
Exemplo:
[X,Y]=meshgrid(-5:0.1:5,-4:0.1:4);
Z=X.^2-Y.^2;
xtitle('z=x2-y^2');
mesh(X,Y,Z);
Grficos no Scilab
Campo vetorial
champ mostra campos vetoriais
Exemplo:
Velocidadedaguaemmovimentocircular
[x,y]=meshgrid(1:0.5:10,1:0.5:10);
vx=y./(x.*x+y.*y);
vy=-x./(x.*x+y.*y);
champ(x(1,:),y(:,1),vx,vy);
Grficos no Scilab
Curvas paramtricas
param3d: Gera uma curva paramtrica em 3D
Exemplo:
t=0:0.1:5*%pi;
param3d(sin(t),cos(t),t/10,35,45,"X@Y@Z",[2,3])
Grficos no Scilab
4.7.4.10.5.
3.5.7.5.8.
1.3.9.5.8.
6.7.2.6.10.
3.1.4.6.8.
-->Matplot(A)
Grficos no Scilab
Bar: mostragraficamenteumhistograma
Exemplo
h=[1451087431];
bar(h);
f=[0.30.10.0050.010.20.120.430.50.320.120.15];
x=0:0.1:1;
scf();
bar(x,f,r);
Comandos de entrada e sada
Comandos de entrada e sada
A = fscanfMat(file.txt): Lumamatrizdeumarquivo
fprintfMat(file.txt,A): Escreveumamatrizemumarquivo
Exemplo 1:
A=rand(10,2);
fprintfMat('Teste.txt',A);
Exemplo2:
clear
B=fscanfMat('Teste.txt');
C=rand(10,2)*5;
A=B+C;
fprintfMat('Teste.txt',A);
Comandos de entrada e sada
Exemplo:
fd=mopen(teste_io.txt,'w');
a=Valordeteste;
b=1.1;
fprintf(fd,'%s%1.2f',a,b);
mclose(fd);
Comandos de entrada e sada
Soluo:
Exemplo:
Crieumarquivoeescreva fd=mopen(novo_teste.txt,'w');
dentrodele:ABC a=A;b=B;c=C;
Fecheoarquivo fprintf(fd,A:%t%t%t',a,b,c);
Abraoarquivoconsiderando mclose(fd);
append eescreva:VXZ //Abrindocomappend
Fecheoarquivo fd=mopen(novo_teste.txt,'a');
Abraoarquivoeleiaseu a=V,b=X,c=Z;
contedo. fprintf(fd,B:%t%t%t,a,b,c);
Verifiqueocontedo mclose(fd);
//Leoarquivo
fd=mopen(novo_teste.txt,r');
frase=[];
while(meof(fd)==0)
str=mgetstr(1,fd);
frase=[frasestr];
end
Funes importantes
find: Achaosndicesdoselementosdeumvetorquecontmoselementos
procurados:
Exemplo:
A=[123456];B=find(A<3);disp(A(B));
C=['r','s','r','t','a'];find(C=='r');
sort: organizaemordemdecrescente
Exemplo:A=[123;567;231];v=sort(A,r);s=sort(A,c);
unique: extraioscomponentesdeumnicovetor.
Exemplo:A=[1342224566633];B=unique(A);
union: extraoselementosdauniode2vetores:
Exemplo:A=[111222344];B=[12567];C=union(A,B);
Funes importantes
Vectorfind: Achaemumamatrizumdadovetor(linhasoucolunasdamatriz).
Exemplo:
A=[123;234;456]
B=[123]
vectorfind(A,B,'r')
Exerccio 22:
GereumamatrizaleatriaA(5X5)comvaloresentre0e10.
Arredondeseusvalores.
AcheosdiferentesvaloresdamatrizecoloquenovetorB.
Ordeneaslinhasdamatrizemordemdecrescente.
ColoqueaunioentreAeBemC.
AcheasposiesdosvaloresdeA<5namatriz
EscrevaessamatriznoarquivoMat.txt
Histograma
Histogramaumaformadevisualizarasfreqnciasdosdadosdeumvetorem
formadebarra.Paraencontrarasfreqnciasnecessrioconheceroslimitesxmine
xmaxdovetorveonmerodecaixasNemquesequeiradistribuirosdados.Aidia
colocarnamesmacaixaonmerodeelementosqueestentreovalormnimoeo
valormximodacaixa.
Exerccio 23:
Crieumvetoraleatriode10000posiescomocomandorand(1,10000,'norm'),
encontreohistogramadessevetorefaaogrficocorrespondente.Qualaformada
curvaencontrada?
Dicas:
1.Crieumarquivoparaseroprogramaprincipal:programa.sce.Crieovetor
nessearquivo,chameafunoabaixoefaoogrficodohistogramausandoplot2d
2.Crieumafunocomonomehistograma.sciquerecebaosparametros:veN,
ondevovetoreNonmerodecaixas,eretorne[x,hx],ondexovalorda
coordenadaxehxafreqncia.
FIM