of 73/73
1 CENTRO UNIVERSITÁRIO UNA INSTITUTO POLITÉCNICO ALGORITMOS E LÓGICA DE PROGRAMAÇÃO PRÁTICAS DE LABORATÓRIO 2014/1

Scilab Apostila Una

  • View
    58

  • Download
    17

Embed Size (px)

DESCRIPTION

.

Text of Scilab Apostila Una

  • 1

    CENTRO UNIVERSITRIO UNA INSTITUTO POLITCNICO

    ALGORITMOS E LGICA DE PROGRAMAO

    PRTICAS DE LABORATRIO

    2014/1

  • 2

    Sumrio

    LINK PARA DOWNLOAD DO SOFTWARE SCILAB 4 INTRODUO 4 O AMBIENTE SCILAB 4 A JANELA CONSOLE SCILAB 4 JANELA DE COMANDO 5 A JANELA HISTRICO DE COMANDOS 6 SCINOTES 6 NAVEGADOR DE VARIVEIS 7 NAVEGADOR AJUDA 7 DESENVOLVENDO ARQUIVOS .SCE 8 DECLARAO DE VARIVEIS E CONSTANTES 9 COMANDOS BSICOS DE ENTRADA E SADA 9 COMANDO DE SADA 9 COMANDOS DE ENTRADA 11 OPERADORES 11 1. ESTRUTURA SEQUENCIAL 17 EXERCCIOS ESTRUTURA SEQUENCIAL: 18 PROJETO FINAL 1 : CLCULO DE CARGA TRMICA PARA UMA CMARA DE

    RESFRIAMENTO. 21 2. ESTRUTURA CONDICIONAL 24 O COMANDO IF ELSE. 24 ESTRUTURA CONDICIONAL - IF-ELSEIF-ELSE 25 EXERCCIOS ESTRUTURA CONDICIONAL: 27 PROJETO FINAL 2 : DESENVOLVIMENTO DE UM CONVERSOR DE UNIDADES. 30 3. ESTRUTURAS DE REPETIO 33 O COMANDO FOR 33 O COMANDO WHILE 38

  • 3

    EXERCCIOS LAOS DE REPETIO 41 4. VETORES E GRFICOS 44 INSERINDO VALORES EM UM VETOR 46 INSERO DIRETA 46 INSERO POR MEIO DE UM USURIO 46 MOSTRANDO OS VALORES DE UM VETOR (SADA DE DADOS) 46 SADA DIRETA 46 SADA POR LAO DE REPETIO 46 CONSTRUINDO GRFICOS 47 CONSTRUINDO GRFICOS 2D 47 AJUSTANDO TTULOS E EIXOS 49 EXERCCIOS - VETOR 57 PROJETO FINAL 3 : SIMULAO ! 58 5. MATRIZES 60 INSERINDO VALORES EM UMA MATRIZ 61 INSERO DIRETA 62 INSERO POR MEIO DE UM USURIO 62 MOSTRANDO OS VALORES DE UMA MATRIZ (SADA DE DADOS) 62 SADA DIRETA 62 SADA POR LAO DE REPETIO 62 PROJETO FINAL 4 : COMPREENDENDO MATRIZES PARA A GERAO DE GRFICOS

    TRIDIMENSIONAIS 67

  • 4

    Link para download do software SCILAB

    http://www.scilab.org

    Introduo

    Existem vrias abordagens para se ensinar os fundamentos do SCILAB. Este

    material tem como objetivo fazer uma introduo ao SCILAB do ponto de

    vista de um usurio da linguagem C.

    Como C/C++ e outras linguagens de programao, o SCILAB, possui

    operadores: aritmticos, lgicos, condicionais, repetio e outros mais.

    Este captulo vai introduzir a ferramenta SCILAB e explorar os seguintes

    conceitos:

    O ambiente SCILAB

    Com o passar dos anos o SCILAB vm se popularizando no apenas pela

    versatilidade, mas tambm pela sua interface, que permite um ambiente

    amigvel e interativo em que algoritmos bsicos e avanados, envolvendo

    clculos e simulaes podem ser facilmente executados.

    O SCILAB apresenta vrias janelas que ajudam e permitem que todas as

    atividades sejam realizadas pelo usurio. As janelas possuem funes

    distintas e sero exemplificadas e explicadas nas sees a seguir.

    A janela console SCILAB

    A janela principal chamada de console. Esta a janela inicial onde as

    principais interaes no SCILAB acontecem. A janela console gerencia as

    sub-janelas associadas a ela. Estas sub-janelas esto localizadas e visveis

    junto da janela console.

  • 5

    Figura 1 Janela console SCILAB

    Janela de comando

    A janela de comando uma sub-janela em que o usurio pode digitar

    comandos ou instrues a serem processadas no SCILAB. A janela de

    comando vai mostrar o prompt --> , sinal que simboliza que o SCILAB est

    pronto para receber instrues. Uma vez digitada a instruo e a tecla enter

    for digitada, a instruo imediatamente executada.

    Figura 2 Janela de comando SCILAB.

  • 6

    A janela Histrico de Comandos

    A janela de histrico contm todos os comandos ou estruturas anteriormente

    executadas na janela de comando.

    Figura 3 Janela histrico de comandos

    SciNotes

    A janela SciNotes (editor) disponibiliza um espao onde os arquivos .sci

    podero ser criados e editados para a execuo. Arquivos .sci tambm

    podem ser abertos ou re-editados e executados. Para ter acesso ao SciNotes

    basta clicar na opo aplicativos da janela (principal) console SCILAB.

    Figura 4 Janela do editor SciNotes

  • 7

    Navegador de variveis

    a sub-janela onde so carregadas, consultadas e salvas as variveis.

    Figura 5 Janela navegador de variveis

    Perceba na figura acima que todas as variveis que foram criadas, foram

    listadas e classificadas quanto ao seu tipo, dimenso e visibilidade. Um duplo

    clique em cada uma destas variveis, na janela navegador de variveis,

    permitir que voc acesse o contedo da varivel selecionada.

    Navegador Ajuda

    A janela ajuda permite acesso a todo o contedo de ajuda do SCILAB. Voc

    pode fazer a busca por informao de ajuda por diretrios organizados por

    pacotes de aplicao, ou fazer uma busca por nome de comando, funo ou

    at mesmo aplicao desejada. Para acessar o contedo ajuda, basta clicar

    no cone da janela principal (console SCILAB). importante salientar

    que o help possui a descrio de todos os comandos e trechos prticos de

    implementao, que podem ser copiados e colados no SciNotes e em

    seguida executados.

  • 8

    Figura 6 Janela Ajuda.

    Desenvolvendo arquivos .sce

    Digitar um pequeno nmero de instrues na janela de comando pode ser

    fcil e conveniente. Porm o aumento do nmero de instrues, ou o uso

    aplicaes mais complexas comprometem toda a praticidade e facilidade da

    abordagem utilizando o prompt de comando ( --> ). Uma maneira mais

    adequada descrever estas instrues em um arquivo texto, onde a edio

    mais simples e depois solicitar ao SCILAB para carregar este arquivo e

    executar estas instrues como se estivessem sido digitadas na janela de

    comando. Desta maneira fica mais fcil para o usurio editar e modificar os

    programas e identificar possveis erros na execuo. Este tipo de arquivo

    texto contendo as instrues ao ( SCILAB ) chamado de arquivo .sci. O

    arquivo ganha este nome devido a extenso do nome do arquivo a ser

    reconhecido pelo SCILAB ser .sci . Todo o nosso contedo ser trabalhado

    utilizando os arquivos .sci.

  • 9

    Declarao de variveis e constantes

    Assim como C/C++, o SCILAB possui algumas regras para a escolha dos

    nomes na declarao de variveis e constantes. Estas limitaes devem ser

    consideradas e esto descritas a seguir:

    Os nomes de variveis e constantes devem ser compostos por letras,

    nmeros e / ou underscores. Os nomes tambm devem sempre

    iniciar com letras.

    As variveis ou constantes que por ventura vierem a ter palavras

    compostas no podem ter espaos entre as palavras. Neste caso

    aconselha-se fazer uso do underscore entre as palavras.

    O SCILAB case sensitive (difere letras maisculas de letras

    minsculas), portanto a varivel de nome numero distinta da

    varivel Numero.

    Comandos bsicos de entrada e sada

    Comando de sada

    O comando de sada utilizado ser o mprintf(). Ele permite mostrar mensagens, valores de variveis e/ou a combinao de ambos no prompt de

    comando.

    Sequncia de chamada

    mfprintf(< texto >,< varivel >) O campo texto pode ser qualquer caracter, texto, equao ou uma

    informao qualquer. A impresso do valor de uma varivel pode ser feita por

    meio da escolha do formato do tipo de dado seguido pelo nome da varivel.

    Veja o exemplo:

    mprintf(O valor da presso calculada %5.3f. \n,pressao)

  • 10

    O formato de uso deste comando semelhante ao formato utilizado para o

    comando printf em C. No exemplo acima, o especificador de formato

    %5.3f. Podemos interpretar este especificador como sendo:

    % ! Deve ser includo toda vez que se deseja especificar o formato de uma varivel.

    Tamanho (5 ou qualquer nmero) ! Esta parte do comando opcional e indica o tamanho total do valor mostrado, incluindo o ponto

    decimal.

    Preciso (3 ou qualquer nmero) ! Define a quantidade de casas decimais que sero mostradas na sada.

    Tipo de dado (d,f,e,g,c,s) ! Este tipo de informao necessria e as letras indicam o tipo de dado da varivel como

    indicado na tabela a seguir:

    Tabela 1 Tipos de especificadores

    Especificador Sada

    %d Inteiro %f Real %e Exponencial

    %g Menor formato possvel %c Caractere %s String

  • 11

    Tabela 2 Caracteres de controle

    Caracteres Significado

    \b backspace \n Nova linha

    \t Tab \\ Mostrar o caractere \ %% Mostrar o caractere %

    Uma alternativa para mostrar mensagens no prompt de comando o

    comando disp(),ao contrrio do comando mprintf() ele no permite que valores de variveis sejam mostrados conjugados com mensagens na

    tela. Ao optar pelo comando disp(),voc dever optar por mostrar a mensagem ou o valor da varivel, apenas um por comando. Veja no exemplo

    a seguir:

    disp( A temperatura medida no motor de 25 graus )

    Comandos de entrada

    O comando de entrada de dados utilizado no SCILAB o comando

    input(). Este comando permite que mensagens de texto sejam utilizadas para indicar a entrada de valores para uma varivel indicada. Veja um

    exemplo:

    temperatura=input(Digite a temperatura de ajuste do forno: )

    Aps digitado um valor pelo usurio, este valor ser atribudo varivel

    temperatura.

    Operadores

    Aps atribuir valores por meio do comando input() , o prximo passo ento processar os valores por meio das seguintes opes de operadores.

  • 12

    Tabela 3 Operadores Aritmticos

    Smbolo Significado

    + Adio

    - Subtrao

    * Multiplicao

    / Diviso

    ^ Potncia

    = Atribuio

    ( ) Parnteses ( utilize-o

    para impor regras)

    Tabela 4 Operadores relacionais

    Smbolo Significado

    > maior

    >= Maior ou igual

    < Menor

  • 13

    Tabela 5 Operadores lgicos

    Smbolo Significado

    & Operador e

    | Operador ou

    ~ Negao

    Para saber mais sobre a implementao de funes complexas (nmeros

    complexos), exponenciais (raiz quadrada e logaritmos), trigonomtricas

    (seno, cosseno, tangente), etc; v at o menu ajuda e consulte como feito o

    uso da funo de sua necessidade. Veja como fcil:

    Exemplo de como utilizar o ajuda em busca de uma funo desconhecida

    Eu gostaria de saber como eu fao para implementar o seno de um nmero

    e a raiz quadrada de um nmero

    Passo 1: V at a janela principal do SCILAB e clique no boto ajuda

    Passo 2: Na janela que se abrir voc visualizar esquerda da janela de ajuda o seguinte menu de opes.

  • 14

    Figura 7 Pacotes de funes especficas do menu ajuda.

    Passo 3: Escolha a pasta Funes Elementares. Voc dever visualizar as novas opes de funes como na figura a seguir. Observe que voc ter um

    conjunto de funes relacionadas para diversos contedos como: nmeros

    complexos, funes exponenciais, operaes com matrizes, ordenao e

    procura de valores, trigonometria, etc.

  • 15

    Figura 8 Conjunto de funes elementares do menu ajuda.

    Passo 4: Para visualizar como implementar o seno de um nmero vamos abrir a pasta trigonometria e selecionar a funo sin. Ao escolher a funo seno voc dever visualizar a seguinte janela;

    Figura 9 Tela de ajuda para a funo seno.

  • 16

    A janela apresentada na figura 9, possui informaes do tipo nome,

    sequncia de chamamento, parmetros, descrio e exemplos que podem

    ser copiados, colados e executados no scinote.

    Passo 5: Para calcular o seno de um nmero ou uma varivel a partir das informaes encontradas no menu ajuda, devemos ento executar o seguinte

    comando:

    y = sin(x);

    Passo 6: Se executarmos os passos de 1 a 3 e selecionarmos a pasta exponencial vamos chegar a seguinte informao para calcular a raiz

    quadrada de um nmero.

    y = sqrt(x);

  • 17

    1. ESTRUTURA SEQUENCIAL

    Chegou a hora de tentarmos apresentar alguns exemplos e desenvolver

    pequenos programas aplicando o que vimos anteriormente.

    Veja o exemplo 1.1:

    Desenvolva um programa que realize a soma entre dois nmeros

    1 clear; 2 clc; 3 mprintf("Entre com dois numeros. \n"); 4 num1 = input(" Primeiro numero: "); 5 num2 = input(" Segundo numero: "); 6 soma = num1 + num2; 7 mprintf("\n O resultado da soma %f ",soma); Linha 1: O comando clear limpa a memria do sistema.

    Linha 2: O comando clc limpa a janela de sada do SCILAB.

    Linhas 3 Mensagem para digitar 2 nmeros

    Linhas 4 e 5 : A funo input() solicita dois valores ao usurio e armazena os valores nas variveis num1 e num2.

    Linha 6: As duas variveis so processadas utilizando o sinal + para realizar a soma gerando um resultado, o qual armazenado na varivel soma.

    Linha 7: O comando mprintf() mostra a mensagem de sada e o valor da varivel soma.

    Comentrios: Uma prtica comum na programao em softwares de computao cientfica a utilizao dos comandos clear e clc. Aconselhamos

    a voc a sempre utilizar esses dois comandos ao iniciar um novo programa!

  • 18

    Exerccios estrutura sequencial:

    Exerccio 1. Faa um programa que solicite como entrada um valor de temperatura em graus Celsius (oC). Aps realizada a entrada faa a

    converso da temperatura para Kelvin (K). Aps realizada a converso

    mostre na sada do seu programa a temperatura em Kelvin e a temperatura

    em graus Celsius. Para realizar a converso utilize a relao: K = C +

    273,15;

    Veja um exemplo de como pode ser feita a sada do seu programa !

    Figura 10 Soluo exerccio 1

    Exerccio 2: hora de dar mais um passo a frente. Com base no seu programa anterior, acrescente a ele a converso da temperatura em graus

    Celsius para Kelvin e graus Celsius para grau Fahrenheit. Mantenha o mesmo padro de sada sugerido, acrescentando a converso para graus

    Fahrenheit. Para realizar a converso utilize a relao: K = C + 273,15; F =

    C 1,8 + 32

    Exerccio 3: Suponha que a altura h(t) de uma bola seja dada pela seguinte funo;

    h(t) = v0t gt22

  • 19

    em que:

    V0 a velocidade inicial da bola em metros por segundo (m/s);

    t o tempo em segundos (s);

    g a gravidade da terra = 9,81 m/s2

    Escreva um programa que calcular a altura de uma bola em um

    determinado tempo t. Esteja certo de usar bons nomes de variveis para

    todos os smbolos da frmula.

    Dica: Quais so as entradas deste problema? ( Que tipo de informao eu preciso do usurio para que eu possa calcular a altura da bola?)

    O que dever ser feito como processamento? ( O que este programa deve

    fazer?)

    O que voc espera como sada deste programa? Veja um exemplo !

    Exerccio 3: Uma aproximao ainda mais real pode ser feita para o problema apresentado no exerccio nmero 2. Desta vez temos uma equao que descreve a altura e outra equao que descreve a velocidade aps o

    lanamento.

    Suponha que uma bola de massa qualquer seja arremessada para cima

    numa velocidade v0 . Qual a velocidade v(t) e sua altura acima do

  • 20

    lanamento h(t) no instante t? A resposta, se desprezamos a resistncia do

    ar e um conjunto de outras pequenas influncias,

    v(t) = v0 gt

    h(t) = v0t gt22

    Onde = 9,81 m/s2 a acelerao da gravidade na superfcie da terra.

    Escrevamos um cdigo em SCILAB que solicita e t e ento informa as

    particularidades da bola (velocidade e altura).

    Exerccio 5. Consideremos um problema da eletrnica. Suponha que ns tenhamos trs resistores eltricos montados em paralelos, como mostrado na

    figura abaixo, e gostaramos de trat-lo como um simples resistor. Criemos

    um algoritmo para calcular a resistncia equivalente dos trs resistores

    paralelos, mas tratado como um.

    A lei de Ohm diz que a corrente Ii atravs do i-simo resistor proporcional queda da tenso V sobre o resistor, assim estas quantidades so associadas por V = RiIi onde Ri chamada a resistncia do resistor. A corrente total passando pelos trs resistores justamente a soma das trs

    correntes e a queda da tenso a mesma para todos os trs, assim:

    Itotal =VR1+VR2+VR3=V 1R1

    +1R2+1R3

    !

    "#

    $

    %&

    Consequentemente, a lei de Ohm se aplica ao grupo completo de trs

    resistores, com a resistncia Rparalela dada por:

  • 21

    1Rparalela

    =1R1+1R2+1R3

    Observe que tivemos que analisar o problema antes que pudssemos

    escrever qualquer cdigo; frequentemente este o caso, e a anlise do

    problema e a confeco da soluo so usualmente mais difceis do que a

    implementao.

    Escrevamos um cdigo em SCILAB que solicita ao usurio os valores das

    trs resistncias (R1 , R2 , R3) e retorna a resistncia dos trs em paralelo

    (Rparalela).

    PROJETO FINAL 1 : CLCULO DE CARGA TRMICA PARA UMA CMARA

    DE RESFRIAMENTO.

    A parcela de carga trmica englobada sob o ttulo de diversos, devida aos

    equipamentos mecnicos, iluminao, pessoas e, demais elementos que

    constituem fonte de calor no interior das cmaras.

    Os equipamentos mecnicos so normalmente, os ventiladores dos UNIT

    COOLERS cuja potncia da ordem de 0,5 a 1 c.v. por cada T.R bombas,

    empilhadeiras, etc.

    O calor dissipado pelos mesmos pode ser calculado como segue,

    dependendo da situao:

    Motor e carga no interior da cmara;

    Qmotor =Pc.vmotor

    632 kcal / dia

    em que:

    o nmero de horas de funcionamento por dia de equipamento;

    motor o rendimento do motor eltrico de acionamento.

    A dissipao provocada pela iluminao dada por;

  • 22

    Qiluminao = 0,86wA kcal / dia

    em que ;

    W a potencia da lmpada (W/m2)

    o nmero de horas de funcionamento por dia de equipamento;

    A a rea da cmara.

    As pessoas por sua vez liberam pelo seu metabolismo, uma quantidade de

    calor que nos dada por:

    Qpessoas = n q kcal / dia

    em que:

    "n" o nmero de pessoas;

    "q" o calor liberado por pessoa e por hora, o qual cresce com o abaixamento de temperatura.

    Prtica !

    Voc deve ter percebido que as informaes necessrias para o clculo de

    carga trmica devido a fatores diversos leva em considerao a quantidade

    de pessoas, mquinas e lmpadas no interior da cmara. Que tal

    construirmos um programa em SCILAB para realizar estes clculos? Para

    isto leia com ateno o enunciado a seguir.

    Elabore um programa para calcular a carga trmica de uma cmara frigorifica

    com as seguintes caractersticas:

    rea da cmara 200 m2.

    Para realizar o transporte de carga dentro da cmara sero

    necessrios 10 homens/hora por 24 horas. (Utilize como 300 kcal/hora

    o calor liberado por pessoa)

  • 23

    Uma empilhadeira ser utilizada 2 horas por dia. Ela possui um motor

    com potncia de 10 c.v. e eficincia 0,85.

    No interior da cmara teremos lmpadas fluorescente especial para

    baixas temperaturas na proporo de 10 W/m2 (acendimento 4

    horas/dia).

    Sero previstas tambm lmpadas germicidas na proporo de 2

    W/m2 (acendimento 24 horas).

    Utilize a sada a seguir como forma de conferir os seus resultados!

    Aps desenvolver o seu programa e verificar o funcionamento, realize

    pequenas simulaes variando a quantidade de pessoas, empilhadeiras ou

    lmpadas. Veja dentre estes trs fatores qual o responsvel por dissipar

    maior quantidade de calor dentro da cmara1.

    Figura 11 Soluo, projeto cmara de resfriamento.

    1 Toda a formulao para o clculo de carga trmica foi adaptada de COSTA,

    ENNIO CRUZ da. Refrigerao. Editora Edgard Blucher, 3 edio, 2011.

  • 24

    2. ESTRUTURA CONDICIONAL

    A estrutura condicional permite que o programa usufrua de um mecanismo de

    seleo e um conjunto de instrues em um processo qualquer.

    O comando if else.

    Na indstria de um modo geral, ambientes com temperatura e umidade

    relativa controlados so necessrios para a manuteno da qualidade de

    processos de fabricao e armazenamento.

    Na indstria de refratrios especificamente, a manuteno da umidade

    relativa em baixos teores faz-se necessria no processo de composio de

    moldes, tendo em vista que altas umidades relativas no ambiente podem

    ocasionar danos significativos no processo de produo (lembre-se do saleiro

    na sua casa em semanas chuvosas). Portanto, a direo da fbrica solicitou

    ao engenheiro responsvel que desenvolvesse uma lgica de controle de

    umidade relativa no ambiente de composio de moldes da fbrica. Para que

    os moldes atendessem aos padres de qualidade da fbrica era necessrio

    que a umidade relativa ambiente fosse mantida abaixo de 40%. Caso

    contrrio uma mensagem de alerta deveria ser exibida.

    O engenheiro responsvel desenvolveu um programa em SCILAB que

    recebia como entrada o valor da umidade relativa no ambiente e exibia uma

    mensagem de alerta caso ela estivesse fora dos padres de qualidade da

    fbrica.

    Veja o cdigo no exemplo 2.1 a seguir:

  • 25

    1 clear; 2 clc; 3 mprintf("------------Software para controle de umidade relativa---- ");

    4 umidade=input(" Digite a umidade relativa atual em decimal : "); 5 if (umidade

  • 26

    A viscosidade descreve a frico interna de um fluido em movimento. Um

    fluido com grande viscosidade resiste ao movimento. Um fluido com baixa

    viscosidade flui facilmente.

    A viscosidade uma propriedade dos fluidos que tambm varia em funo da

    temperatura com ilustra a tabela a seguir:

    Tabela 6 Variao da viscosidade com a temperatura.

    Temperatura (oF) Viscosidade (lb/ft/hr)

    0 Temperatura 49 242

    50 Temperatura 99 82,1

    100 Temperatura 149 30,5

    150 Temperatura 199 12,6

    Temperatura 200 5,7

    Diante das informaes sobre a viscosidade dos fluidos, desenvolva um

    programa em SCILAB que receba como entrada a temperatura do fluido e

    mostre na sada a sua viscosidade. Veja o exemplo 2.2 a seguir.

    1 clear;

    2 clc; 3 mprintf("------------Clculo da viscosidade de um fluido----------------");

    4 temperatura=input(" Digite a temperatura do fluido em graus fahrenheit (F) 5: "); 5 if (temperatura=50 & temperatura=100 & temperatura=150 & temperatura

  • 27

    linhas 7, 9, 11: Por meio do comando elseif() as condies de temperatura do fluido so verificadas. Repare que o operador lgico & foi necessrio para esta verificao.

    Figura 12 Tela de sada para exemplo de clculo de viscosidade

    Exerccios estrutura condicional:

    Exerccio 1: Desenvolva um programa em SCILAB que receba como entrada a temperatura do fluido e mostre na sada a viscosidade do fluido. Utilize a

    tabela mostrada no exemplo 2 desta unidade. Voc dever fazer a leitura da

    temperatura do fluido em graus Celsius na entrada (oC ).

    Dica: Tenha cuidado com as unidades. Observe que a tabela que voc vai utilizar est em graus Fahrenheit (oF) mas voc dever fazer a entrada em

    graus Celsius (oC).

    Exerccio 2: Desenvolva um programa em SCILAB que recebe como entrada um valor de temperatura em graus Celsius (oC) e retorne como sada a fase

    que se encontraria a gua nesta temperatura (slido, lquido ou gasoso).

    Exerccio 4: O nmero de Reynolds pode ser utilizado para caracterizar diferentes regimes de escoamento, tais como laminar, transio ou

    turbulento. O escoamento laminar ocorre para baixos nmeros de Reynolds

    (Re 2100 ), onde as foras viscosas so dominantes, e caracterizado por suave movimento do fluido. O fluxo turbulento ocorre em um elevado nmero

    de Reynolds (Re > 4000 ) e dominado por foras de inrcia, que tendem a produzir redemoinhos aleatrios, vrtices e instabilidades. Para valores entre

    2100 e 4000, classificamos o escoamento como escoamento em transio.

  • 28

    Diante das informaes sobre o nmero de Reynolds desenvolva um

    programa em SCILAB que classifique um escoamento dado o nmero de

    Reynolds.

    Exerccio 5: Implemente um algoritmo em SCILAB que retorne o valor da funo abaixo aps receber um valor qualquer de entrada.

    ( )

  • 29

    Tabela 7 Gravidade dos planetas do sistema solar.

    Planeta Gravidade (m/s2)

    Mercrio 3,7

    Vnus 8,8

    Terra 9,8

    Marte 3,8

    Jpter 26,4

    Saturno 11,5

    Urano 9,3

    Netuno 12,2

    Pluto 0,6

    Veja um exemplo do menu de opes !

    Figura 13 Exemplo menu de opes.

    Exerccio 7: Dado o grfico abaixo, testar se um valor T qualquer fornecido pelo usurio, pertence ao intervalo T0 T T1. Dados T0 = 5, T1 = 10, V0 = 1,

    V1 = 2. Interprete os pontos preenchidos no grfico como ponto vlido e os

    pontos vazios como pontos invlidos.

  • 30

    PROJETO FINAL 2 : DESENVOLVIMENTO DE UM CONVERSOR DE

    UNIDADES.

    Caro aluno a seguir apresentaremos algumas informaes importantes para o desenvolvimento do seu conversor de unidades.

    Algumas relaes de converso de unidades:

    Fora: 1 N = 0,102 kgf= 0,2249 lbf

    1 N = 1 kg m / s2

    Presso: 1Pa = 1 N / m2 = 0,102 kgf / m2 = 0,000145 lbf / pol2

    1 atm = 101.325 Pa

    1 bar = 105 Pa

    1 lbf / pol2 = 1 psi (pounds per square inch)

    Energia: 1 J = 0,0009478 BTU = 0,00023884 kcal

    1 BTU = 252 cal

    Potncia: 1 W = 3,412 BTU / h = 0,85984 kcal / h = 0,001359 CV = 0,001341 HP

  • 31

    Prtica!

    hora de desenvolver o seu prprio conversor de unidades. Voc dever

    utilizar as informaes fornecidas no texto sobre converso de unidades. O

    seu conversor dever ter um menu inicial com as seguintes opes

    Temperatura

    Fora

    Presso

    Energia

    Potncia

    O usurio dever escolher qual o tipo de unidade ele quer realizar a

    converso. Aps o usurio realizar a escolha, ele dever escolher em

    qual unidade o valor a ser convertido vai ser digitado.

    Exemplo:

    Caso o usurio escolha converter temperaturas ele vai selecionar a

    opo referente temperatura no menu;

    Aps ter selecionado temperatura ele dever escolher em qual

    unidade de temperatura ser feita a entrada; Celsius, Kelvin ou

    Fahrenheit.

    Como sada o programa dever ento mostrar a temperatura digitada

    pelo usurio em todas as trs unidades de temperatura.

  • 32

    Veja como exemplo a tela de sada aps utilizar o conversor

    Figura 14 Exemplo de sada para o programa conversor de unidades

  • 33

    3. ESTRUTURAS DE REPETIO

    O comando for

    O comando for repete um conjunto de instrues a partir de um nmero

    conhecido de repeties. Este comando segue o seguinte formato:

    for varivel = incio : incremento : fim

    Bloco de comandos

    end

    Exemplo

    Em um exerccio do roteiro anterior analisamos a importncia do termo

    gravidade (g), no modelo proposto;

    v(t) = v0 gth(t) = v0t gt2 / 2

    Analisaremos agora, qual o comportamento da velocidade e da altura diante

    da variao do tempo. Perceba que tanto a velocidade v(t) , quanto a altura h(t) , so em funo do tempo. Este tipo de anlise semelhante a questionarmos; o que acontecer com a velocidade e altura da bola no

    intervalo de tempo de 0 a 2 segundos? Mostre o comportamento a cada 0,5

    segundos. Utilize como v0 = 15 (m/s).

    Se voc fosse fazer esta anlise no seu caderno voc seria orientado pelo

    seu professor de clculo a desenvolver o seguinte raciocnio:

  • 34

    Tabela 8 Exemplo de clculo manual.

    T (s) v(t) - (m/s) h(t) (m)

    0 15 0

    0.5 10,095 6,274

    1 5,190 10,095

    1.5 0,285 11,464

    2 -4.620 10,380

    Este tipo de tratamento (manual), s vivel quando o nmero de repeties

    pequeno. Imagine se precisarmos de observar o comportamento das

    variveis diante de um nmero grande de repeties ? Veja o exemplo a

    seguir !

    O que acontecer com a velocidade e altura da bola no intervalo de tempo de

    0 a 2 segundos? Mostre o comportamento a cada 0,1 segundos. Utilize como

    v0 = 15 (m/s). Desenvolva um programa em SCILAB que mostre o resultado

    da velocidade e da altura da bola para cada iterao. (exemplo 3.1)

    1 clear;

    2 clc; 3 g=9.81;

    4 mprintf("Simulao do arremeo de uma bola no planeta terra \n\n"); 5 v0 = input(" Digite a velocidade inicial do arremeo (m/s) : ");

    6 mprintf("\n t (s) h(t) (m) v(t) (m/s)") 7 for t=0:0.1:2

    8 altura= v0*t - (g*(t^2))/2; 9 velocidade = v0 - g*t;

    10 mprintf("\n %2.2f %2.2f %2.2f ",t,altura,velocidade); 11 mprintf("\n");

    12 end

  • 35

    linha 7 Observe a estrutura do comando for. A varivel t a varivel de controle. Ela foi inicializada com o valor 0, ser incrementada a cada 0,1

    segundos at que t alcance o valor de 2 segundos.

    linhas 8 a 11 Estas linhas constituem o bloco de comandos que ser executado a cada iterao. Portanto a cada iterao os clculos so

    efetuados nas linhas 8 e 9 e mostrados nas linhas 10 e 11.

    Veja a sada dos resultados a seguir:

    Figura 15 Tabela de soluo utilizando comando for

    Como voc pode perceber, de maneira rpida e segura os clculos foram

    efetuados e a simulao nos permite visualizar alguns resultados

    interessantes.

    A primeira observao que os resultados acima nos permitem fazer que as

    equaes conseguem descrever o movimento de subida e decida da bola.

    Veja os valores de altura durante a simulao. Do tempo 0 ao tempo 1,5 a

    bola vai ganhando altura, at que no tempo = 1,5 segundos ela atinge a sua

    altura mxima ! Aps 1,5 segundos a bola ento comea a perder altura.

    De maneira semelhante a mesma anlise pode ser feita quanto a velocidade

    da bola. Veja que no tempo 0 a bola sai com a velocidade mxima, a

  • 36

    velocidade v0 (15 m/s). A partir do tempo zero a velocidade vai diminuindo

    at chegar ao tempo 1,5 segundos em que a sua velocidade igual a 0,29

    (m/s) . A partir do tempo igual a 1,5 segundos a bola volta a ganhar

    velocidade, desta vez com sinal negativo, ela est agora em uma trajetria

    descendente, caindo !

    Exemplo 2 : Somatrios

    O uso de somatrios abrange diversas reas do conhecimento. Possui

    aplicaes variadas em estatstica, cincia da computao, engenharias,

    matemtica, fsica, qumica, etc.

    Observe a tabela a seguir.

    Tabela 9 Representao matemtica e em SCILAB para um somatrio

    S = ii=0

    n

    for i:1:n

    s = s+i;

    end

    A tabela acima apresenta um paralelo entre a representao matemtica de

    um somatrio e a sua implementao em SCILAB. Veja a seguir um exemplo

    da implementao desta estrutura.

    A temperatura ambiente de uma regio pode ser obtida a partir de um ajuste

    de dados experimentais por uma srie de Fourier. A equao a seguir foi

    obtida a partir dos dados experimentais de temperatura da cidade de Belo

    Horizonte no ms de agosto de 2013.

    T (t) =19,06+ 0,211cos 0, 08721 t( )+[5.51sen(0, 08721 t)]

    em que:

  • 37

    T = Temperatura ambiente ( oC );

    t = tempo em horas.

    Utilizando o modelo proposto para estimar a temperatura a partir da hora

    fornecida desenvolva um programa em SCILAB que calcule a temperatura

    mdia do ms de agosto. (Exemplo 3.2)

    1 clear; 2 clc; 3 mprintf("Clculo da temperatura mdia no ms de agosto - 2013 \n\n"); 4 soma = 0; 5 for t=0:720 6 temperatura = 19.06 + (0.211*cos(0.08721*t)) + (-5.51*sin(0.08721*t)) 7 soma = soma + temperatura; 8 end 9 media = soma/720; 10 mprintf("\n A temperatura mdia do ms de agosto-2013 em BH foi de %2.2f (C) ",media);

    linha 4 Inicializa a varivel soma.

    linha 5 A varivel t a varivel de controle. Ela foi inicializada com o valor 0, ser incrementada a cada 1 hora at que t alcance o valor de 720 horas.

    Perceba que quando o incremento for feito de 1 em 1 no necessrio

    ajustar o incremento. Lembre-se t final foi ajustado como 720 horas, afinal em

    um ms temos 30 dias de 24 horas.

    linha 6 A varivel temperatura guarda o resultado da temperatura calculada para a hora t.

    linha 7 Nesta linha temos a implementao do somatrio. Em diversos livros de algoritmos voc ir encontrar esta estrutura tambm chamada de

    acumulador.

    linha 9 A mdia calculada por meio da diviso do somatrio das temperaturas pela quantidade de amostras.

    linha 10 Mostra a mdia calculada.

  • 38

    Figura 16 Tela de sada aps processamento da mdia.

    O Comando While

    O comando while ou (enquanto em pseudocdigo) um comando de

    repetio indicado para situaes em que no se conhece o nmero de

    repeties a serem realizadas. Sua sintaxe em SCILAB a seguinte:

    while (condio)

    Bloco de comandos

    end

    Veja um exemplo de aplicao.

    Nas indstrias qumica, agrcola e de alimentos muito comum o uso de

    equaes empricas para estimar a secagem de diversos produtos. Estas

    equaes so vlidas para determinadas faixas de temperaturas e umidades

    relativas. O objetivo destas equaes estimar aps um determinado tempo

    de secagem qual o teor de umidade do produto. Estas equaes possuem

    formas diversificadas, uma das formas mais utilizadas conhecida pelo

    seguinte formato:

    U(t) = ektn em que :

    U(t) o teor de gua do produto,

    t o tempo de secagem em horas,

    k e n so parmetros que dependem do produto;

  • 39

    2Um engenheiro qumico gostaria de conhecer o comportamento da secagem

    de um determinado produto e decidiu elaborar um programa em SCILAB que

    faa a simulao da secagem de um produto enquanto o teor de gua do

    mesmo seja maior ou igual a 0,13. Mostre na tela a cada hora o valor do teor

    de gua do produto. Utilize para a implementao os valores de 0,365 para k

    e 0,663 para n. (Exemplo 3.3)

    1 clear; 2 clc; 3 k=0.365; 4 n=0.663; 5 t=0; 6 teor_umidade=1; 7 mprintf("-------Simulao de secagem--------- \n\n"); 8 mprintf("\n\t\t t(h)\t\t U(%%) "); 9 while(teor_umidade>=0.13) 10 teor_umidade= exp(-k*(t^n)); 11 mprintf("\n\t\t %2.3f\t\t %2.2f ",t,teor_umidade*100); 12 t=t+1;

    13 end

    linhas 3 a 5 Inicializao das variveis.

    linha 6 A varivel teor de umidade foi inicializada em 1 (equivalente a 100%).

    Basta voc ver que para o tempo igual a zero a equao vale 1. Perceba a

    importncia desta inicializao, esta inicializao que permite o programa

    executar as instrues no bloco de comandos do comando while. Em outras

    palavras esta inicializao torna a condio no comando while verdadeira e

    assim permite a repetio do bloco de comandos.

    Linhas 9 a 12 Bloco de comandos pertencente ao comando while. O teor de umidade calculado, mostrado na tela e o tempo incrementado. Na linha 12 surge uma estrutura conhecida por muitos autores como contador. O

    2 Informao o estudo da cintica de secagem de gros e alimentos de extrema importncia para a manuteno da qualidade do produto e para o

    projeto de secadores.

  • 40

    contador incrementado em 1 toda vez que um clculo efetuado e logo

    aps mostrado na tela.

    Veja a sada da simulao feita em SCILAB

    Figura 17 Tela de sada para simulao de secagem.3

    Observe que a tabela de resultados mostrada na sada indica que, para o

    produto simulado secar at 13% de umidade, precisaramos de 15 horas de

    secagem.

    Ser que voc saberia explicar, por que o ltimo resultado t = 15 horas e U = 12,25% apareceu na lista de resultados ??? Este resultado deveria ter aparecido ???

    3 importante lembrar que o modelo proposto para a simulao da secagem

    neste material est em uma forma extremamente simplificada. A simulao

    de secagem em modelos complexos pode envolver programas com diversas

    variveis e funes, podendo levar at dias para se obter os resultados

    simulados.

  • 41

    Exerccios Laos de Repetio

    Exerccio 1

    Desenvolva um programa em SCILAB que calcule a exponenciao entre

    dois nmeros x e y escolhidos pelo usurio (xy). Para realizar os clculos

    voc no poder utilizar o comando (^).

    Dica: A operao 53 deve ser feita da seguinte maneira: 5 x 5 x 5 = 125. A operao de multiplicao foi repetida 3 vezes. Quais sero as entradas deste programa ? Qual comando de repetio utilizar ?

    Exerccio 2

    Desenvolva um programa em SCILAB que receba como entrada o valor de

    potncia em Watt (W) e converta este valor para BTU/h. Mostre na tela o

    resultado da converso e em seguida pergunte ao usurio se ele deseja

    realizar uma nova converso. O usurio dever digitar 0 (zero) para terminar

    o programa. Veja na figura a seguir um exemplo de sada para este

    programa.

    Figura 18 Sada para converso de potncia

    Exerccio 3

    Devido ao uso frequente, a descarga da bateria de equipamentos eletrnicos

    pode se comportar de acordo com a funo proposta a seguir;

    y(t) = y0 2 0,1( )t em que;

    y0 a carga inicial da bateria;

    y(t) a quantidade de carga aps t horas de uso.

  • 42

    a) Desenvolva um programa em SCILAB, que tenha como entrada a

    carga inicial da bateria e mostre como sada a carga da bateria a cada

    hora enquanto a carga fique maior ou igual a 1%.

    b) Acrescente ao programa feito na letra a) um sistema de aviso que

    obedea a seguinte tabela:

    Carga (%) Aviso

    10% < carga 20% Bateria fraca !

    1% carga 10% Conecte ao carregador

    Dica: Procure identificar qual lao de repetio utilizar. Existe algum critrio de parada ?

    Veja um exemplo de sada para o exemplo 1

    Figura 19 Exemplo de sada para o exerccio 1 - descarga de bateria

  • 43

    Exerccio 4 Vimos no exemplo que ilustra a utilizao de somatrios que a temperatura ambiente de uma regio pode ser obtida a partir de um ajuste de

    dados experimentais por uma srie de Fourier. A funo a seguir foi obtida a

    partir dos dados experimentais de temperatura da cidade de Belo Horizonte

    no ms de agosto de 2013.

    T (t) =19,06+ 0,211cos 0, 08721 t( )+[5.51sen(0, 08721 t)] em que:

    T = Temperatura ambiente ( oC );

    t = tempo em horas.

    Utilizando o modelo proposto para estimar a temperatura a partir da hora

    fornecida desenvolva um programa em SCILAB que calcule e mostre as

    seguintes informaes sobre a temperatura em Belo Horizonte nas primeiras

    48 horas de agosto:

    a) A temperatura mdia do dia

    b) A maior temperatura registrada no dia

    c) A menor temperatura registrada no dia

    d) Quantas horas a temperatura ficou acima de 19 oC.

    e) Quantas horas a temperatura ficou abaixo de 16 oC.

  • 44

    4. Vetores e grficos

    Um vetor um tipo de varivel que pode armazenar um ou mais valores do

    mesmo tipo de dado.

    Vejamos como isto funciona na prtica. Imagine que voc precisa armazenar

    os valores 15, 23, 40, 12, 37. At ento voc faria o seguinte raciocnio para

    armazenar estes valores:

    clear; clc; num1=15; num2=23; num3=40; num4=12; num5=37; mprintf("\n Valor armazenado na varivel num1 = %i",num1); mprintf("\n Valor armazenado na varivel num2 = %i",num2); mprintf("\n Valor armazenado na varivel num3 = %i",num3); mprintf("\n Valor armazenado na varivel num4 = %i",num4); mprintf("\n Valor armazenado na varivel num5 = %i",num5);

    Perceba que at ento no havia outra alternativa para voc armazenar estes

    5 valores a no ser criando 5 variveis distintas para guardar o mesmo tipo

    de valor. Perceba tambm que para mostrar os 5 valores na sada voc

    precisaria de novas 5 linhas de comando para mostrar os 5 valores distintos

    na sada do programa. Veja a sada aps a execuo do cdigo acima.

    Figura 20 Exemplo de sada para diferentes variveis.

    Este tipo de abordagem torna-se invivel na medida em que a quantidade de

    dados a serem armazenados aumenta. Imagine se voc precisar armazenar

    centenas ou milhes de dados do mesmo tipo ? (Isto ocorre com frequncia

    na engenharia) O que voc faria ? Criar centenas ou milhes de variveis

  • 45

    para armazenar cada valor ser invivel. Nesta situao, a utilizao de um

    vetor a sada mais indicada.

    Que tal ento tentarmos armazenar os nossos 5 valores do exemplo

    apresentado anteriormente em um vetor ? Deixe-me te mostrar como isto

    ser feito. Observe o exemplo a seguir: (Exemplo 4.1)

    1 clear; 2 clc; 3 num=[15 23 40 12 37]; 4 for i=1:5 5 mprintf("\n O valor %i esta armazenado na posio %i do vetor num",num(i),i); 6 end

    Vamos comear pela linha 3 do cdigo acima. Na linha 3 os nossos 5 valores foram guardados em uma nica varivel chamada num. Isto um vetor ! Veja

    a ilustrao abaixo:

    num = 15 23 40 12 37

    1 2 3 4 5

    A varivel num comporta-se como a ilustrao acima. Cada um dos 5 valores

    ganhou um espao na varivel num e cada espao possui um ndice responsvel por identificar em qual posio do vetor o valor foi armazenado.

    Portanto o valor 15 est armazenado na posio 1; o valor 23 est

    armazenado na posio 2; o valor 40 est armazenado na posio 3 ; o valor

    12 est armazenado na posio 4 e o valor 37 est armazenado na posio

    5.

    Para compreender melhor esta associao entre posies e valores observe

    as linhas 4 a 6 do cdigo acima. Para fazer a sada dos valores do vetor num, utilizamos uma estrutura de repetio. A estrutura definida na linha 4 utiliza a varivel i como controle. Aproveitaremos ento a varivel i para

    percorrer todo o vetor, executando o comando de sada, mostrando na tela o

    valor armazenado ! num(i) para cada posio ! i como mostra a figura a seguir.

  • 46

    Figura 21 Exemplo de sada de valores de um vetor

    Inserindo valores em um vetor

    A insero de valores em um vetor pode ser feita de diferentes maneiras. A

    seguir apresentaremos as mais usuais.

    Insero direta

    num = [ 5 10 12 32 45 48 23 64 ... ];

    Insero por meio de um usurio

    for i=1:5 mprintf("Digite um valor para a posio %i do vetor",i); num(i)=input(""); end

    Mostrando os valores de um vetor (Sada de dados)

    Sada direta

    disp(num);

    Sada por lao de repetio

    for i=1:5 mprintf("\n O valor %i esta armazenado na posio %i ",vetor(i),i); end

  • 47

    Construindo Grficos

    Construindo grficos 2D

    A construo de um grfico 2D em SCILAB pode ser feita por meio da funo

    plot( ) . O forma bsica para o comando ;

    plot(x,y)

    em que x um vetor que contm os valores para a coordenada-x do grfico e

    y o vetor que contm os valores para a coordenada-y do grfico.

    Exemplo: Plote o grfico da funo f (x) = 3x2 + 4x +1 . Faa x variar no intervalo de -5 a 4 com incrementos de 0,5. Veja o cdigo em SCILAB a

    seguir;

    Opo 1: Na opo 1 o vetor x declarado de maneira direta. Repare que o vetor y automaticamente criado pelo SCILAB. Basta atribuir a y a

    expresso da funo desejada e o SCILAB realiza o clculo de y para cada

    posio do vetor x. Em seguida a funo plot ( ) e os vetores x e y foram utilizados para fazer o grfico da funo.

    clear; clc; x = [-5 -4.5 -4 -3.5 -3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5 3 3.5 4]; y = 3*x^2 + 4*x + 1; plot(x,y); Opo 2: A opo 2 apenas se difere da opo 1 quanto a criao do vetor x. O vetor x foi criado a partir da funo linspace(valor 1, valor2 , valor 3 ). A funo linspace() funciona da seguinte maneira: o primeiro valor dentro do parnteses representa o valor inicial do vetor a ser

    criado, o segundo valor representa o fim do intervalo a ser criado e o ltimo

    valor dentro do parnteses representa o nmero de elementos que sero

    criados para este vetor.

    clear; clc; x = linspace(-5,4,19); y = 3*x^2 + 4*x + 1; plot(x,y);

  • 48

    Opo 3. A opo 3 apresenta uma estrutura de criao dos vetores por meio de laos de repetio. Os vetores x e y vo sendo criados na medida

    em que as iteraes, ou repeties, vo acontecendo. Perceba que o

    contador i a cada iterao utilizado para calcular um novo valor de x e um

    novo valor de y para a posio i.

    clear; clc; i=1; x(1)=-5; y(1)=3*x(1)^2 + 4*x(1) + 1; while x(i)

  • 49

    Ajustando Ttulos e eixos

    O SCILAB permite que faamos ajustes nos ttulos e eixos dos grficos. Veja

    as opes disponveis:

    title() Ajusta o ttulo na parte superior do grfico.

    xlabel() Ajusta o ttulo para o eixo x.

    ylabel() Ajusta o ttulo do eixo y.

    Veja o cdigo e a nova figura aps a incluso dos comandos de formatao

    de eixos e ttulos.

    clear; clc; i=1; x(1)=-5; y(1)=3*x(1)^2 + 4*x(1) + 1; while x(i)

  • 50

    Figura 23 Novo grfico aps formatao de ttulo e eixos.

    DICA: Ajuda sobre diferentes estilos de linhas, cores e formataes podem ser encontrados no menu ajuda ou clicando no menu editar aps aparecer a janela do grfico. A figura a seguir ilustra o menu editar.

  • 51

    Figura 24 Opes de configurao de grfico

    Figura 25 Editor de grfico.

  • 52

    Dica: para plotar um grfico com vrias curvas, siga o exemplo a seguir:

    Como plotar um grfico da funo f (x) = ax + b para diferentes valores de a = ( 1, 3, 5, 7) e b = 1, no intervalo 0 x 10? Estude o cdigo a seguir !

    clear; clc; i=1; b=1; x(1)=0; y1(1)=1*x + b; y2(1)=3*x + b; y3(1)=5*x + b; y4(1)=7*x + b; incremento=0.1; while x(i)

  • 53

    Exemplo de aplicao: (exemplo 4.2)

    Um engenheiro decidiu acompanhar o funcionamento do secador de gros

    representado pela figura abaixo.

    Figura 27 Secador de gros.

    Para realizar esta inspeo, o engenheiro instalou um sensor de temperatura

    na cmara de aquecimento de ar e um tubo de pitot para medir a velocidade

    do ar na entrada da cmara de aquecimento. Para coletar as informaes de

    temperatura e velocidade do ar durante s dez horas de funcionamento o

    engenheiro desenvolveu um programa em SCILAB que fosse capaz de

    coletar estas informaes a cada 0,5horas (meia hora) e mostrar:

    a temperatura mdia na cmara de secagem;

    a velocidade mdia do ar de secagem;

    A maior temperatura e velocidade registradas durante as 10 horas;

    A menor temperatura e velocidade do ar registradas durante as 10

    horas;

    Os grficos mostrando o comportamento da temperatura e velocidade

    do ar durante as 10 horas.

    Veja o cdigo fonte comentado e os resultados a seguir.

  • 54

    1 clear; 2 clc; 3 tempo(1)=0; 4 temperatura(1)=grand(1,"nor",70,5); 5 velocidade(1)=grand(1,"nor",1.5,0.1); 6 i=1; 7 while tempo(i)

  • 55

    linhas 3 a 6 Observe que nestas linhas os vetores temperatura, tempo e velocidade so inicializados na sua primeira posio (posio 1) com os valores de tempo inicial. linhas 7 a 12 Nesta parte do cdigo feita a simulao da aquisio de dados a cada tempo. Para isto foi utilizado o comando grand(1, distribuio normal, media, desvio padro) , este comando gera nmeros aleatrios obedecendo uma distribuio normal, uma mdia e um desvio padro pr definidos. Para cada tempo simulado valores de temperatura e velocidade so gerados e armazenados em seus respectivos vetores. A varivel i incrementada a cada iterao at que o critrio de parada (tempo

  • 56

    Figura 29 Variao da velocidade do ar de secagem.

    Figura 30 Variao da temperatura de secagem na cmara de secagem

  • 57

    Exerccios - Vetor

    Exerccio 1 Faa um programa em SCILAB que solicite ao usurio a digitao de 10 nmeros distintos. Armazene estes valores em um vetor. A

    sada do seu programa dever mostrar ao usurio o valor digitado e as

    posies em que estes valores foram armazenados no vetor.

    Exerccio 2 Faa um programa em SCILAB para gerar o grfico das seguintes funes, obedecendo os intervalos propostos. Voc saberia

    interpret-los ?

    a) seno(x); - x ;

    b) cosseno(x); - x ;

    c) ln(x); 0,001 x 10

    d) ex; 0 x 10

    e) f (x) =1x2 + 2x +1 ; qual intervalo utilizar ? Existe algum critrio para escolher o intervalo ?

    f) f (t) =

    t +1 0 t

  • 58

    PROJETO FINAL 3 : Simulao !

    No instante t=0 (min) um tanque contm Q0 (lb) de sal dissolvido em 100 (gal)

    (cerca de 455 litros). Suponha que gua contendo 1/4 (lb) (cerca de 113g de

    sal por galo) est entrando no tanque a uma taxa de r gales por minuto, e

    que o lquido, bem misturado, est saindo do tanque mesma taxa. O

    fenmeno ilustrado pela figura abaixo.

    Figura 31 Tanque de gua com misturador.

    A funo a seguir expressa a quantidade de sal Q(t) no tanque em qualquer

    estante t.

    Q(t) = 25+ (Q0 25)er t /100

    Desenvolva um programa em SCILAB que simule a quantidade de sal

    presente no tanque durante 100 minutos.

    a) Como sada voc dever mostrar a quantidade de sal presente no

    tanque e o tempo de simulao a cada 10 minutos. Utilize Q0 = 50 lb e

    r = 3.

    b) Faa um grfico mostrando o comportamento da quantidade de sal no

    tanque durante os 100 minutos. Utilize Q0 = 50 lb e r = 3.

    c) Faa um nico grfico contendo 4 curvas com as seguintes condies:

    Curva 1: Dever representar a quantidade de sal em 100 minutos

    com r = 3 e Q0 = 50 lb.

  • 59

    Curva 2: Dever representar a quantidade de sal em 100 minutos

    com r = 3 e Q0 = 40 lb.

    Curva 3: Dever representar a quantidade de sal em 100 minutos

    com r = 3 e Q0 = 25 lb.

    Curva 4: Dever representar a quantidade de sal em 100 minutos

    com r = 3 e Q0 = 10 lb.

    Interprete o fenmeno ilustrado pelo grfico !

    d) O que aconteceria se o valor da taxa de fluxo aumentasse para 5 aps

    20 minutos de simulao ? Utilize como condio de simulao Q0 =

    50 lb. Mostre o grfico da simulao e interprete-o.

    e) Qual seria a taxa de fluxo necessria (r) para que o valor de t no

    exceda 45 minutos para alcanar o equilbrio ? Utilize Q0 = 50 lb. Dica: O sistema entra em equilbrio quando Q(t) = 25.

  • 60

    5. Matrizes

    Uma matriz um tipo de varivel que pode armazenar um ou mais valores do

    mesmo tipo de dado, porm este armazenamento pode estar associado a

    duas propriedades distintas. Esta associao para muitos chamada de

    dimenso. Em vetores, associvamos o armazenamento de informao a

    apenas uma propriedade, uma dimenso. Por exemplo, associa-se que o

    vetor idade armazena diferentes idades; o vetor temperatura armazena

    diferentes temperaturas, o vetor velocidade diferentes valores de velocidade,

    etc. Quando tratamos de matrizes associamos os valores da matriz a duas ou

    mais propriedades ou duas ou mais dimenses.

    Veja um exemplo: (Exemplo 5.1)

    Um engenheiro resolveu montar um sistema de aquisio de dados para

    coletar os dados de presso do gs refrigerante e temperatura do gs

    refrigerante em um sistema de refrigerao. Para isto o engenheiro instalou

    em diferentes pontos do sistema trs sensores de presso e temperatura. O

    engenheiro desenvolveu um programa em SCILAB que durante cinco horas

    coletava as informaes dos sensores e armazenava as informaes a cada

    hora. Veja o cdigo desenvolvido pelo engenheiro;

    clear; clc; for tempo=1:5 for sensor=1:3 temperatura(tempo,sensor)=grand(1,"nor",70,2.5); //simula os sensores de temperatura pressao(tempo,sensor)=grand(1,"nor",250000,10000); //simula os sensores de velocidade end end disp("Matriz Temperatura (C)"); disp(temperatura); disp("Matriz Pressao (Pa)"); disp(pressao);

    A lgica utilizada pelo engenheiro foi de armazenar em uma matriz chamada

    temperatura os dados dos trs sensores a cada hora durante 5 horas.

    Veja a disposio dos valores como ficaria em formato de matriz.

  • 61

    Tabela 10 Matriz Temperatura

    Tempo (h) Sensor de

    Temperatura (1)

    Sensor de

    Temperatura (2)

    Sensor de

    Temperatura (3)

    1hora

    2horas

    3horas

    4horas

    5horas

    A matriz temperatura foi organizada da seguinte maneira: para cada hora

    foram registradas trs temperaturas distintas, uma para cada sensor.

    Portanto a nossa matriz de duas dimenses (tempo,sensor) uma matriz

    5x3 (5 linhas e 3 colunas). O mesmo raciocnio foi aplicado ao sensor de

    presso.

    Veja a sada aps executarmos o programa em SCILAB;

    Figura 32 Sada das matrizes temperatura e presso

    Inserindo valores em uma matriz

    A insero de valores em uma matriz pode ser feita de diferentes maneiras. A

    seguir apresentaremos as mais usuais.

  • 62

    Insero direta

    Inicializando de maneira direta uma matriz 3 x 3.

    matriz = [ 5 2 7; 1 0 -3; 3 10 -9];

    Observe que o ; foi utilizado para distinguir uma linha de outra da matriz.

    Insero por meio de um usurio

    Inicializando por meio de um usurio uma matriz 3 x 3.

    for i=1:3 for j=1:3 mprintf("\n Digite um valor para a matriz na posicao linha %i coluna %i ",i,j); matriz(i,j)=input(" "); end end

    Mostrando os valores de uma matriz (Sada de dados)

    Sada direta

    disp(matriz);

    Sada por lao de repetio

    for i=1:3 for j=1:3 mprintf("\n Valor digitado para a matriz na posicao linha %i coluna %i = %i",i,j,matriz(i,j)); end end

  • 63

    Exemplo 5.2 Desenvolva em SCILAB um programa que permita ao usurio preencher 2 matrizes quadradas A e B. Aps preencher as matrizes A e B o

    usurio dever escolher de acordo com as opes abaixo, qual tipo de

    operao ir realizar com as matrizes A e B para gerar uma matriz C com a

    resposta da operao selecionada. Veja as opes:

    1) Adio

    2) Subtrao

    3) Multiplicao elemento por elemento

    4) Multiplicao de matrizes

    5) Diviso elemento por elemento

    Soluo

    1 clc 2 clear 3 dimensao = input ('Informe a dimenso das duas matrizes quadradas: '); 4 mprintf("Para a matriz A "); 5 mprintf("\n\n"); 6 for linha = 1:dimensao 7 for coluna = 1:dimensao 8 mprintf ("Elemento da matriz A posio A(%i,%i): ",linha,coluna); 9 A(linha,coluna) = input (""); 10 end 11 end 12 mprintf("Para a matriz B."); 13 for linha = 1:dimensao 14 for coluna = 1:dimensao 15 mprintf ("Elemento da matriz B posio B(%i,%i): ",linha,coluna); 16 B(linha,coluna) = input (" "); 17 end 18 end 19 20 mprintf("\n Matriz A "); 21 disp(A); 22 mprintf("\n Matriz B "); 23 disp(B); 24 mprintf("\n ______________________________________"); 25 mprintf("\n 1) Adio "); 26 mprintf("\n 2) Subtrao "); 27 mprintf("\n 3) Multiplicao Elemento por Elemento"); 28 mprintf("\n 4) Multiplicao de Matrizes "); 29 mprintf("\n 5) Diviso elemento por elemento "); 30 mprintf("\n\n");

  • 64

    31 operacao=input("Escolha a operao: "); 32 if operacao==1 then 33 C = A + B; 34 mprintf("\n Matriz C "); 35 disp(C); 36 elseif operacao==2 then 37 C = A - B; 38 mprintf("\n Matriz C "); 39 disp(C); 40 elseif operacao==3 then 41 C = A.*B; 42 mprintf("\n Matriz C "); 43 disp(C); 44 elseif operacao==4 then 45 C = A*B; 46 mprintf("\n Matriz C "); 47 disp(C); 48 elseif operacao==5 then 49 C = A./B; 50 mprintf("\n Matriz C "); 51 disp(C); 52 else 53 mprintf("\n Escolha invlida"); 54 end

    linha 3 A varivel dimenso armazena a dimenso das matrizes A e B. Este valor escolhido pelo usurio.

    linhas 6 a 18 Neste bloco de comandos do programa so feitas as leituras de valores para as matrizes A e B. Observe que para realizar a operao de

    leitura elemento por elemento necessrio o uso de dois laos de repetio.

    O primeiro lao varia da posio 1 ao nmero de linhas. O segundo lao varia

    da posio 1 ao nmero de colunas. Os ndices linha e coluna so controlados pelos laos de repetio.

    linhas 20 a 23 Nesta parte do programa so mostradas as matrizes A e B. Observe que o comando disp( ) foi utilizado para realizar esta tarefa. Este

    comando permite que as matrizes e vetores sejam mostrados na tela sem o

    uso de laos de repetio.

    linhas 24 a 30 Menu de opes para que o usurio escolha qual operao deseja realizar com as matrizes A e B.

  • 65

    Linhas 31 a 54 Bloco de comandos responsveis por realizar as operaes com as matrizes de acordo com a opo escolhida pelo usurio. Perceba que

    o SCILAB uma linguagem prepara para trabalhar com matrizes e vetores,

    portanto veja que;

    para somar duas matrizes foi utilizado o comando (+);

    para subtrair duas matrizes foi utilizado o comando ( - );

    para multiplicar elemento por elemento foi utilizado o comando ( .* )

    para multiplicar duas matrizes foi utilizado o comando (*);

    para dividir duas matrizes elemento por elemento foi utilizado o

    comando ( . / );

    Veja um exemplo de soluo a seguir:

    Figura 33 Sada exemplo 1 matriz.

  • 66

    Exerccio 1 Desenvolva em SCILAB um algoritmo que faa a leitura de valores para uma matriz 4 x 4. Aps a insero dos valores mostre a matriz

    digitada pelo usurio, o maior valor da matriz e o menor valor da matriz.

    Exerccio 2 Escreva um programa em SCILAB que mostre na tela uma tabela de converso de temperaturas. Esta tabela deve mostrar a converso

    de temperaturas em graus Celsius na faixa de 150 oC a 350 oC com

    incrementos de 50 oC. Faa as converses de Celsius para Kelvin e

    Fahrenheit. Veja um modelo de sada esperada.

    Figura 34 Exemplo de sada exerccio 2 matriz.

    Exerccio 3 Desenvolva um programa em SCILAB que a partir das matrizes A, B e C realize as seguintes operaes :

    A = 5 03 2!

    "#

    $

    %& B = 4 2

    2 6!

    "#

    $

    %& C = 1 10 2

    !

    "#

    $

    %&

    a) A + B C ( O apstrofe simboliza a matriz transposta)

    b) 2A-3B-(-C);

    c) (A-4) + C;

    d) (A-C);

  • 67

    PROJETO FINAL 4 : Compreendendo matrizes para a gerao de

    grficos tridimensionais

    A gerao de grficos tridimensionais no uma tarefa trivial. Apesar do

    SCILAB conseguir simplificar de maneira considervel a criao destes

    grficos precisamos entender o conceito de matriz que est por trs dos

    comandos em SCILAB que facilitam a criao destes grficos.

    Vamos tomar como exemplo a funo u(x, y) = 5ex+73y . Para plotarmos o

    grfico desta funo a primeira coisa a fazer conhecer para quais valores

    de x e y desejamos calcular u(x, y) . Vamos supor que desejamos saber o valor de u(x, y) para 0 x 3 e 0 y 3 . timo, agora temos a funo que queremos plotar o grfico e o intervalo definido para x e y. O passo seguinte

    decidir em quais coordenadas (x,y) eu quero calcular o valor de u(x, y) . Vamos supor que eu queira calcular o valor de u(x, y) em 5 pontos igualmente espaados entre 0 x 3 e 0 y 3 , portanto os pontos que queremos calcular o valor da funo so:

    x y

    0 0

    0,75 0,75

    1,5 1,5

    2,25 2,25

    3 3

    importante lembrar que a nossa funo, uma funo em duas dimenses,

    portanto para cada coordenada x temos os pares com as coordenadas y

    gerando assim o conjunto de pontos (malha) ilustrado a seguir (uma matriz !) :

  • 68

    Tabela 11 Exemplo de uma subdiviso de pontos para uma funo bidimensional.

    u(0,3) u(0.75,3) u(1.5,3) u(2.25,3) u(3,3)

    u(0, 2.25) u(0.75, 2.25) u(1.5, 2.25) u(2.25, 2.25) u(3, 2.25)

    u(0,1.5) u(0.75,1.5) u(1.5,1.5) u(2.25,1.5) u(3,1.5)

    u(0, 0.75) u(0.75, 0.75) u(1.5, 0.75) u(2.25, 0.75) u(3, 0.75)

    u(0, 0) u(0.75, 0) u(1.5, 0) u(2.25, 0) u(3, 0)

    Finalmente aps a subdiviso dos pontos podemos ento calcular o valor da

    funo nas coordenadas, conforme ilustrado a seguir.

    Tabela 12 Matriz de soluo para a funo u(x,y).

    5.0 2.36 1.11 0.52 0.2489

    28.77 13.59 6.42 3.03 1.43

    165.57 78.21 36.94 17.45 8.24

    952.83 450.08 212.60 100.42 47.43

    5483.16 2590.06 1223.45 577.92 272.99

    Utilizando o SCILAB para gerar o grfico da funo u(x, y) = 5ex+73y

    Vamos agora aprender ento como executar todos os passos descritos

    acima utilizando o SCILAB.

    1. Para gerar os intervalos das funes ; 0 x 3 e 0 y 3 faremos uso da funo linspace( ). Conforme explicado no captulo de vetores a funo linspace(valor1, valor2, valor3 ) funciona da seguinte maneira; o primeiro valor dentro do parnteses representa o valor inicial do vetor a ser criado, o segundo valor representa o fim do

    intervalo a ser criado e o ltimo valor dentro do parnteses representa

  • 69

    o nmero de elementos que sero criados para este vetor. Portanto se

    quisermos 5 pontos dentro do intervalo 0 x 3 e 5 pontos dentro do intervalo 0 y 3 utilizaremos o comando da seguinte forma;

    intervalox=linspace(0,3,5); intervaloy=linspace(0,3,5);

    2. Para gerar a matriz ilustrada pela tabela 11 utilizaremos o comando meshgrid(). O comando meshgrid() recebe os pontos gerados pelo comando linspace( ) e gera as coordenadas x e y, conforme a tabela 11.

    [x,y]=meshgrid(intervalox,intervaloy);

  • 70

    3. A partir das coordenadas geradas x e y podemos ento calcular o

    valor da funo u(x, y) = 5ex+73y para cada ponto gerado.

    for i=1:5 for j=1:5 u(i,j)= 5*exp(-x(i)+((7/3)*y(i))); end end

    4. Finalmente por meio das matrizes x, y e u podemos gerar o grfico

    para a funo proposta. Veja um exemplo utilizando o comando

    mesh().

    intervalox=linspace(0,3,5); intervaloy=linspace(0,3,5); [x,y]=meshgrid(intervalox,intervaloy); for i=1:5 for j=1:5 u(i,j)= 5*exp(-x(i,j)+((7/3)*y(i,j))); end end mesh(x,y,u);

    Figura 35 Exemplo de grfico 3d utilizando o comando mesh().

    5. Que tal aumentarmos o nmero de pontos para 100 ao invs de 5 ?

    Veja o resultado desta modificao !

  • 71

    Figura 36 Exemplo de grfico 3d com 100 pontos

    PRTICA !!!

    Exerccio 1. Utilize a metodologia descrita acima para plotar o grfico das seguintes funes.

    a) u(x, t) = 5e42tsen(2 x) para 0 x 1 e t 0

    b) u(x, t) = sen( x)cos( t) para 0 x 1 e t 0

    c) u(x, t) =1+ x et para 0 x 1 e t 0

    d) u(x, y) = 5e32 tsen(4 x)3e1282t sen(8 x)+ 2e2002tsen(10 x)

    Exerccio 2 A funo a seguir representa a distribuio de temperatura em uma placa de 1cm de espessura durante o tempo.

    T (x, t) = 800 2

    (1)m(2m+1)2

    sen[(2m+1) x]e(2m+1)22 tm=0

    10

    em que ;

  • 72

    T (x, t) a temperatura na posio x da placa no tempo t.

    a condutividade trmica da placa.

    Construa um grfico tridimensional com a distribuio de temperatura da

    placa. Lembre-se a espessura de 1cm portanto seu intervalo para x ser

    0 x 1 e 0 t 10

  • 73

    REFERNCIAS BIBLIOGRFICAS

    ASCENCIO, A. F. G; CAMPOS, E. A. V. Fundamentos da Programao de Computadores Algoritmos, Pascal, C/C++ e Java. 3 edio, Pearson, 2012.

    BOYCE,W. E.; DIPRIMA, R. C. Elementary Differential Equations and Boundary Value Problems. Wiley, 10th Edition, 2012.

    BROOKER, D.B.; BAKKER-ARKEMA, F.W.; HALL, C.W. Drying and storage of oilseeds, The AVI Publishing Company, New York, 1992. 450p

    COSTA, E. Da Cruz . Refrigerao. Editora Edgard Blucher, 3 edio, 2011.

    DUCHON, C.; HALE, R. Time series analysis in meteorology and climatology. An introduction. Wiley, 2012.

    HOFFMAN, J. D; FRANKEL, S. Numerical Methods for Engineers and Scientists. CRC Press; 2 edition, 2001.

    HOLLOWAY, J. P.; HOLLOWAY, J. P. Introduo Programao para Engenharia - Resolvendo Problemas com Algoritmos. Editora Ltc, 2006.

    KUO, B.C; GOLNARAGHI, F. Automatic Control Systems. Wiley; 8 edition 2002.

    RAYMOND, KAPUNO JR. R. Programming for Chemical Engineers Using C, C++, and MATLAB. Jones & Bartlett Learning, 2008.