Apostila Curso Scilab UFSCar

Embed Size (px)

Citation preview

Universidade Federal de So Carlos Centro de Cincias Exatas e de Tecnologia Departamento de Engenharia Qumica

INTRODUO AO USO DO PROGRAMA LIVRE SCILAB COM APLICAES EM ENGENHARIA

"Institut National de Recherche en Informatique et en Automatique (INRIA)"

Verso 0.1

Antonio Jos Gonalves da Cruz Charles Dayan Farias de Jesus

So Carlos Fevereiro de 2006

INTRODUO AO USO DO PROGRAMA LIVRE SCILAB COM APLICAES EM ENGENHARIA

Antonio Jos Gonalves da Cruz Charles Dayan Farias de Jesus

So Carlos Fevereiro de 2006

Copyright 2005 Antonio Jos Gonalves da Cruz & Charles Dayan Farias de Jesus. Permisso para copiar, distribuir e/ou modificar este documento de acordo com os termos da licena de documentao GNU (GNUFDL), verso 1.2 ou qualquer outra verso posterior publicada pela Free Software Foundation. Uma cpia da licena pode ser encontrada em: http://www.gnu.org/licenses/fdl.txt

ndicePREFCIO Captulo 1 1. INSTALAO 1.1 Instalando o programa Scilab em ambiente Windows 1.2 Instalando correo para verso binria Captulo 2 2. INICIANDO O APLICATIVO SCILAB 2.1 O ambiente de trabalho 2.2 Obtendo ajuda 2.3 Primeiros passos 2.3.1 Inserindo comentrios 2.3.2 Constantes 2.3.3 Operaes bsicas 2.3.4 Apagando variveis 2.3.5 Limpando o ambiente de trabalho 2.4 Funes trigonomtricas 2.5 Constantes especiais 2.6 Trabalhando com vetores e matrizes 2.6.1 Vetores 2.6.2 Matrizes 2.7 Trabalhando com polinmios 2.8 Construindo grficos 2.8.1 Comandos bsicos 2.9 Manipulando funes 2.10 Comandos especiais Captulo 3 3. MATEMTICA COM SCILAB 3.1 Um pouco mais de vetores 3.1.1 Operaes com vetores 3.2 Matrizes 3.3 Sistemas lineares 3.4 Exerccios Captulo 4 4. NOES DE PROGRAMAO 4.1 Programando com Scilab 4.2 Comandos para Iteraes 4.3 Definindo Scripts 4.4 Definindo Funes

Bibliografia Apndice Licena do Scilab Licena da logomarca

PREFCIOO programa Scilab foi criado por pesquisadores pertencentes ao Institut de Recherche en Informatique et an Automatique, INRIA, atravs do projeto MTALAU (Mthods, augorithmes et logiciels pour lautomatique) e cole Nationale des Ponts et Chausses, ENPC, no ano de 1990. Atualmente vm sendo mantido e desenvolvido por um consrcio de empresas e instituies francesas, denominado Consrcio Scilab (a criao deste consrcio foi em maio de 2003). distribudo livremente e encontra-se disponvel para download no seguinte endereo (http://www.scilab.org/). Scilab vem sendo utilizado ao redor do mundo tanto em ambientes educacionais quanto industriais. Foi desenvolvido para ser um sistema aberto, onde o usurio pode definir novos tipos de dados e operaes a partir destes. O programa disponibiliza um conjunto de toolboxes, a saber: - grficos 2D e 3D, animaes; - lgebra linear, matrizes esparsas; - funes polinomiais e racionais; - simulao: ODE solver e DAE solver; - Scicos (http://www.scicos.org/): ambiente grfico utilizado para simulao de sistemas dinmicos; - Controle clssico e robusto, otimizao LMI (Linear Matrix Inequality); - Otimizao Diferencivel e no diferencivel; - Processamento de sinais; - Metanet: grficos e redes; - PVM (Parallel Virtual Machine System), uso do Scilab em processamento paralelo; - Estatstica; - Interface com pacote de computao simblica do Maple, gerando o cdigo MuPAD 3.0 (http://www.mupad.com/); - Interface com Tcl/Tk.

Scilab trabalha na maioria dos sistemas operacionais Unix (incluindo GNU/Linux) e Windows (9X/2000/XP). O programa disponibilizado com o cdigo fonte aberto, ajuda on-line e manuais em Ingls. As verses binrias tambm se encontram disponveis. De acordo com os desenvolvedores/mantenedores do aplicativo Scilab, o tipo de licena adotado no compatvel com a licena GPL; consultar o seguinte endereo:http://www.fsf.org/licenses/license-list.html#NonFreeSoftwareLicense

Mas, apesar disso, o tipo de licena adotado permite:

- livre uso e distribuio do aplicativo para fins no comerciais; - uso para fins comerciais desde que o programa no sofra alteraes (modificaes na verso original do Scilab) ou como programa composto (ou seja, incluindo-o em outro programa). Maiores informaes sobre aspectos legais de uso do programa Scilab encontram-se disponveis no seguinte endereo: http://www.scilab.org/legal/index_legal.php?page=faq.html Na pgina principal do Scilab (http://www.scilab.org) j se encontra disponvel para download a verso 4.0 desse aplicativo (Release Candidate). Na internet possvel encontrar vasta literatura a cerca do uso deste aplicativo. Na prpria homepage do Scilab encontra-se um link onde disponibilizado acesso a livros (comerciais e no comerciais), relatrios tcnicos e artigos. (http://www.scilab.org/publications/index_publications.php?page=books.html) Documentos referentes documentao disponveis no seguinte endereo: So eles: Introduction to Scilab (manual de introduo ao Scilab) Signal Processing (documentao processamento de sinais) sobre o manual de do aplicativo esto

http://www.scilab.org/product/index_product.php?page=old_documentation.html

Lmitool: Linear Matrix Inequalities Optimization (documentao sobre o tool box de otimizao)

Toolbox

Metanet User's Guide and Tutorial (tutorial sobre a utilizao do tool box de grafos Metanet) Scicos (documentao sobre o ambiente de simulao no Scilab) Scilab's Internals Documentation (documentao sobre as caractersticas internas do Scilab) Scilab demonstrations (programas funcionalidades do Scilab) de demonstrao de

Intersci (documentao sobre a interconexo do Scilab com programas escritos nas linguagens C ou FORTRAN)

Estes arquivos encontram-se disponveis no CD do curso na pasta . Esta apostila foi elaborada tendo como principais referncias: Pires, P. S. M. Introduo ao Scilab Verso 3.0, obtida em http://www.dca.ufrn.br/~pmotta Caro, A. A. e Seplveda, C. V. Fundamentos de Scilab y aplicaciones Verso 0.1, obtida em http://www.scilab.org/contrib/displayContribution.php?fileID=262

Captulo 11. INSTALAO1.1 Instalando o programa Scilab em ambiente Windows O programa Scilab (verso 3.1.1) encontra-se disponvel para download a partir do seguinte endereo: http://www.scilab.org. De posse do aplicativo, o primeiro passo para iniciar a instalao consiste em aplicar um duplo clique sob o arquivo scilab-3.1.1.exe. Dessa forma, a instalao inicia-se com o programa perguntando para o usurio selecionar a linguagem a ser utilizada durante a instalao do aplicativo (Figura 1.1).

Figura 1.1: Seleo da linguagem de instalao. Aps a seleo da linguagem (Ingls ou Francs), clica-se sobre o boto para a instalao prosseguir. Inicia-se o guia de instalao que ajudar durante todo o processo (Figura 1.2).

Figura 1.2: Guia de instalao que ajudar durante o processo. Recomenda-se que todos os aplicativos abertos no computador sejam fechados para prosseguir com o procedimento de instalao. Clicando-se em , passa-se a tela que apresenta o acordo de licena, Figura 1.3. Antes de passar a diante com a instalao,

recomenda-se que se faa uma leitura cuidadosa dos termos da licena.

Figura 1.3: Acordo de licena. Concordando-se com os termos apresentados, seleciona-se e clica-se no boto prosseguindo com a apresentao da prxima tela, Figura 1.4. Nesta tela solicitado ao usurio selecionar o local no disco rgido onde o aplicativo ser instalado. A instalao padro realizada no seguinte caminho: C:\Program Files\scilab-3.1.1. Uma vez selecionado o caminho para instalao, clica-se novamente em .

Figura 1.4: Seleo do local de instalao no disco rgido. A prxima tela solicita que o usurio escolha os componentes a serem instalados, Figura 1.5. O usurio dever selecionar os componentes que deseja instalar e prosseguir, clicando-se em .

Figura 1.5: Seleo dos componentes a serem instalados. O configurador da instalao tambm pergunta sobre a criao de um nome para o programa, Figura 1.6. O usurio pode aceitar a sugesto ou modificar o nome. Este atalho ser salvo no diretrio . Em seguida, clica-se em .

Figura 1.6: Local onde sero armazenados os atalhos para o programa. Tambm feita a seleo de tarefas adicionais a serem realizadas (criar cone na rea de trabalho, criar um atalho no menu de acesso rpido, associar as extenses de arquivos *.SCE e *.SCI ao programa Scilab, etc). A Figura 1.7 apresenta esta tela. Aps a seleo, o procedimento de instalao prossegue com um clique sobre o boto .

Figura 1.7: Seleo de tarefas adicionais. Finalmente apresentada a tela final do configurador, onde se podem conferir as escolhas realizadas durante o processo, podendo retroceder para realizar alteraes ou prosseguir com a instalao do aplicativo, Figura 1.8.

Figura 1.8: Tela final do configurador. Clicando-se no boto inicia-se a instalao. O procedimento levar alguns minutos, a depender da capacidade de processamento do computador onde se est realizando a instalao. Ao finalizar o processo, o configurador apresenta a tela ilustrada na Figura 1.9. O usurio dever ler as informaes mostradas nesta figura, e se tudo estiver de acordo, prosseguir clicando-se em .

Figura 1.9: Importantes informaes apresentadas antes de continuar com a instalao. Por fim, dentro de mais alguns segundos o procedimento de instalao ser finalizado. O configurador apresentar a mensagem dada pela Figura 1.10. dada a opo ao usurio de iniciar imediatamente o aplicativo selecionando-se . Para terminar o procedimento de instalao deve-se clicar no boto .

Figura 1.10: Completando a instalao do Scilab.

1.2 Instalando correo para verso binria De acordo com os desenvolvedores, existe um erro que deve ser corrigido na verso binria. O arquivo de correo (scilab-3.1.1patch-a.zip) encontra-se disponvel no seguinte endereo:http://www.scilab.org/download/index_download.php?page=release.html

O erro refere-se ao Scipad, o qual incapaz de salvar arquivos em diretrios especiais (C:\Documents and Settings, ... ) no sistema operacional Windows. O uso do arquivo que corrige este erro s destinado a instalaes que foram realizadas utilizando o arquivo scilab-3.1.1.exe. Passos para instalao do arquivo: 1. Salvar o arquivo (scilab-3.1.1-patch-a.zip) e descompact-lo em algum lugar temporrio no disco rgido; 2. No console do Scilab, digitar o seguinte comando: (a) ou (b) clicar com o boto direito do mouse no arquivo patch3.1.1.sce e selecionar Executar (use esta opo somente se os arquivos com a extenso *.sce estiverem associados com o aplicativo Scilab). A correo est instalada. exec "\patch-3.1.1.sce"

Captulo 2INICIANDO O APLICATIVO SCILAB2.1 O ambiente de trabalho Se tudo ocorreu bem durante o procedimento de instalao, pode-se iniciar o aplicativo Scilab a partir do menu , ou alternativamente, clicando-se no atalho criado na rea do ambiente de trabalho (caso o usurio tenha optado por est opo durante a instalao). A tela inicial do Scilab apresentada na Figura 2.1.

Figura 2.1: Tela inicial do Scilab. Na Figura 2.1, observa-se que o prompt do Scilab representado por uma seta, -->, e que o cursor do Scilab permanece piscando. Na parte superior da janela tm-se os seguintes menus: File Edit Preferences Control Editor Aplications ? (Help)

Cada um desses menus pode ser expandido em submenus ao clicar sobre eles. Um pouco abaixo, tm-se algumas teclas de acesso rpido, que se localizam na barra de ferramentas, Figura 2.2. Abre nova janela do aplicativo Scilab Abre o aplicativo Scipad Abre arquivo com extenso *.sci Copia rea de texto selecionada Cola rea de texto copiada Muda o diretrio de trabalho Ativa sada do Scilab Permite escolher o tipo de fonte Impresso Help Figura 2.2: Teclas de acesso rpido. 2.2 Obtendo ajuda possvel a qualquer momento solicitar o comando , atravs da opo na barra de tarefas, da tecla de atalho, ou digitando-se help() ou simplesmente help; na linha de comando do Scilab. aberta a janela ilustrada pela Figura 2.3, onde o usurio pode navegar pelos tpicos disponveis.

Figura 2.3: A tela de ajuda do Scilab.

2.3 Primeiros passos A sintaxe de comandos do programa Scilab muito similar a do MatLab. 2.3.1 Inserindo comentrios sempre muito conveniente o uso de comentrios para explicar o que se est programando. No Scilab, para inserir um comentrio se usa o seguinte comando: //. Exemplo:--> // Este eh um comentario

2.3.2 Constantes A declarao de variveis constantes no Scilab realizada da seguinte forma:--> x = 5 x = 5.

Similarmente ao Matlab, o Scilab tambm case sensitive, ou seja, discrimina maisculas de minsculas. Dessa forma, as variveis x e X so diferentes.--> x = 5 x = 5. --> X = 10 X = 10.

2.3.3 Operaes bsicas Uma vez declarada variveis, possvel realizar operaes bsicas com elas. Soma-->x+X ans = 15.

Subtrao-->x-X ans = -5.

Produto--> x*X ans =

50.

Diviso--> x/X ans = 0.5

Se inadvertidamente ocorrer uma diviso por zero, a seguinte mensagem apresentada ao usurio:!--error 27 division by zero...

Exponenciao Os smbolos ^ ou ** so utilizados para se elevar uma varivel a uma potncia determinada.--> x^3 ans = 125.

ou--> x ** 3 ans = 125.

Raiz quadrada A raiz quadrada de um nmero obtida atravs do comando sqrt(), com a varivel inserida dentro do parnteses:--> srqrt(4) ans = 2.

Funo Exponencial, ex A funo exponencial obtida atravs do comando exp(),com a varivel inserida dentro do parnteses:--> exp(x) ans = 148.41316

Logaritmo O comando log() empregado para calcular o logaritmo neperiano de uma varivel. O logaritmo na base 10 calculado com o comando log10().--> log(2.7182818) ans = 1.0000000 --> log10(100)

ans = 2.

2.3.4 Apagando variveis Para apagar uma varivel criada anteriormente utiliza-se o comando clear .-->clear x

Pode-se tambm optar por apagar todo o espao de memria utilizado pelo programa. Para tal utiliza-se o comando clear all.-->clear all

2.3.5 Limpando o ambiente de trabalho O comando clc utilizado para limpar a rea de trabalho no programa scilab. OBS: Lembre-se que o comando clc apenas limpa a tela, e o comando clear que apaga as variveis da memria.

2.4 Funes trigonomtricas De forma similar a outros pacotes computacionais, o programa Scilab tambm possui um conjunto de funes pr-definidas e que podem ser utilizadas pelo usurio (a exemplo das funes exp() e sqrt() vistas anteriormente). A Tabela 2.1 apresenta as funes trigonomtricas definidas no programa Scilab. O argumento utilizado em radianos. Tabela 2.1: Funes trigonomtricas definidas no Scilab. Funo Comando Exemplo seno sin() sin(%pi/4.) arcoseno asin() asin(%pi/4.) coseno cos() cos(%pi/4.) arcoseno acos() acos(%pi/4.) tangente tan() tan(%pi/4.) arcotangente atan() atan(%pi/4.) cotangente cotg() cotg(%pi/4.) * a varivel %pi refere-se a um tipo de varivel especial descrita no prximo item.

2.5 Constantes especiais O Scilab possui algumas constantes denominadas especiais e que se iniciam com o smbolo porcentagem (%). So elas: %i : representa o valor de raiz quadrada de -1.

-->% i ans = i

%pi : representa o valor da varivel pi.-->%pi ans = 3.1415927

%eps : representa o menor nmero que o computador representa (1.+%eps = 1.)-->%eps %eps = 2.220D-16

%inf : representa um nmero muito grande.-->%inf %inf = Inf

A diviso de um nmero por %inf resulta sempre em zero. %nan: representa not a number (no um nmero) %t e %f : representam as constantes booleanas verdadeiro e falso, respectivamente. 2.6 Trabalhando com vetores e matrizes O programa Scilab trabalha com vetores e matrizes de forma similar a vrios pacotes computacionais disponveis no mercado. 2.6.1 Vetores Vetor Linha Para inserir um vetor linha no programa Scilab a seguinte sintaxe utilizada:--> Vetor1 = [1 2 3] Vetor1 =

!

1.

2.

3. !

Pode-se utilizar a vrgula como separador de componentes:--> Vetor2 = [1, %pi, %eps] Vetor2 = ! 1. 3.1415927 2.220D-16 !

Existem algumas formas de criar vetores:--> Vetor3 =1:10 Vetor3 = ! 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. !

--> Vetor4 =1:2:10 Vetor4 = ! 1. 3. 5. 7. 9. !

Vetor Coluna Um vetor coluna inserido das seguintes formas:-->Vetor6 =[1 -->2 -->3 -->4 -->5] Vetor6 ! ! ! ! ! 1. 2. 3. 4. 5. ! ! ! ! ! =

Ou, alternativamente:-->Vetor7 =[1;2;3;4;5] Vetor7 ! ! ! ! ! 1. 2. 3. 4. 5. ! ! ! ! ! =

possvel tambm obter um vetor coluna a partir da transposta do vetor linha:-->Vetor_Linha=[1 2 3 4 5]

Vetor_Linha ! 1. 2.

= 3. 4. 5. !

Vetor_Coluna = Vetor_Linha Vetor_Coluna ! ! ! ! ! 1. 2. 3. 4. 5. ! ! ! ! ! =

2.6.2 Matrizes A composio de uma matriz no ambiente Scilab realizada de forma similar a dos vetores, separando-se cada linha por um ponto e vrgula (os elementos da mesma linha podem ser separados por espao ou por vrgula).--> A=[2. 3. 1.5; 1.0 6.5 3.7] A ! ! = 2. 1. 3. 6.5 1.5 ! 3.7 !

possvel tambm montar uma matriz pela combinao de vetores.--> vetor1=[1 2 3] vetor1 ! 1. = 2. 3. !

-->vetor2=[0.4 4.5 6.0] vetor2 ! 0.4 = 4.5 6. !

-->A=[vetor1; vetor2] A ! ! = 1. 0.4 2. 4.5 3. ! 6. !

2.7 Trabalhando com polinmios A sintaxe empregada para representar polinmios no ambiente Scilab a seguinte:

Como Coeficientes-->polinomio1=poly([1 2 4],'x','c') polinomio1 = 2 1 + 2x + 4x

Como Raz-->polinomio2=poly([1 2 4],'x') polinomio2 = 2 - 8 + 14x - 7x + x 3

2.8 Construindo grficos 2.8.1 Comandos bsicos Comando plot Uma das formas de se construir um grfico no programa Scilab, atravs do comando plot:-->x=[1 2 3 4];y=[1 2 3 4]; -->plot(x, y)

A Figura 2.4 apresenta o grfico gerado pelo Scilab.

Figura 2.4: Grfico construdo a partir dos vetores x e y.

Outro exemplo, grfico da funo seno, Figura 2.5.-->x=[1:0.01:10]; -->plot(x,sin(x))

Figura 2.5: Grfico da funo seno. Para plotar mais de dois grficos, mantendo-os ativos na tela, usa-se o comando scf(). Exemplo:-->x=[0:0.1:2*%pi]'; -->plot(x,sin(x));scf(1);plot(x,[sin(x) sin(2*x)]);

O comando clf() apaga o ltimo grfico desenhado Exemplo:-->x=[0:0.1:2*%pi]'; -->plot(x,sin(x)) -->clf()

Para deslocar o eixo da ordenada de um grfico para a direita, o seguinte comando empregado:-->// ordenada deslocada para direita -->plot(x,sin(x))

-->a=gca(); // Handle on current axes entity -->a.y_location ="right"; -->clf()

Para centralizar ambos os eixos do grfico (abscissa e ordenada), use o comando:// axis centered at (0,0) plot(x-4,sin(x)) a=gca(); // Handle on axes entity a.x_location = "middle"; a.y_location = "middle";

Exemplo especificando o tipo de linha e algumas propriedades globais.-->//LineSpec and GlobalProperty examples: -->clf(); -->t=0:%pi/20:2*%pi; -->plot(t,sin(t),'ro-.',t,cos(t),'cya+',t,abs(sin(t)),'--mo')

A Tabela 2.2 apresenta uma lista das propriedades a serem usadas com o comando plot para especificar um tipo e cor de linha. Tabela 2.2: Argumentos que especificam o tipo de linha. Especificador Tipo de linha Linha slida (default) -Linha tracejada : Linha pontilhada -. Linha tracejada-pontilhada A Tabela 2.3 apresenta a linha das propriedades para atribuir uma cor linha desenhada. Tabela 2.3: Argumentos que especificam a cor de uma linha. Especificador Cor r Vermelho g Verde b Azul c Ciano m Magenta y Amarelo k Preto w Branco

A Tabela 2.4 especifica os tipos de marcadores empregados para os pontos a serem desenhados. Tabela 2.4: Argumentos que especificam os tipos de marcadores para os pontos a serem desenhados nos grficos Especificador Tipo de marcador + Sinal de + o Crculo * Asterisco . Ponto x Sinal de multiplicao square ou s Quadrado diamond ou d Diamante ^ Tringulo voltado para baixo Tringulo voltado para cima > Triangulo voltado para direita < Tringulo voltado para esquerda pentagram Estrela com cinco pontas none Nenhum marcador

Especificando dados para serem plotados://Data specification t=-%pi:0.1:%pi; size(t) plot(t) // simply plots y versus t vector size clf(); // clear figure plot(t,sin(t)); // plots sin(t) versus t clf();

Desenhando subplots (quatro grficos em uma janela)-->subplot(221) -->plot(t,sin(t)); // plots sin(t) versus t column by column this time -->xtitle("sin(t) versus t") -->subplot(222) -->plot(t,sin(t)') -->xtitle("sin(t)'' versus t") -->subplot(223) -->plot(t',sin(t)) -->a=gca();

-->a.data_bounds=[0 -1;7 1]; // to see the vertical line hiddden by the y axis -->xtitle("sin(t) versus t''") -->subplot(224) -->plot(t',sin(t)') -->xtitle("sin(t)'' versus t''")

Grficos mais elaborados podem ser construdos. Este tpico ser abordado em captulos posteriores.

2.9 Manipulando funes O Scilab permite que se defina uma funo e a partir deste ponto se calcule o valor desta funo, uma vez fornecidos os valores das incgnitas. Exemplo:funcao(x,y) = sin(x)+cos(y)-10 Sintaxe no Scilab: deff('[R]=funcao(x,y)','R=sin(x)+cos(y)-10')

Calculando o valor da funo em [2, 4]:-->funcao(2,4) ans = - 9.7443462

2.10 Comandos especiais Comando diary O comando diary (nome_do_arquivo) permite que o Scilab grave em um arquivo todos os dados de entrada e da maioria dos dados de sada digitados no ambiente de trabalho, ou seja, gera umdirio de uma sesso de trabalho. Este comando til quando se trabalha diretamente na linha de comando. O comando diary(0) encerra este comando. Exemplo: Na linha de comando digite: diary(exemplo.txt). Digite os comandos abaixo:-->//Calculo da rea de uma circunferncia de raio 2 metros -->r=2 r =

2. -->area=%pi*r^2 area = 12.566371 -->diary(0)

Ser gerado o arquivo exemplo.txt que conter uma cpia de todos os comandos digitados. Comando who Este comando utilizado para listar os nomes de todas as variveis corrrentes utilizadas pelo Scilab. Exemplo:-->who your variables are... help SCIHOME xdesslib statslib metalib %T %pvm %i using scicos_pal %helps with_pvm WSCI PWD TMPDIR MSDOS SCI sparselib percentlib polylib intlib elemlib alglib siglib optlib autolib roblib armalib tkscilib tdcslib s2flib mtlblib %z %s %nan %inf COMPILER %tk $ %t %f %eps %e 6646 elements out of 5000000. and 49 variables out of 9231 home utillib soundlib %F %gtk %io

your global variables are... LANGUAGE %helps demolist %browsehelp %scipad_language INDEX using 1123 elements out of 11000. and 7 variables out of LCC 767

Comando whos Este comando utilizado para listar todos os nomes, tipos e memria utilizada pelas variveis.-->whos Name whos help scicos_pal %helps with_pvm WSCI home SCIHOME PWD TMPDIR MSDOS Type function function string string function string string string string string boolean Size Bytes 7688 2408 2048 16 352 176 144 224 144 184 16

12 by 2 27 by 2 1 1 1 1 1 1 by by by by by by 1 1 1 1 1 1

SCI sparselib xdesslib percentlib polylib intlib elemlib utillib statslib alglib siglib optlib autolib roblib soundlib metalib armalib tkscilib tdcslib s2flib mtlblib %F %T %z %s %nan %inf COMPILER %gtk %pvm %tk $ %t %f %eps %io %i %e %pi

string library library library library library library library library library library library library library library library library library library library library boolean boolean polynomial polynomial constant constant string boolean boolean boolean polynomial boolean boolean constant constant constant constant constant

1 by 1

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

by by by by by by by by by by by by by by by by by by

1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1

112 256 2816 12760 928 1368 1808 4544 1280 1336 1816 584 2168 1264 464 3880 488 824 752 1936 5504 24 24 56 56 24 24 40 24 24 24 56 24 24 24 32 32 24 24

Definindo variveis como variveis locais ou variveis globais No Scilab uma varivel pode ser definida como varivel local ou varivel global. Ordinariamente, cada funo no Scilab, tem suas prprias variveis locais e podem ler todas as variveis criadas no espao de trabalho ou pela chamada no argumento da funo. Definindo uma varivel como global, esta passa a poder ser lida ou escrita atravs de funes. Resumindo, as variveis globais so vlidas no ambiente do Scilab enquanto as variveis locais so vlidas apenas no escopo de uma funo. OBS: Se ao definir uma varivel como global ela ainda no possuir um valor, esta ser iniciada como uma matriz vazia.

Comando clear e clearglobal O comando clear apaga todas as variveis que no so pr-definidas pelo Scilab ou no esto protegidas. Normalmente, as variveis protegidas so aquelas da biblioteca padro e variveis com o prefixo % (porcentagem). Exemplo:-->a=10 a = 10. -->clear a -->a !--error 4 undefined variable : a

O comando clearglobal apaga todas as variveis globais do espao de trabalho do programa Scilab. A sintaxe clearglobal nome_varivel.

2.11 Manipulao de arquivos e diretrios Comando pwd O programa Scilab possui comandos que podem ser utilizadas para manipular arquivos e diretrios. O comando pwd mostra o diretrio no qual se est trabalhando.-->pwd ans = C:\Documents and Settings\user\Meus documentos\Usuarios\Ajgcruz\Projet os\EQ_Scilab

Comando dir O comando dir exibe o contedo do diretrio corrente.-->dir ans = Apostila_Curso Apostila_Web Arquivos_diversos CD_Curso Divulgacao Material_diverso SCILAB_dialogs.pdf MoreOnScilabGraphics.pdf intro.pdf ODE_Scilab.pdf scilab12.pdf Pagina Web Curso Scilab.rtf Projeto_Extensao

Comando ls O comando ls tambm exibe o contedo do diretrio corrente (na forma de um vetor coluna).-->ls

ans

= ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !

!Apostila_Curso ! !CD_Curso ! !teste.txt ! !Material_diverso ! !Arquivos_diversos ! !Divulgacao ! !Pagina Web Curso Scilab.rtf ! !Projeto_Extensao ! !Apostila_Web ! !ODE_Scilab.pdf ! !SCILAB_dialogs.pdf ! !intro.pdf ! !MoreOnScilabGraphics.pdf ! !scilab12.pdf

Comando chdir Utilizando o comando chdir possvel mudar o diretrio de trabalho.-->chdir CD_Curso ans = 0. -->dir ans = Capa_CD.doc Documentation Programa puffin_logo_small.gif

Comando mkdir Este comando permite a criao de um diretrio diretamente da linha de comando do Scilab. No exemplo cria-se o diretrio e na seqncia emprega-se o comando dir para confirmao.-->mkdir('teste') ans = 1. -->dir ans = Capa_CD.doc Documentation Programa puffin_logo_small.gif teste

Comando format O comando format define o formato de impresso de um nmero. Exemplo:-->x=[100 %eps]; -->format('e',10);x x = ! 1.000D+02 2.220D-16 !

-->format('v',10);x x = ! 100. 2.220D-16 !

Captulo 33. MATEMTICA COM SCILAB3.1 Um pouco mais de vetores Como j foi apresentado no captulo anterior, muito simples criar um vetor no Scilab. Um vetor pode ser composto de: nmeros escalares, polinmios, nmeros complexos, etc.-->x=poly(0,'x'); -->a=[1 6]; -->b=[1/x, a*x, x**2] b = ! ! ! ! 1 x x 1 6x --1 x 1 ! 2 ! ! !

Para criar um vetor com zeros basta utilizar o seguinte comando:-->zeros(1,5) ans = ! 0. 0. 0. 0. 0. !

De maneira similar, existe um comando para criar um vetor com nmeros um:-->ones(0:5) ans = ! 1. 1. 1. 1. 1. 1. !

3.1.1 Operaes com vetores Soma de dois vetores* Para somar dois vetores no Scilab, basta realizar o comando:-->x=[1 3 5]; -->y=[2 3 7]; -->x+y ans = ! 3. 6. 12. !

* Precisam ter mesma dimenso.

Multiplicao de vetor por escalar A multiplicao de um vetor por um escalar realizada da seguinte forma:-->5*x ans = ! 5. 15. 25. !

Norma de um Vetor No Scilab possvel calcular a norma de um vetor empregando os comandos: norm(x)=norm(x,2) : dada pela distncia entre as extremidades do vetor

x

2

n = xi2 i =1

1

2

norm(x,1)x 1 = xii =1 n

: soma dos mdulos dos elementos do vetor

norm(x,inf)

: mximo valor (em mdulo) entre os elementos do vetor

x

= max1in xi

Dimenso de um vetor A dimenso de um vetor obtida empregando-se o comando size. Exemplo:-->x=[1 2 3.5 6.3] x = ! 1. 2. 3.5 6.3 !

-->size(x) ans = ! 1. 4. !

Transpondo um vetor Um vetor pode ser transposto da seguinte forma:-->x x = ! 1. 2. 3.5 6.3 !

-->x' ans = ! ! ! ! 1. 2. 3.5 6.3 ! ! ! !

Troca de um elemento de um vetor Pode-se trocar um elemento de um vetor atravs do seguinte comando:-->x x = ! 1. 2. 3.5 6.3 !

-->x(3)=0.5 x = ! 1. 2. 0.5 6.3 !

3.2 Matrizes Operaes bsicas com matrizes A Tabela 3.1 apresenta uma lista de operaes estruturais e matriciais. Tabela 3.1: Operaes estruturais e matriciais comuns.Operao Soma estrutural Subtrao estrutural Multiplicao estrutural Comando Scilab A+B A-B A.*B Comentrio Soma de matrizes estrutural idntica matricial Subtrao de matrizes estrutural idntica matricial Multiplicao elemento a elemento de A e B. As duas matrizes precisam ter a mesma forma, ou uma delas ser um escalar. Multiplicao das matrizes A e B. O nmero de colunas em A precisa ser igual ao nmero de linhas em B. Diviso elemento a elemento de A e B: a(i,j)/b(i,j). As duas matrizes precisam ter a mesma forma, ou uma delas ser um escalar. Diviso elemento a elemento deA e B: b(i,j)/a(i,j) . As duas matrizes precisam ter a mesma forma, ou uma delas ser um escalar. Diviso matricial definida por A * inv(B), onde inv(B) a inversa da matriz B.

Multiplicao matricial

A*B

Diviso estrutural

direita

A./B

Diviso estrutural

esquerda

A.\B

Diviso direita

matricial

A/B

Diviso matricial esquerda Expoente estrutural

A\B

a.^b

Diviso matricial definida por inv(A)*B, onde inv(A) a inversa da matriz A. Expoente elemento a elemento de A e B: a(i,j)^b(i,j). As duas matrizes precisam ter a mesma forma, ou uma delas ser um escalar

* Operaes estruturais: so operaes entre matrizes executadas elemento a elemento; a operao executada sobre os elementos correspondentes nas matrizes. Transposta de uma matriz A transposta de uma matriz obtida da mesma forma que para um vetor:-->A=[1 3 3.5;0.5 1 2;2.5 7 4] A = ! ! ! 1. 0.5 2.5 3. 1. 7. 3.5 ! 2. ! 4. !

-->A' ans = ! ! ! 1. 3. 3.5 0.5 1. 2. 2.5 ! 7. ! 4. !

Determinante de uma matriz O comando det() empregado para calcular-se o determinante de uma matriz.-->A A = ! ! ! 1. 0.5 2.5 3. 1. 7. 3.5 ! 2. ! 4. !

-->det(A) ans = 2.5

Inversa de uma matriz Emprega-se o comando inv() para calcular-se a inversa de uma matriz.

-->inv(A) ans = ! - 4. ! 1.2 ! 0.4 5. - 1.9 0.2 1. ! - 0.1 ! - 0.2 !

Matriz identidade No Scilab possvel gerar uma matriz identidade utilizando-se o comando eye().-->identidade=eye(5,5) identidade = ! ! ! ! ! 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1. ! ! ! ! !

Dimenso de uma matriz Emprega-se o mesmo comando utilizado para verificar a dimenso de um vetor.-->size(identidade) ans = ! 5. 5. !

Troca de um elemento de uma matriz De forma similar, pode-se trocar um elemento de uma matriz atravs do seguinte comando:-->identidade identidade = ! ! ! ! ! 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1. ! ! ! ! !

-->identidade(3,1)=5.0 identidade = ! ! ! ! ! 1. 0. 5. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1. ! ! ! ! !

Rank de uma matriz Ordem do menor determinante no nulo que se extrai de uma matriz.-->C=[1 2 0 -1; 2 6 -3 -3; 3 10 -6 -5] C =

! ! !

1. 2. 3.

2. 6. 10.

0. - 3. - 6.

- 1. ! - 3. ! - 5. !

-->rank(C) ans =

2. Matriz singular Pode-se determinar se uma matriz ou no singular avaliando seu nmero de condio. Se a resposta for um nmero muito grande, a matriz dita singular. Caso contrrio, no.-->D=[ 1 6 2; -2 3 5; 7 12 -4] D = ! 1. ! - 2. ! 7. -->det(D) ans = 6.899D-15 -->cond(D) ans = 1.345D+16 6. 3. 12. 2. ! 5. ! - 4. !

3.3 Sistemas lineares O Scilab dispe de uma funo que permite resolver sistemas de equaes lineares. A forma geral desta funo : [x0, kerA]=linsolve(A,b[,x0]) Por exemplo, dado o seguinte sistema de equaes lineares:2 x + y 2 z = 10 3x + 2 y + 2 z = 1 5 x + 4 y + 3z = 4

Colocado na forma matricial, tem-se:

2 1 2 A= 3 2 2 5 4 3

x x= y z

10 b= 1 4

No Scilab, tem-se:-->A A = ! ! ! 2. 3. 5. 1. 2. 4. - 2. ! 2. ! 3. !

-->b b = ! ! ! 10. ! 1. ! 4. !

-->linsolve(A,-b) ans = ! 1. ! ! 2. ! ! - 3. !

3.4 Exerccios 1) Considere o circuito eltrico apresentado na Figura 3.1. Calcular as voltagens nos ns 1, 2, 3, ..., 6. * sabe-se que a corrente eltrica de um n p a outro n q em um circuito dada por: V p Vq i pq = R pq onde: Vp e Vq so as voltagens nos ns p e q, respectivamente; Rpq a resistncia de p a q. ** por Kirchoff, a soma algbrica das correntes em cada n zero.

Figura 3.1: Diagrama esquemtico do circuito eltrico. Soluo:

2) Dados os valores de f(x,y) no contorno do quadrado da Figura 1, determinar a funo f(x,y) que satisfaz a equao de Laplace 2f = 0 nos pontos pivs da mesma, sabendo-se que em A, B, C e D existem isolantes trmicos.

Figura 3.2 * Sabe-se pelo processo de aproximar derivadas parciais utilizando o mtodo de diferenas finitas que:

fi, j =

1 ( f i 1, j + f i+1, j + f i , j 1 + f i , j +1 ) 4

(1)

cuja frmula molecular dada pela Figura 3.3.

Figura 3.3

Soluo:

3) Encontrar a soluo (concentrao na sada de cada tanque), vide Figura 3.4, onde se processa isotermicamente a reao: A produto(s). Assumir que os tanques comportam-se como reatores de mistura perfeita. Assuma que a reao de primeira ordem (r = kCA), que a vazo total de alimentao F (L3/T), para os trs tanques, cujos volumes so V1, V2 e V3 (L3). A concentrao de alimentao no primeiro tanque constante, igual a CA,alim (mol/L3).F, CAo

V1

F, CA1

V2

F, CA2

V3

F, CA3

Figura 3.4: Diagrama ilustrativo do sistema composto por 3 tanques de mistura perfeita em srie. Soluo:

Captulo 44. NOES DE PROGRAMAO4.1 Programando com Scilab O programa Scilab permite que o usurio possa criar seus prprios programas. Apesar de simples, a linguagem do Scilab disponibiliza a maioria das estruturas das linguagens de programao convencionais. Um fato a ser observado que o Scilab um interpretador de comandos, e que, portanto so executados em um tempo maior que programas semelhantes escritos em linguagens compilveis como Fortran, Pascal, C, por exemplo. O ambiente do Scilab permite que o usurio escreva cdigos em linguagem C ou Fortran e rode este cdigo dentro do ambiente Scilab (programao avanada). 4.2 Comandos para Iteraes Existem dois comandos que permitem a realizao de iteraes no programa Scilab. So eles: o comando For e o comando While. Comando For O comando for tem a forma geral: for varivel = vetor_linha instruo_1 instruo_2 ................ instruo_n end-->// Exemplo do comando for em linha de comando -->for i=1:3 -->a=i+1 -->end a = a a 2. = 3. = 4.

Comando While O comando while tem a seguinte forma:

while condio instrucao_1 instruo_2 ............... instruo_n end O comando while realiza uma seqncia de instrues enquanto uma determinada condio estiver sendo satisfeita. A condio geralmente inclui comparaes entre objetos. Na Tabela x.x, apresenta-se os operadores que permitem realizar comparaes entre valores de objetos no Scilab. Tabela 4.1: Operadores que podem ser utilizados para realizar comparaes entre valores de objetos. == ou = igual a < menor do que > maior do que = maior ou igual a ou ~= diferente

Comandos condicionais O Scilab implementa dois tipos de comandos condicionais: if-the-else e select case. If-Then-Else O comando if-then-else tem duas formas. Na forma mais simples, a sintaxe :If condio_1 then Seqncia_de_instrues_1 Else Sequencia_de_instrues_2 End

Na forma mais geral, a sintaxe :If condio_1 then Sequencia_de_instrues_1 Elseif condio_2 Sequencia_de_instrues_2 ......................... Elseif condio_n Sequencia_de_instrues_n End

Exemplo:-->x=1 x = 1. -->if x > 0 then, y=-x, else, y=x, end y = - 1. -->x=-1 x = - 1. -->if x > 0 then, y=-x, else, y=x, end y = - 1.

Select case O comando condicional select case tem a seguinte sintaxe:Select varivel_de_teste Case expresso_1 Sequencia_de_instrucoes_1 Case expresso_2 Sequencia_de_instrucoes_2 ........................ Case expresso_n Sequencia_de_instrucoes_n Else Sequencia_de_instrucoes_n+1 End

Exemplo:-->x=-1 x = - 1. -->select x, case 1, y = x+5, case -1, y=sqrt(x), end y = i

4.3 Definindo Scripts Empregando os comandos save e load possvel armazenar e recuperar valores de variveis utilizadas no ambiente Scilab. Tambm j foi apresentado o comando diary(), com o qual se cria um dirio da sesso realizada no Scilab. Alm desses dois tipos de arquivos, pode-se criar arquivos contendo comandos do Scilab que sero executados posteriormente dentro do

seu ambiente. Um desses arquivos recebe o nome de scripts. Esses arquivos possuem, por conveno, a extenso sce, sendo executados atravs do comando: --> exec (`nome_do_arquivo_script.sce`) Todas as variveis utilizadas no script permanecem ativas aps a sua execuo. Exemplo:// Script: Raiz de equacao de segundo grau // // ax^2+bx+c=0 // a=1; b=-4; c=4; delta=b^2-4*a*c; if delta > 0 then x1=(b-sqrt(delta))/2/a; x2=(b+sqrt(delta))/2/a; mprintf('valor da raiz x1=%f\nvalor da raiz x2=%f',x1,x2); elseif delta==0; x1=b/2/a; x2=x1; mprintf('valor da raix x1=x2=%f',x1); else delta < 0 mprintf('Nao tem raiz real'); end

4.4 Definindo Funes Uma funo obedece a uma estrutura da forma:Function [y1, ..., yn] = mafuncao(x1,..., xm] Instruo_1 Instruo_2 ................. Instruo_p Endfunction

Onde mafuncao o nome da funo, xi, i=1, m, so seus argumentos de entrada e yi,i=1, n, so seus argumento de sada. Toda funo no Scilab executada chamando seu nome seguido de seus argumentos. Neste exemplo, tem-se: --> mafuncao(x1,..., xn) Assim, uma funo possui uma estrutura pr-determinada. Suas principais caractersticas so:

a) variveis definidas na funo, chamadas de variveis locais, no permanecem no ambiente Scilab aps a execuo; b) as entradas e sadas da funo so claramente definidas; c) uma funo, pos ser definida, pode ser chamada a qualquer tempo. Definindo uma funo com o comando deff:-->deff('[y1, y2]=mafuncao(x1, x2)', 'y1=x1+x2, y2=x1*x2') -->[a, b]=mafuncao(3,4) b = a 12. = 7.

Uma funo tambm pode ser digitada em um arquivo, e este arquivo, aps carregado no ambiente Scilab, executado. Por conveno, as funes tm a extenso sci. O seguinte comando empregado para carregar a funo no Scilab: --> getf(nome_da_funcao.sci) Exemplo:-->getf('minhafuncao.sci') -->[m1, m2]=minhafuncao(1,3) m2 = - 2. m1 = 4.

Bibliografia Pires, P. S. M. Introduo ao Scilab Verso 3.0, obtida em http://www.dca.ufrn.br/~pmotta Caro, A. A. e Seplveda, C. V. Fundamentos de Scilab y aplicaciones Verso 0.1, obtida em http://www.scilab.org/contrib/displayContribution.php?fileID=262

Licena do Scilab (Disponvel no seguinte endereo: http://www.scilab.org/legal/license.html)

Licena da logomarca (Disponvel no seguinte endereo: http://www.scilab.org/legal/licensetrademarkscilab.html)