Anda di halaman 1dari 52

FSICA INTRODUO INFORMTICA

SCILAB

1 - APRESENTANDO O SCILAB
1.1 INTRODUO O Scilab um ambiente utilizado no desenvolvimento de programas para a resoluo de clculos cientficos. Criado e mantido por pesquisadores pertencentes ao Institut de Recherche em Informatique et en Automatique, INRIA, atravs do Projeto METALAU (Methods, algorithmes et logiciels pour l'automatique) e a Ecole Nationale des Ponts et Chaussees, ENPC, o Scilab gratuito (Free software) e distribudo com o cdigo fonte (Open Source software). Mantido e desenvolvido atualmente pelo Scilab Consortium. Possui centenas de funes matemticas com a possibilidade de interao com programas em vrias linguagens como o C e Fortran. A utilizao do Scilab d-se internacionalmente nos ambientes acadmicos e industriais (clone do Mathlab), assim o Scilab uma plataforma em constante atualizao e aperfeioamento

(Scilab = Scientific Laboratory : Pronncia em sintaxe fontica internacional sailb.)

Do ponto de vista conceitual, o Scilab um interpretador de comandos. Na rea de computao, distinguem-se as linguagens interpretadas das linguagens compiladas, as quais necessitam de um pr-processamento (ou compilao) antes que seus comandos possam ser executados. Uma vez compilados, os programas podem ser executados sobre o sistema operacional, diretamente. Exemplos de linguagens compiladas so C, C++, Pascal e FORTRAN. As linguagens interpretadas mais comuns so LISP, Smalltalk e BASIC. A diferena bsica entre os dois tipos de linguagens a necessidade das linguagens interpretadas contarem com um suporte para execuo, como o caso do ambiente Scilab. Entretanto, nada impede que ambientes interpretadores tenham uma funo de compilao, gerando programas executveis que podem ser ativados diretamente sobre o sistema operacional, sem necessidade do ambiente. O Scilab possui tal funcionalidade.

FSICA INTRODUO INFORMTICA

SCILAB

1.2 - PRINCIPAIS BIBLIOTECAS DE FUNES DO SCILAB Biblioteca Grfica 2-D e 3-D e Animao
lgebra Linear

Polinmios e Funes Racionais


Integrao: Equaes Diferencias Ordinrias e Equaes Algbrico-Diferenciais

Modelagem e Simulao (Scicos) Controle Clssico e Robusto Otimizao (Inequaes Matriciais Lineares-LMI, Otimizao Diferencivel e No Diferencivel) Processamento de Sinais Processamento de Imagens Grafos e Redes (Metanet) Scilab para Arquitetura Paralela Estatstica Redes Neurais Lgica Nebulosa (Fuzzy Logic) Controle timo Discreto Interfaces com Softwares de Computao Simblica (Mapler, MuPAD)

1.3 - ALGUMAS VANTAGENS DO SCILAB uma poderosa ferramenta para clculos cientficos de fcil aprendizado A ltima verso do software esta sempre disponvel, geralmente via Internet O software pode ser legalmente utilizado, copiado, distribudo, modificado Os resultados obtidos podem ser divulgados sem nenhuma restrio Os programas desenvolvidos podem ser transferidos para outras pessoas sem imposies de qualquer natureza O acesso ao cdigo fonte, evitando surpresas desagradveis O acesso a informao de alta qualidade

FSICA INTRODUO INFORMTICA

SCILAB

1.4 - INTERFACE E MENUS DO SCILAB Para iniciar o SCILAB, clique no menu Iniciar Iniciar->Programas->Scilab ( OU NO CONE NA REA DE TRABALHO) >Scilab

FSICA INTRODUO INFORMTICA

SCILAB

FSICA INTRODUO INFORMTICA

SCILAB

SCIPAD = EDITOR DE SCRIPTS

SCICOS = SIMULAES

FSICA INTRODUO INFORMTICA

SCILAB

2 NOES FUNDAMENTAIS
2.1 - USANDO O SCILAB COMO UMA SIMPLES CALCULADORA

O Scilab pode fazer operaes aritmticas simples com nmeros reais e complexos. Os operadores aritmticos so:

Adio Subtrao Multiplicao Diviso Potenciao

+ * /

Execute o Scilab no seu sistema e procure pelo smbolo (prompt): --> As operaes aritmticas devem ser digitados aps este smbolo (->) que chamado de prompt do Scilab e em seguida tecla-se [ENTER]. Exemplos:

-->2+3 [ENTER] ans = 5.

-->5+6/2 ans = 8.

-->4^2 ans = 16.

// 4 elevado a potncia de 2

A varivel ans (abreviao da palavra inglesa answer) armazena o valor corrente de sada do Scilab. Pode-se usar ans para efetuar clculos porque ela armazena o valor do ltimo clculo realizado. Exemplo: -->4+5

FSICA INTRODUO INFORMTICA

SCILAB

ans = 9. -->ans+ 3 ans = 12

2.2 - VARIVEIS E O COMANDO DE ATRIBUIO Uma varivel uma abstrao de uma clula ou um conjunto de clulas na memria do computador. Informaes so armazenas em variveis para posterior uso. Muitos programadores costumam a interpretar variveis como sendo um nome para uma posio na memria do computador. Para atribuir ou modificar a informao contida na varivel usado o comando de atribuio. No Scilab, usa-se o smbolo = para atribuio.

OBS: O smbolo de atribuio (=) no significa igualdade matemtica, uma vez que o comando de atribuio i = i+1 vlido, mas no representa igualdade matemtica.

Exemplo: digite estes comandos no prompt do Scilab: -->a = 2 a= 2. // Atribui 2 para varivel a

-->b = 4 a= 4.

// Atribui 4 para varivel b

-->area = a*b area = 8.

// Atribui o produto de a e b para a varivel area

-->b = b+1 b= 5.

// Incrementa uma unidade na varivel b

OBS.(1): Os nomes de variveis (tambm conhecidos por identificadores) devem seguir as seguintes regras:

FSICA INTRODUO INFORMTICA

SCILAB

1. Nomes de variveis comeam com uma letra, seguido de letras, algarismos ou sublinhados. Por exemplo: Alpha, notas, A1, B23 e cor_do_objeto; 2. Caracteres especiais no so permitidos. Isto , no permitido usar #, $, &, %, ?, !, @, <, ~, etc.; 3. Caracteres acentuados no so permitidos; 4. Nomes de variveis so sensveis a maisculas e minsculas. Por exemplo, varivel Alpha diferente das variveis ALPHA, alpha e AlPhA. De acordo com as regras acima, os seguintes nomes de variveis so vlidos: ALPHA, X, B1, B2, b1, matricula e MEDIA. Porm, estes nomes de variveis so invlidos: 5B, 1b, nota[1], A/B e X@Z. OBS.(2): A ausncia ou presena do ponto e vrgula no final de um comando do Scilab visualiza ou suprime, respectivamente, o resultado do clculo. Por exemplo, o resultado do seguinte comando, digitado com ponto e vrgula, suprimido: -->A = 4+4^2; --> Se este comando digitado sem ponto e vrgula, o resultado visualizado: -->A = 4+4^2 A= 20. Mais exemplos: -->a=2; -->b=4; -->area=a*b area = 8. // aqui o ponto e vrgula foi suprimido porque precisamos visualizar o resultado.

2.3 - EXPRESSES ARITMTICAS Os operadores aritmticos combinam nmeros e variveis para formar expresses aritmticas. Exemplos: A+B*C (NOTA1+NOTA2)/2 1/(a^2+b^2) Importante a Ordem de Avaliao entre Operadores Aritmticos. Para uma boa avaliao de uma expresso aritmtica necessrio se familiarizar com a ordem de avaliao dos operadores. Aqui, as regras importantes so: prioridade, associatividade e parnteses. Operaes de

FSICA INTRODUO INFORMTICA

SCILAB

alta prioridade so realizadas em primeiro lugar. A ordem de prioridade entre os operadores a seguinte:

Exemplos:

2+10/5

// 10/5 avaliada primeiro.

A+B/C+D

// B/C avaliada primeiro.

R*3+B3/2+1

// B3 avaliada primeiro.

Associatividade a regra usada quando os operadores tm a mesma prioridade. Por exemplo, para as operaes de adio e subtrao (que possuem mesma prioridade) a regra de associatividade diz que a operao mais a esquerda avaliada primeiro:

A-B+C+D

//A-B avaliada primeiro, porque est mais a esquerda.

O mesmo vale para multiplicao e diviso:

A*B/C*D

//A*B avaliada primeiro, porque est mais a esquerda.

No entanto, para potenciao, a regra da associatividade diz que a operao mais a direita deve ser avaliada primeiro:

A^B^C^D

//CD avaliada primeiro, porque est mais a direita.

A ordem de prioridade pode ser alterada pelo uso dos parnteses:

(A+4)/3 (A-B)/(C+D) R*3+B^(3/2)+1

//A+4 avaliada primeiro devido aos parnteses //A-B avaliada primeiro. Depois a adio. Por ltimo, a diviso. //3/2 avaliada primeiro.

FSICA INTRODUO INFORMTICA

SCILAB

Alm dos operadores aritmticos podemos usar funes matemticas. Exemplos:

2+3*cos(x) X^(2*sin(y)) 2+3*tan(x)+K^2

As principais funes matemticas do Scilab so mostradas na tabela a seguir.

Tabela: principais funes matemticas no scilab

Exemplos de funes matemticas: // O nmero e a base do logaritmo natural e = 2, 718281828... so representadas pelas variveis especiais %pi e %e. -->cos(2*%pi) ans = // coseno de 2 vezes PI

FSICA INTRODUO INFORMTICA

SCILAB

1. -->%e^2 ans = 7.389056098931 // 2,718281828 ao quadrado

-->abs(-5) ans = 5. -->modulo(8,3) ans = 2. -->modulo(6,3) ans = 0. -->sign(-4) ans = - 1. -->sign(5) ans = 1.

// valor absoluto

// Resto da diviso entre 8 e 3

// Funo sinal: retorna o valor -1, +1 ou zero conforme o argumento x seja negativo, positivo ou nulo, respectivamente.

Tambm temos Funes de Arredondamento, como por exemplo:

-->a = 34.885; -->fix(a) ans = 34. // trunca a parte fracionria

-->round(a) ans = 35.

// arredonda para o inteiro mais prximo

-->ceil(3.1) ans =

// arredonda para mais.

FSICA INTRODUO INFORMTICA

SCILAB

4.

As principais funes de arredondamento do Scilab so mostradas na tabela a seguir.

Outros exemplos de funes de arredondamento:

Podemos modificar o Formato de Visualizao dos Nmeros com 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). Exemplo: -->sqrt(3) ans = 1.73 Para aumentar o nmero 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.

FSICA INTRODUO INFORMTICA

SCILAB

Para retornar ao formato inicial usa-se -->format(v) que chamado de formato de varivel. Vejamos outras formas de usar o comando: format: -->format(v,10) -->format(e,8) //mostra os nmeros em formato de varivel com 10 posies. //mostra os nmeros em notao cientfica com 8 posies.

O Scilab possui Constantes Especiais do Scilab, que so vrias constantes pr-definidas. Algumas constantes pr-definidas no podem ser alteradas. As principais so mostradas na tabela a seguir:

2.4 - STRINGS Strings so usados para toda e qualquer informao composta de caracteres alfanumricos e/ou caracteres especiais (exemplo, #, $, &, %, ?, !, @, <, ~, etc.). Os strings so envolvidos por aspas duplas ou simples.

Devemos usar aspas duplas ou simples? A aspa simples tambm usada como operador de transposta hermitiana (mas isto no acarreta problemas de programao). Por isso melhor usar as aspas duplas que no possui tal duplo sentido e torna seu programa um pouco mais legvel.

Exemplos: -->a = "abcd"

FSICA INTRODUO INFORMTICA

SCILAB

a= abcd -->b = efgh b= efgh -->c = "Maria e Jose" c= Maria e Jose

Um das atividades mais comuns em programao a concatenao de strings. Concatenao a juno de dois ou mais strings. Isto pode ser feito com o operador +. Exemplos:

-->a + b ans = abcdefgh -->n = "Pedro" n= Pedro -->m = "Paulo" m= Paulo -->m + n ans = PauloPedro -->m + " " + n ans = Paulo Pedro -->m + +e+ +n Paulo e Pedro

// Concatena abcd com efgh

// Concatena Paulo com Pedro sem

// Concatena Paulo com Pedro inserindo espaos entre eles

Muitas vezes precisamos armazenar informaes que contm as aspas. Isto pode ser feito repetindo as aspas. Exemplos:

FSICA INTRODUO INFORMTICA

SCILAB

-->n = "o teorema " a lados iguais ope-se ngulos iguais " n= o teorema a lados iguais ope-se ngulos iguais

Algumas funes para manipulao de strings so mostradas na tabela a seguir:

Exemplos: -->m = "Pedro"; -->length(m) ans = 5. -->a = "a camisa " + string(10) a= a camisa 10 -->a = "12" + "34" a= 1234 -->evstr(a) + 10 ans = 1244. // Para somar uma string com um nmero use evstr() // Para concatenar nmeros com strings use a funo string() // Comprimento da string "Pedro"

2.5 NMEROS COMPLEXOS No necessrio manuseio especial em Scilab para nmeros complexos. As operaes com nmeros complexos so to fceis como nos reais. A unidade imaginria representado por %i, ou seja, %i = sqrt(-1).

FSICA INTRODUO INFORMTICA

SCILAB

Exemplo: Sejam os nmeros imaginrios x e y, como segue: x = 3 + 4*%i e y = 1 - %i As operaes abaixo so feitas normalmente: z1 = x - y z2 = x * y z3 = x / y Bem como o uso de funes: real(x) Parte real de x imag(x) Parte imaginria de x abs(x) Valor absoluto do nmero complexo atan(imag(x),real(x)) Argumento do nmero complexo conj(x) Conjugado sin(x) Seno de um nmero complexo

2.6 - APAGANDO, ARMAZENANDO E RECUPERANDO VARIVEIS NO ESPAO DE TRABALHO Quando um comando de atribuio como este: -->x = 3, digitado no Scilab, a varivel x armazenada em uma rea da memria do Scilab denominada de Espao de Trabalho (do ingls, Workplace). O Espao de Trabalho uma parte da memria do computador que armazena as variveis criadas pelo prompt e pelos arquivos de Script (mostrados adiante). O comando clear apaga todas as variveis do Espao de Trabalho criadas pelo usurio. O comando clear seguido de nome de uma varivel apaga somente a varivel Exemplo: -->a = 2; -->b = 3; -->c = 4; -->clear b; // Apaga somente b deixando as outras variveis intactas. // O comando who mostra todas as variveis do Espao de Trabalho.

As variveis so apagadas quando o usurio termina a execuo do Scilab. Para us-las da prxima vez que executar o Scilab, voc deve salva-las com o comando save (arquivo). Por exemplo, -->a = 2;

FSICA INTRODUO INFORMTICA

SCILAB

-->b = 3; -->c = 4; -->save("dados.dat");

As variveis foram salvas no arquivo dados.dat. O comando load(arquivo) usado para recuperar variveis que foram salvas no arquivo. Por exemplo: -->clear -->a+b !--error 4 undefined variable : a -->load("dados.dat"); -->a+b // Ok! ans = 5. // recupera as variveis a, b e c // apaga todas as variveis // variveis a e b no existem // porque foram apagadas

2.7 CONSEGUINDO AJUDA O comando help informa sobre comandos e funes do Scilab. Por exemplo: help cs (Informa sobre a funo que calcula o co-seno); help ceil Informa sobre a funo ceil. O comando apropos procura comandos e funes utilizando uma palavra-chave. Por exemplo, se no sabemos o nome da funo que calcula o seno hiperblico, podemos digitar (em ingls) algo como --> apropos hyperbolic e o Scilab mostrar todas a funes relacionadas com a palavra-chave hyperbolic. O comando help() abre a ajuda do scilab pelo prompt.

FSICA INTRODUO INFORMTICA

SCILAB

EXERCCIOS:

FSICA INTRODUO INFORMTICA

SCILAB

3 - POLINMIOS, VETORES, MATRIZES E LISTAS


3.1 POLINMIOS Os polinmios so criados no Scilab atravs da utilizao da funo poly. Salientamos que polinmios de mesma varivel podem ser somados, subtrados, multiplicados e divididos entre si. Por exemplo, o polinmio p = s2 - 3s + 2, que possui razes 1 e 2, pode ser criado atravs do comando

-->p = poly([1 2], 's') p= 2 2 - 3s + s -->

// Polinmio definido pelas suas razes

Com a funo roots, comprovamos que as razes de p so, realmente, 1 e 2: -->roots(p) ans = 1. 2. //funo para encontrar as razes de um polinmio

FSICA INTRODUO INFORMTICA

SCILAB

-->

Um polinmio tambm pode ser criado a partir da especificao de seus coeficientes. Por exemplo, o polinmio q = 2s + 1 criado atravs do comando, -->q = poly([1 2], 's', 'coeff') q= 1 + 2s -->roots(q) ans = - 0.5 --> Para complementar, os dois polinmios podem ser multiplicados, divididos, somados ou subtrados como mostra a seqncia de comandos, -->p * q // Multiplicao ans = 23 2 + s - 5s + 2s // Obtendo as razes do polinmio q // Polinmio definido pelos seus coeficientes

-->p / q // Diviso ans = 2 - 3s + s ---------1 + 2s -->p + q // Adio ans = 2 3-s+s

-->p - q // Subtrao ans = 2 1 - 5s + s -->

FSICA INTRODUO INFORMTICA

SCILAB

OBS: os coeficientes entre colchetes seguem a ordem do menor expoente para o maior!! y = poly([1 2 3], 'x', 'coeff') y =

2 1 + 2x + 3x -->roots(y) ans =

- 0.3333333 + 0.4714045i - 0.3333333 - 0.4714045i

3.2 - VETORES As grandezas vetoriais so criadas colocando-se seus componentes entre colchetes, [ ]. Os componentes de um vetor podem ser separados por espao, vrgula ou por ponto-e-vrgula. importante observar que elementos entre [ ], separados por espao ou por vrgula, do origem a vetores linha. Quando separados por ponto-e-vrgula do origem a vetores coluna.

-->v = [2, -3+%i, 7] v= 2. - 3. + i 7.

// Vetor linha

-->v' ans = 2. - 3. - i 7.

// Vetor transposto

-->w = [2 3 4] w=

// Vetor linha: outra forma

FSICA INTRODUO INFORMTICA

SCILAB

2. 3. 4.

-->z = [3; 5; 7] z= 3. 5. 7. -->

// Vetor coluna

-->v = 5: -0.5: 3 v= 5. 4.5 4. 3.5 3.

// Vetor com elementos decrementados

-->m = ones(1:4) m= 1. 1. 1. 1.

// Vetor constitudo de elementos iguais a 1

-->z = zeros (1:5) // Vetor constitudo de elementos iguais a 0 z= 0. 0. 0. 0. 0. -->

ATENO (TENTE!!): AS OPERAES ELEMENTARES COM VETORES PODEM SER FEITAS NORMALMENTE, SOMENTE LEMBRANDO QUE: Vetores de mesma dimenso podem ser somados ou subtrados. O produto escalar de um vetor linha por um vetor coluna. A multiplicao e a diviso de um vetor (linha ou coluna) por um escalar tambm podem ser facilmente realizada.

3.3 MATRIZES Vamos considerar as matrizes:

FSICA INTRODUO INFORMTICA

SCILAB

Os elementos que constituem as linhas das matrizes so separados por espaos ou por vrgulas. A indicao de trmino de cada linha da matriz feita com ponto-e-vrgula. Nos exemplos a seguir, para fixar os conceitos, a matriz A digitada com os elementos de suas linhas separados por espaos enquanto a matriz b digitada com os elementos de suas linhas separados por vrgula (entretanto, a mesma representao podia ser usada para as duas!!).

-->A = [1 2 3; 5 -8 9] A= 1. 2. 3. 5. - 8. 9.

// Matriz A(2 x 3) - Elementos das linhas separados por espao

-->b = [1, 2, 3; 4, 5, 6] b= 1. 2. 3. 4. 5. 6. -->

/// Matriz b (2 x 3) - Elementos das linhas separados por virgulas

Usamos a funo ones para criar a matriz c (2x3), com todos os elementos iguais a 1: -->c = ones(2,3) c= 1. 1. 1. 1. 1. 1. -->

A matriz A multiplicada pela matriz c transposta -->A * c' ans =

FSICA INTRODUO INFORMTICA

SCILAB

6. 6. 6. 6. -->

Podemos criar matrizes a partir de elementos de outras matrizes. Por exemplo: Definido as matrizes A, B e C:

-->A = [1 2; 3 4]; -->B = [5 6; 7 8]; -->C = [9 10; 11 12];

Definindo a matriz D, a partir de A, B e C: -->D = [A B C] D= 1. 2. 5. 6. 9. 10. 3. 4. 7. 8. 11. 12. -->

A matriz E, com trs linhas e quatro colunas, criada usando a funo matrix. Esta funo gera E a partir da organizao dos elementos da matriz D por colunas.
-->E = matrix(D,3,4) E= 1. 4. 6. 11. 3. 5. 8. 10. 2. 7. 9. 12. -->

ATENO (TENTE!!): AS OPERAES ELEMENTARES COM MATRIZES PODEM SER FEITAS NORMALMENTE, SOMENTE LEMBRANDO AS REGRAS PARA LGEBRA DE MATRIZES, POR EXEMPLO: Lembrar que, para que duas matrizes possam ser multiplicadas, o nmero de colunas da primeira matriz deve ser igual ao nmero de linhas da segunda matriz, e assim por diante...

OBS: Matrizes com Polinmios

FSICA INTRODUO INFORMTICA

SCILAB

Os elementos de uma matriz podem ser polinmios. Ex.:

//aqui tambm poderiam ser usadas as formas de declarar polinmios do item 3.1 -->x = poly(0, 'x'); p = 2 + 3 * x + x ^ 2 p= 2 + 3x + x2 // Outra maneira de definir um polinmio

-->// Definindo uma matriz polinomial, M -->M = [p, p-1; p+1, 2]

M= 2 + 3x + x2 3 + 3x + x2 1 + 3x + x2

-->// Obtendo o determinante de M -->det(M) ans = 1 - 6x - 11x2 - 6x3 x4

A partir de uma matriz formada por elementos que so polinmios racionais, -->s = poly(0, 's'); -->F = [ 1/s, (s +1)/(s + 2); s/(s+3), s^2 ] F = 1 s 1+s ----2+s // Definindo uma matriz F de polinmios racionais

s s2 ----- 3+s 1

Podemos criar outra matriz apenas com o numerador das fraes:

FSICA INTRODUO INFORMTICA

SCILAB

-->F('num') ans = 1 1+s s2

// Pegando os numeradores

Ou com seus denominadores: -->F('den') // Pegando os denominadores ans = s 2+s

3+s

3.4 LISTAS Uma lista uma coleo de objetos no necessariamente do mesmo tipo. Uma lista simples definida pela funo list. Esta funo tem a forma geral: list(a1, a2,. . . ,an), onde os ai so os elementos da lista. Vamos criar uma lista simples, que chamamos de L, composta por trs elementos: o elemento 1, associado a L(1), o elemento w, associado a L(2) e uma matriz 2x2 composta de elementos iguais a 1, associada a L(3):

-->L = list(1, 'w', ones(2,2))

// Uma lista simples com 3 elementos

L= L(1) 1. L(2)

FSICA INTRODUO INFORMTICA

SCILAB

w L(3) 1. 1. 1. 1.

Podemos indexar listas (listas dentro de listas). importante observar que a indexao de elementos de uma lista, no Scilab, inicia-se por 1. Vamos transformar o elemento L(2) da lista do exemplo anterior em outra lista (isto , vamos indexar outra lista) cujo primeiro elemento, L(2)(1), w e cujo segundo elemento, L(2)(2), uma matriz 2x2 de nmeros zeros

L(2) = list('w', zeros(2,2)) L = L(1) 1. L(2) L(2)(1) w L(2)(2) 0. 0. 0. 0. L(3) 1. 1. 1. 1.

//transformando o elemento L(2) em uma nova lista

Podemos acessar qualquer elemento da lista fazendo simplesmente uma chamada de sua posio:

L(2)(1)

//acessa o primeiro elemento de L(2) que ser w

L(2)(2)(2,1) matriz

//acessa o segundo elmento de L(2) que a matriz e o elemento lij=(2,1) da

FSICA INTRODUO INFORMTICA

SCILAB 3 - GRFICOS

O scilab possui ferramentas para implementao e edio de grficos. Apresentamos alguns comandos que podem ser utilizados para traar grficos bi-dimensionais e tri-dimensionais usando o Scilab. Todos os comandos esto disponveis na biblioteca Graphic Library no Help (?) do programa.

A funo bsica para grficos plot, com a seguinte estrutura:

plot ( [veto i], [vetor j] )

Exemplo: Dada a tabela ou pares ordenados (x, y) a seguir, podemos plotar o grfico da varivel y em funo de x como segue.

(1,4); (2,5); (3,6)

Plot ( [1 2 3] , [4 5 6] )

FSICA INTRODUO INFORMTICA

SCILAB

3.1 PLOTANDO GRFICOS BI-DIMENSIONAIS (2D) O comando mais comum plot2d e pode ser chamado de duas maneiras: plot2d(x,[y]) plot2d(x,[y], atributos opcionais) Vejamos agora as variantes de plot2d existentes:

plot2d1 e uma forma obsoleta em desuso plot2d2 faz o grfico e uma funo de escada plot2d3 desenha o grfico com barras verticais plot2d4 insere setas na linha do grfico

Exemplos: reta y1 =7- 3 x1 -1<x<6 necessrio definir o intervalo de (x), isto , vetor das abscissas (x1) e a funo (y) -->x1=[-1:.2:6] -->y1=7-3*x1 -->plot2d(x1,y1)

(OBS: plot2d1(x1,y1) = plot2d(x1,y1) plot2d2(x1,y1)

FSICA INTRODUO INFORMTICA

SCILAB

plot2d3(x1,y1)

plot2d4(x1,y1)

FSICA INTRODUO INFORMTICA

SCILAB

parbolas y=x^2 2 -->x2=[-4:.2:4]; -->plot2d(x2,x2^2-2) senide y8 = sen x8 -->x8=[0:0.1:2*%pi]; -->y8=sin(x8); -->plot2d(x8,y8) Faa tambm: a) -->t=[0:.1:2*%pi]; -->x=cos(t); -->y=sin(t); -->plot2d(x,y) b) -->x=[0:0.1:2*%pi]'; -->plot2d([sin(x) sin(2*x) sin(3*x)]) Plotando duas funes no mesmo grfico, utilizando matrizes. Exemplo com Exponenciais -4 < x < 4

a) y4 = 2^x -->x4=[-3:.2:4] -->y4 = 2^x4

-3<x<4

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 () (nesse caso foi necessrio fazer a transposta para que as matrizes tivessem a mesma dimenso. Isso tem que sempre ser observado ao se fazer grficos valendo-se de matrizes) -->my45=[y4; y5]' Plotando os dois grficos -->plot2d(x4,[my45]) Observe que o scilab colocou cores diferentes nas curvas.

FSICA INTRODUO INFORMTICA

SCILAB

DENTIFICAO RFICO 3.2 - IDENTIFICAO DE PONTOS NUMA CURVA DE UM GRFICO Suponha que se queria id ueria identificar alguns dos pontos de interesse no grfico. O comando ntos locate permite fazer isto. Ex.: -->y=poly([3 -2 -12 -2 2],"x","coeff"); -->x=[-2:0.1:3.2}; -->plot2d(x,[horner(y,x)']) -->xgrid():

Queremos identificar 9 pontos e marc-los com X (opo=1 existem outras opes !), (dgito)]) at clicarmos o ltimo. O comando a usar x=locate([nmero de pontos, opo (d

-->x=locate(9,1) x = column 1 to 5 - 1.7734375 - 1.3125 - 0.1796407 - 4.6107784 column 6 to 9 0.421875 1.1796875 2.1875 3.03125 - 0.7578125 - 0.6875 - 0.8982036 - 0.1796407 - 0.078125 3.1736527

- 0.0598802 - 15.628743 - 34.071856 - 0.0598802

FSICA INTRODUO INFORMTICA

SCILAB

DENTIFICAR CURVAS 3.3 - ESCREVER NO ESPAO DO GRFICO E IDENTIFICAR CU -->x=linspace(0,3,300); ;2*0.2^(exp(-0.8*x)-1)]'); -->plot2d(x,[2*exp(0.5*x);2*0. -->xgrid()

mos scalas O comando a que vamos recorrer usa como localizao, as escalas dos eixos do grfico, x e y, por esta ordem. o xstrin xstring:

xstring(valor de x, valor de y, texto) -->xstring(0.1,7,'Curvas exponencial e de Gompertz'); -->xstring(0.75,5,'Gompertz') g(0.75,5,'Gompertz') -->xstring(2,5,'Exponencial') g(2,5,'Exponencial')

O aspecto final do grfico o da figura a seguir: o

FSICA INTRODUO INFORMTICA

SCILAB

3.4 - ESCREVER NO ESPAO DO GRFICO AS LEGENDAS DAS CU ICO CURVAS

inscrever a legendas das curvas no espao do gr fico, com uma moldura, Agora queremos inscre num ponto que escolhemos de epois de arraste a moldura (clicando no mouse) no lugar desejado. O comando legend usado.

hl=legend(['nome da 1 curva';'nome da 2 curva'],a=5); -->hl=legend(['Exponecial'';'Gompertz'],a=5); hl corresponde expresso handle da biblioteca de grficos. o

rea Depois deste comando e de ter clicado no canto inferior direito da r do grfico, temos o grfico a seguir

FSICA INTRODUO INFORMTICA

SCILAB

3.5 - FORMATAR GR RFICOS 2D COM OS MENUS E BOTES DA JANELA DE EDIO rficos Os programadores do Scilab criaram a interface de edio dos grficos com o propsito de facilitar o trabalho dos usurios O grfico a seguir s tem os eixos e as curvas, sem mais nenhum text como o da figura m texto, anterior, obtido inserindo no m mesmo grfico a funo polinomial e as suas derivadas. uas

FSICA INTRODUO INFORMTICA

SCILAB

Os comandos de edio do scilab so:

Os menus da barra superior O menu File permite o habitual e pouco mais: New abrir uma nova janela de grfico em branco. Load abrir um ficheiro de um grfico. Por exemplo, se quisermos comparar dois grficos estando na janela de um deles, abrimos outra com New e depois nesta nova janela usamos o Load para abrir o outro grfico. Podemos redimensionar as janelas e arrum-las lado a lado. Save guardar o grfico. Export guardar em formatos tais como postscript e Latex . Copy to clipboard copiar para a memria para eventualmente ser colado, por exemplo, numa pgina de processador de texto Print setup Configuraes para imprimir Print imprimir. Close fechar a janela do grfico

O menu Tools exibe: Toolbar fazer aparecer ou desaparecer a barra de ferramentas. Zoom ampliar uma regio do grfico. UnZoom anular a ampliao. 2D/3D Rotation Proceder rotao dos grficos

O menu Edit tem o seguinte: Select figure as current quando se tem mais de uma janela de grfico selecciona a que vai ser objecto de comandos. Redraw figure Redesenhar a figura (em desuso) Erase figure limpa a janela do grfico Figure properties abre uma janela de alterao das propriedades da figura Current axes properties abre uma janela que permite formatar os eixos Start entity picker activa a possibilidade de escolher uma rea Stop entity picker encerra a possibilidade de escolher uma rea

FSICA INTRODUO INFORMTICA

SCILAB

Os botes da barra de fe ra ferramentas Da esquerda para a direita: uerda 1 Ativa o zoom; anula a a ampliao; 2 permite rodar o grfico a trs dimenses; 3 abre a janela que permite formatar todo o grfico; mite 4 ativa/desativa a possibilidade de escolher uma rea (clipping). So alternativas a alguns comandos dos menus.

os Formatando os eixos e ttulo e atributos gerais Numa iniciao ao soft software, no aconselho que se mexa nas prop propriedades da figura. Por isso comecemos pelos eixos do grfico. Faamos um clique no boto GE Surge a janela da GED. figura 4.7, onde fizemos um clique em xis(1). m direita da caixa de seleo dos elementos do grfico (Objects Browser), surge um conjunto wser), de separadores, sob o ttulo Objects Prope ies (propriedades dos objectos). Properties

Figura Figu do editor de grfico.

FSICA INTRODUO INFORMTICA

SCILAB

Os separadores dos trs eixos (X, Y, Z) so iguais em possibilidades de interveno por parte do utilizador. Esto reunidas em dois grupos: 1- Label Options que permitem formatar a legenda quanto ao tipo de letra, posio e sua orientao. 2- Axis Options que incidem sobre o eixo (posio, espessura do trao, cor da grelha correspondente, escala linear ou logartmica, limites da escala, marcaes da escala).

Comecemos pelas opes para a legenda (Label Options): No espao para entrada de texto (caixa de texto), em frente de Label, clica-se, escrevese a legenda do eixo, e depois pressiona-se Enter/Return. O boto de escolha ou opo Visibility deve ser ativado. Se escolhermos Fill mode on, traado um retngulo volta da legenda, cujo fundo pode ser colorido, como veremos abaixo. Sugiro que se mantenha o boto Auto-position on, e a legenda inserida a meio do comprimento do eixo. No entanto, na caixa de texto em frente a Position, permite escrever a posio da legenda, referenciada escala do eixo. No se esquea de pressionar Enter/Return.

Os botes de opo Font angle permitem orientar a legenda. Sem qualquer interveno, a legenda escrita ao longo do eixo. Na linha seguinte, os botes deslizante denominados Fore/Back colors permitem escolher a cor das letras (o da esquerda) e da caixa da legenda, se ativamos Fill mode. O deslizante Font size permite escolher o tamanho da letra. A entrada Font style, como em qualquer processador de texto, permite escolher o tipo de fonte. Por defeito o Helvtica.

Vejamos as opes de formatao para o eixo (Axis Options). Location permite trs posies para o eixo: no topo, em baixo, no meio. Data bounds permite alterar os limites da escala do eixo. Grid color, se o grfico tem grelha, permite escolher a cor das linhas correspondentes escala do eixo. Scale oferece a possibilidade de escolher uma escala linear ou logartmica. Ticks abre uma janela que permite alterar as marcaes no eixo. Reverse pe a escala com o valor mximo onde por defeito fica o mnimo.

FSICA INTRODUO INFORMTICA

SCILAB

O separador para inserir o ttulo do grfico tem s as Label Options idnticas s dos eixos, e que se utilizam da mesma maneira. O separador Style: Deve ter o boto de opo Visibility ativado para se ver o grfico na sua janela. Font style permite escolher o tipo de letra das escalas dos eixos. Font color a cor dos algarismos das escalas. Font size o tamanho do tipo de letra escolhido atrs. Fore color refere-se cor do trao dos eixos. Back color a cor de fundo ou do espao definido pelos eixos. Thickness espessura do trao dos eixos.

Nesta fase de aprendizagem ignoramos Hidden color e Line style. No separador Aspect, sugerimos que o leitor, por si, verifique o efeito de ativar os botes de opo Auto clear, Auto scale e Box. Isoview, Tight limits. grficos 3D. Ignore o resto do separador. O separador Viewpoint, nos grficos 3D, permite definir a elevao re o azimute do grfico. Estes dois conceitos esclarecem-se na figura 4.9. Se num grfico 2D clicarmos no boto 3D , ele aparece no plano definido pelos eixos x e y, do grfico a 3D. Cube scaling s se aplica aos

Formatar o traado das curvas e as entidades no espao dos eixos Na janela do editor do grfico, clique em compound(1) e depois em Polyline(3). Surge o editor das linhas das curvas do grfico, denominado Polyline Editor, que permite formatar a curva da funo.

FSICA INTRODUO INFORMTICA

SCILAB

Editar os dados de uma cu r curva O editor das curvas (Polyline Edi yline Editor) tem trs separadores: Style, Data Clipping. Vamos a, ignorar o ltimo.

O Data tem uma caixa de texto, que simultaneamente um menu. Por defeito d informao sobre a estrutura dos dados, no nosso caso uma matriz ( ura ([53x2 double array]). Se clicarmos no boto direita desta informao, aparece uma caixa onde surge Edit data. Se clicarmos em Edit data, aparece uma espcie de folha de clculo com os valores das variveis, que permite alter-los. Clique na clula cujos valores quiser alterar, ela fica com o fundo a lique , amarelo, e introduza os novos valores e pressione Enter/Return. Este procedimento repetido os ste em cada clula a alterar. No fim, clique no boto, acima e esquerda, Refres para sair e fechar. efresh,

FSICA INTRODUO INFORMTICA

SCILAB

Editar uma curva Ocupemo-nos agora do separador Style. Vejamos, ento, as opes de controle, ignorando Interp. mode. Visibility um um boto que permite fazer desaparecer e aparecer o a linha da rea dos eixos. Closed fecha a curva traando uma reta entre os seus extremos. Fill mode com a opo Close ativada permite preencher o espao entre a curva e reta com uma cor que se escolhe abaixo, no deslizante Background. Existem dois grupos de editor. Ou escolhemos uma linha continua, ativando Line mode, ou de uma srie de marcas (por exemplo, tringulos, estrelas, cruzes, etc.), selecionando o boto Mark mode, que fica mais abaixo. Por exemplo, na curva desenhada por linha (Line mode).

Editor do grfico pronto a iniciar a formatao da curva da funo polinomial. Polyline style tem uma caixa de texto que permite escolher vrios tipos de reprentao dos valores (por exemplo, em escada, com setas), clicando no seu boto direita Se tivermos escolhido o estilo correspondente a uma linha simples (interpolated), como na figura 4.6, na caixa de texto Line possvel escolher entre uma linha continua e vrios tipos de ponteado e tracejado. Arrowed size permite escolher o tamanho das setas, se tivermos escolhido em Polyline style, uma linha com setas (Arrowed). Foreground tem um boto deslizante que permite escolher a cor da linha. Igoramos tambm Interp. vector. Em Mark mode, podemos: Escolher o smbolo da marca em Mark style. A caixa de texto pode altera a marca seleccionada para pontos (point) ou mant-la (tabulated). Ao lado pode-se escolher o tamanho das marcas. Mark foreground escolhe as cores das linhas da marca.

Mark background escolhe a cor de enchimento da marca. Por exemplo, uma estrela pode ser desenhada com uma linha verde, e preenchida com uma cor azul.

FSICA INTRODUO INFORMTICA

SCILAB

Editor dos dados (Edit Va da curva da funo polinomial, com uma clula selecionada para Var) a ser alterada

O aspecto do grfico da figura depois de modificado com o auxlio do editor de grfico io (Graphic Editor).

FSICA INTRODUO INFORMTICA

SCILAB

Na figura a seguir, h dois xis. O xis(1) corresponde moldura, texto e linhas da legenda que est inserida em bai direita, no espao dos eixos, que tambm pode ser formatada. baixo, mbm O xis(2) alm da formatao mencionada na descrio do editor de grfico, acabada de fazer, permite editar o texto inserido no espao dos eixos (Text(3), Text(4), Text(5)). ext(3), Experimente tambm este caso de fo ambm formatao de grfico.

Editor de grfico associado

icos Outras possibilidades de criar facilmente grficos a duas dimenses O Scilab ainda apresenta os seguintes comandos para grficos a d duas dimenses, alm do plot2d e histplot:

ma . fplot2d: faz o grfico de um curva definida por uma funo. champ: cria um campo de vetores de duas dimenses champ1: pe permite colorir os vetores do campo fchamp: campo de vetores associado a uma equao diferencial ord etores ordinria (EDO) contour2d: traa as curvas de nvel de uma superfcie num grfico 2D s fcontour2d: traa as curvas de nvel de uma superfcie definida por uma funo num as grfico 2D grayplot: cria uma superfc num grfico a duas dimenses usando cores cie fgrayplot: cria uma superfcie definida por uma fun num grfico a duas dimenses

FSICA INTRODUO INFORMTICA

SCILAB

usando cores pie: cria um gfico circular, como se ilustra na figura 4.13 Sgrayplot: suaviza uma superfcie num grfico a duas dimenses usando cores, como se ilutra na figura 4.14 Sfgrayplot: suaviza uma superfcie definida por uma funo num grfico a duas dimenses usando cores. errbar : acrescenta baras verticais de erros a um grfico 2D Matplot : cria uma quadricula preenchida a cores

Exemplo de um grfico circular

O Scilab tem ainda comandos para criar tipos particulares de grficos a duas dimenses, tais como: xpoly: desenha uma linha ou um polgono xpolys: desenha um conjunto de linhas ou polgonos xrpoly: desenha um polgono regular xsegs: desenha segmentos de recta no ligados xfpoly: preenche um polgono xfpolys: preenche um conjunto de polgonos xrect: desenha um rectngulo xfrect: preenche um rectngulo xrects: desenha ou preenche um conjunto de rectngulos xarc: desenha parte de uma elipse

FSICA INTRODUO INFORMTICA

SCILAB

xarcs: desenha partes de um conjunto de elipses xfarc: preenche parte de uma elipse xfarcs: preenche partes de um conjunto de elipses

Para obter mais informao e exemplos de uso dos comandos, como j sabe, entre com help nome do comando. Copie os exemplos da Ajuda, e cole-os na janela de comandos para ver o que produzem e poder interpretar melhor o significado das instrues que tm.

Grfico obtido com o comando Sgrayplot

3.6 - INSERIR VRIOS GRFICOS NA MESMA JANELA

O comando que permite criar um vetor ou uma matriz de grficos o seguinte subplot:
subplot(nmero de linhas com grficos, nmero de colunas com grficos, nmero de ordem do grfico)

Abaixo deste comando insere-se o comando que cria o grfico na clula da matriz de grficos, como por exemplo, plot2d(x,[y]).

FSICA INTRODUO INFORMTICA

SCILAB

Se quisermos dois grficos lado a lado teremos:

subplot(1,2,1) Comando para criar o grfico 1 subplot(1,2,2) Comando para criar o grfico 2

Grfico 1 Grfico2

Se quisermos um grfico a cima e outro abaixo:

subplot(2,1,1) Comando para criar o grfico 1 subplot(2,1,2) Comando para criar o grfico 2 Grfico2 Grfico 1

O ltimo exemplo: uma matriz de quatro grfico:

subplot(2,2,1) Comando para criar o grfico 1 subplot(2,2,2) Comando para criar o grfico 2 subplot(2,2,3) Comando do grfico 3 subplot(2,2,4) Comando do grfico 4 Grfico 3 Grfico 4 Grfico 1 Grfico 2

Vejamos um exemplo de aplicao fictcio, grafando a variao da densidade de rvores, por exemplo, os crescimentos em dimetro, altura e volume do tronco. Repare na instruo boxed=1, no comando xtitle, que cria uma caixa nos ttulos e legendas. Os grficos foram depois de criados, foram formatados com o editor de grficos.

FSICA INTRODUO INFORMTICA

SCILAB

// tabela de produo do pinheiro bravo, dos 10 aos 80 anos //den=densidade, rvores/hectare, grfico 1 //dap=dimetro altura do peito mdio, cm, grfico 2 //alt=altura mdia, metros, grfico 3 //vol=volume do tronco, metros cbicos/ha, grfico 4 //t=Idade em anos //quatro equaes de Gompertz xbasc() t=10:1:80; den=314*6.18^exp(-0.05*(t-10)); dap=34*0.4^exp(-0.05*(t-10)); alt=24*0.4^exp(-0.05*(t-10)); vol=400*0.4^exp(-0.05*(t-10)); subplot(2,2,1) plot2d(t,[den]) xtitle('Densidade','Idade, anos','rv./ha',boxed=1) subplot(2,2,2) plot2d(t,[dap]) xtitle('Dimetro mdio','Idade, anos','cm',boxed=1) subplot(2,2,3) plot2d(t,[alt]) xtitle('Altura mdia','Idade, anos','m',boxed=1) subplot(2,2,4) plot2d(t,[vol]) xtitle('Volume em p','Idade, anos','m.c./ha',boxed=1)

FSICA INTRODUO INFORMTICA

SCILAB

Tabela exemplo, criada usando o comando subplot

3.7 - GRFICOS A TRS DIMENSES (3D)

Um dos comandos tidos como mais empregues pelos utilizadores do Scilab, o plot3d, que apresenta variantes tal como o plot2d. Enumeremos esta famlia de comandos:

plot3d faz um grfico de uma superfcie 3D plot3d1 - faz um grfico 3D de uma superfcie cinzento ou com nveis a cores plot3d2 - faz um grfico 3D de uma superfcie definida por retngulos plot3d3 - faz um grfico 3D de uma superfcie em rede (mesh) definida por retngulos mesh faz um grfico 3D definido por uma rede

Para usar o comando plot3d, criamos primeiro os vetores de valores de x, y e z. Agora com a existncia do editor do grfico, basta escrever: plot3d(x,y,z) e depois fazer a formatao desejada com o editor de grficos. A listagem de comandos

FSICA INTRODUO INFORMTICA

SCILAB

seguinte cria uma janela com uma matriz de quatro grficos que ilustram as variantes de plot3d, exibida na figura a seguir, com os ttulos editados. Os exemplos foram tirados da ajuda do Scilab. xbasc() //limpa qualquer janela de grfico aberta //dados para a funo z=f(x,y) //usada pelos comandos plot3d e plot3d1 t=[0:0.3:2*%pi]'; z=sin(t)*cos(t'); //dados para os comandos plot3d2 e plot3d3 u = linspace(-%pi/2,%pi/2,40); v = linspace(0,2*%pi,20); X = cos(u)'*cos(v); Y = cos(u)'*sin(v); Z = sin(u)'*ones(v); //inserir 4 grficos na mesma janela subplot(2,2,1) plot3d(t,t,z) //comando plot3d xtitle("plot3d","x","y","z") subplot(2,2,2) plot3d1(t,t,z) //comando plot3d1 xtitle("plot3d1","x","y","z") subplot(2,2,3) plot3d2(X,Y,Z); // comando plot3d2 xtitle("plot3d2","X","Y","Z") subplot(2,2,4) plot3d3(X,Y,Z) // comando plot3d3 xtitle("plot3d3","X","Y","Z")

Formatar grficos 3D com os menus e botes da sua janela Se chamarmos o editor de grfico da janela da figura e abrirmos as rvores dos quatro conjuntos de eixos obtemos o que se exibe na figura 4.17. Como de costume, o Axis1 corresponde ao grfico 4 (plot3d3), o Axis2 ao grfico 3 (plot3d2), o Axis3 ao grfico 2 (plot3d1), e o Axis4 ao grfico 1 (plot3d). A formatao dos eixos, chamada clicando em xis idntica descrita para os grficos 2D. O aspecto distintivo relevante surge no separador Viewpoint que permite alterar a elevao e azimute do observador virtual, e reduzir o grfico a duas dimenses. Os grficos 1 e 2, no criam retngulos por isso so identificados por Plot3d. O comando plot3d2, do grfico 3 cria uma superfcie de retngulos (facets), por isso surge Fac3d. O grfico 4 cria dois conjuntos de linhas (polylines) Compound(1) e

Compound(2). O primeiro com 40 linhas e o segundo com 20 linhas, que se editam como nos grficos 2D.

Cliquemos, no Axis4 em Plot3d. Surge-nos uma janela que t aspectos comuns ao Axis4 tm grficos 2D e que se usa am da mesma maneira. O aspecto mais in novador desta janela diz respeito aos botes de opo de Color flag que permitem passar do aspecto do grfico um para o specto dois e vice-versa. A Hidden color corresponde face inferior da superfcie criada, se esta tiver pores visveis.

Naveg gador no grfico com os ramos xis aber rtos.


50

Editor do Plot3d do grfico .

submetidos a alguns atos de formatao usando o editor de grficos Os grficos depois de s sando

51

Outras possibilidades de criar facilmente grficos 3D

semelhana do que se passa com os grficos 2D, o Scilab ainda apresenta outros comandos para se obterem grficos 3D. Eis alguns:

fplot3d : faz um grfico 3D de uma superfcie definida por uma funo fplot3d1 : faz um grfico 3D de uma superfcie definida por uma funo com nveis de cizento ou cor param3d : faz o grfico de uma curva param3d1 faz o grfico de curvas contour : insere curves de nvel num grfico 3D fcontour : insere curvas de nvel no grfico de uma superfcie definida por uma funo hist3d : histograma em 3D

52