Material 2 - Apostila Scilab - Prof. Gerson Ulbricht

Embed Size (px)

Citation preview

ScilabSoftware Numrico Prof. Gerson Ulbricht, MSc. Mtodos Numricos em EngenhariaVerso da Apostila: v. 2.Jaragu do Sul SC2010SUMRIOCAPTULO 1: NOES DE MATEMTICA NUMRICA..........................................51.1 Matemtica Numrica........................................................................................51.2Sistema de Ponto Flutuante F(b,m,e1,e2).........................................................61.3 Converso de bases Exemplos........................................................................61.3.1. Transformao de outras bases para a base 10.....................................61.3.2. Transformao de base 10 para base 2.................................................71.4 Representao de Nmeros em Mquinas Digitais............................................81.5 Erros.................................................................................................................10CAPTULO 2: INTERFACE GRFICA DO SCILAB..................................................152.1 Algumas variveis internas:.............................................................................172.2 Definio das variveis....................................................................................182.3 Comandos Importantes.....................................................................................192.4 Formato de Visualizao dos Nmeros............................................................20CAPTULO 3: PRINCIPAIS COMANDOS...................................................................213.1 Operaes Matemticas...................................................................................223.2 Operaes com nmeros complexos................................................................223.3 Lista de algumas funes importantes do Scilab.............................................233.4 Funes Trigonomtricas.................................................................................25CAPTULO 4: VETORES, MATRIZES E SISTEMAS LINEARES............................264.1 Vetores.............................................................................................................264.2.1 Gerao de Vetores..............................................................................264.2 Matrizes............................................................................................................274.2.1 Declarao de Matrizes:.......................................................................274.2.2. Funes Matriciais..............................................................................284.2.3 Manipulao de linhas e colunas:........................................................304.2.3.1 Mais comandos para matrizes e vetores................................................304.2.3.2 Quadro com comandos para matrizes e vetores....................................314.2.3.3 Operador . (ponto).................................................................................344.3 Resoluo de Sistema Linear:..........................................................................35CAPTULO 5: POLINMIOS........................................................................................415.1 Definio de Polinmio a Partir dos Coeficientes...........................................415.2 Definio de Polinmio a Partir das Razes.....................................................415.3 Obteno das Razes de um Polinmio............................................................425.4 Operaes com Polinmios..............................................................................42CAPTULO 6: GRFICOS BIDIMENSIONAIS E TRIDIMENSIONAIS...................456.1 Comandos Bsicos para Grficos.....................................................................456.2 Grficos 2D......................................................................................................456.2.1 Comando para Ttulos e Legendas.......................................................466.2.1.1 Posio da Legenda...............................................................................476.2.2 Apresentao de vrios grficos em uma mesma janela .....................486.2.3 Especificao do tipo e cor da linha e do marcador ...........................526.2.4 Vrios Grficos em um Mesmo Sistema de Eixos .............................526.2.5 Tabelas de Cores, estilos de linhas e marcadores ...............................536.2.6 Linhas de Grade ..................................................................................5326.3 Grficos 3D......................................................................................................546.3.1 Grficos tridimensionais Comando meshgrid...............................556.3.2 Tipos de Grficos 3D...........................................................................566.4 Grficos Estatsticos.........................................................................................606.4.1 Grficos de colunas..............................................................................606.4.2 Polgono de Frequncias......................................................................616.4.3 Grfico de Barras Horizontais.............................................................626.4.4 Grfico de Setores................................................................................626.4.5 Histograma...........................................................................................646.4.6 Diagrama de Disperso........................................................................65CAPTULO 7: DIFERENCIAO E INTEGRAO .................................................697.1 Derivada de um Polinmio...............................................................................697.2 Integrais............................................................................................................697.2.1 - Funo integrate ...............................................................................697.2.2 Clculo da Integral Definida Conhecendo-se um Conjunto de Pontos 70REFERNCIAS..............................................................................................................723O ScilabOScilabumambienteutilizadonodesenvolvimentodeprogramas paraa resoluo de problemas numricos e possui uma interface muito semelhante ao Matlab.Desenvolvido desde 1990 pelos pesquisadores do INRIA (InstitutNational 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 .Distribudogratuitamente via Internet desde 1994, oScilab atualmente usado em diversos ambientes industriais e educacionais pelo mundo.O download da verso atual pode ser obtido em http://www.scilab.org/ .4PARTE I NOES DE MATEMTICA NUMRICACAPTULO 1: NOES DE MATEMTICA NUMRICAEssecaptulotemcomoobjetivomostrar aideiadefuncionamentodeuma maquinaeletrnicadeclculo. DevidoaoScilabtratar dematemticanumrica, os conceitos so fundamentais para o bom entendimento do assunto.1.1 Matemtica NumricaSe trata da resoluo de problemas utilizando mtodos numricos possveis de serem implementados computacionalmente levando em conta aspectos de confiabilidade, esforocomputacional eerros dearredondamento, deiteraoede 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.51.2Sistema de Ponto Flutuante F(b,m,e1,e2)Representao de um nmero real x em ponto flutuante: x Rfl(x) =t (0.d1d2.....dt)b. be =tman. bedi :dgito, di {0,1,..., b-1}, d1 0Representao de um sistema de ponto flutuante: F(b, m, e1, e2)b:base, b N, b 2e1:menor expoentee2:maior expoentem:preciso da mquina, no fixo de dgitos da mantissaman:mantissaExemplo 1: F(10,3,-5,5)Maior nmero positivo representado pela mquina: M=+ 0.999 105 = 99900Menor nmero positivo representado pela mquina: m= + 0.100 10-5 = 0.000001Observar 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/2Menor nmero positivo: m = + 0.1000 2-3 = (1.2-1+0.2-2+0.2-3+0.2-4).2-3=1/161.3 Converso de bases Exemplos1.3.1. Transformao de outras bases para a base 101.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 10b) Transformar (11.01)2 para base 10c) Transformar (101.111) 2 para base 101.3.1.2. Outros tipos de bases (O processo semelhante, mudando somente a base da potncia) Transformar (1201)3 para base 106Overflow0,00...0.bL-M Mm -mUnderflow Overflow Transformar (746)8 para base 10 Transformar (2BE3)16 para base 101.3.2. Transformao de base 10 para base 2Paratransformar dabase10paraoutras bases(base2, base8, base16), 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 225 21 12 20 6 20 3 21 1Assim, (25)10 = (11001)21.3.2.1 Transformar os nmeros seguintes da base 10 para a base indicada.a) Transformar (128)10 para base 2b) Transformar (100)10 para base 2c) Transformar (56)10 para base 3d) Transformar (887)10 para base 8e) Transformar (4539)10 para base 16Parte 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 22) Deste resultado, a parte inteira ser o 1 dgito na base 2, e a parte fracionria novamentemultiplicadapor2. Oprocessorepetidoatqueapartefracionriado 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)2a) Transformar (0.1875)10 para base 2b) Transformar (0.6)10 para base 2c) Transformar (40.25)10 para base 27Lista de exerccios1. Transformar para a base 10:a) (101101)2Resposta: (45)10b) (11011)2Resposta: (27)10c) (110.01)2Resposta: (6.25)10d) (111.111)2Resposta: e) (10110.1)2Resposta: 2. Transformar para a base 10:a) (1265)8Resposta: (693)10b) (ABC3)16Resposta: (43971)103. Transformar os nmeros de 1 a 10 da base 10 para a base 2.4. Transformar para a base 2:a) (15)10Resposta: (1111)2b) (0.125)10Resposta: (0.001)2c) (0.9)10Resposta: (0.1110011..)2d) (0.6)10Resposta: (0.1001100..)2e) (12.5)10Resposta: (1100.1)25. Transformara) (253)8 para base 2 Resposta: (10101011)2b) (AB)16 para base 2 Resposta: (10101011)26. 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 DigitaisNuma 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 umnmero para indicar o sinal do nmero (0=positivoe1=negativo), nasequnciaaparecemosalgarismosdamantissa, em seguidavem1bit paraindicarosinal doexpoente(0=positivoe1=negativo)eo expoentequedeveser umnmerointeiroentree1ee2, conformeespecificaodo sistema de ponto flutuante utilizado.Considerando para exemplificar, uma mquina digital que use um sistemaF(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 8Como 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 1 1 0 0 1 0 0 0 0 0 0 0 1 0 1O maior valor que pode ser representado :0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1Que transformado para a base 10 resulta em 32736.O menor nmero que pode ser representado :-0.1111111111 x 21111 = -(32736)10Por exemplo, o nmero (-7,125)10 representado nessa mquina fica:(-7.125)10 = (-111.001)2 = (-0.111001 x 211)2: 1 1 1 1 0 0 1 0 0 0 0 0 0 0 1 1O menor nmero positivo que pode ser representado nessa mquina :0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1que na base 10 igual a (0.100000000 x 2-15)2 = 0,000015259.O prximo nmero que pode ser representado nessa mquina :0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1que 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 0 0 0 0 0 0Atravsdessesexemplos, pode-sever quetodososnmeros quepodemser 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,aquantidadedenmeros de pontoflutuantequepode serrepresentado nesse sistema 31745, e eles no ficam igualmente distribudos no intervalo [-32736, 32736].Exerccios1. Sejaumamquinahipottica, cujosistemadepontoflutuantesejaF(2, 8-7, 7). Determine:9a) O maior nmero no sistema binrio que pode ser representado nessa mquina.b) O resultado anterior no sistema decimal.c) Omenor nmeropositivonosistema binrioque pode ser representadonessa mquina.d) O resultado anterior no sistema decimal.e) Ointervalonosistemadecimal, ondeseencontramtodos osnmeros deponto 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.5i) A representao nesse sistema, do nmero -7.25j) 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) Ointervalonosistemadecimal, ondeseencontramtodosos nmeros deponto flutuante que podem ser representados nessa mquina.c) Quantos bits so necessrios para representar os nmeros desse sistema?d) Representeomaior nmeronosistemabinrioquepodeser representadonesse sistema.e) Represente o menor nmero positivo no sistema binrio que pode ser representado nesse sistema.1.5 ErrosMesmo quando utiliza-se para resoluo de um modelo matemtico, um mtodo exato, pelofatode este envolver umnmeromuitograndede operaes (adio, subtrao, multiplicaoediviso)esendoessasprocessadasemequipamentoscom 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.10Um 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 101, 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).Sea=0.5324x10 eb=0.4212x10, entoaxb=0.22424688x101, 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 ovalor 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.!...! 3 ! 213nx x xx enx+ + + + + Erro absoluto e relativoErro 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 = exaprox exX| X - X |Como na maioria das vezes, o valor exato no disponvel, trabalha-se com um limite superior para o erro relativo: aproxX 11Mal CondicionamentoA 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 produzidosExistem problemas bem postos e mal postos.Exemplo 1: Resolver o sistema linear:' + +01 . 2 01 . 12y xy xResolvendo 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:0 c bx ax2 + +a 2ac 4 b bx22 , 1 t 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. Umaalternativapodesercalcular x1comopropostoacimaeusarapropriedadede razes de equaes do 2 grau: x1.x2=c/aExemplo: seja a equao: x - 100.22x +1.2371 = 0Usando aritmtica de ponto flutuante com 5 dgitos:10044 b10039 4 ac b19 . 100 4 ac bCalculando as razes pelas frmulas apresentadas no primeiro procedimento tm-se:x1= (100.22 + 100.19)/2 = 100.20x2= (100.22 - 100.19)/2 = 0.015Por outro lado, usando o valor de x1 e o segundo procedimento tm-se:1212.x acx = 1.2371/100.20 = 0.012346Numa calculadora com 16 dgitos, usando a segunda alternativa, tm-se:x1 = 100.20x2 = 0.012345364Para quantificar a diferena entre os dois procedimentos, observa-se que o erro relativo da aproximao x2usando o primeiro processo, de 21,5%, ao passo que comosegundoprocedimento, teramos umaaproximaocomerrorelativode 0.0052%.Exerccios1. Sabe-se que =3.14(valoraproximado). Considerando = 3.1415926,qual ser o erro:a) Absolutob) Relativo2. (Resolvido) Num sistema F(10, 4, -8, 8), qual o erro cometido por:a) Arredondamentob = 10 e n= 44 3 4 1 110 . 5 1021102121 nb Portanto, o erro por arredondamento, ser:Earred Earred 0.0005b) Truncamento001 . 0 10 . 1 103 4 1 1 nb Portanto, o erro por truncamento, ser:Etrunc Earred 0.001Pelo 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) Truncamento4. 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 MatlabE=1;j=0;13while 1+E>1E=E/2;j=j+1;enddisp('N de dgitos que o computador trabalha:')disp(j)endExplique por que esse algoritmo funciona.14PARTE II O Ambiente SCILABCAPTULO 2: INTERFACE GRFICA DO SCILABOScilabumambiente voltadopara odesenvolvimentode software para resoluodeproblemas numricos. OScilabfoi criadoem1990por umgrupode 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 distribuiocomocdigofonte, existem, tambm, distribuies pr-compiladas doScilabpara vrios sistemas operacionais.Asprincipaiscaractersticasdesseambientedeprogramaonumricaextremamente 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, igualmentegratuitas, comooANN(Artificial Neural Network), o FISLAB (Fuzzy Logic Inference) e o FRACLAB (Fractal, Multifractal and WaveletAnalisys).Algumas funes do Scilab esto alocadas em toolboxes bem definidas, dadas as suas especificidades. Temos como exemplo: Funes de lgebra Linear: bibliotecas LINPACK, EISPACK, LAPACKe BLAS; Funes para soluo de Equaes Diferenciais: bibliotecas ODEPACKe 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:15O 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:162.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 variveisAo definir uma varivel deve-se tomar os cuidados: Sensvel a maisculas e minsculas Palavra nica At 24 caracteres No pode iniciar com nmeroExerccio1) 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.182.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 podemser 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);192.4 Formato de Visualizao dos NmerosO 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.73Para aumentar o nmeros de posies para 16, usa-se:-->format(16)-->sqrt(3)ans =1.7320508075689A 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/10ans =6.283185307E-016.283185307E-01 significa 6.283185307 101. Para retornar ao formato inicial usa-se,-->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.20CAPTULO 3: PRINCIPAIS COMANDOSScilabumambientedeprogramaonumrica. Dessemodo, existemduas 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 oresultadoserexibidoparaousurio. Ambas as formas tmsua 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 bans =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 mensagemperguntando se se deseja continuar a exibio); jquandosequer testar umaoperao, debugar umprogramaouseas variveis usadas forem de baixa ordem, o ponto e vrgula por vezes necessrio (no mnimo, facultativo).Quantodigitao, geralmenteutiliza-seumcomandoemcadalinha, mas possvel digitar vrios comandos em uma mesma linha:Exemplo:-->m = 1.5; b = 35; c = 24; // Vrios comandos em uma nica linhaTambm possvel desdobrar um nico comando em vrias linhas utilizando ... ao finaldo comando. Por exemplo,-->A = 3 * m ^ 2 + ... // Um comando em varias linhas--> 4 * 5 + ...--> 5 * 3A =41.75Outra observao importante que o Scilab case sensitive. Quando o programador definir uma varivel comletras maisculas e minsculas, deve se lembrar de manter a caixa das letras.213.1 Operaes MatemticasAs operaes fundamentais so assim definidas:Operadores de comparao < menor maior >= maior ou igual == igual ~= diferente diferente & e | ou ~ no3.2 Operaes com nmeros complexosAs 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 + 2iA =5. + 2.i-->B = -2 + %i // Atribuindo a B o valor -2 + i22B =- 2. + iObservar 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 // Multiplicaoans =- 12. + i-->A / B // Divisoans =- 1.6 - 1.8i-->A + B // Adioans =3. + 3.i-->A - B // Subtraoans =7. + iimportante observar quearesposta aousodafunointernasqrt()com argumento negativo inclui o nmero complexo i = sqrt(-1). Por exemplo:-->sqrt(-2) // Funo raiz quadrada com argumento negativoans =1.4142136iExerccio: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 ScilabA listagem a seguir apresenta algumas funes importantes do Scilab.23clc - limpa tela de comandoschdir - muda diretrio padroexec - executa funogetf - carrega funes na memriahelp - ajudarank - calcula posto de matriztrace - calcula trao de matrizabs - valor absolutoconj - conjugadodiag - matriz diagonaleye - matriz identidadeimag - parte imaginriaintegrate - integrao por quadraturainterp - interpolaointerpln - interpolao linearintersect - retorna um vetor com valores comuns entre dois vetoreslinspace - vetor linearmente espaadolog - logaritmo naturallog10 - logaritmo em base 10max - mximomin - mnimomodulo - calcula o resto de uma divisondims - nmero de dimenses de uma matriznorm - norma de matrizones - matriz de 1'srand - gerador de nmeros randmicosreal - parte realsolve - resolve sistema linear simblicosort - ordenamento decrescentesqrt - raiz quadradasum - soma elementos de matrizesdiary - dirio da seodisp - mostra variveisinput - solicita entrada de dados para o usurioload - carrega variveis salvas na memriaplot2d - faz grficos 2Dxsave - salva grfico em arquivoxtitle - adiciona ttulo em janela grficadet - determinanteinv - matriz inversalinsolve - resolve sistema linearclear - limpa variveis da memriawho - apresenta variveis carregadas na memria do Scilab24Exerccios:Mais Funes:round(x): Arredonda o valor de x para o inteiro mais prximofloor(x): Arredonda para o menor inteiroceil(x): Arredonda para o maior inteirosqrt(x): Calcula a raiz quadrada de x1) 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 Trigonomtricascos(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)Exerccios1) 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)25CAPTULO 4: VETORES, MATRIZES E SISTEMAS LINEARES4.1 VetoresDeclarao de vetores:X = [ x1 x2 x3 ...] vetor linhaX = [x1;x2;x3;...] vetor colunaTransposio de vetores: XExerccios: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 VetoresOs 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.78539821.57079632.35619453.1415927 onde o incremento corresponde a pi/4.A seguir so apresentados alguns exemplos de incrementos: Sintaxe: varivel = Valor_inicial:incremento:Valor_finalExemplos (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:-10Outraformadegerarvetoresutilizaadeclaraolinspace, naqual deve-se definir oslimitesinferior esuperior, indicandoaindaonmerodevaloresaserem gerados, mantendo o incremento constante. Por exemplo,

-->k=linspace(-%pi,%pi,4) k= - 3.1415927- 1.04719761.04719763.1415927 Foram gerados 4 valores igualmente espaados entre -pi e pi.4.2 MatrizesAo 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]27A =

1 23 4

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

Somar:--> A+Bans =

6 81012

Subtrair:--> A-B ans =

-4-4-4-4

Multiplicar:--> A*B ans =

192243504.2.2. Funes MatriciaisDada a matriz A:A =

1 23 4

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

-211.5 -0.5

Transposta de A (usar o apstrofo):--> A'ans =1 32 4Determinante de A:--> det(A)ans =

-2

Diagonal de A:--> diag(A)ans =

14

Parte triangular inferior de A:--> tril(A)ans =

1 03 4Parte triangular superior de A:--> triu(A)ans =

1 20 4A 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:29X=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 3 45 6 7 89 101112131415 16

Selecionar a segunda linha:--> A(2,:)ans =

5 6 7 8

Selecionar a terceira coluna:--> A(:,3)ans =

371115Multiplicarpor-5aprimeiralinha, somaraprimeiralinhacomasegundae armazenar o resultado na segunda linha:

--> A(2,:)= -5*A(1,:)+A(2,:)A =

1 2 3 40 -4-8-129 10111213141516 4.2.3.1 Mais comandos para matrizes e vetores1)Dimenso: length(x)2)Nmero de linhas e colunas: [nr,nc] = size(x)3)Gerar nmeros aleatrios entre 0 e 1: rand(x,y)30Exemplo: -->rand(2,3) ans= 0.00022110.66538110.84974520.33032710.62839180.6857310 4)GerarVetores nulos: x = zeros(N,1) onde N o nmero de elementos do vetor5)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. -->x=[x 3] x= 1.2.3.4.5.3.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 vetores3132Exerccios - Operaes com Vetores1) Dado o vetor X = [1 2 3 4 5];a) Insira o valor 10 no finalb) Apague o quinto elemento do vetor2) 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.2pi]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 - Matrizes1) Lembre-se: Matrizes com elementos unitrios: A = ones(M,N) Matrizes com elementos nulos: B = zeros(M,N) Matriz identidade: A = eye(N,N)33Dadas as matrizesA = [1 2 3;4 5 6]; e B = [7;8;9]Determine:a)A*Bb)B*Ac)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 linhad)Insira o vetor B = [1 2 3] na ltima linha de A3) 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)34Este 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=Bonde: A a matriz dos coeficientes x o vetor das variveis B o vetor dos termos independenteA 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)*bEsta soluo pode ser tambm ser obtida com o operador diviso esquerdacujo smbolo \.Sintaxe: x=A\bExemplo:Dado o seguinte sistema linear:3x + y + z = 202x - 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 1 12 -1-1-41 -5

-->B=[20;-15;-41]B =

20-15-41-->x=A\Bx =189Logo temos como soluo x'= [1 89], 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:: 1111]1

3 7 2 21 4 5 73 2 3 34 5 2 5A

1111]1

6 3 1 15 2 3 11 3 3 25 7 2 7B 1111]1

3 1 4 01 1 3 22 2 3 55 0 4 1C a)A + Bb) C Bc) 5.B;d) A + 3B 5Ce) B.Af)(C.A).Bg)A(B-C)h) A-136i)(B.C)-1 j) tr(A)k) tr(B + C)l) B2m) C3 n) tr(A + B)-1 o) Ap)(B + A C) q) det(B)r ) det(A B)2. Dados os vetores:u = [-33-105],v = [21-51 4]ew = [21302], calcular:a)u*vb)w*vc)u*(v + w) d) u*(v - w)3. Calcular anorma oucomprimentodecadaumdos vetores doitem2. Useo comando norm(x).4. Determinar os autovalores e autovetores normalizados das matrizes:Use: [e,L]=eig(A)111]1

7 4 31 5 13 2 4Ae1111]1

6 4 5 34 3 1 15 1 3 33 1 4 3B.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:455255445446475153485357434546444451494649454857515544574956Estimar: (a) o vetor de mdias; (b) a matriz covarincia estimada S; (c) a matriz desvio padro mean(X)37ans = 49.7500 49.0833 48.8333 47.8333 49.4167 50.8333 (b) a matriz covarincia estimada S; S=cov(X)S = 21.84097.11364.5000 -4.6818 -5.8864 -9.86367.1136 12.44703.74242.74242.9621 -2.16674.50003.7424 23.2424-14.39395.0758 -6.3030 -4.68182.7424-14.3939 22.87885.8939 12.9697 -5.88642.96215.07585.8939 18.26526.9848 -9.8636 -2.1667 -6.3030 12.96976.9848 22.5152 (c) a matriz desvio padroD1/2. matrizdesvpad=diag(sqrt(diag(S))); matrizdesvpadmatrizdesvpad =4.6734 0 0 0 0 0 03.5280 0 0 0 0 0 04.8210 0 0 0 0 0 04.7832 0 0 0 0 0 04.2738 0 0 0 0 0 04.74507.Uma amostra multivariada X de tamanho n = 12 foi obtida de um vetor aleatrio p = [alturas pesos], resultandoIndivduo Altura Peso1 168 892 180 823 178 674 167 725 190 956 175 707 178 758 183 809 169 7010 177 7311 184 853812 170 68(a) Construir amatriz dedados; (b) calcular ovetor demdias; (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)3940CAPTULO 5: POLINMIOSP(x) = an + an-1x + + a2nxn-2 + a1xn-1 + a0xn5.1 Definio de Polinmio a Partir dos CoeficientesUmpolinmio tambmpode 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 polinmiop = 1 + 2xa partir dos coeficientes.-->p = poly([1 2], 'x', 'coeff') p= 1 + 2x b) Definir o polinmiop = 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 Razesa) Definir o polinmioy = 1 + 2x + 3x a partir das razes, ou seja, qual o polinmio que tem como razes: 1 e 2?-->p=poly([1 2],'x')//[cria o polinmio cuja as razes so 1 e 2 ]-- > 2 3x + x2 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 PolinmioTendo o polinmio, possvel obter as razes dele atravs do comando rootsExemplo 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= 233 + 9x + 5x + 2x Passo 2: Calcular as razes: -->roots(p) ans= - 0.4121443 - 1.0439279 + 1.5967833i- 1.0439279 - 1.5967833iExemplo 2: Obter as razes de q= - 4 + x-->q=poly([-4 0 1], 'x', 'coeff '); -->roots(q) ans= 2.- 2. 5.4 Operaes com PolinmiosDefinio dos polinmios:-->p = poly([1 2], 'x', 'coeff') p= 1 + 2x -->q = poly([2 -31], 'x', 'coeff') q=42 22 - 3x + x Multiplicao -->p*q ans= 232 + x - 5x + 2x Potenciao-->p^2 ans= 21 + 4x + 4x Diviso (p/q)-->q/p ans= 22 - 3x + x ---------- 1 + 2x Diviso (q/p)-->p/q ans= 1 + 2x ---------- 22 - 3x + x Exerccios1) 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 = 0Soluo: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.000iex2 = -2.000 3.000ib) encontrar as razes utilizando a frmula de Bhskara: 2 3x + x2 = 0c) encontrar as razes do polinmio utilizando a frmula de Bhskara: x2 4 = 02) Dados os polinmiosp = 3 + 9x + 5x + 2xq = 1 + 5x + 4x4 r= 2 5xCalcule:a) p + qb) q/rc) rd) pe) p*q3) Calcule as razes dos polinmios:p = 3 + 9x + 5x + 2xq = 1 + 5x + 4x4 r= 2 5x4) 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.44CAPTULO 6: GRFICOS BIDIMENSIONAIS E TRIDIMENSIONAIS6.1 Comandos Bsicos para Grficosa) 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 2DAfunoplottemdiferentesformas, dependendodotipodosargumentosde entrada. Se y for um vetor, plot(y) gera um grfico linear por partes das componentes y 45versus 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 LegendasPara 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 grficolegend(legenda1, legenda2,): colocar legendasExemplo 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:46Seja 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 LegendaSintaxe: 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) 476.2.2 Apresentao de vrios grficos em uma mesma janela Ocomandosubplot(m,n,p)permite dividir ajanelagrfica do Scilabemuma 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))48Um exemplo de aplicao da funo subplot (conforme prof. Pires UFRN)4950516.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, paraespecificar umalinhavermelhatracejadaemarcador em forma de diamante, pode ser escrito: r--d ou --reddiam. ExemploSejaconstruirogrficodafunoy=sen(x)nointervalo[0, 10]comlinha vermelha tracejada e marcadores em diamante. x=1:0.1:10; plot(x,sin(x),'r-d') Osmboloantes daletra dotipodalinha. Faaumexperimentoem 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]), ondeestilo umparmetro opcional para identificar a cor a ser utilizada. Exemplo:53Seja 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 3DO 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: 546.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)55Exemplo 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:56Exemplo 2: Representar graficamente uma distribuio normal bivariada com vetor de mdias x = [10 15]e matriz covarincia 1]1

9 00 4definida por:(foramaplicados os dados dexe deacima, na expressoreferente funo densidade de probabilidade da funo normal bivariada resultando):];'

,_

+ ,_

22212 131521021exp121) , (X XX X fNo 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:57Exemplo 3: Campo vetorialComando champ mostra campos vetoriaisVelocidade da gua em movimento circular: V(x,y)=(y/x+y)i - (x/x+y)jNo 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:58Exemplo 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 3Dx = [0:0.1:2*%pi]';y = x;z = cos(x) * sin(x');plot3d(x, x, z)596.4 Grficos Estatsticos.6.4.1 Grficos de colunasExemplo 1:x = [1 4 5 10 8 7 4 3 1];bar(x)Exemplo 2: Histograma 3D-->c=rand(5,6); -->hist3d(c)606.4.2 Polgono de FrequnciasExemplo:-->x = [1 4 5 10 8 7 4 3 1]; -->plot2d(x)616.4.3 Grfico de Barras HorizontaisExemplo 1:x = [10 30 5 22];barh(x)6.4.4 Grfico de SetoresUtiliza-se o comando pieExemplo: Plotar os dados:Nmero de veculos:Fabricante N VeculosKia 53Peugeot 42Citroen 62Renault 20No Scilab:pie([53 42 62 20],["Kia","Peugeot","Citroen","Renault"]);62Para 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.636.4.5 HistogramaOhistograma umgrfico 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]: soosparmetrosdadistribuiorequerida. Nocasodeuma 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)646.4.6 Diagrama de DispersoSeja a tabela a seguir com peso e estatura de 10 pessoas:Peso Estatura68 16069 16576 16870 16389 18283 18856 16154 16076 17570 167i) 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. 65ii) Diagrama de Dispersoplot(P,E,'*')xtitle("Pesos X Estaturas")xlabel('Pesos') //para rotular o eixo x.ylabel('estaturas') //para rotular o eixo y.ExercciosPlotar os Seguintes grficos:1) Retaa) y1 =7- 3 x1 -1y4 = 2^x4b) y5 = ()^x-->y5=(.5)^x4Formando 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) Senidea) y = sen x-->x=[0:0.1:2*%pi];-->y=sen(x)-->plot2d(x,y)b) Plotar o grfico de y = 1 + sen xc) Plotar o grfico de y = sen (x + pi / 2)6) Cossenidea) Plotar o grfico de y = 2 cos xb) Plotar o grfico de y = cos 2 x7) 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=2y=(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);679) 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:68CAPTULO 7: DIFERENCIAO E INTEGRAO 7.1 Derivada de um PolinmioPara 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= 233 + 9x + 5x + 2x Passo 2: Obter a derivada:-->d= derivat(p) d= 29 + 10x + 6xNote que se se a funo y = 3 + 9x + 5x + 2x, ento sua derivada y' =9 + 10x + 6x.7.2 Integrais7.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).e- 0,05.x considerando o intervalo [0, 50]. 69No 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 oseja, asuaexpressoanalticadevesersubstitudapeloseunomecolocadoentre aspas. Exemplo 2:Por exemplo, seja a funo f(x) = cos(3x+1).x + x1,5O 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:70Sintaxe: 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.242.482.722.963.2 Passo 2: Definir a funo:-->y=log(x + 2) - 1 y= 0.38629440.44456330.49962300.55180880.60140570.6486586Passo 3: Integral pela interpolao trapezoidal:-->integral = inttrap(x, y) integral= 0.627570671REFERNCIASCampos, Frederico F.Fundamentos de SCILAB. Departamento de Cincia da Computao do ICEx. UFMG. 2010Ferreira, Jos lvaroTadeu.OusodoScilabnadisciplinaClculoNumrico. 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 comScilab.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. 201072