·
Engenharia Civil ·
Elementos Finitos
Send your question to AI and receive an answer instantly
Recommended for you
67
Métodos Numéricos para Engenharia: Introdução ao Método dos Elementos Finitos
Elementos Finitos
IFPB
8
Notas de Aula: Introdução ao Método dos Elementos Finitos
Elementos Finitos
IFPB
433
MATLAB Guide to Finite Elements: An Interactive Approach - Second Edition
Elementos Finitos
IFPB
1
Formulação de Elementos Finitos na Análise Numérica
Elementos Finitos
IFPB
8
Notas de Aula sobre o Método dos Elementos Finitos - Elemento Quadrilátero Isoparamétrico
Elementos Finitos
IFPB
10
Notas de Aula: Método dos Elementos Finitos - Elemento Finito Triangular
Elementos Finitos
IFPB
15
Notas de Aula: Introdução ao Método dos Elementos Finitos
Elementos Finitos
IFPB
3
Apostila sobre o Método dos Elementos Finitos para Engenharia Civil
Elementos Finitos
IFPB
5
Notas de Aula: Introdução ao Método dos Elementos Finitos
Elementos Finitos
IFPB
486
Introduction to Finite Element Analysis Using MATLAB and Abaqus
Elementos Finitos
IFPB
Preview text
A linguagem Fortran Em 1954 a linguagem de alto nivel Fortran foi proposta por um grupo da IBM Scilab Oprimeiro compilador ou seja um programa que traduz programas escritos em linguagem de alto nivel para instrugdes de maquina foi naturalmente escrito em Programacaéo de Computadores I Assembler m A maquina era um IBM 704 um computador com 15K de memoria Universidade Federal de Ouro Preto UFOP Instituto de Ciéncias Exatas e Biolégicas ICEB Departamento de Computacao DECOM Linguagens de programacao Matlab m Existem varias linguagens de programagao que Foi criado no fim dos anos 70 por Cleve Moler e langado descendem do Fortran por exemplo comercialmente em 1984 pela empresa MathWorks m 1959 Cobol 2 er E voltado para engenheiros e cientistas m 1964 Basic 1970 Pascal Possui grande facilidade para 0 tratamento de matrizes 1971C MatLab Matrix Laboratory m 1983 C E um interpretador ou seja um programa que executa m 1991 Python programas ao contrario de um compilador nao traduz um m 1995 Java programa para instrucdes de maquina m 1995 PHP UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Scilab O ambiente e a linguagem Scilab Foi criado em 1990 por pesquisadores do INRIA e da O ambiente Scilab Ecole Nationale des Ponts et Chaussées Frana sendo interpreta comandos gratuito e bastante semelhante ao MatLab oferece um editor para a construcao de programas SciPad httpwwwscilaborg emite mensagens de erros relativos 4 obediéncia da sintaxe da linguagem e a problemas na execucao de um programa Consiste também em um interpretador elagem 2 P PIOE como divisao por zero A linguagem e 0 sistema possuem 0 mesmo nome Scilab Como qualquer linguagem natural a linguagem Scilab m Sera apresentada a versio 51 do Scilab une riqueza de expresso a detalhes sintaticos m exige uma postura paciente em seu aprendizado pois envolve uma taxa inicial de memorizaao a fluéncia vem com a pratica 5 6 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab O ambiente Scilab Variaveis e comandos de atribuicao a 10 76 DOSAa a eo scilab51 b 210 Consortium Scilab DIGITEO b Copyright c 19892009 INRIA Copyright c 19892007 ENPC 1024 AT c atb Startup execution c loading initial environment 1 0 3 4 Ct 7 8 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Varidveis Varidveis m Varidveis correspondem a nomes para espacos de Nomes validos mem6ria que sao gerenciados pelo Scilab m a A jose totaldealunos funcionarios O programador nao precisa ter qualquer idéia de como tal oo geréncia é realizada Nomes invalidos 1Aluno 0 primeiro caractere é um algarismo m Os nomes das variaveis sao escolhidos pelo programador m total de alunos tem espacos respeitando as seguintes regras m José é acentuado O primeiro caractere do nome deve ser uma letra ou qualquer caractere dentre e Os outros caracteres podem ser letras ou digitos ou qualquer caractere dentre e 9 10 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Comando de atribuicgao Varidveis e comandos de atribuigao m Sintaxe 2 d atx variavel expressao error 4 m A varidvel se nao existia passa a existir Undefined variable x m Se existia o valor armazenado anteriormente é perdido b 2b m A expressao é calculada e 0 resultado é atribufdo a b variavel varidve 2048 1 12 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Variaveis e comandos de atribuicao Help Funcoes elementares do Scilab Doo i a a eee ESS a Peed ced a 88 8 2 z 31415927 k Sl ros Elementary Functions ARnoldi PACKage 7 Table of Contents Ly 1 i a abs absolute value magnitude b 2 pif ie aosor aa scoad coment wise cosine inverse result in degree fonsole acosh hype lic Cosine inverse 7 a 5 eas acoshm matrix hyperbolic inverse cosine HS Se a i Oo neuiialiin cheeetisnaelerne cotangeant of the argument Cc co Ss a Ss qr t b I i 4 rea cate acotd cotepeies the elementwise inverse cotangeant of the argument result in degree eae acoth element wise hyperbolic cotangeant inverse c i jo FTW acsc computes the elementwise inverse cosecant of the argument NE ees cepcieieckeeicinineaigetaccecatiacamat 1 5 0 6 6 2 8 3 0 4 ae adj2sp converts adjacency form into sparse matrix pb Genetic Algorithms amell Jacobis am function P 2 J Graphics exporting and print and logical and es my Graphics Library asec computes the elementwise inverse secant of the argument jo History manager h asecd computes the elementwise inverse secant of the argument results in degree We a a fect s oan the elementwise inverse hyperbolic secant of the argument h 13 14 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Express6es aritméticas Prioridades e parénteses m ExpressOes podem ser arbitrariamente complicadas 5AawA Qual é 0 valor de x a partir do comando x 234 ans 32 23x 432 ou 234 4096 2 34 ans 4096 Recomendacao e e e e e a a n Associatividade ne 3aigpa24 USE parénteses por 1 Potenciacgao Da direita para a 2 34 ser mais seguro esquerda ans 2418D24 ae 234 a 2 Multiplicagao Da esquerda para a ans 4096 divisao direita 234 38 Adicio subtracao Da esquerda para a ans 10 direita 772 344 ans 14 m Parénteses podem alterar prioridades 15 16 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programas Scilab Programas Scilab m Programas em Scilab sao arquivos ASCII caracteres sem m Use sempre 0 SciPad para construir programas formatagao com a terminagao sce Nunca use 0 Word pois ele introduz caracteres de Um arquivoprograma contém comandos Scilab formatagao Um programa é construfdo usando o editor SciPad m Um programa é executado seguindo o menu ExecuteLoad into Scilab do editor SciPad exe p S R ee ee B Console Sax m Sua execucao equivale a digitac4o na console dos comandos File Edit Preferences Control Applications do programa BAS0BA Editor a as ay j Bes he abet Seharietttee tiiaetaens raseiaieeaaleoee te epee Sub es Se Matlab to Scilab translator 17 18 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa equacao de segundo grau 1 versao Programa equacao de segundo grau 2 versao Fh sciPad 7181 Eq2glece co aE m Para uma nova equacio basta substituir no programa os File Edit Search Execute Scheme Options valores dos coeficientes Windows Help Entretanto a pratica de modificar programas a cada 7 Jcdlculo das raizes de uma equacdo execucao nao é recomendada Z2 de 208 O melhor é fazer com que 0 programa eia os valores dos S coeficientes a cada execucao dfal 5b2 Bac 3 Entrada dos coeficientes Pdelta b2 4ac a inputEntre com o valor de a Bri btaqgrt delta aa b input Entre com o valor de b 9r2 bsqrt delta 2 pcsgre Getta 2a c inputEntre com o valor de c 4 k Line 9 Column28 Logical line 9 19 20 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa equacao de segundo grau 2 versio Execucao do programa anterior ntost SESUNEO Stay VETSAO RECHGAO PO PHOE TOY Entre com o valor de a1 Calculo das raizes de uma equagao a de 20 grau 1 Entre com o valor de b2 a input Entre com o valor de a b b input Entre com o valor de b 2 c input Entre com o valor de c spees com o valor de c3 delta b2 4ac i delta x1 bsqrt delta 2a 8 x2 bsqrt delta 2a xl 1 14142136i x2 1 14142136i UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa equaao de segundo grau 3 versao Comando condicional if Especificacao if condicgdo then m Para que a equacdo seja do segundo grau o coeficiente a deve ser diferente de 0 bloco entao De acordo com 0 valor de delta o resultado do programa else deve ser uma mensagem informando que as raizes nao sao reais bloco senao delta 0 uma Unica raiz real delta 0 end duas raizes reais delta 0 if condigao then bloco entao end UFOP Programação de Computadores I Scilab Programa equação de segundo grau 3ª versão Cálculo das raízes de uma equação de 2o grau a inputEntre com o valor de a if a 0 then printf O coeficiente a deve ser 25 printf O coeficiente a deve ser diferente de 0 else b inputEntre com o valor de b c inputEntre com o valor de c resto do programa entra aqui end UFOP Programação de Computadores I Scilab corresponde ao resto do programa delta b2 4ac if delta 0 then printf Não existem raízes reais else if delta 0 then Programa equação de segundo grau 3ª versão 26 x b2a printf Há apenas uma raiz g x else x1 b sqrtdelta2a x2 b sqrtdelta2a printf As raizes são g e g x1 x2 end end UFOP Programação de Computadores I Scilab Operadores Relacionais maior que maior ou igual a menor que 27 menor que menor ou igual a igual a ou diferente de UFOP Programação de Computadores I Scilab Operadores e valores lógicos Operador Notação Scilab NOT AND 28 OR Valores lógicos Verdadeiro constante lógica t Falso constante lógica f UFOP Programação de Computadores I Scilab Exemplos de operações lógicas a t b f a ans F a b ans O permite colocar dois comandos em uma mesma linha 29 ans F a b ans T x 10 y 15 a x y a F UFOP Programação de Computadores I Scilab Comando de repetição while while condição bloco de repetição end 30 end UFOP Programação de Computadores I Scilab Programa equação de segundo grau 4ª versão Cálculo das raízes de uma equação de 2o grau Entrada e validação do coeficiente a forçandoo a ter um valor válido a input Entre com o valor de a while a 0 31 while a 0 printf O coeficiente a deve ser diferente de 0 a input Entre com o valor de a end Entrada dos coeficientes b e c b input Entre com o valor de b c input Entre com o valor de c resto do programa entra aqui UFOP Programação de Computadores I Scilab Comando de repetição while Quando este loop vai parar x 5 while x 10 printf x g x x x 1 end 32 Cuidado com os loops infinitos end UFOP Programação de Computadores I Scilab Comando de repetição for for variável inicialfinal bloco de repetição end 33 for variável inicialpassofinal bloco de repetição end UFOP Programação de Computadores I Scilab Comando for com passo 1 for i 15 printf i g i end A variável de controle i é incrementada de 34 i 1 i 2 i 3 i 4 i 5 1 a cada interação Saída UFOP Programação de Computadores I Scilab Comando for com passo diferente de 1 for i 1210 printf i gi end 35 i 1 i 3 i 5 i 7 i 9 i varia de 2 em 2 Saída Repare que i não assumiu o limite superior do loop UFOP Programação de Computadores I Scilab Comando for com passo negativo for i 20216 printf i gi end 36 end i 20 i 18 i 16 Saída UFOP Programação de Computadores I Scilab Comando for com controle fracionário for x 00307 printf x gx A variável de controle pode assumir valores não inteiros 37 printf x gx end x 0 x 03 x 06 Saída UFOP Programação de Computadores I Scilab Equivalência comandos while e for for x 0210 bloco de comandos end x 0 38 x 0 while x 10 bloco de comandos x x 2 end UFOP Programação de Computadores I Scilab Programa fatorial de n Leitura e validação de n n inputEntre com o valor de n while n 0 printf O valor de n deve ser maior ou igual a 0 n inputEntre com o valor de n end 39 Cálculo do fatorial de n fat 1 if n 1 then for i 2n fat fat i end end Impressão do resultado printfO fatorial de g é g n fat UFOP Programação de Computadores I Scilab Programa Tabela de senos x senox 00 00000 02 01987 04 03894 40 04 03894 06 05646 08 07174 Parada x 2Π UFOP Programação de Computadores I Scilab Programa Tabela de senos 1ª versão Tabela da função Seno for x 0022pi printfg g x sinx end 41 end 0 002 019866904 038941806 056464208 07173561 Saída UFOP Programação de Computadores I Scilab Programa Tabela de senos 2ª versão Tabela da função Seno for x 0022pi printf g g x sinx end 42 0 0 02 0198669 04 0389418 06 0564642 08 0717356 1 0841471 12 0932039 Saída UFOP Programação de Computadores I Scilab Programa Tabela de senos 3ª versão Tabela da função Seno Impressão do cabeçalho printf x senox 43 Impressão das linhas da tabela for x 0022pi printf 31f 74f x sinx End UFOP Programação de Computadores I Scilab Saída do programa anterior x senox 00 00000 02 01987 04 03894 44 04 03894 06 05646 08 07174 10 08415 12 09320 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Indentagao Indentagao m Para o Scilab os dois programas sao absolutamente if delta 0 then printf Raizes complexas equivalentes else ox rl b sqrt delta 2a Para nos a disposiao do texto do programa afeta muito a r2 b sqrt delta 2a legibilidade printf rlg e r2gr14r2 end Qualquer bloco de comando é mais facilmente identificado com indentagao if delta 0 then Assi veis fl d x0 fi is cl printRaizes complexas Assim os possiveis fluxos de execugio ficam mais claros etse Menos legivel rl b sqrt delta 2a r2 b sqrt delta 2a printf rlg e r2gr14r2 end 45 46 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Strings Concatenagao de strings m Até o momento as variaveis definidas armazenam apenas m Strings podem ser concatenados justapostos valores numéricos ou légicos m Varidveis podem armazenar também valores alfanuméricos cadeias de caracteres denominados strings a Programacgao a Programagao a b de Programacdo c Computadores b de b de Disciplina atbo c Computadores Disciplina c Programagao de Computadores Computadores 47 48 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Strings contendo aspas Strings contendo aspas Como ja visto o Scilab usa aspas para reconhecer o m Para representar strings com aspas devese colocar duas comeco e o fim de um string aspas consecutivas na posicao desejada Como entao representar strings que contém aspas x String com aspas dupla Cy x am mT String Geom aspas duplas 72x String com aspas x Strin C com as as simple error 276 tring Pp simples Missing operator comma or semicolon g oP String Qcom aspas simple 49 50 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Strings de digitos Programa passou nao passou m Strings formados por digitos nao sao valores numéricos m Faca um programa em Scilab que leia o nome de um aluno format 16 eer pi leia o total de pontos feitos em uma disciplina pelo aluno Spi retorne conforme o caso uma frase do tipo 31415926535898 aluno com tantos pontos vocé passou StringPi 31415926535898 ou StringPi aluno com tantos pontos vocé ndo passou 31415926535898 2pi ans 62831853071796 2StringPi error 144 Undefined operation for the given operands 51 52 UFOP Programação de Computadores I Scilab Programa passou não passou Leitura do nome printfEscreva o seu nome entre aspas nomealuno inputNome Leitura dos pontos obtidos printf s quantos pontos você teve nomealuno nota inputPontos Impressão de mensagem com o resultado 53 Impressão de mensagem com o resultado if nota 60 then printfParabéns s Tendo feito g pontos você foi aprovado nomealuno nota else printfs ainda não foi desta vez Com g pontos você não foi aprovado nomealuno nota end UFOP Programação de Computadores I Scilab Programa passou não passou printfEscreva o seu nome entre aspas nomealuno inputNome Comandos Mudança de linha Para obter aspas 54 Escreva o seu nome entre aspas Nome Fulano Efeito Bug do Scilab 511 O string não pode conter acentos ou cedilhas UFOP Programação de Computadores I Scilab Programa passou não passou printf s quantos pontos você teve nomealuno indicam ao Scilab que o comando continua na linha seguinte Para imprimir uma variável string Comandos 55 nomealuno nota inputPontos Fulano quantos pontos você teve Pontos 47 Efeito UFOP Programação de Computadores I Scilab Programa passou não passou if nota 60 then printfParabéns s Tendo feito g pontos você foi aprovado nomealuno nota else printfs ainda não foi desta vez Comandos 56 printfs ainda não foi desta vez Com g pontos você não foi aprovado nomealuno nota end Fulano ainda não foi desta vez Com 47 pontos você não foi aprovado Efeito UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Processo de repeticao Processo de repeticao Calculo das raizes de diversas equagdes de 20 grau continua t continua t while continua while continua a input Digite o valor de a Comandos quaisquer b input Digite o valor de b c input Digite o valor de c oo delta b2 4ac Decisdo sobre a continuagao do programa if delta 0 then decisao x1 btsqrt delta 2a x2 bsqrt delta 2a W 9 W W W input Deseja continuarsn string printf As raizes sio g e g x1 x2 continua decisao s AA else end fied printf As raizes sdo complexas md owe ny Aes end printf Término da repetiao i for Decisao de continuagdo pelo usuario continua decisao s end Le Ee ee ee She ee See eee Printf Término do programa 57 58 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Comandos aninhados Comandos aninhados Blocos internos a comandos condicionais e comandos de Por exemplo blocos entao ou senao de ifs podem repetiao podem conter qualquer tipo de comando conter qualquer tipo de comando inclusive outros ifs incluindo ote i ica comandos de atribuiao if Fy nomena 1 then comandos comandos de entrada e saida de dados x if condigao 2 then outros comandos condicionais e de repeticao comandos E lidad flexibilidade ense m Esta generali ade proporciona uma imensa flexibilidade a if condigao 3 then programacao comandos end end end 59 60 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa conceitos e notas Programa conceitos e notas a Faga um programa Scilab que is note ne oe dos dados de entrada m leiao nome e a nota de um aluno em uma determinada a disciplina if Nota 80 then Conceito B m retorne 0 conceito correspondente segundo a tabela else if Nota 70 then Conceito C else 90 Nota 100 A a note see 80 Nota 90 B else 70 Nota 80 c oe eee een 60 Nota 70 D else 40 Nota 60 E 0 Nota 40 F end end end end apresentagdo do resultado 61 62 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab A importancia da indentagao Programa tabuada if Nota 90 then if Nota 90 then m Faca um programa em Scilab que gere a seguinte tabela de Conceito A Conceito A else else tabuada de multiplicagao if Nota 80 then if Nota 80 then Conceito B Conceito B 1 2 3 4 5 6 7 8 9 else else if Nota 70 then if Nota 70 then 2 4 6 8 10 12 14 16 18 Conceito C Conceito C else else 3 6 91215 18 21 24 27 if Nota 60 then if Nota 60 then Conceito D Conceito D 4 8 12 16 20 24 28 32 36 else else if Nota 40 then if Nota 40 then 5 10 15 20 25 30 35 40 45 Conceito E Conceito E else else 6 12 18 24 30 36 42 48 54 Conceito F Conceito F end end 7 14 21 28 35 42 49 56 63 end end end end Ny 8 16 24 32 40 48 56 64 72 end end 29 end end legs 9 18 27 36 45 54 63 72 81 Vey 63 64 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa tabuada 1 versao Programa tabuada m Ao executar 0 programa anterior verificase a saida nao Tabuada de multiplicagao esta legivel for linha 19 1234567892468 1012141618369121518212 for coluna 19 4 m E preciso 7 W W 7 printf g linhacoluna apos a impressao de uma linha mudar de linha com 0 end dentro de cada linha imprimir cada valor em um nimero end fixo de colunas Corpo do loop Corpo do loop externo imprime interno imprime uma uma linha coluna de uma linha 65 66 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa tabuada 2 versao Arquivos m Arquivos correspondem a unidades de armazenamento Tabuada de multiplicagao tipicamente gravados em disco magnético for linha 19 oo m Sistemas operacionais como Linux ou Windows for coluna 19 permitem que arquivos sejam criados e recuperados por printf 3glinhacoluna um nome e pela posicao em uma hierarquia de diretérios a z m relagao ao Scilab existem alguns tipos de arquivos Cédigo de formatagao gs printf si que podem ser lidos criados ou modificados end m Serao apresentados apenas arquivos ASCII arquivos p p q q legiveis por humanos que podem ser editados por Fora do loop interno exemplo usando 0 Bloco de Notas 67 68 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Comandos basicos para uso de arquivos Comando uigetfile uigetfile Permite a selegéo de um arquivo por meio de navegacao nos diretérios do Windows ou de outro sistema operacional como o Linux nomearg uigetfile pwd Escolha um arquivo mopen e mclose Permitem a abertura e o fechamento de arquivos possibilitando ST a respectivamente iniciar e finalizar a manipulacgdéo dos mesmos TBSP ea semene cr 4 domo mfscanf 2 Bein Permite a leitura de valores contidos em arquivos abertos para varidveis Desktop E ResultadosEqzg5 mfprintf 2 Permite a gravacao de valores de varidveis em arquivos abertos pt gs o meof My a Permite verificar se o fim de um arquivo aberto foi atingido er Ld aces Flesof type ay files 3 6 all fil 70 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Comando uigetfile Comandos mopen e mclose m Apos a escolha de um arquivo a variavel nomearq recebe Um arquivo fora de uso esta total e tipicamente como valor um string com 0 nome completo do arquivo armazenado em disco nomearg CUsersFulanoEnsinoPC1MeuArquivotxt m Um arquivo em uso tem parte de sua informacao em disco e parte em meméria principal m A partir dai a varidvel nomearg pode ser usada para abrir 0 arquivo correspondente A abertura de um arquivo por meio do comando mopen traz para a memoria informa6es necessarias para 0 seu te os uso O nome de arquivo escolhido pode ser novo ou ja existir O fechamento de um arquivo por meio do comando mclose grava em disco todas as informagées presentes em mem6oria 71 72 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Comando mopen Comando mclose arq mopenNomeCompletoDoArquivo r 73 74 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Comando mfscanf Comando mfscanf Considere 0 seguinte arquivo ASCII aberto B a2 40 21 14 5 25 0 63 0 n lista de varidveis mfscanfarg formato Ocomando n a b c mfscanfarq g g g em Sua primeira execucao faz n3 a8 b32 e c 40 em sua segunda execugao faz n3 a7 b21 e c14 m e assim sucessivamente 75 76 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Comando mfprintf Comando meof oo meof arq mfprintf arg frase lista de variaveis er m Uso comum while meof arq leitura de dados em uma linha do arquivo n a b c mfscanf arg Sg g g processamento dos dados da linha lida end 77 78 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa multiplas equagdes de 2 Grau Programa multiplas equagdes de 2 Grau Modifique o programa da equacao de 2 grau de tal As primeiras linhas do arquivo de entrada sao forma que se possa calcular as raizes de uma quantidade 5 5 inEq2g Notepad By al Set nao determinada de equacgoes de segundo grau cujos ieee coeficientes estéo em um arquivo de entrada File Edit Format View Help 8 3240 i m O arquivo possui em cada linha os coeficientes a b e c de oa a rE uma equacao de 2 grau separados por um ou mais espacos 7 Ge 0 4 56 192 5 70 240 m O programa devera produzir um arquivo de saida de tal 8 48 128 4 16 48 forma que em cada linha devem constar os coeficientes e 5 55 150 as raizes reais encontradas de uma equacao de 2 grau 5 illp oe x 5 3035 m Para uma equacao de 2 grau cujo delta for negativo o 7 4 35 a programa deve gravar os coeficientes e a mensagem nado 4 p existem rafzes reais no arquivo de safda 79 80 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa multiplas equagdes de 2 Grau Programa multiplas equagdes de 2 Grau Estrutura geral do programa Localizacdo dos arquivos de entrada e saida Localizagéo dos arquivos de entrada e de saida NomeE uigetfiletxt pwd Entrada Abertura dos arquivos de entrada e de saida NomeS uigetfiletxt pwd Saida Processamento do arquivo de entrada envolvendo leitura dos coeficientes de uma equagao calculo da equagdo do 2 grau referente escrita dos resultados no arquivo de saida Fechamento dos arquivos de entrada e de saida 81 82 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa multiplas equagdes de 2 Grau Programa multiplas equagdes de 2 Grau m Abertura dos arquivos de entrada e saida m Processamento dos arquivos de entrada e saida while meof argE n a b c mfscanfargE Sg g g delta b2 4ac if delta 0 then argE mopenNomeE r x1 b sqrt delta 2a argqS mopenNomeS w x2 b sqrt delta 2a mfprintf argS8g 8g 8g 8g 8g a b c x1 x2 else mfprintf argS8g 8g 8g s a b c nao existem raizes reais end end 83 84 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa multiplas equagdes de 2 Grau Matrizes m Fechamento dos arquivos de entrada e saida m Matrizes s4o variaveis que contém uma quantidade potencialmente grande de valores E no tratamento de matrizes que o Scilab mostra grande mclose argE superioridade sobre linguagens como C Fortran ou Java mclose ardS A 1 2 3 4 5 6 A 1 2 3 4 5 6 85 86 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Matrizes Obtendo o valor de um elemento da matriz Todas as variaveis Scilab sao a principio matrizes A 1 2 3 4 5 6 A x 7 x 1 2 a 7 fn 1lc size x c e A23 1 1 e 1 6 87 88 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Atribuindo um valor a um elemento da matriz Vetores m Vetores sio matrizes de uma Unica linha ou de uma tinica coluna A12 33 v 10 20 30 V 10 20 30 A u 10 20 30 Sy 10 4 fae 6 as 20 30 89 90 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Expansao de uma matriz Atribuindo um valor a uma parte de uma matriz m Uma matriz cresce quando se atribui valores a elementos x ainda nao existentes No caso as lacunas geradas sao 23 30 29 50 91 28 68 completadas com Zeros 23 93 56 43 4 12 15 21 21 48 26 48 77 69 88 31 33 63 26 21 84 x7 matriz 1x1 65 36 59 40 41 al 40 23 13 x2435 1 x x ny 0 0 13 Se ee 91 92 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Atribuindo valores a uma parte de uma matriz Obtendo os valores de uma linha de uma matriz x x 40 58 38 73 53 4 58 87 68 9226 67 a a 11 89 94 49 22 20 22 a 39 94 19 a 30 a 19 50 34 26 62 39 84 56 34 37 5D 76 83 1D 19 50 34 26 62 39 84 56 34 37 52 76 83 12 om 324 28 1 23 4 a 22 a 0 58 38 73 53 4 58 93 94 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Obtendo os valores de colunas de uma matriz Aritmética matricial Como todas as varidveis Scilab sAo matrizes as operagdes x a aritméticas usuais sao entendidas pelo one Scilab como operacées matriciais 41 11 ee eee 37 52 m Operacoes escalares usam os mesmos simbolos b x35 44s 4 non b aritméticos porém precedidos por um ponto como 68 40 58 por exemplo e 15 87 68 69 11 89 84 19 50 40 56 34 95 96 Adicao e subtragao de matrizes Produto matricial m Matrizes de mesmas dimens6es podem ser somadas ou subtrafdas x 1 2 3 45 6 x x 1 2 3 45 6 1 2 3 y 10 20 30 40 50 60 4 5 6 x y y 10 20 30 40 50 60 ans y 11 22 33 tone 44 55 66 50 60 73x y x y ans ans 9 18 27 220 280 36 45 54 490 640 Produto elemento a elemento de matrizes Multiplicagao de matriz por escalar x 1 2 3 4 12 y 10 20 30 40 Tex 1 2 3 45 6 xy oy ome ans Y 70 100 y 150 220 y BS ans 2 8 0 10 40 90 160 UFOP Programação de Computadores I Scilab Exponenciação em matrizes x 1 2 3 4 x2 ans 7 10 Produto matricial x x 101 7 10 15 22 x 2 ans 1 4 9 16 Exponenciação elemento a elemento UFOP Programação de Computadores I Scilab Matriz transposta A 1 2 3 4 5 6 7 33 9 102 7 33 9 B A B 1 4 7 2 5 33 3 6 9 A é a transposta da matriz A UFOP Programação de Computadores I Scilab Matriz inversa A 4 7 6 2 2 1 1 1 6 A função inv retorna a matriz 103 IA invA IA 03333333 10909091 01515152 03333333 05454545 02424242 0 00909091 01818182 A função inv retorna a matriz inversa de uma matriz UFOP Programação de Computadores I Scilab Matriz inversa A IA ans 1 0 4441D16 1110D16 1 1110D16 Erro de aproximação 104 1110D16 1 1110D16 5551D17 0 1 IA A ans 1 8327D17 0 0 1 0 0 0 1 Programa sistemas de equagoées lineares Programa sistemas de equagoes lineares m Um sistema de equacoes lineares ax b pode ser resolvido pela inversa de uma matriz a 2 1 3 2114 1 3 Multiplicando os dois lados do sistema por a temse b 4 O01 aftaxxa b x invab 4 x Resolva um sistema de equagées lineares por meio do Scilab considerando 0 1666667 13333333 2 1 3 4 1 a 12 1 1 b10 4 1 3 1 Programa sistemas de equacoes lineares Construcao de vetores regulares m A precisao do resultado calculado pode ser avaliada Vetores com valores regularmente espacados podem ser calculando ax b que deve ser zero construidos de forma similar a utilizada no comando for residuo ax b 7x 1015 x residuo 10 a1 42 13 0 1110D16 x 120510 0 12 115 11 105 10 Funcao linspace Fungoes zeros e ones m E utilizada para criar um vetor regular especificando seus m S4o utilizadas para criar matrizes com apenas elementos limites e o numero de pontos desejados Zeros e uns respectivamente Para tanto devese passar a dimensao desejada da matriz x zeros 23 x x linspace0103 0 0 0 x 0 0 0 0 5 10 x linspace 010 6 7y ones 23 x y 0 2 4 6 8 10 1 1 1 1 1 1 Funcao eye Funcaéo rand m E utilizada para criar uma matriz identidade Para tanto m E utilizada para criar uma matriz com elementos aleatorios devese passar a dimensao desejada da matriz Para tanto devese passar a dimensao desejada da matriz Gera nimeros aleatérios entre 0e 1 I eye4 4 A cada chamada gera novos nimeros yo m rand 23 0 1 0 0 nS 0 0 1 0 02113249 00002211 06653811 07560439 03303271 06283918 0 0 0 1 n rand2 3 n 08497452 08782165 05608486 06857310 00683740 06623569 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Funcao rand Construindo matrizes a partir de matrizes x 1 2 3 4 y 10 20 30 40 z x y Z m 3 4 30 40 21 0 66 z x y 75 33 62 z 1 2 3 4 10 20 30 40 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Fungoes Scilab sao matriciais Vetores e graficos m Se uma determinada fungao for ativada com um argumento Vetores s4o muito Uteis para a construgao de graficos matricial seu resultado sera uma matriz Ocomando mais simples é plot2dxy ondexey x 008pi sao vetores com as mesmas dimenso6es x Tal comando constréi um grafico unindo por retas os 0 08 16 24 pontos com coordenadas x 1 y 1 2 y 2 WIA x 3 3 y sinx y QO 07173561 09995736 06754632 UFOP Programação de Computadores I Scilab Vetores e gráficos x 1 4 7 11 y 12 6 15 7 plot2dxy 14 15 715 117 1 2 3 4 5 6 7 8 9 10 11 6 7 8 9 10 11 12 13 112 46 117 UFOP Programação de Computadores I Scilab Vetores e gráficos x 2 5 3 4 y 3 1 4 7 plot2dxy 47 118 23 51 34 UFOP Programação de Computadores I Scilab Gráfico senox 1ª Versão x 0083pi y sinx plot2dxy 06 08 10 O espaçamento de 08 está grande 119 0 1 2 3 4 5 6 7 8 9 10 08 06 04 02 00 02 04 UFOP Programação de Computadores I Scilab Gráfico senox 2ª Versão x 0013pi y sinx plot2dxy O espaçamento de 01 está bem melhor 06 08 10 120 0 1 2 3 4 5 6 7 8 9 10 10 08 06 04 02 00 02 04 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Grafico com varias curvas Grafico com varias curvas m A func4o plot 2d pode ser usada para tragar varias curvas x linspace0 3pi 101 m Nocaso plot2dxM onde ve AX m x éum vetor coluna e Méuma matriz com o mesmo nimero de linhas de x gera um grafico de x versus cada coluna de M 024 10 UN if 0 1 2 3 4 5 6 7 8 9 10 121 122 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Matrizes de strings Leitura de arquivos como matrizes de strings a sl s2 Ocomandos mgetlarq onde arqéo a apontador de um arquivo ja aberto 1é todas as linhas do arquivo referenciado por arg e coloca cada uma delas Isl 2 1 como um elemento do vetor coluna de strings s s s ee SJ loséNotepad Eh m Exemplificacao de uso b si s2 fie Ee Foemat Sew tip y ao b fpath uigetfile A festa acabou g arq mopenfpath r 2 WMzs22g0u ite esfriou tel linhas mgetlarq 2 agora J0Sé Ss mclose arq e agora vocé voce que sem nome gue zomba dos outros vocé que faz versas s2 que ama protesta e agora José il 4 b 123 124 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Leitura de arquivos como matrizes de strings Matrizes numéricas e arquivos no Scilab m Este programa usado com 0 arquivo José produz Os comandos ja vistos de leitura e gravacao de arquivos tinh podem ser usados para a leitura de matrizes mas o Scilab Zs 1 wane ae oferece mecanismos mais simples através dos comandos A festa acabou a luz apagou m Estes comandos leém ou gravam arquivos que contém i x i Povo sumeu somente nimeros em formato tabular 4 excecao das a noite esfriou TT le agora José primeiras linhas que podem conter textos e agora vocé vocé que é sem nome m A abertura e 0 fechamento dos arquivos sao feitas que zomba dos outros automaticamente voc6é que faz versos que ama protesta e agora José 125 126 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Comando fprintfMat Comando fprintfMat a 1 2 3 45 6 7 8 9 arg uigetfile Cabecalho Meus Dados Coll Col2 Col13 fprintfMat arg a 52 Cabecalho fprintfMat arg m 52f Cabecalho 5 Exemplo fprintfMat 20liaaea File Edit Format View Help Meus Dados Coll Col col3 100 200 300 400 500 600 700 800 900 i 4 k 127 128 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Comando fscanfMat Comando fscanfMat arquivo uigetfile m fscanfMat arquivo m fscanfMat arq m 1 2 3 4 5 6 7 8 9 129 130 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa Clima em Belo Horizonte Programa Clima em Belo Horizonte m Faca um programa que lien Er Noteped a i mes Leiao arquivo apresentado para uma matriz ClimaBH ae usando a funao fs canfMat que ignora linhas de Mes Maxima Media Minima Media Maxima Record Minima Record Precipitacao 4 cabegalho em um arquivo 5 ae is ie in ae Da matriz ClimaBH extraia os vetores MaxMed MinMed 3 286 188 334 128 1635 i i ionifi Sbvj 3 z86 188 334 8 163 MaxRec MinRec e Precip com significados 6bvios 2 se ih io oi OE Gere um grafico que tenha simultaneamente os valores de 7 246 131 304 54 157 MaxMed MinMed MaxRec e MinRec 8 265 144 338 72 137 9 272 162 347 92 405 10 277 175 369 114 1231 ral 275 182 4 91 2276 12 273 184 44 135 3194 1 hea 131 132 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa Clima em Belo Horizonte Programa Clima em Belo Horizonte Temperaturas Mensais em BH arqClima uigetfile ClimaBH fscanfMat arqClima 35 MaxMed ClimaBH2 MaxMed 2a coluna MinMed ClimaBH3 MinMed 3a coluna MaxRec ClimaBH4 MaxRec 4a coluna 0 MinRec ClimaBH5 MinRec 5a coluna 6 Precip ClimaBH6 Precip 6a coluna g 20 plot2d112 MaxMed MinMed MaxRec MinRec legMaxMedMinMedMaxRecMinRec 10 xtitleTemperaturas Mensais em BHMésGraus C 2 4 6 8 10 12 iitnsd mes Minfec 133 134 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Matrizes e express6es légicas Matrizes e express6es légicas Oresultado de uma expressao Idgica envolvendo matrizes Z as a 3 9 12 1 é uma matriz de valores ldégicos x 0 y 0 a 3 7 8 2 a 3 7 8 2 if a 5 then x 10000 end a if a 0 then y 10000 end 3 7 b 5 6 7 8 x y 8 2 ans aes sash 0 10000 aa5 1 ans ans FT FT a TF TF 3 1 il 1 135 136 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Fungoes Programa numero de combinagoes m Funcoes constituem ferramenta essencial para a m Faca um programa em Scilab que modularizaao de cédigo leia 2 inteirosnek m calcule e apresente o numero de combinacoes de n por k m Vantagens dado pela formula Permitem reaproveitamento de cédigo m Permitem divisao de tarefas rans n n Tornam cédigo mais legivel k nkIk 137 138 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa nimero de combinacgées Programa nimero de combinagées m Uma das formas de se calcular o fatorial de um nimero n inputn k input k inteiro positivo qualquer é fatn 1 CAlculo do fatorial de n for i 2n fat 1 fatn fatn i for i 2n end kos fatnk 1 CAlculo do fatorial de nk fat fat i for i 2 nk end fatnk fatnk i end 24 oo fatk 1 CAalculo do fatorial de k No caso 0 cédigo deve ser adaptado no intuito de se for i 2 k calcular os fatoriais de n nk ek fatk fatk i end nComb fatnfatnk fatk printf Resultado g nComb 139 140 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa nimero de combinacgées Parametros formais de uma fungao Fungao function fat fatorial n fat 1 for i 2n fat fat i end function fat fatorialn endfunction fat 1 for i 2n Programa principal fat fat i n inputn k inputk d nComb fatorialn fatorial nk fatorial k en printf Resultado g nComb endfunction 141 142 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Parametros formais e reais de uma funcgao Parametros formais e reais de uma fungao m Os pardmetros formais de entrada recebem os valores dos paradmetros reais de entrada Assim 0 controle é transferido para a funcao que trabalha sobre os parametros formais function rl r2 eq2gabc delta b2 4ac m Alteragées feitas pela fungao sobre os parametros formais rl b sqrtdelta2a de entrada nao afetam os pardmetros reais correspondentes r2 b sqrtdelta2a Assim varidveis criadas pela fungao nao se misturam com endfunction varidveis de mesmo nome existentes no programa que chama a funao Os pardmetros reais de saida recebem os valores dos Chamada da fungao eq2g paradmetros formais de saida calculados pela fungao raizlraiz2 eq2gxyzZ Assim 0 controle é devolvido para 0 ponto de chamada 143 144 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Arquivo com uma fungao Comando exec m Uma funcao é escrita normalmente em um arquivo 7 com oO mesmo nome da fungéo exec eq2g Sc1 com a extensdo SCi um programa tem a extensdo SCe raizlraiz2 eq2gxy 2 SciPad eq2gsci Kole as ee Um programa Scilab sé reconhece a existéncia de uma function r1 r2 eq2gabc delta b2 date fungao criada pelo programador por meio do comando rl b sqrt delta 2a exec r2 b sqrt delta 2a endfunction m O arquivo sci com a funcgao deve estar no mesmo diretério do programa que chama a fungao Line 6 Column 1 Para utilizar uma funao em um programa Scilab use execarquivo com a funao em tal programa 145 146 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa principal e fungdes em um Unico arquivo Encadeamento de chamadas 2 Uma outra forma de se trabalhar com fungoes é construir um function nComb combinacoes nk unico arquivo onde fung6es precedem o programa principal nComb fatorialn Solucdo mais simples porém dificulta reaproveitamento e fatorialnk fatorialkj manutengao endfunction function fat fatorial n fat 1 for i 2n fat fat i end Programa principal endfunction exec combinacoessci n input n k inputk exec fatorialsci nComb fatorialn fatorial nk fatorial k n input n k input k printf Resultado g nComb printf nCombdd dnkcombinacoesnk 147 148 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Encadeamento de chamadas Fungao soma dos elementos de um vetor m Faca uma fungao para calcular a soma dos elementos de um vetor de valores numéricos Programa Dados de entrada um vetor parametro de entrada principal Dados de saida soma dos elementos do vetor pardmetro de saida Funcdo function s soma A combinacoes Calcula a soma dos elementos do vetor A s 0 Funcdo for k 1length A fatorial s s Ak end endfunction 149 150 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa principal teste da fungao soma Execucao do programa principal exec somasci a 3 3 2 5 a int10rand1 4 Soma 13 sa somaa printf Soma g sa b b int10rand1 6 4 3 5 5 4 2 sb somab Soma 23 printf Soma g sb c c int10rand1 9 64 9 0 A 2 A 2 1 sc somac Soma 32 printf Soma g sc 161 152 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Fungao menor elemento de um vetor Programa principal teste da funcao menor m Faca uma funcao para retornar o menor elemento de um n oo exec menorsci vetor de valores numéricos Dados de entrada um vetor parametro de entrada a int10rand14 Dados de saida menor elemento do vetor parametro de ma menor a saida printf Menor g ma Encontra o menor elemento do vetor A m A1 mb menor b for k 2lengthA printf Menor g mb if Ak th m Atk ec int 10rand19 end mc menor c end printf Menor g mc endfunction 153 154 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Fungao nimero primo Programa principal teste da funcao ehPrimo m Faca uma funcao para retornar se um determinado numero inteiro maior que é primo ou nao exec ehPrimosci m Dados de entrada vee we de for i 2100 Dados de saida valor l6gico parametro de saida if ehPrimoi then 7 W A 7 W 1 function primo ehPrimon printf sg primo i 9 end d 2 4 while modulond 0 en ddtl1 end primo d n endfunction 155 156 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Recursividade Fungao fatorial recursivo m Sabese que uma funcao pode chamar outra fungao m Uma definicao recursiva formal de fatorial é m que pode chamar outra funcao mlle que pode chamar outra fungao mnnxn1 paran 1 assim sucessivamente function fat fatorialRn m Uma funcao também pode chamar a si propria if n 1 then Nesta caso a funcao é dita recursiva fat 1 m Pod i funa i 1 etse se criar uma funcao recursi odese criar uma fungao recursiva para se resolver um fat n fatorialRn1 determinado problema quando a definiao de tal problema end baseiase nele proprio endfunction 157 158 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa principal teste da funao fatorialR Fungao fatorial recursivo com mensagens exec fatorialRsci function fat fatorialRn printf Iniciando fatorialRdn n n if n 1 then n inputn fat 1 else while n 0 do fat n fatorialRn1 printf Sd d n fatorialRn end n input n printf Retornando fatorialRd dn fat endfunction end 159 160 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Fungao fatorial recursivo com mensagens Pilha de execucao chamadas e retornos m Execucdo de fatorialR5 Fat1 Iniciando fatorialR5 Iniciando fatorialR 4 Fat2 J Fat2 J Fat2 Iniciando fatorialR 3 OW EO AclOM ROM fc Iniciando fatorialR2 Fat4 J Fat4 J Fat4 Bf Fat4 Fat4 J Fat4 Fat4 Iniciando fatorialR1 w w w w v v v Retornando fatorialR2 2 Prog J Prog J Prog Mf Prog Prog J Prog J Prog Prog Prog Retornando fatorialR3 6 es Retornando fatorialR4 24 Retornando fatorialR5 120 Chamadas Retornos 161 162 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Fungao recursiva menor elemento de um vetor Fungao recursiva menor elemento de um vetor aE possivel formular o algoritmo de descoberta do menor function m menorR A elemento em um vetor como uma fungao recursiva if lengthA 1 then m A1 Uma possibilidade é else m Se lengthA 10 menor valoremAéA1 metade int length A 2 m Se lengthA 10 menor valor em A é 0 menor menorEsq menorR A1metade dentre o menor valor na metade esquerda de A e 0 menor menoxrDir menorR A metadet1 length A valor na metade direita de A if menorEsq menorDir then m menorEsq else m menorDir end end endfunction 163 164
Send your question to AI and receive an answer instantly
Recommended for you
67
Métodos Numéricos para Engenharia: Introdução ao Método dos Elementos Finitos
Elementos Finitos
IFPB
8
Notas de Aula: Introdução ao Método dos Elementos Finitos
Elementos Finitos
IFPB
433
MATLAB Guide to Finite Elements: An Interactive Approach - Second Edition
Elementos Finitos
IFPB
1
Formulação de Elementos Finitos na Análise Numérica
Elementos Finitos
IFPB
8
Notas de Aula sobre o Método dos Elementos Finitos - Elemento Quadrilátero Isoparamétrico
Elementos Finitos
IFPB
10
Notas de Aula: Método dos Elementos Finitos - Elemento Finito Triangular
Elementos Finitos
IFPB
15
Notas de Aula: Introdução ao Método dos Elementos Finitos
Elementos Finitos
IFPB
3
Apostila sobre o Método dos Elementos Finitos para Engenharia Civil
Elementos Finitos
IFPB
5
Notas de Aula: Introdução ao Método dos Elementos Finitos
Elementos Finitos
IFPB
486
Introduction to Finite Element Analysis Using MATLAB and Abaqus
Elementos Finitos
IFPB
Preview text
A linguagem Fortran Em 1954 a linguagem de alto nivel Fortran foi proposta por um grupo da IBM Scilab Oprimeiro compilador ou seja um programa que traduz programas escritos em linguagem de alto nivel para instrugdes de maquina foi naturalmente escrito em Programacaéo de Computadores I Assembler m A maquina era um IBM 704 um computador com 15K de memoria Universidade Federal de Ouro Preto UFOP Instituto de Ciéncias Exatas e Biolégicas ICEB Departamento de Computacao DECOM Linguagens de programacao Matlab m Existem varias linguagens de programagao que Foi criado no fim dos anos 70 por Cleve Moler e langado descendem do Fortran por exemplo comercialmente em 1984 pela empresa MathWorks m 1959 Cobol 2 er E voltado para engenheiros e cientistas m 1964 Basic 1970 Pascal Possui grande facilidade para 0 tratamento de matrizes 1971C MatLab Matrix Laboratory m 1983 C E um interpretador ou seja um programa que executa m 1991 Python programas ao contrario de um compilador nao traduz um m 1995 Java programa para instrucdes de maquina m 1995 PHP UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Scilab O ambiente e a linguagem Scilab Foi criado em 1990 por pesquisadores do INRIA e da O ambiente Scilab Ecole Nationale des Ponts et Chaussées Frana sendo interpreta comandos gratuito e bastante semelhante ao MatLab oferece um editor para a construcao de programas SciPad httpwwwscilaborg emite mensagens de erros relativos 4 obediéncia da sintaxe da linguagem e a problemas na execucao de um programa Consiste também em um interpretador elagem 2 P PIOE como divisao por zero A linguagem e 0 sistema possuem 0 mesmo nome Scilab Como qualquer linguagem natural a linguagem Scilab m Sera apresentada a versio 51 do Scilab une riqueza de expresso a detalhes sintaticos m exige uma postura paciente em seu aprendizado pois envolve uma taxa inicial de memorizaao a fluéncia vem com a pratica 5 6 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab O ambiente Scilab Variaveis e comandos de atribuicao a 10 76 DOSAa a eo scilab51 b 210 Consortium Scilab DIGITEO b Copyright c 19892009 INRIA Copyright c 19892007 ENPC 1024 AT c atb Startup execution c loading initial environment 1 0 3 4 Ct 7 8 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Varidveis Varidveis m Varidveis correspondem a nomes para espacos de Nomes validos mem6ria que sao gerenciados pelo Scilab m a A jose totaldealunos funcionarios O programador nao precisa ter qualquer idéia de como tal oo geréncia é realizada Nomes invalidos 1Aluno 0 primeiro caractere é um algarismo m Os nomes das variaveis sao escolhidos pelo programador m total de alunos tem espacos respeitando as seguintes regras m José é acentuado O primeiro caractere do nome deve ser uma letra ou qualquer caractere dentre e Os outros caracteres podem ser letras ou digitos ou qualquer caractere dentre e 9 10 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Comando de atribuicgao Varidveis e comandos de atribuigao m Sintaxe 2 d atx variavel expressao error 4 m A varidvel se nao existia passa a existir Undefined variable x m Se existia o valor armazenado anteriormente é perdido b 2b m A expressao é calculada e 0 resultado é atribufdo a b variavel varidve 2048 1 12 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Variaveis e comandos de atribuicao Help Funcoes elementares do Scilab Doo i a a eee ESS a Peed ced a 88 8 2 z 31415927 k Sl ros Elementary Functions ARnoldi PACKage 7 Table of Contents Ly 1 i a abs absolute value magnitude b 2 pif ie aosor aa scoad coment wise cosine inverse result in degree fonsole acosh hype lic Cosine inverse 7 a 5 eas acoshm matrix hyperbolic inverse cosine HS Se a i Oo neuiialiin cheeetisnaelerne cotangeant of the argument Cc co Ss a Ss qr t b I i 4 rea cate acotd cotepeies the elementwise inverse cotangeant of the argument result in degree eae acoth element wise hyperbolic cotangeant inverse c i jo FTW acsc computes the elementwise inverse cosecant of the argument NE ees cepcieieckeeicinineaigetaccecatiacamat 1 5 0 6 6 2 8 3 0 4 ae adj2sp converts adjacency form into sparse matrix pb Genetic Algorithms amell Jacobis am function P 2 J Graphics exporting and print and logical and es my Graphics Library asec computes the elementwise inverse secant of the argument jo History manager h asecd computes the elementwise inverse secant of the argument results in degree We a a fect s oan the elementwise inverse hyperbolic secant of the argument h 13 14 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Express6es aritméticas Prioridades e parénteses m ExpressOes podem ser arbitrariamente complicadas 5AawA Qual é 0 valor de x a partir do comando x 234 ans 32 23x 432 ou 234 4096 2 34 ans 4096 Recomendacao e e e e e a a n Associatividade ne 3aigpa24 USE parénteses por 1 Potenciacgao Da direita para a 2 34 ser mais seguro esquerda ans 2418D24 ae 234 a 2 Multiplicagao Da esquerda para a ans 4096 divisao direita 234 38 Adicio subtracao Da esquerda para a ans 10 direita 772 344 ans 14 m Parénteses podem alterar prioridades 15 16 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programas Scilab Programas Scilab m Programas em Scilab sao arquivos ASCII caracteres sem m Use sempre 0 SciPad para construir programas formatagao com a terminagao sce Nunca use 0 Word pois ele introduz caracteres de Um arquivoprograma contém comandos Scilab formatagao Um programa é construfdo usando o editor SciPad m Um programa é executado seguindo o menu ExecuteLoad into Scilab do editor SciPad exe p S R ee ee B Console Sax m Sua execucao equivale a digitac4o na console dos comandos File Edit Preferences Control Applications do programa BAS0BA Editor a as ay j Bes he abet Seharietttee tiiaetaens raseiaieeaaleoee te epee Sub es Se Matlab to Scilab translator 17 18 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa equacao de segundo grau 1 versao Programa equacao de segundo grau 2 versao Fh sciPad 7181 Eq2glece co aE m Para uma nova equacio basta substituir no programa os File Edit Search Execute Scheme Options valores dos coeficientes Windows Help Entretanto a pratica de modificar programas a cada 7 Jcdlculo das raizes de uma equacdo execucao nao é recomendada Z2 de 208 O melhor é fazer com que 0 programa eia os valores dos S coeficientes a cada execucao dfal 5b2 Bac 3 Entrada dos coeficientes Pdelta b2 4ac a inputEntre com o valor de a Bri btaqgrt delta aa b input Entre com o valor de b 9r2 bsqrt delta 2 pcsgre Getta 2a c inputEntre com o valor de c 4 k Line 9 Column28 Logical line 9 19 20 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa equacao de segundo grau 2 versio Execucao do programa anterior ntost SESUNEO Stay VETSAO RECHGAO PO PHOE TOY Entre com o valor de a1 Calculo das raizes de uma equagao a de 20 grau 1 Entre com o valor de b2 a input Entre com o valor de a b b input Entre com o valor de b 2 c input Entre com o valor de c spees com o valor de c3 delta b2 4ac i delta x1 bsqrt delta 2a 8 x2 bsqrt delta 2a xl 1 14142136i x2 1 14142136i UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa equaao de segundo grau 3 versao Comando condicional if Especificacao if condicgdo then m Para que a equacdo seja do segundo grau o coeficiente a deve ser diferente de 0 bloco entao De acordo com 0 valor de delta o resultado do programa else deve ser uma mensagem informando que as raizes nao sao reais bloco senao delta 0 uma Unica raiz real delta 0 end duas raizes reais delta 0 if condigao then bloco entao end UFOP Programação de Computadores I Scilab Programa equação de segundo grau 3ª versão Cálculo das raízes de uma equação de 2o grau a inputEntre com o valor de a if a 0 then printf O coeficiente a deve ser 25 printf O coeficiente a deve ser diferente de 0 else b inputEntre com o valor de b c inputEntre com o valor de c resto do programa entra aqui end UFOP Programação de Computadores I Scilab corresponde ao resto do programa delta b2 4ac if delta 0 then printf Não existem raízes reais else if delta 0 then Programa equação de segundo grau 3ª versão 26 x b2a printf Há apenas uma raiz g x else x1 b sqrtdelta2a x2 b sqrtdelta2a printf As raizes são g e g x1 x2 end end UFOP Programação de Computadores I Scilab Operadores Relacionais maior que maior ou igual a menor que 27 menor que menor ou igual a igual a ou diferente de UFOP Programação de Computadores I Scilab Operadores e valores lógicos Operador Notação Scilab NOT AND 28 OR Valores lógicos Verdadeiro constante lógica t Falso constante lógica f UFOP Programação de Computadores I Scilab Exemplos de operações lógicas a t b f a ans F a b ans O permite colocar dois comandos em uma mesma linha 29 ans F a b ans T x 10 y 15 a x y a F UFOP Programação de Computadores I Scilab Comando de repetição while while condição bloco de repetição end 30 end UFOP Programação de Computadores I Scilab Programa equação de segundo grau 4ª versão Cálculo das raízes de uma equação de 2o grau Entrada e validação do coeficiente a forçandoo a ter um valor válido a input Entre com o valor de a while a 0 31 while a 0 printf O coeficiente a deve ser diferente de 0 a input Entre com o valor de a end Entrada dos coeficientes b e c b input Entre com o valor de b c input Entre com o valor de c resto do programa entra aqui UFOP Programação de Computadores I Scilab Comando de repetição while Quando este loop vai parar x 5 while x 10 printf x g x x x 1 end 32 Cuidado com os loops infinitos end UFOP Programação de Computadores I Scilab Comando de repetição for for variável inicialfinal bloco de repetição end 33 for variável inicialpassofinal bloco de repetição end UFOP Programação de Computadores I Scilab Comando for com passo 1 for i 15 printf i g i end A variável de controle i é incrementada de 34 i 1 i 2 i 3 i 4 i 5 1 a cada interação Saída UFOP Programação de Computadores I Scilab Comando for com passo diferente de 1 for i 1210 printf i gi end 35 i 1 i 3 i 5 i 7 i 9 i varia de 2 em 2 Saída Repare que i não assumiu o limite superior do loop UFOP Programação de Computadores I Scilab Comando for com passo negativo for i 20216 printf i gi end 36 end i 20 i 18 i 16 Saída UFOP Programação de Computadores I Scilab Comando for com controle fracionário for x 00307 printf x gx A variável de controle pode assumir valores não inteiros 37 printf x gx end x 0 x 03 x 06 Saída UFOP Programação de Computadores I Scilab Equivalência comandos while e for for x 0210 bloco de comandos end x 0 38 x 0 while x 10 bloco de comandos x x 2 end UFOP Programação de Computadores I Scilab Programa fatorial de n Leitura e validação de n n inputEntre com o valor de n while n 0 printf O valor de n deve ser maior ou igual a 0 n inputEntre com o valor de n end 39 Cálculo do fatorial de n fat 1 if n 1 then for i 2n fat fat i end end Impressão do resultado printfO fatorial de g é g n fat UFOP Programação de Computadores I Scilab Programa Tabela de senos x senox 00 00000 02 01987 04 03894 40 04 03894 06 05646 08 07174 Parada x 2Π UFOP Programação de Computadores I Scilab Programa Tabela de senos 1ª versão Tabela da função Seno for x 0022pi printfg g x sinx end 41 end 0 002 019866904 038941806 056464208 07173561 Saída UFOP Programação de Computadores I Scilab Programa Tabela de senos 2ª versão Tabela da função Seno for x 0022pi printf g g x sinx end 42 0 0 02 0198669 04 0389418 06 0564642 08 0717356 1 0841471 12 0932039 Saída UFOP Programação de Computadores I Scilab Programa Tabela de senos 3ª versão Tabela da função Seno Impressão do cabeçalho printf x senox 43 Impressão das linhas da tabela for x 0022pi printf 31f 74f x sinx End UFOP Programação de Computadores I Scilab Saída do programa anterior x senox 00 00000 02 01987 04 03894 44 04 03894 06 05646 08 07174 10 08415 12 09320 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Indentagao Indentagao m Para o Scilab os dois programas sao absolutamente if delta 0 then printf Raizes complexas equivalentes else ox rl b sqrt delta 2a Para nos a disposiao do texto do programa afeta muito a r2 b sqrt delta 2a legibilidade printf rlg e r2gr14r2 end Qualquer bloco de comando é mais facilmente identificado com indentagao if delta 0 then Assi veis fl d x0 fi is cl printRaizes complexas Assim os possiveis fluxos de execugio ficam mais claros etse Menos legivel rl b sqrt delta 2a r2 b sqrt delta 2a printf rlg e r2gr14r2 end 45 46 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Strings Concatenagao de strings m Até o momento as variaveis definidas armazenam apenas m Strings podem ser concatenados justapostos valores numéricos ou légicos m Varidveis podem armazenar também valores alfanuméricos cadeias de caracteres denominados strings a Programacgao a Programagao a b de Programacdo c Computadores b de b de Disciplina atbo c Computadores Disciplina c Programagao de Computadores Computadores 47 48 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Strings contendo aspas Strings contendo aspas Como ja visto o Scilab usa aspas para reconhecer o m Para representar strings com aspas devese colocar duas comeco e o fim de um string aspas consecutivas na posicao desejada Como entao representar strings que contém aspas x String com aspas dupla Cy x am mT String Geom aspas duplas 72x String com aspas x Strin C com as as simple error 276 tring Pp simples Missing operator comma or semicolon g oP String Qcom aspas simple 49 50 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Strings de digitos Programa passou nao passou m Strings formados por digitos nao sao valores numéricos m Faca um programa em Scilab que leia o nome de um aluno format 16 eer pi leia o total de pontos feitos em uma disciplina pelo aluno Spi retorne conforme o caso uma frase do tipo 31415926535898 aluno com tantos pontos vocé passou StringPi 31415926535898 ou StringPi aluno com tantos pontos vocé ndo passou 31415926535898 2pi ans 62831853071796 2StringPi error 144 Undefined operation for the given operands 51 52 UFOP Programação de Computadores I Scilab Programa passou não passou Leitura do nome printfEscreva o seu nome entre aspas nomealuno inputNome Leitura dos pontos obtidos printf s quantos pontos você teve nomealuno nota inputPontos Impressão de mensagem com o resultado 53 Impressão de mensagem com o resultado if nota 60 then printfParabéns s Tendo feito g pontos você foi aprovado nomealuno nota else printfs ainda não foi desta vez Com g pontos você não foi aprovado nomealuno nota end UFOP Programação de Computadores I Scilab Programa passou não passou printfEscreva o seu nome entre aspas nomealuno inputNome Comandos Mudança de linha Para obter aspas 54 Escreva o seu nome entre aspas Nome Fulano Efeito Bug do Scilab 511 O string não pode conter acentos ou cedilhas UFOP Programação de Computadores I Scilab Programa passou não passou printf s quantos pontos você teve nomealuno indicam ao Scilab que o comando continua na linha seguinte Para imprimir uma variável string Comandos 55 nomealuno nota inputPontos Fulano quantos pontos você teve Pontos 47 Efeito UFOP Programação de Computadores I Scilab Programa passou não passou if nota 60 then printfParabéns s Tendo feito g pontos você foi aprovado nomealuno nota else printfs ainda não foi desta vez Comandos 56 printfs ainda não foi desta vez Com g pontos você não foi aprovado nomealuno nota end Fulano ainda não foi desta vez Com 47 pontos você não foi aprovado Efeito UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Processo de repeticao Processo de repeticao Calculo das raizes de diversas equagdes de 20 grau continua t continua t while continua while continua a input Digite o valor de a Comandos quaisquer b input Digite o valor de b c input Digite o valor de c oo delta b2 4ac Decisdo sobre a continuagao do programa if delta 0 then decisao x1 btsqrt delta 2a x2 bsqrt delta 2a W 9 W W W input Deseja continuarsn string printf As raizes sio g e g x1 x2 continua decisao s AA else end fied printf As raizes sdo complexas md owe ny Aes end printf Término da repetiao i for Decisao de continuagdo pelo usuario continua decisao s end Le Ee ee ee She ee See eee Printf Término do programa 57 58 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Comandos aninhados Comandos aninhados Blocos internos a comandos condicionais e comandos de Por exemplo blocos entao ou senao de ifs podem repetiao podem conter qualquer tipo de comando conter qualquer tipo de comando inclusive outros ifs incluindo ote i ica comandos de atribuiao if Fy nomena 1 then comandos comandos de entrada e saida de dados x if condigao 2 then outros comandos condicionais e de repeticao comandos E lidad flexibilidade ense m Esta generali ade proporciona uma imensa flexibilidade a if condigao 3 then programacao comandos end end end 59 60 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa conceitos e notas Programa conceitos e notas a Faga um programa Scilab que is note ne oe dos dados de entrada m leiao nome e a nota de um aluno em uma determinada a disciplina if Nota 80 then Conceito B m retorne 0 conceito correspondente segundo a tabela else if Nota 70 then Conceito C else 90 Nota 100 A a note see 80 Nota 90 B else 70 Nota 80 c oe eee een 60 Nota 70 D else 40 Nota 60 E 0 Nota 40 F end end end end apresentagdo do resultado 61 62 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab A importancia da indentagao Programa tabuada if Nota 90 then if Nota 90 then m Faca um programa em Scilab que gere a seguinte tabela de Conceito A Conceito A else else tabuada de multiplicagao if Nota 80 then if Nota 80 then Conceito B Conceito B 1 2 3 4 5 6 7 8 9 else else if Nota 70 then if Nota 70 then 2 4 6 8 10 12 14 16 18 Conceito C Conceito C else else 3 6 91215 18 21 24 27 if Nota 60 then if Nota 60 then Conceito D Conceito D 4 8 12 16 20 24 28 32 36 else else if Nota 40 then if Nota 40 then 5 10 15 20 25 30 35 40 45 Conceito E Conceito E else else 6 12 18 24 30 36 42 48 54 Conceito F Conceito F end end 7 14 21 28 35 42 49 56 63 end end end end Ny 8 16 24 32 40 48 56 64 72 end end 29 end end legs 9 18 27 36 45 54 63 72 81 Vey 63 64 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa tabuada 1 versao Programa tabuada m Ao executar 0 programa anterior verificase a saida nao Tabuada de multiplicagao esta legivel for linha 19 1234567892468 1012141618369121518212 for coluna 19 4 m E preciso 7 W W 7 printf g linhacoluna apos a impressao de uma linha mudar de linha com 0 end dentro de cada linha imprimir cada valor em um nimero end fixo de colunas Corpo do loop Corpo do loop externo imprime interno imprime uma uma linha coluna de uma linha 65 66 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa tabuada 2 versao Arquivos m Arquivos correspondem a unidades de armazenamento Tabuada de multiplicagao tipicamente gravados em disco magnético for linha 19 oo m Sistemas operacionais como Linux ou Windows for coluna 19 permitem que arquivos sejam criados e recuperados por printf 3glinhacoluna um nome e pela posicao em uma hierarquia de diretérios a z m relagao ao Scilab existem alguns tipos de arquivos Cédigo de formatagao gs printf si que podem ser lidos criados ou modificados end m Serao apresentados apenas arquivos ASCII arquivos p p q q legiveis por humanos que podem ser editados por Fora do loop interno exemplo usando 0 Bloco de Notas 67 68 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Comandos basicos para uso de arquivos Comando uigetfile uigetfile Permite a selegéo de um arquivo por meio de navegacao nos diretérios do Windows ou de outro sistema operacional como o Linux nomearg uigetfile pwd Escolha um arquivo mopen e mclose Permitem a abertura e o fechamento de arquivos possibilitando ST a respectivamente iniciar e finalizar a manipulacgdéo dos mesmos TBSP ea semene cr 4 domo mfscanf 2 Bein Permite a leitura de valores contidos em arquivos abertos para varidveis Desktop E ResultadosEqzg5 mfprintf 2 Permite a gravacao de valores de varidveis em arquivos abertos pt gs o meof My a Permite verificar se o fim de um arquivo aberto foi atingido er Ld aces Flesof type ay files 3 6 all fil 70 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Comando uigetfile Comandos mopen e mclose m Apos a escolha de um arquivo a variavel nomearq recebe Um arquivo fora de uso esta total e tipicamente como valor um string com 0 nome completo do arquivo armazenado em disco nomearg CUsersFulanoEnsinoPC1MeuArquivotxt m Um arquivo em uso tem parte de sua informacao em disco e parte em meméria principal m A partir dai a varidvel nomearg pode ser usada para abrir 0 arquivo correspondente A abertura de um arquivo por meio do comando mopen traz para a memoria informa6es necessarias para 0 seu te os uso O nome de arquivo escolhido pode ser novo ou ja existir O fechamento de um arquivo por meio do comando mclose grava em disco todas as informagées presentes em mem6oria 71 72 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Comando mopen Comando mclose arq mopenNomeCompletoDoArquivo r 73 74 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Comando mfscanf Comando mfscanf Considere 0 seguinte arquivo ASCII aberto B a2 40 21 14 5 25 0 63 0 n lista de varidveis mfscanfarg formato Ocomando n a b c mfscanfarq g g g em Sua primeira execucao faz n3 a8 b32 e c 40 em sua segunda execugao faz n3 a7 b21 e c14 m e assim sucessivamente 75 76 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Comando mfprintf Comando meof oo meof arq mfprintf arg frase lista de variaveis er m Uso comum while meof arq leitura de dados em uma linha do arquivo n a b c mfscanf arg Sg g g processamento dos dados da linha lida end 77 78 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa multiplas equagdes de 2 Grau Programa multiplas equagdes de 2 Grau Modifique o programa da equacao de 2 grau de tal As primeiras linhas do arquivo de entrada sao forma que se possa calcular as raizes de uma quantidade 5 5 inEq2g Notepad By al Set nao determinada de equacgoes de segundo grau cujos ieee coeficientes estéo em um arquivo de entrada File Edit Format View Help 8 3240 i m O arquivo possui em cada linha os coeficientes a b e c de oa a rE uma equacao de 2 grau separados por um ou mais espacos 7 Ge 0 4 56 192 5 70 240 m O programa devera produzir um arquivo de saida de tal 8 48 128 4 16 48 forma que em cada linha devem constar os coeficientes e 5 55 150 as raizes reais encontradas de uma equacao de 2 grau 5 illp oe x 5 3035 m Para uma equacao de 2 grau cujo delta for negativo o 7 4 35 a programa deve gravar os coeficientes e a mensagem nado 4 p existem rafzes reais no arquivo de safda 79 80 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa multiplas equagdes de 2 Grau Programa multiplas equagdes de 2 Grau Estrutura geral do programa Localizacdo dos arquivos de entrada e saida Localizagéo dos arquivos de entrada e de saida NomeE uigetfiletxt pwd Entrada Abertura dos arquivos de entrada e de saida NomeS uigetfiletxt pwd Saida Processamento do arquivo de entrada envolvendo leitura dos coeficientes de uma equagao calculo da equagdo do 2 grau referente escrita dos resultados no arquivo de saida Fechamento dos arquivos de entrada e de saida 81 82 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa multiplas equagdes de 2 Grau Programa multiplas equagdes de 2 Grau m Abertura dos arquivos de entrada e saida m Processamento dos arquivos de entrada e saida while meof argE n a b c mfscanfargE Sg g g delta b2 4ac if delta 0 then argE mopenNomeE r x1 b sqrt delta 2a argqS mopenNomeS w x2 b sqrt delta 2a mfprintf argS8g 8g 8g 8g 8g a b c x1 x2 else mfprintf argS8g 8g 8g s a b c nao existem raizes reais end end 83 84 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa multiplas equagdes de 2 Grau Matrizes m Fechamento dos arquivos de entrada e saida m Matrizes s4o variaveis que contém uma quantidade potencialmente grande de valores E no tratamento de matrizes que o Scilab mostra grande mclose argE superioridade sobre linguagens como C Fortran ou Java mclose ardS A 1 2 3 4 5 6 A 1 2 3 4 5 6 85 86 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Matrizes Obtendo o valor de um elemento da matriz Todas as variaveis Scilab sao a principio matrizes A 1 2 3 4 5 6 A x 7 x 1 2 a 7 fn 1lc size x c e A23 1 1 e 1 6 87 88 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Atribuindo um valor a um elemento da matriz Vetores m Vetores sio matrizes de uma Unica linha ou de uma tinica coluna A12 33 v 10 20 30 V 10 20 30 A u 10 20 30 Sy 10 4 fae 6 as 20 30 89 90 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Expansao de uma matriz Atribuindo um valor a uma parte de uma matriz m Uma matriz cresce quando se atribui valores a elementos x ainda nao existentes No caso as lacunas geradas sao 23 30 29 50 91 28 68 completadas com Zeros 23 93 56 43 4 12 15 21 21 48 26 48 77 69 88 31 33 63 26 21 84 x7 matriz 1x1 65 36 59 40 41 al 40 23 13 x2435 1 x x ny 0 0 13 Se ee 91 92 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Atribuindo valores a uma parte de uma matriz Obtendo os valores de uma linha de uma matriz x x 40 58 38 73 53 4 58 87 68 9226 67 a a 11 89 94 49 22 20 22 a 39 94 19 a 30 a 19 50 34 26 62 39 84 56 34 37 5D 76 83 1D 19 50 34 26 62 39 84 56 34 37 52 76 83 12 om 324 28 1 23 4 a 22 a 0 58 38 73 53 4 58 93 94 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Obtendo os valores de colunas de uma matriz Aritmética matricial Como todas as varidveis Scilab sAo matrizes as operagdes x a aritméticas usuais sao entendidas pelo one Scilab como operacées matriciais 41 11 ee eee 37 52 m Operacoes escalares usam os mesmos simbolos b x35 44s 4 non b aritméticos porém precedidos por um ponto como 68 40 58 por exemplo e 15 87 68 69 11 89 84 19 50 40 56 34 95 96 Adicao e subtragao de matrizes Produto matricial m Matrizes de mesmas dimens6es podem ser somadas ou subtrafdas x 1 2 3 45 6 x x 1 2 3 45 6 1 2 3 y 10 20 30 40 50 60 4 5 6 x y y 10 20 30 40 50 60 ans y 11 22 33 tone 44 55 66 50 60 73x y x y ans ans 9 18 27 220 280 36 45 54 490 640 Produto elemento a elemento de matrizes Multiplicagao de matriz por escalar x 1 2 3 4 12 y 10 20 30 40 Tex 1 2 3 45 6 xy oy ome ans Y 70 100 y 150 220 y BS ans 2 8 0 10 40 90 160 UFOP Programação de Computadores I Scilab Exponenciação em matrizes x 1 2 3 4 x2 ans 7 10 Produto matricial x x 101 7 10 15 22 x 2 ans 1 4 9 16 Exponenciação elemento a elemento UFOP Programação de Computadores I Scilab Matriz transposta A 1 2 3 4 5 6 7 33 9 102 7 33 9 B A B 1 4 7 2 5 33 3 6 9 A é a transposta da matriz A UFOP Programação de Computadores I Scilab Matriz inversa A 4 7 6 2 2 1 1 1 6 A função inv retorna a matriz 103 IA invA IA 03333333 10909091 01515152 03333333 05454545 02424242 0 00909091 01818182 A função inv retorna a matriz inversa de uma matriz UFOP Programação de Computadores I Scilab Matriz inversa A IA ans 1 0 4441D16 1110D16 1 1110D16 Erro de aproximação 104 1110D16 1 1110D16 5551D17 0 1 IA A ans 1 8327D17 0 0 1 0 0 0 1 Programa sistemas de equagoées lineares Programa sistemas de equagoes lineares m Um sistema de equacoes lineares ax b pode ser resolvido pela inversa de uma matriz a 2 1 3 2114 1 3 Multiplicando os dois lados do sistema por a temse b 4 O01 aftaxxa b x invab 4 x Resolva um sistema de equagées lineares por meio do Scilab considerando 0 1666667 13333333 2 1 3 4 1 a 12 1 1 b10 4 1 3 1 Programa sistemas de equacoes lineares Construcao de vetores regulares m A precisao do resultado calculado pode ser avaliada Vetores com valores regularmente espacados podem ser calculando ax b que deve ser zero construidos de forma similar a utilizada no comando for residuo ax b 7x 1015 x residuo 10 a1 42 13 0 1110D16 x 120510 0 12 115 11 105 10 Funcao linspace Fungoes zeros e ones m E utilizada para criar um vetor regular especificando seus m S4o utilizadas para criar matrizes com apenas elementos limites e o numero de pontos desejados Zeros e uns respectivamente Para tanto devese passar a dimensao desejada da matriz x zeros 23 x x linspace0103 0 0 0 x 0 0 0 0 5 10 x linspace 010 6 7y ones 23 x y 0 2 4 6 8 10 1 1 1 1 1 1 Funcao eye Funcaéo rand m E utilizada para criar uma matriz identidade Para tanto m E utilizada para criar uma matriz com elementos aleatorios devese passar a dimensao desejada da matriz Para tanto devese passar a dimensao desejada da matriz Gera nimeros aleatérios entre 0e 1 I eye4 4 A cada chamada gera novos nimeros yo m rand 23 0 1 0 0 nS 0 0 1 0 02113249 00002211 06653811 07560439 03303271 06283918 0 0 0 1 n rand2 3 n 08497452 08782165 05608486 06857310 00683740 06623569 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Funcao rand Construindo matrizes a partir de matrizes x 1 2 3 4 y 10 20 30 40 z x y Z m 3 4 30 40 21 0 66 z x y 75 33 62 z 1 2 3 4 10 20 30 40 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Fungoes Scilab sao matriciais Vetores e graficos m Se uma determinada fungao for ativada com um argumento Vetores s4o muito Uteis para a construgao de graficos matricial seu resultado sera uma matriz Ocomando mais simples é plot2dxy ondexey x 008pi sao vetores com as mesmas dimenso6es x Tal comando constréi um grafico unindo por retas os 0 08 16 24 pontos com coordenadas x 1 y 1 2 y 2 WIA x 3 3 y sinx y QO 07173561 09995736 06754632 UFOP Programação de Computadores I Scilab Vetores e gráficos x 1 4 7 11 y 12 6 15 7 plot2dxy 14 15 715 117 1 2 3 4 5 6 7 8 9 10 11 6 7 8 9 10 11 12 13 112 46 117 UFOP Programação de Computadores I Scilab Vetores e gráficos x 2 5 3 4 y 3 1 4 7 plot2dxy 47 118 23 51 34 UFOP Programação de Computadores I Scilab Gráfico senox 1ª Versão x 0083pi y sinx plot2dxy 06 08 10 O espaçamento de 08 está grande 119 0 1 2 3 4 5 6 7 8 9 10 08 06 04 02 00 02 04 UFOP Programação de Computadores I Scilab Gráfico senox 2ª Versão x 0013pi y sinx plot2dxy O espaçamento de 01 está bem melhor 06 08 10 120 0 1 2 3 4 5 6 7 8 9 10 10 08 06 04 02 00 02 04 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Grafico com varias curvas Grafico com varias curvas m A func4o plot 2d pode ser usada para tragar varias curvas x linspace0 3pi 101 m Nocaso plot2dxM onde ve AX m x éum vetor coluna e Méuma matriz com o mesmo nimero de linhas de x gera um grafico de x versus cada coluna de M 024 10 UN if 0 1 2 3 4 5 6 7 8 9 10 121 122 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Matrizes de strings Leitura de arquivos como matrizes de strings a sl s2 Ocomandos mgetlarq onde arqéo a apontador de um arquivo ja aberto 1é todas as linhas do arquivo referenciado por arg e coloca cada uma delas Isl 2 1 como um elemento do vetor coluna de strings s s s ee SJ loséNotepad Eh m Exemplificacao de uso b si s2 fie Ee Foemat Sew tip y ao b fpath uigetfile A festa acabou g arq mopenfpath r 2 WMzs22g0u ite esfriou tel linhas mgetlarq 2 agora J0Sé Ss mclose arq e agora vocé voce que sem nome gue zomba dos outros vocé que faz versas s2 que ama protesta e agora José il 4 b 123 124 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Leitura de arquivos como matrizes de strings Matrizes numéricas e arquivos no Scilab m Este programa usado com 0 arquivo José produz Os comandos ja vistos de leitura e gravacao de arquivos tinh podem ser usados para a leitura de matrizes mas o Scilab Zs 1 wane ae oferece mecanismos mais simples através dos comandos A festa acabou a luz apagou m Estes comandos leém ou gravam arquivos que contém i x i Povo sumeu somente nimeros em formato tabular 4 excecao das a noite esfriou TT le agora José primeiras linhas que podem conter textos e agora vocé vocé que é sem nome m A abertura e 0 fechamento dos arquivos sao feitas que zomba dos outros automaticamente voc6é que faz versos que ama protesta e agora José 125 126 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Comando fprintfMat Comando fprintfMat a 1 2 3 45 6 7 8 9 arg uigetfile Cabecalho Meus Dados Coll Col2 Col13 fprintfMat arg a 52 Cabecalho fprintfMat arg m 52f Cabecalho 5 Exemplo fprintfMat 20liaaea File Edit Format View Help Meus Dados Coll Col col3 100 200 300 400 500 600 700 800 900 i 4 k 127 128 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Comando fscanfMat Comando fscanfMat arquivo uigetfile m fscanfMat arquivo m fscanfMat arq m 1 2 3 4 5 6 7 8 9 129 130 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa Clima em Belo Horizonte Programa Clima em Belo Horizonte m Faca um programa que lien Er Noteped a i mes Leiao arquivo apresentado para uma matriz ClimaBH ae usando a funao fs canfMat que ignora linhas de Mes Maxima Media Minima Media Maxima Record Minima Record Precipitacao 4 cabegalho em um arquivo 5 ae is ie in ae Da matriz ClimaBH extraia os vetores MaxMed MinMed 3 286 188 334 128 1635 i i ionifi Sbvj 3 z86 188 334 8 163 MaxRec MinRec e Precip com significados 6bvios 2 se ih io oi OE Gere um grafico que tenha simultaneamente os valores de 7 246 131 304 54 157 MaxMed MinMed MaxRec e MinRec 8 265 144 338 72 137 9 272 162 347 92 405 10 277 175 369 114 1231 ral 275 182 4 91 2276 12 273 184 44 135 3194 1 hea 131 132 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa Clima em Belo Horizonte Programa Clima em Belo Horizonte Temperaturas Mensais em BH arqClima uigetfile ClimaBH fscanfMat arqClima 35 MaxMed ClimaBH2 MaxMed 2a coluna MinMed ClimaBH3 MinMed 3a coluna MaxRec ClimaBH4 MaxRec 4a coluna 0 MinRec ClimaBH5 MinRec 5a coluna 6 Precip ClimaBH6 Precip 6a coluna g 20 plot2d112 MaxMed MinMed MaxRec MinRec legMaxMedMinMedMaxRecMinRec 10 xtitleTemperaturas Mensais em BHMésGraus C 2 4 6 8 10 12 iitnsd mes Minfec 133 134 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Matrizes e express6es légicas Matrizes e express6es légicas Oresultado de uma expressao Idgica envolvendo matrizes Z as a 3 9 12 1 é uma matriz de valores ldégicos x 0 y 0 a 3 7 8 2 a 3 7 8 2 if a 5 then x 10000 end a if a 0 then y 10000 end 3 7 b 5 6 7 8 x y 8 2 ans aes sash 0 10000 aa5 1 ans ans FT FT a TF TF 3 1 il 1 135 136 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Fungoes Programa numero de combinagoes m Funcoes constituem ferramenta essencial para a m Faca um programa em Scilab que modularizaao de cédigo leia 2 inteirosnek m calcule e apresente o numero de combinacoes de n por k m Vantagens dado pela formula Permitem reaproveitamento de cédigo m Permitem divisao de tarefas rans n n Tornam cédigo mais legivel k nkIk 137 138 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa nimero de combinacgées Programa nimero de combinagées m Uma das formas de se calcular o fatorial de um nimero n inputn k input k inteiro positivo qualquer é fatn 1 CAlculo do fatorial de n for i 2n fat 1 fatn fatn i for i 2n end kos fatnk 1 CAlculo do fatorial de nk fat fat i for i 2 nk end fatnk fatnk i end 24 oo fatk 1 CAalculo do fatorial de k No caso 0 cédigo deve ser adaptado no intuito de se for i 2 k calcular os fatoriais de n nk ek fatk fatk i end nComb fatnfatnk fatk printf Resultado g nComb 139 140 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa nimero de combinacgées Parametros formais de uma fungao Fungao function fat fatorial n fat 1 for i 2n fat fat i end function fat fatorialn endfunction fat 1 for i 2n Programa principal fat fat i n inputn k inputk d nComb fatorialn fatorial nk fatorial k en printf Resultado g nComb endfunction 141 142 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Parametros formais e reais de uma funcgao Parametros formais e reais de uma fungao m Os pardmetros formais de entrada recebem os valores dos paradmetros reais de entrada Assim 0 controle é transferido para a funcao que trabalha sobre os parametros formais function rl r2 eq2gabc delta b2 4ac m Alteragées feitas pela fungao sobre os parametros formais rl b sqrtdelta2a de entrada nao afetam os pardmetros reais correspondentes r2 b sqrtdelta2a Assim varidveis criadas pela fungao nao se misturam com endfunction varidveis de mesmo nome existentes no programa que chama a funao Os pardmetros reais de saida recebem os valores dos Chamada da fungao eq2g paradmetros formais de saida calculados pela fungao raizlraiz2 eq2gxyzZ Assim 0 controle é devolvido para 0 ponto de chamada 143 144 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Arquivo com uma fungao Comando exec m Uma funcao é escrita normalmente em um arquivo 7 com oO mesmo nome da fungéo exec eq2g Sc1 com a extensdo SCi um programa tem a extensdo SCe raizlraiz2 eq2gxy 2 SciPad eq2gsci Kole as ee Um programa Scilab sé reconhece a existéncia de uma function r1 r2 eq2gabc delta b2 date fungao criada pelo programador por meio do comando rl b sqrt delta 2a exec r2 b sqrt delta 2a endfunction m O arquivo sci com a funcgao deve estar no mesmo diretério do programa que chama a fungao Line 6 Column 1 Para utilizar uma funao em um programa Scilab use execarquivo com a funao em tal programa 145 146 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa principal e fungdes em um Unico arquivo Encadeamento de chamadas 2 Uma outra forma de se trabalhar com fungoes é construir um function nComb combinacoes nk unico arquivo onde fung6es precedem o programa principal nComb fatorialn Solucdo mais simples porém dificulta reaproveitamento e fatorialnk fatorialkj manutengao endfunction function fat fatorial n fat 1 for i 2n fat fat i end Programa principal endfunction exec combinacoessci n input n k inputk exec fatorialsci nComb fatorialn fatorial nk fatorial k n input n k input k printf Resultado g nComb printf nCombdd dnkcombinacoesnk 147 148 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Encadeamento de chamadas Fungao soma dos elementos de um vetor m Faca uma fungao para calcular a soma dos elementos de um vetor de valores numéricos Programa Dados de entrada um vetor parametro de entrada principal Dados de saida soma dos elementos do vetor pardmetro de saida Funcdo function s soma A combinacoes Calcula a soma dos elementos do vetor A s 0 Funcdo for k 1length A fatorial s s Ak end endfunction 149 150 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa principal teste da fungao soma Execucao do programa principal exec somasci a 3 3 2 5 a int10rand1 4 Soma 13 sa somaa printf Soma g sa b b int10rand1 6 4 3 5 5 4 2 sb somab Soma 23 printf Soma g sb c c int10rand1 9 64 9 0 A 2 A 2 1 sc somac Soma 32 printf Soma g sc 161 152 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Fungao menor elemento de um vetor Programa principal teste da funcao menor m Faca uma funcao para retornar o menor elemento de um n oo exec menorsci vetor de valores numéricos Dados de entrada um vetor parametro de entrada a int10rand14 Dados de saida menor elemento do vetor parametro de ma menor a saida printf Menor g ma Encontra o menor elemento do vetor A m A1 mb menor b for k 2lengthA printf Menor g mb if Ak th m Atk ec int 10rand19 end mc menor c end printf Menor g mc endfunction 153 154 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Fungao nimero primo Programa principal teste da funcao ehPrimo m Faca uma funcao para retornar se um determinado numero inteiro maior que é primo ou nao exec ehPrimosci m Dados de entrada vee we de for i 2100 Dados de saida valor l6gico parametro de saida if ehPrimoi then 7 W A 7 W 1 function primo ehPrimon printf sg primo i 9 end d 2 4 while modulond 0 en ddtl1 end primo d n endfunction 155 156 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Recursividade Fungao fatorial recursivo m Sabese que uma funcao pode chamar outra fungao m Uma definicao recursiva formal de fatorial é m que pode chamar outra funcao mlle que pode chamar outra fungao mnnxn1 paran 1 assim sucessivamente function fat fatorialRn m Uma funcao também pode chamar a si propria if n 1 then Nesta caso a funcao é dita recursiva fat 1 m Pod i funa i 1 etse se criar uma funcao recursi odese criar uma fungao recursiva para se resolver um fat n fatorialRn1 determinado problema quando a definiao de tal problema end baseiase nele proprio endfunction 157 158 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Programa principal teste da funao fatorialR Fungao fatorial recursivo com mensagens exec fatorialRsci function fat fatorialRn printf Iniciando fatorialRdn n n if n 1 then n inputn fat 1 else while n 0 do fat n fatorialRn1 printf Sd d n fatorialRn end n input n printf Retornando fatorialRd dn fat endfunction end 159 160 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Fungao fatorial recursivo com mensagens Pilha de execucao chamadas e retornos m Execucdo de fatorialR5 Fat1 Iniciando fatorialR5 Iniciando fatorialR 4 Fat2 J Fat2 J Fat2 Iniciando fatorialR 3 OW EO AclOM ROM fc Iniciando fatorialR2 Fat4 J Fat4 J Fat4 Bf Fat4 Fat4 J Fat4 Fat4 Iniciando fatorialR1 w w w w v v v Retornando fatorialR2 2 Prog J Prog J Prog Mf Prog Prog J Prog J Prog Prog Prog Retornando fatorialR3 6 es Retornando fatorialR4 24 Retornando fatorialR5 120 Chamadas Retornos 161 162 UFOP Programagao de Computadores Scilab UFOP Programagao de Computadores Scilab Fungao recursiva menor elemento de um vetor Fungao recursiva menor elemento de um vetor aE possivel formular o algoritmo de descoberta do menor function m menorR A elemento em um vetor como uma fungao recursiva if lengthA 1 then m A1 Uma possibilidade é else m Se lengthA 10 menor valoremAéA1 metade int length A 2 m Se lengthA 10 menor valor em A é 0 menor menorEsq menorR A1metade dentre o menor valor na metade esquerda de A e 0 menor menoxrDir menorR A metadet1 length A valor na metade direita de A if menorEsq menorDir then m menorEsq else m menorDir end end endfunction 163 164