Anda di halaman 1dari 89

Universidade de So Paulo - USP

Modelagem Matemtico Computacional

Introduo ao Scilab

Paulino Ribeiro Villas Boas


Instituto de Fsica de So Carlos - IFSC

O que o Scilab?

Softwarelivreparaclculonumricoesimulaodesistemasfsicos

comoumalinguagemdealtonvel(maisfcildecompreender)

Interpretado

Matrizesevetoressodadospadres

Usado nas reas:


1. Fsica
2. Processamentodeimagens
3. Controleeprocessamentodesinais
4. Automaoindustrial
5. Controledeprocessos
6. Computaogrfica
7. Matemtica
8. Modelagembiolgica

Por que aprender Scilab?


1. Linguagem de alto nvel
Existem 4 nveis de linguagem de programao
Cdigo de mquina
Baixo nvel: Assembly
Mdio nvel, linguagens compiladas: c,c++,pascal,fortran
Alto nvel, linguagens interpretadas: perl,python,matlab,scilab

2. Vrios tipos de dados: matrizes,vetores,strings,listas


3. Funes mais elaboradas: inversodematrizes,autovaloreseautovetores
4. Vrias funes para visualizao de dados: plot2d,plot3d
5.

um software livre

Por que o Scilab foi criado?

Criado em 1989 por um grupo de pesquisadores da INRIA e da ENPC


com inteno de ser livre

Disponvel como software livre desde 1994 pelo site


http://www.scilab.org

Consrcio Scilab desde 2003 mantido por diversas empresas.

Objetivos do consrcio:

organizar cooperao entre os desenvolvedores

obter recursos para manuteno da equipe

garantir suporte aos usurios

Portabilidade, vrios Sistemas Operacionais:

Linux

Windows

Solaris

Unix

Mac OS

Executando o Scilab?

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.
chdir(dir) oucd(dir): Mudadediretrio.
mkdir(dir): Criaumdiretrio.
rmdir(dir, s): Removeumdiretrioetodooseucontedo.

Comandos bsicos
exec(arquivo.sci): ExecutaumscriptScilab.
help(): MostraohelpdoScilab.
disp(var):Mostraocontedodevariveis.
save(file, var): Salvavariveisespecficasemumarquivo
binrio.
load(file, var): recuperaosvaloressalvosemarquivo.
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

Sensvel a maisculas e minsculas


Palavra nica
At 24 caracteres
No pode iniciar com nmero

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
2
2

z= a b

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

Apaga elemento: X(i) = []

Insere elemento i no final: X = [X i]

Acessa ltimo elemento: X($)

Acessa elementos entre n e m: X(n:m)

Agrupa dois vetores: c = [x y];

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


Matrizes com elementos unitrios: A = ones(M,N)
Matrizes com elementos nulos: B = zeros(M,N)
Matriz identidade: A = eye(N,N)

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

Acesso linha i: A(i,:)


Acesso coluna j: A(:,j)
Insere linha no final: A = [A;linha]
Insere coluna no final: A = [A coluna]
Acesso ultima linha: A($,:)
Acesso ltima coluna: A(:,$)

Exerccio 8:
1. DadaamatrizA=[246;81012;123]

Atribuavalorzerolinha3;

Multipliquealinha2por10;

Removaaltimalinha

InsiraovetorB=[123]naltimalinhadeA

Operaes com Matrizes


Acesso a um conjunto de linhas: A(:,[i:j])
Acesso a um conjunto de colunas: A([i:j],:)
Matriz com nmero aleatrios: A = rand(N,M)

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

A =

1
2
3
8
9
1

3
3
3
8
8
1

4
4
3
7
2
3

6
9
6
9
3
8

8
1
5
9
4
7

9
3
3
2
1
9

B =

2
9
0
1
8
4

2
0
1
9
9
2

2
0
2
2
0
3

3
1
3
3
1
4

4
2
7
5
2
5

5
3
8
6
3
5

Exerccios 10:
Dadasasmatrizesaolado,
Calcule:
1. C=A+B
2. C=A*B
3. C=10*A+5*B
4. C=A+B*%i
5. C=A+rand(B)
6. DeterminantedeA
7. DeterminantedeB
8. DiagonaldeA

Polinmios

Funo poly(a,x, flag)


a: matriz de nmero reais
x: smbolo da varivel
flag: string ("roots", "coeff"), por default seu valor "roots".

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
roots(z): calcula as razes de um polinmio
[r,q] = pdiv(y,z): efetua a diviso e calcula quociente e resto
coeff(y): retorna os coeficientes do polinmio.

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

Os elementos da matriz podem ser polinmios:


Exemplo:
s = poly(0, s);
A = [1-2*s+s^3 3*s+4*s^2; s 2*s]

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
Se A uma matriz de polinmios:
A = A(num): retorna apenas os numeradores
A=A(den): retorna apenas os denominadores
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
Uma matriz simblica pode ser construda com elementos do
tipo string:
M =['a' 'b';'c' 'd'] ;
Se atribuirmos valores s variveis podemos visualizar a
forma numrica da matriz com a funo evstr():
Exemplo:
a = 1;
b = 4;
c = 3;
d = 5;
evstr(M);

Matrizes: operadores especiais


Operador \: diviso esquerda.
SejaAx=bumsistemadeequaeslinearesescritonaforma
matricial,sendoAamatrizdecoeficientes,xovetorda
incgnitasebovetordostermosindependetes:

Matrizes: operadores especiais


Aresoluodestesistemax=A-1 b,ouseja,bastaobteramatriz
inversadeA emultiplic-lapelovetorb.NoScilabistopodeser
feitodestaforma:
1x + 3y = 5
A=[1 3;3 4];b=[5;2];
3x + 4y = 2
x=inv(A)*b
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
ans =
2. 8. 18.
24. 40. 72.
98. 128. 162.

-->A./B
ans =
0.5
0.5 0.5
0.375 0.4 0.5
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
Funes que criam matrizes esparsas:
sprand(n,m,fill): Matriz esparsa aleatria com n*m*fill elementos no
nulos.
speye(n,n): Matriz identidade esparsa
spzeros(n,m): Matriz esparsa nula de dimenses nXm
spones(A): Coloca valor 1 onde Aij diferente de zero

Exerccio 15:
Verifiqueasformascompletasdasmatrizesabaixocomcomando
full.
A=sprand(2,2,0.1);
B=speye(2,2);
C=spzeros(2,2);
D=spones(A);

Listas
Uma lista um agrupamento de objetos no necessariamente do
mesmo tipo.
Uma lista simples definida no Scilab pelo comando list, que possui
esta forma geral:
L = list(a1,a2,a3 aN)
ondea1,a2,a3aNsooselementosdalista

Exemplo:
L=list(23,1+2*%i,'palavra',eye(2,2))
-->L
L=
L(1)
23.
L(2)
1.+2.i
L(3)
palavra
L(4)
1.0.
0.1.

L = [2 3 , 1 + 2 i, p a la v r a , 1 0 ]
0 1

Exerccio 16:
Verifiqueosvaloresde:
L(1),L(2),L(4)eL(4)

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
imag(x): Mostra a parte imaginria de um complexo
real(x): Mostra a parte real de um complexo
log(x), log10(x), log2(x): Logaritmos natural, base 10 e base 2
modulo(x,y): Mostra o resto da diviso de x por y
abs(x): Retorna o valor absoluto (se x real) e o mdulo
(se x complexo)

Funes elementares
round(x): Arredonda o valor de x para o inteiro mais prximo
floor(x): Arredonda para o menor inteiro
ceil(x): Arredonda para o maior inteiro
sqrt(x): Calcula a raiz quadrada de x

Funes trigonomtricas
cos(x), sin(x), tan(x), cotg(x): Retorna cosseno, seno,
tangente ou cotangente de x (x deve estar em radianos)
acos(x), asin(x), atan(x): Retorna o ngulo (em radianos)

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:
a=0;
fori=1:1:3
a=a+1;
end

L=list(2,[12;34],'elemento');
fork=L
disp(k);
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

Comandos condicionais so usados para executar


seqncias de instrues a partir da avaliao de condies
booleanas.

if then else
if condicao_1 then
sequencia_1
else
sequencia_2
end

Avalia a condicao_1 se ela for verdadeira (T, true) executa a


sequencia_1, caso contrrio executa a sequencia_2.

Comandos condicionais: if then elseif else end


Forma geral:
if condicao_1 then
sequencia_1
elseif condicao_2
sequencia_2
...
else
sequencia_n
end

Se a condicao_1 for verdadeira executa a sequencia_1.


Se a condicao_1 for falsa avalia a condicao_2 e assim
sucessivamente
Se todas as condies so falsas executa a sequencia_n.

Comandos condicionais: if then else


Exemplo:
x = -1;
if x < 0 then
y = 2*x;
else
y = x;
end
disp(y);

x = 10;
if x < 0 then
y = -x;
elseif x == 1
y = x;
elseif x == 2
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

O valor da varivel var comparado s expresses.


Se os valores so iguais, a seqncia correspondente
executada.

Comandos condicionais: select case


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

Os scripts so arquivos de texto que contm comandos


para serem usados em um prompt do Scilab.

Por conveno estes arquivos possuem extenso .sce

Os arquivos so criados no editor de texto do Scilab, o


Scipad (ou em qualquer outro editor de texto).

Os arquivos so executados no Scilab:

com o comando exec: exec('nome_do_arquivo.sce');

ou com o menu File> File Operations selecionando o


arquivo e clicando no boto exec

Scripts

Exerccio 20:
Dadoovetorposiodeumobjetoqueestsedeslocandoa
umaaceleraoconstantea=10m/s2,comvelocidadeinicial
v=5m/seposioS0=1m,calculeasuaposioe
velocidadeentret=1e10s.Armazeneosdadosemvetores.

Ateno: O script deve ser digitado em um editor de textos


e salvo com a extenso .sce, por exemplo exercicio20.sce.

Para executar no Scilab, digite: exec('exercicio20.sce').

Note que voc deve estar no diretrio em que o arquivo


exercicio20.sce se encontra.

Funes
Devem ser usadas para operar sobre um conjunto de dados,
realizar algumas instrues e retornar o resultado. Ex.:
encontrarovalormximodeumvetor
Melhor estratgia em programao quebrar um programa
em vrias partes menores (funes)
Regra de escopo: variveis definidas dentro de um funo
(conhecidas como variveis locais) no permanecem no
ambiente aps a execuo da funo.

Funes
Por converso, arquivos de funes recebem extenso .sci.
Por exemplo: funcao.sci
Uma funo pode ser carregada de trs formas:

no ambiente Scilab atravs do comando: getf('funcao.sci')

usando o comando deff ou

digitando o texto no Scipad e clicando no menu Execute,


opo load into Scilab

Funes
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


1. Antes de comear a programar, recomenda-se entender bem o
problema e em seguida planejar a melhor estratgia para resolv-lo.
2. Divida em partes o problema cada uma ser uma funo diferente.
3. Para comear, crie um arquivo para ser o programa principal. Digamos:
program.sce. Lembre-se de salvar as suas modificaes
regularmente.
4. A entrada e saida de arquivos devem ser realizadas dentro do
programa principal.
5. Visualizao de resultados, como por exemplo grficos, tambm deve
ser realizado dentro do programa principal.
6. Deixe para funes apenas partes especficas do programa.
7. D nomes sugestivos para as funes, por exemplo: max_element.sci
para uma funo que retorne o maior elemento de um vetor.
8. Use sempre o help do Scilab. Ele pode resolver inmeros problemas
rapidamente.

Funes

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
Para gerar grficos bidimensionais:
plot2d(x,y,style)
Ondexeysovetores.
Exemplo:
x=[-2*%pi:0.1:2*%pi];
y=sin(x);
plot2d(x,y);
Syle: tipo de linha do grfico. Valores inteiros positivos definem linhas
contnuas, valores negativos definem pontos.

plot2d(x,y,-1);

plot2d(x,y,2);

Grficos no Scilab
y pode ser uma matriz, sendo que o nmero de linhas de
y deve ser igual ao nmero de elementos de x
Exemplo:
x=[0:0.1:2*%pi];
y=[sin(x)cos(x)];
plot2d(x,y);

Grficos no Scilab
x e y podem ser matrizes de mesma dimenso
Exemplo:
t=[-5:0.1:5];
x=[tt];
y=[(t^2)(t^3)];
plot2d(x,y);

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=
-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.-1.
-0.5-0.5-0.5-0.5-0.5-0.5-0.5-0.5-0.5-0.5-0.5
0.0.0.0.0.0.0.0.0.0.0.
0.50.50.50.50.50.50.50.50.50.50.5
1.1.1.1.1.1.1.1.1.1.1.
1.51.51.51.51.51.51.51.51.51.51.5
2.2.2.2.2.2.2.2.2.2.2.
2.52.52.52.52.52.52.52.52.52.52.5
3.3.3.3.3.3.3.3.3.3.3.
3.53.53.53.53.53.53.53.53.53.53.5
4.4.4.4.4.4.4.4.4.4.4.
4.54.54.54.54.54.54.54.54.54.54.5
5.5.5.5.5.5.5.5.5.5.5.

x=
-1.-0.50.0.51.1.52.2.53.3.54.
-1.-0.50.0.51.1.52.2.53.3.54.
-1.-0.50.0.51.1.52.2.53.3.54.
-1.-0.50.0.51.1.52.2.53.3.54.
-1.-0.50.0.51.1.52.2.53.3.54.
-1.-0.50.0.51.1.52.2.53.3.54.
-1.-0.50.0.51.1.52.2.53.3.54.
-1.-0.50.0.51.1.52.2.53.3.54.
-1.-0.50.0.51.1.52.2.53.3.54.
-1.-0.50.0.51.1.52.2.53.3.54.
-1.-0.50.0.51.1.52.2.53.3.54.
-1.-0.50.0.51.1.52.2.53.3.54.
-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
Matplot: Mostra matrizes em 2D usando cores.
Exemplo:
-->Matplot([123;456])
-->A=round(rand(5,5)*10)
A=
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
Colormap: Define o mapa de cores
Exemplo:
-->xset("colormap",graycolormap(32))
-->Matplot(A)
-->xset("colormap",hotcolormap(32))
--> 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


mopen: [fd,err]=mopen(file, mode): abreumarquivo
mode:
r: abreapenasparaleitura
w: criaumnovoarquivoparaescrita
a: abreumarquivoparaadio:
[num_read, num] = mfscanf(u,"%f"): lumelementodo
arquivo
str=mgetstr(n [,fd] ): Lumcaracter.
fprintf(file,format,value_1,..,value_n):escreveemum
arquivo

err=meof(fd): Verificaseofinaldoarquivofoiencontrado.

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
dentrodele:ABC
Fecheoarquivo
Abraoarquivoconsiderando
append eescreva:VXZ
Fecheoarquivo
Abraoarquivoeleiaseu
contedo.
Verifiqueocontedo

fd=mopen(novo_teste.txt,'w');
a=A;b=B;c=C;
fprintf(fd,A:%t%t%t',a,b,c);
mclose(fd);
//Abrindocomappend
fd=mopen(novo_teste.txt,'a');
a=V,b=X,c=Z;
fprintf(fd,B:%t%t%t,a,b,c);
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

Anda mungkin juga menyukai