Baixe o app para aproveitar ainda mais
Prévia do material em texto
Ministério da Educação Universidade Tecnológica Federal do Paraná Departamento Acadêmico de Matemática Disciplina: Cálculo Numérico ProfªAngelaOlandoski Barboza Aula de Laboratório nº 1 Método da Posição Falsa para encontrar raízes de funções com uma variável Objetivo: Nesta aula vamos desenvolver um aplicativo computacional usando Visual Basic for application (VBA) do Excel 2007 para resolver o algoritmo do Método da Posição Falsa. 1) Inicie o aplicativo Microsoft Excel 2007. Você verá a tela à seguir. Se você ainda não está visualizando a guia “Desenvolvedor”, terá que habilitá-la para poder acessar o VBA; 2) Pressione o ícone no canto esquerdo superior da janela do Excel. Você verá a caixa de diálogo a seguir. 3) Pressione o botão “Opções do Excel” e você terá a nova caixa de diálogo a seguir. 4) Dê um clique na opção “Mostrar guia Desenvolvedor na Faixa de Opções” e pressione o botão “OK”. Você então poderá observar a guia do desenvolvedor na barra de menus como mostra a figura a seguir. 5) Clique na guia “Desenvolvedor”. Você poderá visualizar as opções do desenvolvedor. 6) Para que você não tenha problemas em abrir pastas que contenham programas desenvolvidos em VBA, você terá que alterar a opção de segurança de macro. Pressione então o ícone . Você terá a seguinte caixa de diálogo. 7) Escolha a opção “Habilitar todas as macros” e clique em “OK”. 8) Feche o aplicativo Excel 2007 para que sua configuração seja aceita e em seguida abra novamente o Excel. Em seguida, clique na guia “Desenvolvedor”. 9) Para abrir o VBA, pressione o ícone . Você veráa janela do VBA mostrada na figura a seguir. 10) Na janela do Microsoft Visual Basic, no menu Inserir, escolha UserForm, conforme indica a figura; 11) A próxima tela encontrada é a mostrada na seguinte figura com indicação dos objetos rótulo, caixa de texto e botão de comando; 12) Vamos inserir 6rótulos (Label), 6 caixas de texto (TextBox) e dois botões de comando (CommandButton).As caixas são para os dados de entrada: função a, b, TOL eN0 e para o dado de saída p. Estas caixas e os botões, serão inseridos na janela UserForm1. Para fazer a inserção de um rótulo, posicione o cursor do mouse sobre o rótulo, indicado na figura acima, clique no botão esquerdo do mouse e arraste para a janela do Form e então solte o botão do mouse. O procedimento é igual para a inserção de caixas de texto e botões de comando. Quando inserimos o primeiro rótulo, podemos observar que dentro do mesmo vem escrito “Label1”. Para trocar o que vem escrito, usamos a janela Propriedades (Properties). Na linha onde temos a propriedade “Caption”, escrevemos na linha ao lado direito o que desejarmos. Quando você desejar fazer alteração de propriedades de algum objeto (Rótulo, Caixa de Texto, Botões, etc.) em primeiro lugar clique com o mouse sobre este objeto para marcá-lo. Nos seis rótulos, escreveremos “Função”,“a”, “b”, “TOL”, “N0” e “p”, respectivamente. As caixas de texto, por enquanto, deverão ser deixadas em branco.Para os botões o processo é semelhante. Tente deixar o UserForm1 como mostra a figura. Label ou Rótulo TextBox ou Caixa de Texto Command Button ou Botão de Comando 13) Para mudar o nome“UserForm1” para “Método da Posição Falsa”, clique na parte azul do UserForm1, em seguida clique na propriedade “Caption” na janela “Properties” eentão faça a alteração. Seu UserForm deverá estar semelhante ao mostrado na figura a seguir. A interface com o usuário é este UserForm que acabamos de construir. Os passos seguintes, irãodescrever como construir o módulo para o funcionamento do nosso aplicativo. 14) Antes de continuarmos, vamos salvar a pasta do Excel. Para retornar à janela das planilhas, clique no ícone do Excel que está no canto esquerdo superior da tela como mostra a figura a seguir. 15) Crie na pasta “Meus documentos” uma pasta onde você irá salvar seu aplicativo. Clique então no ícone . Você verá a caixa de mensagem a seguir. Para que você possa salvar seu arquivo com o projeto VBA, você terá que escolher a opção “Não”. 16) Na caixa de diálogo “Salvar como”, clique na seta de opções de “Salvar como tipo”. Escolha a opção “Pasta de Trabalho Habilitada para Macro do Excel”. Veja as indicações na figura a seguir. Em seguida escolha um nome para sua pasta e salve-a no local escolhido por você. 17) Antes de retornarmos à janela do VBA, vamos digitar na “Plan1” os dados, conforme mostra a figura. 18) Agora, vamos começar a desenvolver as rotinas para os botões de comando que inserimos. Primeiramente, vamos fazer o botão”Sair” funcionar. Volte ao VBA usando o ícone . Em seguida, dê um duplo clique com o botão esquerdo do mouse sobre o botão Sair. Você terá a janela de códigos mostrada na figura a seguir: 19) A rotina que desejamos que seja executada ao pressionarmos esse botão, deverá estar escrita entre essas duas linhas. A primeira linha indica o início da rotina e o nome desta, que no nosso caso é “CommandButton2”. O comando “Click” indica que esta rotina será executada quando pressionarmos esse botão. Entre estas duas linhas escreva:“End” que é o comando que encerra o aplicativo. Ficará como mostra a figura.Para voltar a visualizar o UserForm, clique no ícone indicado pelo balão na figura. 20) Vamos agora verificar se o botão “Sair”já está funcionando. Para tanto, pressione na barra de ferramentas o botão “start”. O projeto é então executado. Pressione o botão sair. A execução é então encerrada. 21) Para facilitar os testes durante a execução, vamos digitar nas caixas de texto,dados para a execução do aplicativo. Digite-os como mostra a figura. Para digitar, basta clicar sobre a caixa, esperar uns instantes e clicar novamente. O cursor se posicionará dentro da caixa, esperando a digitação. Para visualizar o UserForm 22) Vamos agora escrever o código para o botão “Executar”: (as explicações sobre o que cada parte do programa irá fazer aparecerão como comentários no próprio código). Obs.: a primeira e última linhas (em cor verde) do código já aparecem quando clicamos duplo no botão Executar. Não incluí-las novamente. Private Sub CommandButton1_Click() 'Declaração das variáveis Dim a As Double Dim b As Double Dim TOL As Double Dim N As Integer Dim p As Double Dim FA As Double Dim FB As Double Dim FP As Double Dim Função As String Dim FunçãoA As String Dim FunçãoB As String Dim FunçãoP As String 'Limpar a plan1 Worksheets("Plan1").Range("B2:G500000").Clear 'Para carregar os dados no programa, iremos utilizar as caixas de texto Função = "=" &TextBox1.Text a = TextBox2.Text Cells(2, 2) = a b = TextBox3.Text Cells(2, 4) = b TOL = TextBox4.Text N = TextBox5.Text 'Passo 1:Vamos calcular o valor de f(a) e f(b) 'Cálculo de f(a) FunçãoA = Função FunçãoA = Replace(FunçãoA, "exp", "y") FunçãoA = Replace(FunçãoA, "x", a) FunçãoA = Replace(FunçãoA, "y", "exp") FunçãoA = Replace(FunçãoA, ",", ".") Cells(2, 3).Formula = FunçãoA FA = Cells(2, 3) 'Cálculo de f(b) FunçãoB = Função FunçãoB = Replace(FunçãoB, "exp", "y") FunçãoB = Replace(FunçãoB, "x", b) FunçãoB = Replace(FunçãoB, "y", "exp") FunçãoB = Replace(FunçãoB, ",", ".") Cells(2, 5).Formula= FunçãoB FB = Cells(2, 5) 'Vamos testar se f(a).f(b) < 0 e colocar uma mensagem caso não seja verdadeiro If FA * FB > 0 Then MsgBox "f(a).f(b)>0 - Fornecer outros valores para a e b" End End If 'Iniciar o valor do contador i i = 1 'Passo 2: Enquanto i<=No execute os passos 3-6 Do While i <= N 'Passo 3: p = (a * FB - b * FA) / (FB - FA) Cells(i + 1, 6) = p FunçãoP = Função FunçãoP = Replace(FunçãoP, "exp", "y") FunçãoP = Replace(FunçãoP, "x", p) FunçãoP = Replace(FunçãoP, "y", "exp") FunçãoP = Replace(FunçãoP, ",", ".") Cells(i + 1, 7).Formula = FunçãoP FP = Cells(i + 1, 7) 'Passo 4: If FP = 0 Or Abs(FP) < TOL Then TextBox6.Text = p MsgBox "Procedimento efetuado com sucesso" 'Caixa de mensagem Exit Do Else 'Passo 5: i = i + 1 'Passo 6: If FA * FP > 0 Then a = p FA = FP Cells(i + 1, 2) = a Cells(i + 1, 3) = FA Cells(i + 1, 4) = Cells(i, 4) Cells(i + 1, 5) = Cells(i, 5) Else b = p FB = FP Cells(i + 1, 3) = b Cells(i, 3) = b Cells(i + 1, 2) = Cells(i, 2) Cells(i + 1, 2) = Cells(i, 3) EndIf EndIf Loop 'Passo 7 If i > N Then MsgBox "Solução não encontrada" 'Caixa de mensagem EndIf End Sub 23) Os resultados para o primeiro exemplo devem ser como os mostrados na figura a seguir. 24) Agora tente resolver utilizando os seguintes dados: função ; intervalo: [ ]; tolerância: 0,00000001 N0: 10000 Você deverá encontrar os resultados na “Plan1” conforme mostrado na figura. 25) Finalmente, resolva para os seguintes dados: Função Intervalo: [ ] tolerância: 0,00000001 N0: 10000 Os resultados devem ser:
Compartilhar