Buscar

Introdução ao Scilab

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 58 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 58 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 58 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

ufca
Introduc¸a˜o ao Scilab
ECI0080/EM0014 Ca´lculo Nume´rico
“Numerical analysis is the area of mathematics and
computer science that creates, analyzes, and
implements algorithms for solving numerically the
problems of continuous mathematics.” (Atkinson)
Sobre o Scilab
http://www.scilab.org
Tipos de dados
Nu´meros reais
• Padra˜o IEEE 754-2008
• Precisa˜o simples: (−1)s2e−127(1 + f)
• Precisa˜o dupla: (−1)s2e−1023(1 + f)
• Propriedades: number_properties(’prop’), onde:
• ”radix”: base
• ”digits”: nu´mero de d´ıgitos
• ”huge”: maior real positivo
• ”tiny”: menor real normalizado positivo
• ”denorm”: um booleano
• ”tiniest”: se denorm = T, nu´mero positivo denormalizado m´ınimo.
Em outro caso, pr = tiny
• ”eps”: 2× epsilon da ma´quina (unidade de arredondamento)
• ”minexp”: expoente m´ınimo
• ”maxexp”: expoente ma´ximo
Tipos de dados
Nu´meros reais
• Precisa˜o dupla: (−1)s2e−1023(1 + f)
• ”digits”: 53 (52 + 1 impl´ıcito da normalizac¸a˜o)
• ”huge”: maior real positivo normalizado:
(−1)021023(252 − 1)
• ”tiny”: menor real normalizado positivo:
(−1)02−1022(1 + 0.000) = 2.22507385850720138× 10−308
• ”denorm”: um booleano
• ”tiniest”: se denorm = T, nu´mero positivo denormalizado
m´ınimo. Em outro caso, pr = tiny
• ”eps”: epsilon da ma´quina
• ”minexp”: expoente m´ınimo
• ”maxexp”: expoente ma´ximo
Tipos de dados
Nu´meros reais
Calculemos “na ma˜o” e no Scilab os seguintes valores:
a) log(1)
b) sin(0)
c) 2− (1/(5 · 1020)) · 1021
d) 2− (√2)2
e) cos(pi/2)
Houve algo de estranho?
Tipos de dados
Vetores e matrizes
Os vetores e matrizes sa˜o declarados:
• Entre colchetes
• Cada linha e´ separada por “;”
• As colunas sa˜o delimitadas por espac¸os em branco ou “,”
Tipos de dados
Vetores e matrizes
Existem func¸o˜es que criam matrizes especiais:
• ones(m,n): todos os coeficientes iguais a 1
• zeros(m,n): matriz nula
• eye(m,n): matriz identidade
• diag(v): matriz diagonal com os coefs. na˜o-nulos em v
• rand(m,n, ’dist’): matriz cujos coefs. sa˜o aleato´rios
segundo a distribuic¸a˜o normal ou uniform
Tipos de dados
Vetores e matrizes
e que criam vetores:
• a:b – vetor [a, a+ 1, a+ 2, . . . , b]
• a:b:c – vetor [a, a+ b, a+ 2b, · · · , b]
Tipos de dados
Vetores e matrizes
Podemos acessar sub-blocos de uma matriz A
• triu(A): parte triangular superior de A
• tril(A): parte triangular inferior de A
• diag(A): diagonal de A
• A(i,j)
• A(:,j)
• A(i,:)
• A(i:p,j:q)
• A(i:k:p,:)
Tipos de dados
Cadeias de caracteres
"Ola´ mundo!"
ou
’Ola´ mundo!’
Tipos de dados
Cadeias de caracteres
"Ola´ mundo!"
ou
’Ola´ mundo!’
O operador + concatena cadeias de caracteres:
”Bom ” + ” dia , ” + ” p e s s o a l ! ”
ans =
Bom dia , p e s s o a l !
Operac¸o˜es aritme´ticas
• Atribuic¸a˜o:
-->pi = 3.14
pi =
3.14
• Soma:
-->2.02 + 0.1
ans =
2.12
• Subtrac¸a˜o:
-->2.02 - 0.1
ans =
1.92
Operac¸o˜es aritme´ticas
• Multiplicac¸a˜o:
-->pi = 3.14;
-->r = 5;
-->circ = 2*pi*r
circ =
31.4
• Divisa˜o:
-->pi = 3.14;
-->pi/2
ans =
1.57
Operac¸o˜es booleanas
Operac¸o˜es booleanas:
• Igualdade: ==
• Diferente: <> ou ~=
• Menor: <
• Maior: >
• Menor ou igual: <=
• Maior ou igual: >=
Operac¸o˜es matriciais
A´lgebra matricial
• soma/subtrac¸a˜o: A + B
• multiplicac¸a˜o por escalar: tA
• produto de matrizes: A*B
• transposta: A’
• poteˆncia: A^n
Operac¸o˜es matriciais
A´lgebra matricial
• soma/subtrac¸a˜o: A + B
• multiplicac¸a˜o por escalar: tA
• produto de matrizes: A*B
• transposta: A’
• poteˆncia: A^n
Operac¸o˜es coeficiente-a-coeficiente
• multiplicac¸a˜o: .*
• potenciac¸a˜o: .^
• divisa˜o a` direita: ./
• divisa˜o a` esquerda: .\
Constantes especiais
• %e: base e de ln
• %pi: pi
• %i: base i = √−1
• %inf: ∞
• %nan: not a number
• %t: valor booleano verdadeiro
• %f: valor booleano falso
Func¸o˜es de gerais
• clc(): limpa a janela de comandos
• clc(n): limpa n linhas acima da atual linha de comandos e
move o cursor para la´
• clear x y: remove as varia´veis x e y da memo´ria
• clear(): remove todas as varia´veis da memo´ria
• format(d, ’v’ ou ’e’): formata um nu´mero
• help(): exibe a janela de ajuda
• SciNotes(): abre o editor de co´digos do Scilab
• who: exibe detalhes sobre as varia´veis armazenadas
• whos: exibe detalhes sobre as varia´veis armazenadas em
formato longo
Func¸o˜es matema´ticas
sin, cos, tan, asin, acos, atan, abs, min, max, sqrt, sum, log,
log10, log2, ceil, conj, factorial, floor, mean, median, modulo
Existem diversas func¸o˜es matema´ticas dispon´ıveis:
Desenhando gra´ficos
Gra´ficos bidimensionais
−−>t = ( 0 : 1 / 1 0 0 : 2 ) ∗ %pi ;
−−>y = s i n ( t ) ;
−−>p lot ( t , y ) ;
Desenhando gra´ficos
Gra´ficos tridimensionais
−−>t = [ 0 : 0 . 3 : 2 ∗%pi ] ’ ;
−−>z = s i n ( t )∗ cos ( t ’ ) ;
−−>plot3d ( s q r t ( t ) , t , z )
A linguagem do Scilab
Scilab interpreta sua pro´pria linguagem script
Os scripts sa˜o geralmente divididos em:
• .sce: co´digo executa´vel
• .sci: colec¸a˜o func¸o˜es que sera˜o carregadas para posterior
utilizac¸a˜o
Estruturas condicionais
i f e x p r 1 then
comandos
e l s e i f e x p r i then
comandos
. . . .
e l s e
comandos
end
Estruturas condicionais
i f e x p r 1 then
comandos
e l s e i f e x p r i then
comandos
. . . .
e l s e
comandos
end
Exemplo:
. . .
i f i == j then
a ( i , j ) = 2 ;
e l s e i f abs ( i−j ) == 1 then
a ( i , j ) = −1;
e l s e
a ( i , j ) = 0 ;
end ,
. . .
Estruturas condicionais
s e l e c t expr ,
case e x p r 1 then
comandos1 ,
case e x p r 2 then
comandos2 ,
. . .
case e x p r n then
comandosn ,
[ e l s e comandos ] ,
end
Estruturas condicionais
s e l e c t expr ,
case e x p r 1 then
comandos1 ,
case e x p r 2 then
comandos2 ,
. . .
case e x p r n then
comandosn ,
[ e l s e comandos ] ,
end
Exemplo:
n=round (10∗ rand ( 1 , 1 ) )
s e l e c t n
case 0 then
disp ( 0 )
case 1 then
disp ( 1 )
e l s e
break
end
Estruturas de repetic¸a˜o
f o r v a r i a v e l=e x p r
i n s t r u c o e s
end
Estruturas de repetic¸a˜o
f o r v a r i a v e l=e x p r
i n s t r u c o e s
end Exemplo:
n=5;
f o r i = 1 : n
f o r j = 1 : n
a ( i , j ) = 1/( i+j −1);
end ;
end
f o r j = 2 : n−1
a ( j , j ) = j ;
end
Estruturas de repetic¸a˜o
whi le e x p r
comandos
end
Estruturas de repetic¸a˜o
whi le e x p r
comandos
end
Exemplo:
e =1; a =1; k=1;
whi le norm( a−(a+e ) , 1 ) > %eps
e=e / 2 ;
k=k+1;
end
e , k
Estruturas de repetic¸a˜o
whi le e x p r
comandos
end
Exemplo:
e =1; a =1; k=1;
whi le norm( a−(a+e ) , 1 ) > %eps
e=e / 2 ;
k=k+1;
end
e , k
Tambe´m temos o break e o continue
Entrada e sa´ıda
Lendo valores a partir do teclado:
−−>s = input ( ’ D i g i t e seu nome : ’ )
D i g i t e seu nome : ’ Joao ’
s =
Joao
Entrada e sa´ıda
Exibindo resultados na tela:
• disp(’uma cadeia’, ’duas cadeias’)
• printf:
−−>a =2.3 ; b =2345; c =7.6789325; g=s q r t ( 2 ) ;
−−>p r i n t f ( ”As v a r i a v e i s sao : %i , %e , %f” , a , b , c )
As v a r i a v e i s sao : 2 , 2 .345000 e +03, 7 .678933
Func¸o˜es
As func¸o˜es podem possuir um nu´mero arbitra´rio de paraˆmetros
de entrada e sa´ıda
function [o1, ..., on] = minhafuncao(i1, ..., in)
. . .
endfunction
Func¸o˜es
As func¸o˜es podem possuir um nu´mero arbitra´rio de paraˆmetros
de entrada e sa´ıda
function [o1, ..., on] = minhafuncao(i1, ..., in)
. . .
endfunction
Exemplo:
f u n c t i o n r = maior ( a , b )
i f a > b then
r = 1 ;
r e t u r n ;
e l s e
r = 0 ;
r e t u r n ;
ende n d f u n c t i o n
Exerc´ıcio 0
Considere o seguinte resultado calculado no Scilab:
--> sin ( %pi )
ans =
1.225 D -16
a) Calcule p2 com a func¸a˜o nearfloat, procurando pelo
ponto flutuante sucessor %pi.
b) Calcule sin(p2). O que voceˆ pode dizer sobre o resultado
obtido?
c) Suponha que o resultado exato para sin(p1) seja
1, 22464679914735317e−16. Compare com o valor obtido
no Scilab, calculando o erro relativo.
floatingpoint
The floatingpoint module is an ATOMS module which allows
to analyze floating point numbers.
floatingpoint
The floatingpoint module is an ATOMS module which allows
to analyze floating point numbers.
• Para instala´-lo, basta executar:
atomsInstall("floatingpoint")
floatingpoint
• flps_systemnew: cria um formato de ponto flutuante
virtual
--> flps = flps_systemnew("format", 2, 3, 3)
flps =
Floating Point System :
======================
radix = 2
p = 3
emin = -2
emax = 3
vmin = 0.25
vmax = 14
eps = 0.25
r = 1
gu = T
alpha = 0.0625
ebits = 3
floatingpoint
• flps_numbernew: cria um nu´mero em ponto flutuante
associado a um formato. Por exemplo,
flpn = flps_numbernew("double", flps, x)
cria um nu´mero em ponto flutuante associado a x, no
formato double, para o formato flps
floatingpoint
Para obter o valor associado a um dado nu´mero em ponto
flutuante, usamos a func¸a˜o flps_numbereval
flpn = flps_numbernew("double", flps, x);
f = flps_numbereval(flpn);
floatingpoint
• flps_systemall(flps): retorna uma lista de todos os
nu´meros em ponto flutuante representados no formato
flps
floatingpoint
flps_systemgui: plots a graphics containing the floating
point numbers associated with a given floating point system.
floatingpoint
flps_systemgui: plots a graphics containing the floating
point numbers associated with a given floating point system.
flps_systemgui(flps)
flps_systemgui(flps, denormals)
flps_systemgui(flps, denormals, onlypos)
flps_systemgui(flps, denormals, onlypos, logscale)
onde:
• denormals is a boolean which must be set to true to display
subnormal numbers (default is true),
• onlypos is a boolean which must be set to true to display only
positive numbers (default is false),
• logscale is a boolean which must be set to true to use a base-10
logarithmic scale (default is false).
Exerc´ıcio 1
Considere um formato bina´rio de ponto flutuante com mantissa
de 3 bits (incluindo o impl´ıcito) e expoente variando de −2 a 3
Exerc´ıcio 1
Considere um formato bina´rio de ponto flutuante com mantissa
de 3 bits (incluindo o impl´ıcito) e expoente variando de −2 a 3
(a) Considere apenas os nu´meros normais positivos. Crie 1000
nu´meros normais neste sistema, distribu´ıdos uniformemente do
menor ao maior normal, inclusive. Compare-os com suas
representac¸o˜es em ponto flutuante neste formato e plote um
gra´fico com os erros relativos
Exerc´ıcio 1
Considere um formato bina´rio de ponto flutuante com mantissa
de 3 bits (incluindo o impl´ıcito) e expoente variando de −2 a 3
(a) Considere apenas os nu´meros normais positivos. Crie 1000
nu´meros normais neste sistema, distribu´ıdos uniformemente do
menor ao maior normal, inclusive. Compare-os com suas
representac¸o˜es em ponto flutuante neste formato e plote um
gra´fico com os erros relativos
(b) Considere agora 1000 nu´meros entre os subnormais
positivos no intervalo [0,01, 0,25], e calcule os erros relativos
Exerc´ıcio 2
Dados treˆs pontos p = (px, py), q = (qx, qy) e r = (rx, ry) no
plano, a posic¸a˜o relativa de r com relac¸a˜o a` reta L gerada por
p e q pode ser:
• a` esquerda
• sobre a reta
• a` direita
p
q
r
Exerc´ıcio 2
Dados treˆs pontos p = (px, py), q = (qx, qy) e r = (rx, ry) no
plano, a posic¸a˜o relativa de r com relac¸a˜o a` reta L gerada por
p e q pode ser:
• a` esquerda
• sobre a reta
• a` direita
orient(p, q, r) = sinal
det
1 px py1 qx qy
1 rx ry

= sinal ((qx − px)(ry − py)− (qy − py)(rx − px))
Exerc´ıcio 2
Dados treˆs pontos p = (px, py), q = (qx, qy) e r = (rx, ry) no
plano, a posic¸a˜o relativa de r com relac¸a˜o a` reta L gerada por
p e q pode ser:
• a` esquerda
• sobre a reta
• a` direita
orient(p, q, r) = sinal
det
1 px py1 qx qy
1 rx ry

= sinal ((qx − px)(ry − py)− (qy − py)(rx − px))
> 0⇒ r a` esquerda de L
= 0⇒ r sobre L
< 0⇒ r a` direita de L
Exerc´ıcio 2
p
q
r
Exerc´ıcio 2
p
q
r
vizinhanc¸a de p
Exerc´ıcio 2
p
q
r
orient(p, q, r) = 0?
vizinhanc¸a de p
Exerc´ıcio 2
p′
q
r
vizinhanc¸a de p
orient(p′, q, r) < 0?
Exerc´ıcio 2
p′
q
r
vizinhanc¸a de p
orient(p′, q, r) > 0?
Exerc´ıcio 2
Sejam ux = uy = 2
−53. Definimos
p′ = (px + aux, py + buy) ,
para 0 ≤ a, b ≤ 15. Dados
p = (0,5, 0,5), q = (12, 12) e r = (24, 24)
verifique para quais valores de a e b a func¸a˜o orient classificara´
erroneamente o ponto r.
	floatingpoint
	Exercício 1
	Exercício 2

Outros materiais