Você está na página 1de 72

Scilab

Software Numrico

Prof. Gerson Ulbricht,


MSc. Mtodos Numricos em Engenharia

Verso da Apostila: v. 2.

Jaragu do Sul SC
2010

SUMRIO

CAPTULO 1: NOES DE MATEMTICA NUMRICA..........................................5


1.1 Matemtica Numrica........................................................................................5
1.2 Sistema de Ponto Flutuante F(b,m,e1,e2).........................................................6
1.3 Converso de bases Exemplos........................................................................6
1.3.1. Transformao de outras bases para a base 10.....................................6
1.3.2. Transformao de base 10 para base 2.................................................7
1.4 Representao de Nmeros em Mquinas Digitais............................................8
1.5 Erros.................................................................................................................10
CAPTULO 2: INTERFACE GRFICA DO SCILAB..................................................15
2.1 Algumas variveis internas:.............................................................................17
2.2 Definio das variveis....................................................................................18
2.3 Comandos Importantes.....................................................................................19
2.4 Formato de Visualizao dos Nmeros............................................................20
CAPTULO 3: PRINCIPAIS COMANDOS...................................................................21
3.1 Operaes Matemticas...................................................................................22
3.2 Operaes com nmeros complexos................................................................22
3.3 Lista de algumas funes importantes do Scilab.............................................23
3.4 Funes Trigonomtricas.................................................................................25
CAPTULO 4: VETORES, MATRIZES E SISTEMAS LINEARES............................26
4.1 Vetores.............................................................................................................26
4.2.1 Gerao de Vetores..............................................................................26
4.2 Matrizes............................................................................................................27
4.2.1 Declarao de Matrizes:.......................................................................27
4.2.2. Funes Matriciais..............................................................................28
4.2.3 Manipulao de linhas e colunas:........................................................30
4.2.3.1 Mais comandos para matrizes e vetores................................................30
4.2.3.2 Quadro com comandos para matrizes e vetores....................................31
4.2.3.3 Operador . (ponto).................................................................................34
4.3 Resoluo de Sistema Linear:..........................................................................35
CAPTULO 5: POLINMIOS........................................................................................41
5.1 Definio de Polinmio a Partir dos Coeficientes...........................................41
5.2 Definio de Polinmio a Partir das Razes.....................................................41
5.3 Obteno das Razes de um Polinmio............................................................42
5.4 Operaes com Polinmios..............................................................................42
CAPTULO 6: GRFICOS BIDIMENSIONAIS E TRIDIMENSIONAIS...................45
6.1 Comandos Bsicos para Grficos.....................................................................45
6.2 Grficos 2D......................................................................................................45
6.2.1 Comando para Ttulos e Legendas.......................................................46
6.2.1.1 Posio da Legenda...............................................................................47
6.2.2 Apresentao de vrios grficos em uma mesma janela .....................48
6.2.3 Especificao do tipo e cor da linha e do marcador ...........................52
6.2.4 Vrios Grficos em um Mesmo Sistema de Eixos .............................52
6.2.5 Tabelas de Cores, estilos de linhas e marcadores ...............................53
6.2.6 Linhas de Grade ..................................................................................53
2

6.3 Grficos 3D......................................................................................................54


6.3.1 Grficos tridimensionais Comando meshgrid...............................55
6.3.2 Tipos de Grficos 3D...........................................................................56
6.4 Grficos Estatsticos.........................................................................................60
6.4.1 Grficos de colunas..............................................................................60
6.4.2 Polgono de Frequncias......................................................................61
6.4.3 Grfico de Barras Horizontais.............................................................62
6.4.4 Grfico de Setores................................................................................62
6.4.5 Histograma...........................................................................................64
6.4.6 Diagrama de Disperso........................................................................65
CAPTULO 7: DIFERENCIAO E INTEGRAO .................................................69
7.1 Derivada de um Polinmio...............................................................................69
7.2 Integrais............................................................................................................69
7.2.1 - Funo integrate ...............................................................................69
7.2.2 Clculo da Integral Definida Conhecendo-se um Conjunto de Pontos 70
REFERNCIAS..............................................................................................................72

O Scilab

O Scilab um ambiente utilizado no desenvolvimento de programas para a


resoluo de problemas numricos e possui uma interface muito semelhante ao Matlab.
Desenvolvido desde 1990 pelos pesquisadores do INRIA (Institut National de
Recherche en Informatique et en Automatique) e do ENPC (cole Nationale des Ponts
et Chausses), agora mantido e desenvolvido pelo Consorcio Scilab desde sua criao
em Maio de 2003 .

Distribudo gratuitamente via Internet desde 1994, o Scilab

atualmente usado em diversos ambientes industriais e educacionais pelo mundo.


O download da verso atual pode ser obtido em http://www.scilab.org/ .

PARTE I NOES DE MATEMTICA NUMRICA


CAPTULO 1: NOES DE MATEMTICA NUMRICA

Esse captulo tem como objetivo mostrar a ideia de funcionamento de uma


maquina eletrnica de clculo. Devido ao Scilab tratar de matemtica numrica, os
conceitos so fundamentais para o bom entendimento do assunto.
1.1 Matemtica Numrica
Se trata da resoluo de problemas utilizando mtodos numricos possveis de
serem implementados computacionalmente levando em conta aspectos de
confiabilidade, esforo computacional e erros de arredondamento, de iterao e de
truncamento.

Como a maior parte dos problemas no tem soluo direta e precisa, recorre-se a
mtodos numricos iterativos onde necessrio que se escolha um critrio de parada.

1.2 Sistema de Ponto Flutuante F(b,m,e1,e2)


Representao de um nmero real x em ponto flutuante:
x R
fl(x) = (0.d1d2.....dt)b. be = man. be
di :
dgito, di {0,1,..., b-1}, d1 0
Representao de um sistema de ponto flutuante: F(b, m, e1, e2)
b:
base, b N, b 2
e1:
menor expoente
e2:
maior expoente
m:
preciso da mquina, no fixo de dgitos da mantissa
man:
mantissa

0,00...0.
L
-mb
m

Overflow

Underflow

M
Overflow

Exemplo 1: F(10,3,-5,5)
Maior nmero positivo representado pela mquina: M= + 0.999 105 = 99900
Menor nmero positivo representado pela mquina: m= + 0.100 10-5 = 0.000001
Observar que a representao no tem distribuio uniforme, ver por exemplo outros
valores.
Exemplo 2: F(2,4,-3,3)
Maior nmero positivo: M= + 0.1111 23 = (1.2-1+1.2-2+1.2-3+1.2-4).23=15/2
Menor nmero positivo: m = + 0.1000 2-3 = (1.2-1+0.2-2+0.2-3+0.2-4).2-3=1/16
1.3 Converso de bases Exemplos
1.3.1. Transformao de outras bases para a base 10
1.3.1.1. Transformar para a base 10.
Exemplo: Transformar (1011)2 para base 10.
(1011)2 = 1x2 + 0x2 + 1x2 + 1x20 = 8 + 0 + 2 + 1 = (11)10 = 11.
a) Transformar (10.1)2 para base 10
b) Transformar (11.01)2 para base 10
c) Transformar (101.111) 2 para base 10
1.3.1.2. Outros tipos de bases (O processo semelhante, mudando somente a base da
potncia)

Transformar (1201)3 para base 10


6

Transformar (746)8 para base 10


Transformar (2BE3)16 para base 10

1.3.2. Transformao de base 10 para base 2


Para transformar da base 10 para outras bases (base 2, base 8, base 16), divide-se
sucessivamente pela base desejada, aproveitando-se o ltimo quociente e os restos das
divises sucessivas na ordem inversa.
Exemplo: Transformar (25)10 para base 2
25
1

2
12
0

2
6
0

2
3
1

2
1

Assim, (25)10 = (11001)2


1.3.2.1 Transformar os nmeros seguintes da base 10 para a base indicada.
a)
b)
c)
d)
e)

Transformar (128)10 para base 2


Transformar (100)10 para base 2
Transformar (56)10 para base 3
Transformar (887)10 para base 8
Transformar (4539)10 para base 16

Parte fracionria: Para transformar a parte fracionria de um nmero na base 10 para a


base 2, utiliza-se o mtodo das multiplicaes sucessivas:
1) Multiplicar a parte fracionria por 2
2) Deste resultado, a parte inteira ser o 1 dgito na base 2, e a parte fracionria
novamente multiplicada por 2. O processo repetido at que a parte fracionria do
ltimo produto seja igual a zero.
Exemplo: Transformar (0.75)10 para base 2
0,75 x 2 = 1,5 (o n 1 antes da vrgula ser o 1 dgito decimal na base 2)
0,5 x 2 = 1,0 (o n 1 antes da vrgula ser o 2 dgito decimal na base 2)
(o 0 aps a vrgula o critrio de parada)
Assim, (0.75)10 = (0.11)2
a) Transformar (0.1875)10 para base 2
b) Transformar (0.6)10 para base 2
c) Transformar (40.25)10 para base 2

Lista de exerccios
1. Transformar para a base 10:
a) (101101)2 Resposta: (45)10
b) (11011)2 Resposta: (27)10
c) (110.01)2 Resposta: (6.25)10
d) (111.111)2 Resposta:
e) (10110.1)2 Resposta:
2. Transformar para a base 10:
a) (1265)8
Resposta: (693)10
b) (ABC3)16 Resposta: (43971)10
3. Transformar os nmeros de 1 a 10 da base 10 para a base 2.
4. Transformar para a base 2:
a) (15)10
Resposta: (1111)2
b) (0.125)10 Resposta: (0.001)2
c) (0.9)10
Resposta: (0.1110011..)2
d) (0.6)10
Resposta: (0.1001100..)2
e) (12.5)10
Resposta: (1100.1)2
5. Transformar
a) (253)8 para base 2 Resposta: (10101011)2
b) (AB)16 para base 2 Resposta: (10101011)2
6. Seja o sistema de ponto flutuante F(2, 3, -1, 2), determine todos os valores de F e
represente-os em um eixo.
7. Plotar num eixo, os valores encontrados no exerccio anterior com auxlio de software
numrico MATLAB ou Scilab.
1.4 Representao de Nmeros em Mquinas Digitais
Numa mquina digital, os nmeros so armazenados no sistema binrio. Cada
dgito (0 ou 1) chamado de bit, sendo que um conjunto de 8 bits forma um byte.
Geralmente, inicia-se com um nmero para indicar o sinal do nmero
(0=positivo e 1 = negativo), na sequncia aparecem os algarismos da mantissa, em
seguida vem 1 bit para indicar o sinal do expoente (0=positivo e 1 = negativo) e o
expoente que deve ser um nmero inteiro entre e 1 e e2, conforme especificao do
sistema de ponto flutuante utilizado.
Considerando para exemplificar, uma mquina digital que use um sistema F(2,
10, -15, 15). Representar o nmero (25)10 nessa mquina.
Transformando para a base 2:
(25)10 = (11001)2 = (0.1100100000 x 25)2 = (0.1100100000 x 2101)2

Como o nmero e o expoente so positivos, os dgitos para represent-los so


iguais a zero. A representao do nmero (25)10 numa mquina que use esse sistema :
0

O maior valor que pode ser representado :


0

Que transformado para a base 10 resulta em 32736.


O menor nmero que pode ser representado :
-0.1111111111 x 21111 = -(32736)10
Por exemplo, o nmero (-7,125)10 representado nessa mquina fica:
(-7.125)10 = (-111.001)2 = (-0.111001 x 211)2:
1

O menor nmero positivo que pode ser representado nessa mquina :


0

que na base 10 igual a (0.100000000 x 2-15)2 = 0,000015259.


O prximo nmero que pode ser representado nessa mquina :
0

que na base 10 igual a (0.100000001 x 2-15)2 = 0,000015289.


Nessa mquina, o zero representado por:
0 0 0 0 0 0 0 0 0 0

Atravs desses exemplos, pode-se ver que todos os nmeros que podem ser
representados por essa mquina esto entre -32736 e 32736 e que existem nmeros reais
que no podem ser representados nessa mquina.
A quantidade de nmeros de pontos flutuantes dada pela equao:
#F = 2.(b-1).bn-1.(e2-e1 + 1)+1. Verifique. Resposta: 31745.
Logo, a quantidade de nmeros de ponto flutuante que pode ser representado
nesse sistema 31745, e eles no ficam igualmente distribudos no intervalo [-32736,
32736].
Exerccios
1. Seja uma mquina hipottica, cujo sistema de ponto flutuante seja F(2, 8 -7, 7).
Determine:
9

a) O maior nmero no sistema binrio que pode ser representado nessa mquina.
b) O resultado anterior no sistema decimal.
c) O menor nmero positivo no sistema binrio que pode ser representado nessa
mquina.
d) O resultado anterior no sistema decimal.
e) O intervalo no sistema decimal, onde se encontram todos os nmeros de ponto
flutuante que podem ser representados nessa mquina.
f) A quantidade total de nmeros de ponto flutuante que podem ser representados nessa
mquina.
g) Quantos bits so necessrios para representar os nmeros desse sistema?
h) A representao nesse sistema, do nmero 2.5
i) A representao nesse sistema, do nmero -7.25
j) A representao nesse sistema, do nmero -0.005

2. Seja uma mquina hipottica, cujo sistema de ponto flutuante seja F(2, 6 -15, 15).
Determine:
a) A quantidade total de nmeros de ponto flutuante que podem ser representados nessa
mquina.
b) O intervalo no sistema decimal, onde se encontram todos os nmeros de ponto
flutuante que podem ser representados nessa mquina.
c) Quantos bits so necessrios para representar os nmeros desse sistema?
d) Represente o maior nmero no sistema binrio que pode ser representado nesse
sistema.
e) Represente o menor nmero positivo no sistema binrio que pode ser representado
nesse sistema.

1.5 Erros
Mesmo quando utiliza-se para resoluo de um modelo matemtico, um mtodo
exato, pelo fato de este envolver um nmero muito grande de operaes (adio,
subtrao, multiplicao e diviso) e sendo essas processadas em equipamentos com
capacidade limitada para armazenar dados, pode haver a ocorrncia de erros.
Erros na fase de modelagem: ocorrem na interpretao do problema bem como
na construo dos algoritmos de resoluo.
Erros de arredondamento: quando se utiliza equipamento computacional e se
o nmero obtido em um clculo no representvel exatamente no SPF, o mesmo ser
representado de forma aproximada.

10

Um nmero na base b arredondado na posio n, se todos os dgitos de ordem


maior que n forem descartados. O dgito de ordem n acrescido de uma unidade se o de
ordem (n+1) for maior ou igual metade da base.
Exemplo: Considere o SPF: F(10, 4 -5, 5).
a) Se a = 0.5324 x 10 e b = 0.4212 x 10, ento a x b = 0.22424688 x 10 1, que
arredondado e armazenado como a x b = 0.2242 x 101.
b) Se a = 0.5324 x 10 e b = 0.1237 x 10, ento a + b = 0.54477 x 10, que
arredondado e armazenado como a + b = 0.5448 x 101.
Erros de truncamento: um arredondamento por corte, onde para obter um
nmero com n dgitos, simplesmente trunca-se a posio n.
Exemplo: Considere o SPF: F(10, 4 -5, 5).
Se a = 0.5324 x 10 e b = 0.4212 x 10, ento a x b = 0.22424688 x 10 1, que
armazenado como a x b = 0.2242 x 101.
Se a = 0.5324 x 10 e b = 0.1237 x 10, ento a + b = 0.54477 x 10, que arredondado
e armazenado como a + b = 0.5447 x 101.
Exemplo: Calcular o valor e utilizando a srie de Taylor utilizando os qutro
primeiros termos da srie e comparar com o resultado de uma calculadora cientfica
qe utiliza mais termos desta srie.
x x 3
xn
ex = 1+ x +
+
+ ... +
2! 3!
n!
Erro absoluto e relativo
Erro absoluto: Eabs = |Xex Xaprox|
Como na maioria das vezes, o valor exato no disponvel, trabalha-se com um
limite superior para o erro:
|Xex Xaprox|
Ou seja: - (Xex Xaprox) ,
Ou ainda: Xaprox - Xex Xaprox + ,

Erro relativo: Erel =

| X ex - X aprox |

X ex
Como na maioria das vezes, o valor exato no disponvel, trabalha-se com um
limite superior para o erro relativo:


X aprox

11

Mal Condicionamento
A maioria dos processos numricos segue uma linha geral:
1) Dados so fornecidos;
2) Os dados so processados de acordo com um plano pr estabelecido
(algoritmo)
3) Resultados so produzidos
Existem problemas bem postos e mal postos.

Exemplo 1:
Resolver o sistema linear:
y
=
2
x +

x + 1.01 y = 2.01
Resolvendo pelo mtodo da substituio obtm-se x = 1 e y = 1.
Se o nmero 2.01 da segunda equao mudado para 2.02, obtm-se
x= 0 e y = 2.
Verifique essa situao resolvendo os sistemas.
Exemplo2 : soluo da equao do 2o grau: ax 2 + bx + c = 0
x 1, 2 =

b 2 4ac
2a

Supondo: b2 >>> 4ac, o clculo de x2 envolver a diferena de dois nmeros prximos,


o que provoca perda significativa de dgitos. A resposta sofrer influncia dessa perda.
Uma alternativa pode ser calcular x1 como proposto acima e usar a propriedade de
razes de equaes do 2 grau: x1.x2=c/a
Exemplo: seja a equao: x - 100.22x + 1.2371 = 0
Usando aritmtica de ponto flutuante com 5 dgitos:
b = 10044
b 4ac = 10039
b 4ac = 100.19
Calculando as razes pelas frmulas apresentadas no primeiro procedimento tmse:
x1= (100.22 + 100.19)/2 = 100.20
x2= (100.22 - 100.19)/2 = 0.015
Por outro lado, usando o valor de x1 e o segundo procedimento tm-se:

12

x2 =

c
= 1.2371/100.20 = 0.012346
a.x1

Numa calculadora com 16 dgitos, usando a segunda alternativa, tm-se:


x1 = 100.20
x2 = 0.012345364
Para quantificar a diferena entre os dois procedimentos, observa-se que o erro
relativo da aproximao x2 usando o primeiro processo, de 21,5%, ao passo que
com o segundo procedimento, teramos uma aproximao com erro relativo de
0.0052%.
Exerccios
1. Sabe-se que = 3.14 (valor aproximado). Considerando = 3.1415926, qual
ser o erro:
a) Absoluto
b) Relativo
2. (Resolvido) Num sistema F(10, 4, -8, 8), qual o erro cometido por:
a) Arredondamento
b = 10 e n= 4
1
1
1
= b1 n = 101 4 = 10 3 = 5.10 4
2
2
2
Portanto, o erro por arredondamento, ser:
Earred Earred 0.0005
b) Truncamento
= b1 n = 101 4 = 1.10 3 = 0.001
Portanto, o erro por truncamento, ser:
Etrunc Earred 0.001
Pelo exemplo anterior, pode-se observar que em geral, o erro de arredondamento
menor que o de truncamento.
3. Num sistema F(2, 10, -15, 15), qual o erro cometido por:
) Arredondamento
) Truncamento
4. O algoritmo abaixo (em Matlab) pode ser utilizado para calcular com quantos
dgitos uma mquina trabalha (no sistema binrio):
function ncasas
%Calcula o nmero de dgitos que o computador trabalha (base 2)
%Programao: Gerson Ulbricht Cdigo em Matlab
E=1;
j=0;
13

while 1+E>1
E=E/2;
j=j+1;
end
disp('N de dgitos que o computador trabalha:')
disp(j)
end
Explique por que esse algoritmo funciona.

14

PARTE II O Ambiente SCILAB

CAPTULO 2: INTERFACE GRFICA DO SCILAB

O Scilab um ambiente voltado para o desenvolvimento de software para


resoluo de problemas numricos. O Scilab foi criado em 1990 por um grupo de
pesquisadores do INRIA Institut de Recherche en Informatique et en Automatique e
do ENPC - cole Nationale des Ponts et Chausses.
Desde 1994, quando passou a ser disponvel na Internet, Scilab gratuito, free
software, e distribudo com o cdigo fonte, open source software. Alm da distribuio
com o cdigo fonte, existem, tambm, distribuies pr-compiladas do Scilab para
vrios sistemas operacionais.
As principais caractersticas desse ambiente de programao numrica extremamente
flexvel so:
Ambiente poderoso para gerao de grficos bi e tridimensionais, inclusive com
animaes;
Manipulaes com matrizes so facilitadas por diversas funes implementadas
nos toolboxes;
Permite trabalhar com polinmios, funes de transferncia, sistemas lineares e
grafos;
Define funes facilmente;
Permite acesso a rotinas escritas em FORTRAN e C;
Pode ser acessado por programas de computao simblica, como o MuPad;
Permite o desenvolvimento de toolboxes.
Alm dos toolboxes desenvolvidos pelo grupo Scilab, esto disponveis outras
complementares, igualmente gratuitas, como o ANN (Artificial Neural Network), o
FISLAB (Fuzzy Logic Inference) e o FRACLAB (Fractal, Multifractal and Wavelet
Analisys).
Algumas funes do Scilab esto alocadas em toolboxes bem definidas, dadas as suas
especificidades. Temos como exemplo:
Funes de lgebra Linear: bibliotecas LINPACK, EISPACK, LAPACK e
BLAS;
Funes para soluo de Equaes Diferenciais: bibliotecas ODEPACK e
SLATEC;
Funes de Otimizao: biblioteca MINPACK.
Descritas algumas caractersticas internas do Scilab, hora de conhecer a janela
de trabalho (Workspace) do Scilab. Na verso 5, ela se apresenta da seguinte forma:

15

O Scilab contm variveis especiais presentes no ambiente. Esses so valores


pr definidos que podem ser usados diretamente na programao. A maioria dessas
variveis prefixada com o smbolo de porcentagem (%). Elas podem ser acessadas
atravs da digitao do comando whos no prompt de comando. importante lembrar
que, se o usurio definir alguma varivel antes de digitar whos, ela tambm aparecer
no workspace.
Digitando who, aparecer:

16

2.1 Algumas variveis internas:


-->%i
%i =
i
( o nmero complexo i)
-->%eps
%eps =
2.220D-16
(preciso de mquina. O maior nmero para o qual 1+ %eps = 1)
-->%pi
%pi =
3.1415927
(Valor de Pi)

17

-->%e
%e =
2.7182818
(Nmero de Euler)
-->%T
%T =
T
(Verdadeiro - True)
-->%F
%F =
F
(Falso - False)
A funo pwd mostra qual o diretrio est sendo usado:
-->pwd
ans =
C:\Program Files\scilab-5.2.2
2.2 Definio das variveis
Ao definir uma varivel deve-se tomar os cuidados:
Sensvel a maisculas e minsculas
Palavra nica
At 24 caracteres
No pode iniciar com nmero
Exerccio
1) Verificar se possvel declarar as seguintes variveis:
a = 1;
Var_1 = 2;
2var = 3;
esta varivel = 3;
tens = 2;
b = 2; B = 3; verifique se b e B tm o mesmo valor.
18

2.3 Comandos Importantes


clear: apaga todas as variveis declaradas.
clear A: apaga a varivel A.
clear total: apaga a varivel total.
clear XY: apaga a varivel XY e assim por diante.
clc: limpa a tela sem apagar as variveis declaradas
// : usado para colocar um comentrio. Por exemplo: // Este um teste!
Todas as variveis criadas durante os trabalhos no ambiente podem ser
armazenadas em um arquivo. O comando save usado para tal, com a seguinte sintaxe:
save(nome_do_arquivo.dat,variveis)
Para recuperar os valores das variveis, usa se o comando load e o comando
clear usado para limpar variveis no protegidas:
load(nome_do_arquivo,variveis)
O comando help, quando digitado sem caracterizao, abre uma listagem com
todas as funes presentes no programa. Se caracterizado, abre a mesma janela, porm
com a funo j aparecendo diretamente.
Exemplo:
-->help det (Abre a ajuda sobre determinantes)
Alm de armazenar variveis, possvel criar uma memria de clculo, salvando
os comandos digitados em um arquivo, atravs do comando diary:
Sintaxe:
diary(nome_do_arquivo);
(na sequncia desenvolve-se qualquer tipo de comando ou cdigo)
diary(0)
//(Fecha o comando)
O arquivo ser salvo como texto.
Exemplo:
diary(Meu arquivo.txt);
a = 100;
b = 200;
c = a+b;
disp(c);
diary(0);

19

2.4 Formato de Visualizao dos Nmeros

O comando format modifica a quantidade de dgitos com que os nmeros so


mostrados no Scilab. Por exemplo, o comando:
--> format(5)
far com que todas os nmeros sejam visualizados em 5 posies (incluindo o ponto
decimal e um espao para o sinal). Por exemplo,
-->sqrt(3)
ans =
1.73
Para aumentar o nmeros de posies para 16, usa-se:
-->format(16)
-->sqrt(3)
ans =
1.7320508075689
A raiz de 3 foi mostrada ocupando 16 posies (sendo uma posio para o ponto,
um espao reservado para o sinal, uma posio para a parte inteira e 13 posies para a
parte fracionria).
O comando format(e) mostra os nmeros em notao cientfica. Por exemplo,
-->format(e)
-->2*%pi/10
ans =
6.283185307E-01
6.283185307E-01 significa 6.283185307 101. Para retornar ao formato inicial usase,
-->format(v)
que chamado de formato de varivel.
Outras formas de usar o comando format:
-->format(v,10)
mostra os nmeros em formato de varivel com 10 posies.
-->format(e,8)
mostra os nmeros em notao cientfica com 8 posies.

20

CAPTULO 3: PRINCIPAIS COMANDOS

Scilab um ambiente de programao numrica. Desse modo, existem duas


formas de interao com o software: digitao diretamente no prompt, em que se tem
uso de uma poderosssima mquina de clculo, ou como programao numrica
propriamente dita, em que se delineiam linhas de cdigo.
A primeira instruo a respeito do prompt quanto ao uso do ponto e vrgula:
ele faz com que o compilador interprete o fim da execuo da linha de comando e esteja
pronto para receber outra linha. Neste caso, o resultado da operao fica mascarado para
o usurio. Se no for escrito o ponto e vrgula, a quebra de linha vai denotar fim da
execuo, mas o resultado ser exibido para o usurio. Ambas as formas tm sua
aplicao.
Exemplo,
-->// O ponto e vrgula suprime a apresentao do resultado
-->A = 1; // a varivel A assume o valor 1
-->b = 2; // atribuindo a varivel b o valor 2
-->A + b // Adio de A e b
ans =
3.
Quando se est trabalhando com vetores de muitos elementos, no conveniente
esquecer o ponto e vrgula, pois isto pode acarretar perda de tempo e travamento da
mquina (o Scilab tem uma ferramento til para evitar esse infortnio: a cada algumas
linhas de exibio, aparece uma mensagem perguntando se se deseja continuar a
exibio); j quando se quer testar uma operao, debugar um programa ou se as
variveis usadas forem de baixa ordem, o ponto e vrgula por vezes necessrio (no
mnimo, facultativo).
Quanto digitao, geralmente utiliza-se um comando em cada linha, mas
possvel digitar vrios comandos em uma mesma linha:
Exemplo:
-->m = 1.5; b = 35; c = 24; // Vrios comandos em uma nica linha
Tambm possvel desdobrar um nico comando em vrias linhas utilizando ...
ao final
do comando. Por exemplo,
-->A = 3 * m ^ 2 + ... // Um comando em varias linhas
--> 4 * 5 + ...
--> 5 * 3
A=
41.75
Outra observao importante que o Scilab case sensitive. Quando o
programador definir uma varivel com letras maisculas e minsculas, deve se
lembrar de manter a caixa das letras.
21

3.1 Operaes Matemticas


As operaes fundamentais so assim definidas:

Operadores de comparao
< menor
<= menor ou igual
> maior
>= maior ou igual
== igual
~= diferente
<> diferente
&e
| ou
~ no
3.2 Operaes com nmeros complexos
As grandezas no Scilab tambm podem ser complexas. Para atribuir varivel A
o valor complexo 5 + 2i e varivel B o valor complexo 2 + i, procede-se:
-->A = 5 + 2 * %i // Atribuindo a A o valor 5 + 2i
A=
5. + 2.i
-->B = -2 + %i // Atribuindo a B o valor -2 + i
22

B=
- 2. + i
Observar que a no utilizao do ponto e vrgula no final dos comandos de
atribuio, permitiu a apresentao do resultado de cada comando.
As variveis complexas A e B podem ser multiplicadas, divididas, somadas ou
subtradas.
Exemplos:
--> // Operaes com variveis complexas
-->A * B // Multiplicao
ans =
- 12. + i
-->A / B // Diviso
ans =
- 1.6 - 1.8i
-->A + B // Adio
ans =
3. + 3.i
-->A - B // Subtrao
ans =
7. + i
importante observar que a resposta ao uso da funo interna sqrt() com
argumento negativo inclui o nmero complexo i = sqrt(-1).
Por exemplo:
-->sqrt(-2) // Funo raiz quadrada com argumento negativo
ans =
1.4142136i
Exerccio:
1. Dados os seguintes nmeros complexos,
Z1 = 3 + 5i; Z2 = 7 + 3i execute as seguintes operaes:
a) Z1 + Z2;
b) Z1 * Z2;
c) Z1 + sqrt(-20);
d) Calcule os mdulos de Z1 e Z2 e compare com abs(z);
Lembre-se:

3.3 Lista de algumas funes importantes do Scilab


A listagem a seguir apresenta algumas funes importantes do Scilab.

23

clc - limpa tela de comandos


chdir - muda diretrio padro
exec - executa funo
getf - carrega funes na memria
help - ajuda
rank - calcula posto de matriz
trace - calcula trao de matriz
abs - valor absoluto
conj - conjugado
diag - matriz diagonal
eye - matriz identidade
imag - parte imaginria
integrate - integrao por quadratura
interp - interpolao
interpln - interpolao linear
intersect - retorna um vetor com valores comuns entre dois vetores
linspace - vetor linearmente espaado
log - logaritmo natural
log10 - logaritmo em base 10
max - mximo
min - mnimo
modulo - calcula o resto de uma diviso
ndims - nmero de dimenses de uma matriz
norm - norma de matriz
ones - matriz de 1's
rand - gerador de nmeros randmicos
real - parte real
solve - resolve sistema linear simblico
sort - ordenamento decrescente
sqrt - raiz quadrada
sum - soma elementos de matrizes
diary - dirio da seo
disp - mostra variveis
input - solicita entrada de dados para o usurio
load - carrega variveis salvas na memria
plot2d - faz grficos 2D
xsave - salva grfico em arquivo
xtitle - adiciona ttulo em janela grfica
det - determinante
inv - matriz inversa
linsolve - resolve sistema linear
clear - limpa variveis da memria
who - apresenta variveis carregadas na memria do Scilab

24

Exerccios:
Mais Funes:
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
1) Dados:
x = [0.5 3.4 4 2.8 1.5];
y = [0.9 2.2 5 1.1 1.7];
Calcule:
a) x'
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) Verifique se abs(2+2*%i) = sqrt(8)

3.4 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)
Exerccios
1) Calcule:
a = sin(%pi/2);
b = tan(%pi);
c = cotg(%pi/3);
d = cos(%pi/4) + sin(%pi/4);
2) Dados:
x = [0.5 3.4 4 2.8 1.5];
y = [0.9 2.2 5 1.1 1.7];
Calcule:
a) seno(x)
b) cosseno(x*.y)
c) tangente(y)
25

CAPTULO 4: VETORES, MATRIZES E SISTEMAS LINEARES

4.1 Vetores
Declarao de vetores:
X = [ x1 x2 x3 ...] vetor linha
X = [x1;x2;x3;...] vetor coluna
Transposio de vetores: X
Exerccios:
1) Verifique a diferena entre: x = [1 2 3] e x = [1;2;3]
2) Dados os vetores:
x = [1 2 3 4 5] e y = [2 4 6 8 10]
Calcule:
a) z = x + y;
b) O produto interno xy;
c) Formas transpostas de x e y;
d) Dados z1 = x*y; e z2 = x*y; verifique se z1 = z2.
e) Multiplique x por y, elemento a elemento.
4.2.1 Gerao de Vetores
Os dois pontos : um caracter muito til. A declarao x = 1:5 gera um vetor
linha contendo os nmero de 1 a 5 com incremento de uma unidade.
-->x=1:5
x =
1. 2. 3. 4. 5.
Ou ainda pode-se usar colchetes:
-->x=[1:5]
x =
1.

2.

3.

4.

5.

Outros incrementos podem ser usados, como por exemplo,


-->y=0:%pi/4:%pi
y =
26

0.

0.7853982

1.5707963

2.3561945

3.1415927

onde o incremento corresponde a pi/4.


A seguir so apresentados alguns exemplos de incrementos:
Sintaxe:
varivel = Valor_inicial:incremento:Valor_final
Exemplos (verificar no Scilab):
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
Outra forma de gerar vetores utiliza a declarao linspace, na qual deve-se
definir os limites inferior e superior, indicando ainda o nmero de valores a serem
gerados, mantendo o incremento constante. Por exemplo,
-->k=linspace(-%pi,%pi,4)
k =
- 3.1415927 - 1.0471976

1.0471976

3.1415927

Foram gerados 4 valores igualmente espaados entre -pi e pi.

4.2 Matrizes
Ao declarar matrizes no Scilab, para separar elementos digitar espao ou vrgula. Para
pular de linha, digitar ponto e vrgula ou ao digitar usar Enter.
4.2.1 Declarao de Matrizes:

--> A=[1 2; 3 4]
27

A=
1
3

2
4

--> B=[5 6;7 8]


B=
5
7

6
8

Somar:
--> A+B
ans =
6
10

8
12

Subtrair:
--> A-B
ans =
-4
-4

-4
-4

Multiplicar:
--> A*B
ans =
19
43

22
50

4.2.2. Funes Matriciais


Dada a matriz A:
A=
1
3

2
4

Inversa de A:
--> inv(A)
ans =
28

-2
1.5

1
-0.5

Transposta de A (usar o apstrofo):


--> A'
ans =
1
3
2
4
Determinante de A:
--> det(A)
ans =
-2
Diagonal de A:
--> diag(A)
ans =
1
4
Parte triangular inferior de A:
--> tril(A)
ans =
1
3

0
4

Parte triangular superior de A:


--> triu(A)
ans =
1
0

2
4

A funo zeros cria matriz de elementos nulos.


Exemplo: A = zeros(3,2)
A funo ones cria matriz com todos elementos iguais a 1.
Exemplo: B = ones(3,2)
A funo eye cria matriz identidade.
A funo eye utiliza as seguintes sintaxes:
29

X=eye(m,n) retorna matriz identidade de dimenso m x n e o comando aplicvel


mesmo quando a matriz desejada no uma matriz quadrada.
X=eye(A) retorna matriz identidade com mesma dimenso que A.
4.2.3 Manipulao de linhas e colunas:
Dada a matriz A:
A=
1
2
5
6
9
10
13
14

3
7
11
15

4
8
12
16

Selecionar a segunda linha:


--> A(2,:)
ans =
5

Selecionar a terceira coluna:


--> A(:,3)
ans =
3
7
11
15
Multiplicar por -5 a primeira linha, somar a primeira linha com a segunda e
armazenar o resultado na segunda linha:
--> A(2,:)= -5*A(1,:)+A(2,:)
A=
1
0
9
13

2
-4
10
14

3
-8
11
15

4
-12
12
16

4.2.3.1 Mais comandos para matrizes e vetores


1)Dimenso: length(x)
2)Nmero de linhas e colunas: [nr,nc] = size(x)
3)Gerar nmeros aleatrios entre 0 e 1: rand(x,y)

30

Exemplo:
-->rand(2,3)
ans =
0.0002211
0.3303271

0.6653811
0.6283918

0.8497452
0.6857310

4)GerarVetores nulos: x = zeros(N,1) onde N o nmero de elementos do vetor


5)Gerar Matrizes nulas: x = zeros(x,y) onde x,y a dimenso.
6)Acrescentar um elemento a um vetor: x=[x elemento]
Exemplo:
-->x
x =
1.

2.

3.

4.

5.

3.

3.

4.

5.

3.

-->x=[x 3]
x =
1.

2.

3.

7)Agrupar dois vetores x, y: c = [x y]


8)Apagar o elemento i de um vetor: X(i) = [ ]
4.2.3.2 Quadro com comandos para matrizes e vetores

31

32

Exerccios - Operaes com Vetores


1) Dado o vetor X = [1 2 3 4 5];
a) Insira o valor 10 no final
b) Apague o quinto elemento do vetor
2) Dados os vetores abaixo, crie um vetor Z que seja dado pela unio de X e Y.
X = [ pi e sin(pi) log(10)]
Y = [cos(10pi) 3.5 -2.2 pi]
3) Crie um vetor com 7 elementos igualmente espaados no intervalo [-e; e].
4) Crie um vetor coluna com 10 elementos nulos.
5) Crie um vetor linha com 10 elementos iguais a 1.
6) Crie um vetor coluna com 30 elementos igualmente espaados sendo o primeiro igual
a 300 e o ltimo igual a 10.
7) Crie um vetor linha: 1000:-10:900.
8) Crie um vetor coluna com todos os nmeros em ordem decrescente entre 50 e -50.
9) Crie um vetor coluna com todos os nmeros pares em ordem decrescente entre 100 e
0.
Exerccios - Matrizes
1) Lembre-se:
Matrizes com elementos unitrios: A = ones(M,N)
Matrizes com elementos nulos: B = zeros(M,N)
Matriz identidade: A = eye(N,N)

33

Dadas as matrizes
A = [1 2 3;4 5 6]; e B = [7;8;9]
Determine:
a)A*B
b)B*A
c)A*identidade(A)
d)A*ones(A)
e)A*ones(A) + identidade(A)
2) Lembre-se:

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(:,$)

Dada a matriz A = [2 4 6;8 10 12; 1 2 3]


a)Atribua valor zero linha 3;
b)Multiplique a linha 2 por 10;
c)Remova a ltima linha
d)Insira o vetor B = [1 2 3] na ltima linha de A
3) Lembre-se:

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)

Agora faa:
a)Crie uma matriz 5X5 de nmeros aleatrios.
b)Atribua valor 0 coluna 2.
c)Multiplique os elementos de 2 a 4 da coluna 3 por 10.
d)Divida os elementos de 1 a 3 da coluna 5 por 5.
e)Remova a coluna 3.
f)Remova a linha 2.

4.2.3.3 Operador . (ponto)

34

Este operador usado com outros operadores para realizar operaes elemento a
elemento.
Exemplos:
A = [1 2 3; 3 4 6; 7 8 9];
B = [2 4 6;8 10 12; 14 16 18];
-->A./B (verificar no Scilab)
-->A.*B (verificar no Scilab)

4.3 Resoluo de Sistema Linear:


Um sistema linear pode ser expresso da forma:
Ax=B
onde:
A a matriz dos coeficientes
x o vetor das variveis
B o vetor dos termos independente
A resoluo de um sistema x=A-1b, ou seja, basta obter a matriz inversa de A e
multiplic-la pelo vetor b. No Scilab isto pode ser feito desta forma:

A=[1 3;3 4];


b=[5;2];
x=inv(A)*b
Esta soluo pode ser tambm ser obtida com o operador diviso esquerda
cujo smbolo \.
Sintaxe: x=A\b

Exemplo:
Dado o seguinte sistema linear:
3x + y + z = 20
2x - y - z = -15
-4x + y -5z = -41
Podemos resolv-lo no Scilab da seguinte maneira:
35

-->A=[3 1 1;2 -1 -1;-4 1 -5]


A=
3
2
-4

1
-1
1

1
-1
-5

-->B=[20;-15;-41]
B=
20
-15
-41
-->x=A\B
x=
1
8
9
Logo temos como soluo x'= [1 8 9], ou seja, x=1,y=8 e z=9.

Exerccio: Resolva o sistema linear. Substitua as solues na equao para confirmao


a soluo.

Mais Exerccios
1. Dadas as matrizes a baixo, calcular::
4
5 2 5
3 3 2 3

A=
7
5
4
1

2
7 3
2

a) A + B
b) C B
c) 5.B;
d) A + 3B 5C
e) B.A
f) (C.A).B
g) A(B-C)
h) A-1

7
2
B=
1

2
3
3
1

7
3
2
3

5
1
5

1
5
C=
2

4
3
3
4

0 5
2
2
1 1

1 3

36

i) (B.C)-1
j) tr(A)
k) tr(B + C)
l) B2
m) C3
n) tr(A + B)-1
o) A
p) (B + A C)
q) det(B)
r ) det(A B)
2. Dados os vetores: u = [-3 3 -1 0 5], v = [2 1 -5 1 4] e w = [2 1 3 0 2],
calcular:
a) u*v
b) w*v
c) u*(v + w)
d) u*(v - w)
3. Calcular a norma ou comprimento de cada um dos vetores do item 2. Use o
comando norm(x).
4. Determinar os autovalores e autovetores normalizados das matrizes:
Use: [e,L]=eig(A)
4 2 3
A = 1 5 1 e B =
3
4 7

3 4 1 3
3 3 1
5

.
1
1
3 4

5 4 6
3

5. Calcular o comprimento ou norma de cada vetor coluna das matrizes A e B do item


anterior.
Exemplo, para a matriz A: NORMA_A=[norm(A(:,1)) norm(A(:,2)) norm(A(:,3))]
6. Uma amostra multivariada aleatria X (com 5 observaes e 6 variveis) dada a
seguir:
45
47
43
49
51

52
51
45
46
55

55
53
46
49
44

44
48
44
45
57

54
53
44
48
49

46
57
51
57
56

Estimar: (a) o vetor de mdias; (b) a matriz covarincia estimada S; (c) a matriz
desvio padro
mean(X)
37

ans =
49.7500 49.0833 48.8333 47.8333 49.4167 50.8333
(b) a matriz covarincia estimada S;
S=cov(X)
S=
21.8409
7.1136
4.5000
-4.6818
-5.8864
-9.8636

7.1136
12.4470
3.7424
2.7424
2.9621
-2.1667

4.5000
3.7424
23.2424
-14.3939
5.0758
-6.3030

-4.6818 -5.8864
2.7424 2.9621
-14.3939 5.0758
22.8788 5.8939
5.8939 18.2652
12.9697 6.9848

-9.8636
-2.1667
-6.3030
12.9697
6.9848
22.5152

(c) a matriz desvio padro D1/2.


matrizdesvpad=diag(sqrt(diag(S)));
matrizdesvpad
matrizdesvpad =
4.6734
0
0
0
0
0
0 3.5280
0
0
0
0
0
0 4.8210
0
0
0
0
0
0 4.7832
0
0
0
0
0
0 4.2738
0
0
0
0
0
0 4.7450
7. Uma amostra multivariada X de tamanho n = 12 foi obtida de um vetor aleatrio p =
[alturas pesos], resultando

Indivduo
1
2
3
4
5
6
7
8
9
10
11

Altura
168
180
178
167
190
175
178
183
169
177
184

Peso
89
82
67
72
95
70
75
80
70
73
85
38

12

170

68

(a) Construir a matriz de dados; (b) calcular o vetor de mdias; (c) representar
graficamente num espao bidimensional as observaes e o vetor de mdias.
x=[168;180;178;167;190;175;178;183;169;177;184;170];
//Obs: pode usar x=(X(:,1))
y=[89;82;67;72;95;70;75;80;70;73;85;68];
//Obs: pode usar x=(X(:,2))
plot(x,y,'*');
xlabel('Estaturas');
ylabel('Pesos');
title('Grfico das Observaes e Mdia');
//hold on; (esse comando s necessrio no Matlab)
plot(176.5833,77.1667,'ro');
//hold off (esse comando s necessrio no Matlab)

39

40

CAPTULO 5: POLINMIOS

P(x) = an + an-1x + + a2nxn-2 + a1xn-1 + a0xn

5.1 Definio de Polinmio a Partir dos Coeficientes


Um polinmio tambm pode ser criado a partir da especificao de seus
coeficientes. Por exemplo, o polinmio q = 2s + 1 criado atravs do comando poly.
Veja a sintaxe a seguir:
a) Definir o polinmio p = 1 + 2x a partir dos coeficientes.
-->p = poly([1 2], 'x', 'coeff')
p =
1 + 2x
b) Definir o polinmio

p = 3 + 9x + 5x + 2x a partir dos coeficientes.

-->p = poly([3 9 5 2 ], 'x', 'coeff')


p =
3 + 9x + 5x2 + 2x3
c) Definir o polinmio y = 1 + 2x + 3x a partir dos coeficientes.
y = poly([1 2 3], 'x', 'coeff');
-->y
y =
1 + 2x + 3x2
5.2 Definio de Polinmio a Partir das Razes
a) Definir o polinmio y = 1 + 2x + 3x a partir das razes, ou seja, qual o polinmio
que tem como razes: 1 e 2?
-->p=poly([1 2],'x')
-- > 2 3x + x2

// [cria o polinmio cuja as razes so 1 e 2 ]

b) Qual o polinmio que tem como razes: 1 e 2 4 e -1?


-->p=poly([1 2 4 -1],'x')
41

p =
- 8 + 6x + 7x - 6x + x4
5.3 Obteno das Razes de um Polinmio
Tendo o polinmio, possvel obter as razes dele atravs do comando roots
Exemplo 1: Calcular as razes do polinmio: 3 + 9x + 5x + 2x
Passo 1: Definir um polinmio atravs dos coeficientes.
-->p = poly([3 9 5 2 ], 'x', 'coeff')
p =
2 3
3 + 9x + 5x + 2x
Passo 2: Calcular as razes:
-->roots(p)
ans =
- 0.4121443
- 1.0439279 + 1.5967833i
- 1.0439279 - 1.5967833i

Exemplo 2: Obter as razes de q= - 4 + x


-->q=poly([-4 0 1], 'x', 'coeff ');
-->roots(q)
ans =
2.
- 2.
5.4 Operaes com Polinmios
Definio dos polinmios:
-->p = poly([1 2], 'x', 'coeff')
p =
1 + 2x
-->q = poly([2 -3 1], 'x', 'coeff')
q =
42

2
2 - 3x + x
Multiplicao
-->p*q
ans =
2 3
2 + x - 5x + 2x
Potenciao
-->p^2
ans =
2
1 + 4x + 4x
Diviso (p/q)
-->q/p
ans =
2
2 - 3x + x
---------1 + 2x
Diviso (q/p)
-->p/q
ans =
1 + 2x
---------2
2 - 3x + x
Exerccios
1) Encontrar as razes de uma funo quadrtica utilizando a frmula de Bhskara.
a) encontrar as razes do polinmio utilizando a frmula de Bhskara: x2 + 4x + 13 = 0
Soluo:
1: atribuir valores a=1; b=4; c=13;
2 = construir a expresso que me permita encontrar as razes: (frmula de Bhskara)
43

-- > x1 = (-b + sqrt (b^2 4 * a * c)) / (2 * a)


-- > x2 = (-b - sqrt (b^2 4 * a * c)) / (2 * a)
O Scilab apresenta como soluo (verificar):
x1 = -2.00 + 3.000i e x2 = -2.000 3.000i
b) encontrar as razes utilizando a frmula de Bhskara: 2 3x + x2 = 0
c) encontrar as razes do polinmio utilizando a frmula de Bhskara: x2 4 = 0
2) Dados os polinmios
p = 3 + 9x + 5x + 2x
q = 1 + 5x + 4x4
r= 2 5x
Calcule:
a) p + q
b) q/r
c) r
d) p
e) p*q
3) Calcule as razes dos polinmios:
p = 3 + 9x + 5x + 2x
q = 1 + 5x + 4x4
r= 2 5x
4) Encontre um polinmio que tenha como razes 3, 1 e 9.
5) Encontre um polinmio que tenha como razes 1, 1 + i e 4 -2i.

44

CAPTULO 6: GRFICOS BIDIMENSIONAIS E TRIDIMENSIONAIS

6.1 Comandos Bsicos para Grficos


a) Comando plot
plot(x,y): para plotar os dados no vetor x versus vetor y.
plot(x1,y1,tipo 1,x2,y2,tipo2, ...): para plotar diversas linhas ao mesmo tempo.
b) Comando clf
clf: limpa a tela, evitando que o prximo grfico se sobreponha ao anterior.
Exemplo (aps definir x, y, z):
y = sin(x);
plot2d(x,y);
z = cos(x);
plot2d(x,z);
Utilizando o comando clf:
clf;plot2d(x,y);
c) Quadro com comandos para grficos:

6.2 Grficos 2D
A funo plot tem diferentes formas, dependendo do tipo dos argumentos de
entrada. Se y for um vetor, plot(y) gera um grfico linear por partes das componentes y
45

versus o ndice respectivo. No caso em que x e y sejam vetores da mesma dimenso,


plot(x,y) gera um grfico de y versus x. Por exemplo, para fazer o grfico do valor da
funo seno de zero a 2:
t = (0:1/100:2) * %pi;
y = sin(t);
plot(t,y);
6.2.1 Comando para Ttulos e Legendas
Para colocar ttulo no grfico, assim como nos eixos utilizada a funo xtitle(.),
cuja sintaxe :
xtitle(ttulo do grfico,[ttulo do eixo x,[ttulo do eixo y]],[arg_opc])
Note-se que argumentos entre colchetes so opcionais.
Se arg_opc for boxed = 1, um retngulo desenhado ao redor de cada ttulo.
Resumindo:
xtitle (titulo): apresenta o ttulo do grfico
legend(legenda1, legenda2,): colocar legendas
Exemplo 1:
t = 0:0.1:10;
S = 5 + 10*t + 0.5*2*t.*t;
V = 10 + 2*t;
plot2d(t,S,-2); //(-2 o tipo da linha)
plot2d(t,V,-4); //(-4 o tipo da linha)
xtitle('Cinematica');
legend('Posio', 'Velocidade');

Exemplo 2:

46

Seja construir o grfico da funo y = sen(x) no intervalo [0, 10] com a linha em
vermelho e colocando os ttulos.
No Scilab:
x=1:0.1:10;
plot(x,sin(x),"r-")
xtitle("Funo y = sen(x) no intervalo [0, 10]", "Eixo x", "Eixo Y", boxed = 1)

6.2.1.1 Posio da Legenda


Sintaxe: legend(strings [,pos] [,boxed]
strings : vetor com n strings, strings(i) a legenda da i-sima curva;
pos : parmetro opcional que especifica onde deve ser colocada a legenda; pode
ser um valor inteiro ou um vetor [x,y] o qual d as coordenadas para colocao da
legenda. No primeiro caso os valores possveis so:
1 ou "ur" a legenda colocada no canto superior direito;
2 or "ul" a legenda colocada no canto superior esquerdo;
3 or "ll" a legenda colocada no canto inferior esquerdo;
4 or "lr" a legenda colocada no canto inferior direito;
5 or "?" a legenda colocada de forma interativa com o mouse (default).
boxed: um parmetro booleano (o valor default %t) para colocar, ou no, um
box na legenda.
Exemplo: Construir, em um mesmo sistema de eixos e no intervalo [0, 2pi], o grfico
da funo y = sen(x) com a linha contnua em vermelho, da funo y = cos(x) com linha
tracejada em azul e colocando legendas.
t=0:%pi/20:2*%pi;
plot(t,sin(t),"r-",t,cos(t),"b--")
legend(["y = sin(t)"; "y = cos(t)"],5)

47

6.2.2 Apresentao de vrios grficos em uma mesma janela


O comando subplot(m,n,p) permite dividir a janela grfica do Scilab em uma
matriz de m linhas por n colunas. Em cada um dos elementos da matriz, identificado
por p, pode ser colocado um grfico.
Exemplo:
x = (0:1/100:2) * %pi;
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))

48

Um exemplo de aplicao da funo subplot (conforme prof. Pires UFRN)

49

50

51

6.2.3 Especificao do tipo e cor da linha e do marcador


O Scilab permite customizar a aparncia da linha do grfico, como cor, tipo da
linha e tipo de marcador a ser utilizado.
Por exemplo, para especificar uma linha vermelha tracejada e marcador em
forma de diamante, pode ser escrito: r--d ou --reddiam.
Exemplo
Seja construir o grfico da funo y = sen(x) no intervalo [0, 10] com linha
vermelha tracejada e marcadores em diamante.
x=1:0.1:10;
plot(x,sin(x),'r-d')
O smbolo antes da letra d o tipo da linha. Faa um experimento em
substituir o - por -- ou por . ou ainda por ...

6.2.4 Vrios Grficos em um Mesmo Sistema de Eixos


Exemplo: Construo de mais de um grfico em um mesmo sistema de eixos utilizando
diferentes especificaes para cada um.
Construir, em um mesmo sistema de eixos e no intervalo [0, 10], o grfico da
funo y = sen(x) com a linha contnua em vermelho e marcador na forma de crculo e
da funo y = cos(x) com o marcador na forma de * em azul com linha.
No Scilab:
t=0:%pi/20:2*%pi;
plot(t,sin(t),'ro-',t,cos(t),'b*-')
52

// Comentrio: Veja que 'b*-' quer dizer: cor blue, marcador * e linha -.

6.2.5 Tabelas de Cores, estilos de linhas e marcadores

6.2.6 Linhas de Grade


Para adicionar linhas de grade utiliza-se a funo xgrid(.), cuja sintaxe
xgrid([estilo]), onde estilo um parmetro opcional para identificar a cor a ser
utilizada.
Exemplo:
53

Seja construir o grfico da funo y = sen(x) no intervalo [0, 10] com a linha em
vermelho, colocando os ttulos e as linhas de grade na cor azul.
No Scilab:
x=1:0.1:10;
plot(x,sin(x),"r-")
xtitle("Funo y = sen(x) no intervalo [0, 10]", "Eixo x", "Eixo Y", boxed = 1)
xgrid(2)
//Comentrio: O valor 2 em xgrid(2), refere-se cor da grade. Por exemplo,
colocando-se o valor xgrid(1), obtm-se grade na cor preta e assim sucessivamente.
O grfico obtido apresentado a seguir:

6.3 Grficos 3D

O comando plot3d(x,y,z) produz grficos tridimensionais.


Neste caso x e y so vetores linha cujas dimenses so i e j respectivamente,
e z uma matriz i x j, onde z(i,j) o valor da altura da superfcie no ponto (x(i),y(j)).
Exemplo: Seja t=[0; 2pi] e seja f(x,y)= sin(t)*cos(t'). Construir o grfico de
f(x,y).
No Scilab:
t=[0:0.3:2*%pi]';
z=sin(t)*cos(t');
plot3d(t,t,z)
O grfico obtido apresentado a seguir:

54

6.3.1 Grficos tridimensionais Comando meshgrid.


O Comando meshgrid: cria matrizes ou vetores em um intervalo [a, b].
Veja que por exemplo (-1: 0.5 : 4) uma matriz no intervalo [-1, 4] com
incremento 0,5.
Exemplo 1:
-->[x y] = meshgrid(-1:0.5:4,-1:0.5:5)

55

Exemplo 2: Gerao de grfico 3D comandos meshgrid e mesh.


No Scilab:
[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);
O grfico obtido apresentado a seguir:

6.3.2 Tipos de Grficos 3D.


Exemplo 1: Plotar um cubo cujas as arestas tem 2 unidades de comprimento, com um
dos vrtices na origem e que esteja situado no 1 octante.
Soluo: Deve-se criar os vetores correspondentes s coordenadas x, y e z.
x=[0 2 0 2 0 2 0 2];
y=[0 0 2 2 0 0 2 2];
z=[0 0 0 0 2 2 2 2];
plot3d(x,y,z)
O grfico obtido apresentado a seguir:
56

Exemplo 2: Representar graficamente uma distribuio normal bivariada com vetor de


4 0
mdias x = [10 15] e matriz covarincia =
definida por:
0 9
(foram aplicados os dados de x e de acima, na expresso referente funo
densidade de probabilidade da funo normal bivariada resultando):
1 X 10 2 X 15 2
1
f ( X1, X 2 ) =
exp 1
+ 2
]
12
2
2
3

No Scilab:
-->x1=2:0.1:8;
-->x2=1:0.1:12;
-->[x1,x2]=meshgrid(x1,x2);
-->z=(1/(12*%pi))*exp(-0.5*(x1-5).^2-0.5*((x2-8)/2).^2);
-->mesh(z)
O grfico obtido apresentado a seguir:

57

Exemplo 3: Campo vetorial


Comando champ mostra campos vetoriais
Velocidade da gua em movimento circular: V(x,y)=(y/x+y)i - (x/x+y)j
No Scilab:
[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);
O grfico obtido apresentado a seguir:

58

Exemplo 4: Comando Matplot: Mostra matrizes em 2D usando cores.


-->Matplot([1 2 3;4 5 6])

-->A = round(rand(5,5)*10);
-->Matplot(A)

Exemplo 5: Grfico 3D
x = [0:0.1:2*%pi]';
y = x;
z = cos(x) * sin(x');
plot3d(x, x, z)

59

6.4 Grficos Estatsticos.


6.4.1 Grficos de colunas
Exemplo 1:
x = [1 4 5 10 8 7 4 3 1];
bar(x)

Exemplo 2: Histograma 3D
-->c=rand(5,6);
-->hist3d(c)

60

6.4.2 Polgono de Frequncias


Exemplo:
-->x = [1 4 5 10 8 7 4 3 1];
-->plot2d(x)

61

6.4.3 Grfico de Barras Horizontais


Exemplo 1:
x = [10 30 5 22];
barh(x)

6.4.4 Grfico de Setores


Utiliza-se o comando pie
Exemplo: Plotar os dados:
Nmero de veculos:
Fabricante
N Veculos
Kia

53

Peugeot

42

Citroen

62

Renault

20

No Scilab:
pie([53 42 62 20],["Kia","Peugeot","Citroen","Renault"]);

62

Para plotar um grfico com fatias separadas:


pie([53 42 62 20],[1 1 1 1],["Kia","Peugeot","Citroen","Renault"]);
// Comentrio: Valores, distncias entre as fatias, rtulos.

Obs.: Para colocar ttulos, legendas, etc..., procede-se de forma anloga aos
grficos 2D vistos anteriormente.

63

6.4.5 Histograma
O histograma um grfico de colunas justapostas utilizados para dados
geralmente oriundos de uma distribuio contnua.
Procedimentos:
1) Gerar um vetor de dados seguindo uma distribuio Normal de probablidade.
Funo: grand(m, n, dist_type [,p1,...,pk])
onde:
m: a quantidade de elementos de cada gerao aleatria e
n: a quantidade de geraes aleatrias;
disttype: o tipo de distribuio que se deseja gerar
[; p1; :::; pk]: so os parmetros da distribuio requerida. No caso de uma
normal padronizada, mdia 0 e varincia 1.
Nesse caso, utilizamos:
Y=grand(100,1,'nor',0,1);
2) Histograma: Funo histplot(nmero de colunas, vetor de dados)
--> histplot(10,Y)

64

6.4.6 Diagrama de Disperso


Seja a tabela a seguir com peso e estatura de 10 pessoas:
Peso

Estatura

68

160

69

165

76

168

70

163

89

182

83

188

56

161

54

160

76

175

70

167

i) Atribuir vetores P (peso) e E (estatura)


-->P
P =
68.
69.
76.
70.
89.
83.
56.
54.
76.
70.
-->E
E =
160.
165.
168.
163.
182.
188.
161.
160.
175.
167.
65

ii) Diagrama de Disperso


plot(P,E,'*')
xtitle("Pesos X Estaturas")
xlabel('Pesos') //para rotular o eixo x.
ylabel('estaturas') //para rotular o eixo y.

Exerccios
Plotar os Seguintes grficos:
1) Reta
a) y1 =7- 3 x1 -1<x<6
Definindo vetor das abscissas, x1
x1=[-1:0.2:6]
y1=7-3*x1
plot2d(x1,y1)
2) Parbolas
a) y=x^2 2 no intervalo -4 < x < 4
x2=[-4:.2:4];
//outra maneira de fazer o grfico diferente da anterior.
plot2d(x2,x2^2-2);
66

// colocando ttulo no grfico e nas abscissas e ordenadas.


xtitle('Grfico: Parbola','x','y=x^2-2');
b) Plotar o grfico de y = x^2 4x no intervalo -3 < x < 3
3) Exponencial
Plotando as duas funes no mesmo grfico, utilizando matrizes.
a) y4 = 2^x
-->x4=[-3:0.2:4]
-->y4 = 2^x4
b) y5 = ()^x
-->y5=(.5)^x4
Formando a matriz cuja 1 coluna tem os valores de y4 e a segunda coluna tem os
valores de y5. Observe a transposio.
-->my45=[y4; y5]'
Plotando os dois grficos
-->plot2d(x4,[my45])
4) Senide
a) y = sen x
-->x=[0:0.1:2*%pi];
-->y=sen(x)
-->plot2d(x,y)
b) Plotar o grfico de y = 1 + sen x
c) Plotar o grfico de y = sen (x + pi / 2)
6) Cossenide
a) Plotar o grfico de y = 2 cos x
b) Plotar o grfico de y = cos 2 x
7) Funo com ponto de descontinuidade em x=2: f(x)= x + 3/(x-4) em [0;10]
x=[0:0.1:1.9 2.1:0.1:10] //Veja que foi evitado o ponto x=2
y=(x.^2+3)./(x.^2-4)
plot(x,y)
8) Equaes paramtricas. Grfico de uma circunferncia.
Definindo faixa de variao do parmetro t.
t=[0:0.1:2*%pi];
x=cos(t);
y=sin(t);
plot2d(x,y);

67

9) Construir, em um mesmo sistema de eixos e no intervalo [0, 2pi], o grfico da


funo y = sen(x) com a linha contnua em vermelho, da funo y = cos(x) com
linha tracejada em azul, colocando legendas, linhas de grade e ttulos.
t=0:%pi/20:2*%pi;
plot(t,sin(t),"r-",t,cos(t),"b--")
legend(["y = sin(t)"; "y = cos(t)"],5)
xtitle("Exemplo final","x","y")
xgrid()
Grfico gerado:

68

CAPTULO 7: DIFERENCIAO E INTEGRAO

7.1 Derivada de um Polinmio


Para obter a derivada de um polinmio utiliza-se a funo derivat.
Sintaxe: derivat(polinmio)
Exemplo: Obter a derivada do polinmio: 3 + 9x + 5x + 2x:
Passo 1: Definir o polinmio:
-->p = poly([3 9 5 2 ], 'x', 'coeff')
p =
2 3
3 + 9x + 5x + 2x
Passo 2: Obter a derivada:
-->d= derivat(p)
d =
2
9 + 10x + 6x
Note que se se a funo y = 3 + 9x + 5x + 2x, ento sua derivada y' = 9 + 10x +
6x.

7.2 Integrais
7.2.1 - Funo integrate
possvel obter o valor numrico de uma integral definida atravs da funo
integrate.
Sintaxe:
integrate('funo','varivel',limite inferior,limite superior,erro absoluto, erro relativo)
Os erros absoluto e relativo so parmetros opcionais. Caso no sejam
especificados, o erro absoluto tomado como 10 8 e o erro relativo como 10 14.
Exemplo 1:
Seja estimar a integral definida da funo f(x) = - 0,05.log(0,4076).econsiderando o intervalo [0, 50].

0,05.x

69

No Scilab:
--> v = integrate('-0.05*log(0.4076)*exp(-0.05*x)','x',0, 50)
v =
0.8238002
Observe que no necessrio definir a funo a ser integrada previamente, caso
o seja, a sua expresso analtica deve ser substituda pelo seu nome colocado entre
aspas.
Exemplo 2:
Por exemplo, seja a funo f(x) = cos(3x+1).x + x1,5
O esboo do grfico dessa funo mostrado a seguir:

Para calcular:

Faz-se:
-->Integral = integrate('cos(3*x+1)*x^2+x^1.5','x',1,9)
Integral =
102.51064

7.2.2 Clculo da Integral Definida Conhecendo-se um Conjunto de Pontos


tambm possvel calcular uma integral definida quando se tem um conjunto de
pontos.
Funo inttrap: Calcula a integral pela interpolao trapezoidal:

70

Sintaxe: inttrap(abscissas, ordenadas).


Exemplo:
Estimar a integral definida da funo f(x) = ln(x + 2) 1 no intervalo [2; 3,2],
sendo h=0,24.
Passo 1: Definir o vetor: x=[ limite_inferior: Incremento: Limite_superior]
-->x = [2:0.24:3.2]
x =
2.

2.24

2.48

2.72

2.96

3.2

Passo 2: Definir a funo:


-->y=log(x + 2) - 1
y =
0.3862944

0.4445633

0.4996230

0.5518088

0.6014057

0.6486586

Passo 3: Integral pela interpolao trapezoidal:


-->integral = inttrap(x, y)
integral =
0.6275706

71

REFERNCIAS

Campos, Frederico F. Fundamentos de SCILAB. Departamento de Cincia da


Computao do ICEx. UFMG. 2010
Ferreira, Jos lvaro Tadeu. O uso do Scilab na disciplina Clculo Numrico.
Universidade Federal de Ouro Preto. Ouro Preto, 2009.
http://fisicalivre.org/aoc/Scilab_Tutorial1_aoc.pdf acesso em 07/12/2010.
Lacerda, E. G. M. Programando com Scilab. Departamento de Engenharia de
Computao e Automao (DCA). UFRN: 2005.
Lopes, Lus Claudio Oliveira. Um curso de Scilab. COBEC. Curitiba: 2004.
Ulbricht, Gerson. Apostila de Clculo Numrico Notas de Aulas. 2010

72

Você também pode gostar