Buscar

10-Scilab

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

CÁLCULO NUMÉRICO 
Profa. Dra. Yara de Souza Tadano yaratadano@utfpr.edu.br 
Aula 10 
Scilab – Métodos para zeros reais de funções 04/2014 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 3/47 
Algoritmo do Método da Bissecção 
¨  Seja f (x) contínua em [a, b] e tal que f (a) e f (b) têm sinais 
opostos: 
ENTRADA: função f, extremidades a, b; precisão ‘erro’, número 
máximo de iterações ‘max’. 
SAÍDA: solução aproximada ou mensagem de erro. 
Passo 1: Faça i = 1; 
 
Passo 2: Enquanto i < max, execute os passos 3 a 6. 
 Passo 3: Faça p = (a + b) / 2; ( ) 
 
 
x
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 4/47 
Algoritmo do Método da Bissecção 
 Passo 4: Se f (p) = 0 ou |b – a| < erro, então: 
 SAÍDA (x); ( ). 
 PARE. 
 Passo 5: Faça i = i + 1. 
 Passo 6: Se f (a) * f (p) > 0, então faça a = p; ( ). 
 senão faça b = p. 
 
 SAÍDA (‘ ’, max); 
 ( ). 
 PARE. 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 5/47 
INTRODUÇÃO 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 6/47 
LAYOUT DO SCILAB 
Command 
History 
Window 
Workspace 
Window 
Command 
Window 
C
ur
re
nt
 F
ol
de
r W
in
do
w
 
Local onde as 
operações podem ser 
diretamente feitas 
Espaço destinado às 
variáveis que estão salvas 
na memória, onde é 
possível visualizar o nome, 
valor e classe da mesma 
Lista de comandos 
realizados, organizados 
por data de execução, 
permitindo o comando ser 
realizado novamente com 
duplo clique 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 7/47 
Editor – SciNotes 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 8/47 
COMANDOS 
BÁSICOS 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 9/47 
COMENTÁRIO 
¨  Para incluir uma linha com comentários: 
 % no MATLAB 
 // no SCILAB. 
¨  Assim, a linha não será executada. 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 10/47 
LIMPAR MEMÓRIA E COMANDOS 
¨  Comando clc: 
¤  Limpa os últimos resultados exibidos na janela de comandos. 
¨  Comando clear: 
¤  Limpa a memória. 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 11/47 
Símbolos Aritméticos 
Operação Símbolo Exemplo 
Adição + 5 + 3 
Subtração – 5 – 3 
Multiplicação * 5 * 3 
Divisão / 5 / 3 
Exponenciação ^ 5 ^ 3 (significa 53 = 125) 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 12/47 
Símbolos Lógicos 
Operação Símbolo 
Igualdade == 
Desigualdade ~= 
Maior ou igual >= 
Menor ou igual <= 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 13/47 
¨  Ordem em que o MATLAB faz as operações: 
Ordem Operação Matemática 
Primeiro Parênteses. Para vários parênteses, o que estiver 
por dentro é executado primeiro 
Segundo Exponenciação 
Terceiro Multiplicação, divisão (mesma ordem) 
Quarto Adição e subtração 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 14/47 
Funções matemáticas elementares 
¨  sqrt(x) – raiz quadrada 
¨  nthroot(x,n) – n-ésima raiz real 
¨  exp(x) – ex 
¨  abs(x) – valor absoluto 
¨  log(x) – logaritmo natural (base e) 
¨  log10(x) – logaritmo na base 10 
¨  factorial(x) – x! 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 15/47 
Funções Trigonométricas 
¨  sin(x) – seno (x em radianos) 
¨  sind(x) – sine (x em graus) 
¨  cos(x) – cosine (x em radianos) 
¨  cosd(x) – cosine (x em graus) 
¨  tan(x) – tangent (x em radianos) 
¨  tand(x) – tangent (x em graus) 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 16/47 
Derivada 
¨  Para calcularmos derivadas utiliza-se o comando: 
>> diff(f(x),x,n) MATLAB 
>> numderivative(f(x),x,n) SCILAB 
¨  onde n indica a ordem da derivação. 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 17/47 
Definição de função 
¨  COMANDO deff 
 
¨  deff(“[y]=f(x)”, “função”) 
¨  EXEMPLO: 
>> deff(“[y]=f(x)”, “y = x.^3-9*x+3”) 
 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 18/47 
Definição de função 
¨  COMANDO function 
¨  function nome da variável = f(x) 
¨  <comandos> 
¨  endfunction 
¨  EXEMPLO: 
>> function f = f(x) 
>> f = x.^3-9*x+3 
>> endfunction 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 19/47 
¨ 
¨  Gráfico em duas dimensões de uma função: 
¨  fplot2d (x,f) 
¨  Para usar este comando precisamos definir a função a ser 
plotada. 
Plotar gráficos 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 20/47 
Plotar gráficos 
¨  Podemos utilizar alguns comandos para melhorar a aparência 
de nosso gráfico: 
¨  title (‘título’); 
¨  xlabel (‘x’); 
¨  ylabel (‘y’). 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 21/47 
Plotar gráfico de várias funções 
¨  É possível desenhar mais que uma função no mesmo 
gráfico. 
¨  Usa-se o comando hold do MATLAB. 
¨  Para usar um comando do MATLAB no SCILAB, use: 
>>mtlb_ 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 22/47 
Exemplo 1 
¨ 
¨  Uso do comando fplot2d para construir o gráfico de uma 
função. 
¨  Função: x3 - 9 x + 3 
>> function f = f(x) 
>> f = x.^3-9*x+3 
>> endfunction 
>> x = [-5:0.5:5]; 
>> fplot2d(x,f); 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 23/47 
Exemplo 2 
Construção do gráfico de duas funções (log x e 1/x) 
>> x = [0.5:0.1:6] 
>> deff("[f]=f(x)", "f = log10(x)") 
>> deff("[g]=g(x)", "g = 1./x") 
>> mtlb_hold on 
>> fplot2d(x,f) 
>> fplot2d(x,g) 
>> hold off 
 
>> title('gráfico das funções log(x) e 1/x') 
>> xlabel('x') 
>> ylabel('y') 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 24/47 
break Interrompe a execução de laços for e while 
clc Limpa a tela (command window) 
disp Exibe o conteúdo de uma variável, sem mostrar o seu nome 
input Permite ao usuário inserir variáveis, textos, valores, etc 
sign Função sinal: retorna o sinal de um argumento 
if Condiciona execução de comandos 
else Usado com o comando if 
elseif Usado com o comando if 
end Usado para terminar a execução dos comandos if,for,while 
while Repete comandos enquanto condição especificada for verdadeira 
printf Grava dados em arquivo formatado 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 25/47 
Comando input 
¨  A cada vez que o programa for rodado ele mesmo pedirá as 
variáveis, logo não será necessário mudar o código 
original do programa e haverá uma maior interação entre o 
programa e o usuário (não necessariamente um 
programador). 
¨  Exceto com relação à especificação da função. 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 26/47 
Comando input 
¨  Exemplo: 
>> a = input(‘limite inferior’); 
>> b = input(‘limite superior’); 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 27/47 
Comando printf 
¨  O comando printf é um dos métodos mais simples de 
saída de dados. 
>> printf('A raiz é: %f', x); 
 
o que está entre aspas aparecerá para o usuário, os itens onde 
aparece %f serão substituídos pelas variáveis, respeitando-se a 
ordem em que aparecem. 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 28/47 
Comandos Lógicos 
¨  Muitas vezes é necessário colocar mais de um comando ao 
mesmo parâmetro (principalmente no laço if), para isso 
existem os comando lógicos dados na seguinte tabela: 
¨  Exemplo: 
>>if (f(x) == 0 | abs(b – a) < tol) 
& E lógico 
| OU lógico 
~ NÃO lógico 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 29/47 
Estrutura condicional if-end 
¨  Se o resultado da expressão lógica <condição> for 
verdadeiro, então a lista de <comandos> será executada. 
Se o resultado for falso,os <comandos> não serão 
executados. 
>> if <condição> 
>> <comandos> 
>> end 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 30/47 
O Laço while 
¨  O laço while, repete um grupo de comandos um número 
indefinido de vezes, até obtermos uma resposta satisfatória 
ou até que o usuário mande interromper o programa. 
¨  Enquanto a expressão lógica <condição> for verdadeira a 
lista <comandos> será repetida. 
>> while <condição> 
>> <comandos> 
>> end 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 31/47 
Comando break 
¨  A estrutura while permite que um grupo de comandos seja 
repetido um número indeterminado de vezes. No entanto, a 
condição de interrupção é testada no início da estrutura. 
¨  Em várias situações em programação se faz necessário 
interromper a execução da repetição verificando a condição 
no interior da estrutura e não no seu início. 
 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 32/47 
Comando break 
¨  A estrutura while é executada indefinidamente a 
princípio, pois a condição do while é sempre verdadeira. 
Contudo, quando a <condição> do if for satisfeita o 
comando break será executado causando a interrupção da 
repetição while. 
>> while 1 
>> <comandos 1> 
>> if <condição> 
>> break 
>> end 
>> <comandos 2> 
>> end 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 33/47 
Método da Bissecção 
¨ 
¨  Função: f 
¨  Extremos dos intervalos: [a, b] 
¨  Precisão: tol 
¨  Número máximo de iterações: nmax 
¨  A cada iteração: x 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 34/47 
Algoritmo do Método da Bissecção 
¨  Seja f (x) contínua em [a, b] e tal que f (a) e f (b) têm sinais 
opostos: 
ENTRADA: função f, extremidades a, b; precisão ‘tol’, número 
máximo de iterações ‘nmax’. 
SAÍDA: solução aproximada ou mensagem de erro. 
Passo 1: Faça i = 1; 
 
Passo 2: Enquanto i < nmax, execute os passos 3 a 6. 
 Passo 3: Faça x = (a + b) / 2; ( ) 
 
 
x
Se (f(a) f(b)) > 0 então: 
SAÍDA: Este intervalo não contém a raiz 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 35/47 
Algoritmo do Método da Bissecção 
 Passo 4: Se f (x) = 0 ou |b – a| < erro, então: 
 
 SAÍDA (x); ( ). 
 PARE. 
 
 Passo 5: Faça i = i + 1. 
 
 Passo 6: Se f (x) * f (a) > 0, então faça a = x; ( ). 
 senão faça b = x. 
 
 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 36/47 
Implementação 
Clear all, clc 
 a = input(’limite inferior:'); 
 b = input(’limite superior:'); 
tol = input(’precisão'); 
nmax = input(‘número máximo de iterações’); 
 
function f = f(x) 
 f = x.^3-9*x+3 
endfunction 
 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 37/47 
Implementação 
if (f(a)*f(b)>0) then 
 disp ‘Este intervalo não contém raiz’ 
 else 
 i = 1; 
 while (i < max) 
 x = (a+b)/2; 
 if ( f(x) == 0 | abs(b – a) < tol ) 
 printf('A raiz é: %1.8f\n', x); 
 printf('O número de iterações foi: 
 %i', i); 
 break 
 end 
abs(f(x)< tol | abs(b – a) < tol) 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 38/47 
Implementação 
 i = i + 1; 
 if (f(x)*f(a) > 0) then 
 a = x; 
 else 
 b = x; 
 end 
end 
(f(x)*f(b) < 0) then sign((f(x)) == sign(f(a))) then 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 39/47 
Algoritmo do Método de Newton 
ENTRADA: aproximação inicial x0; precisão tol, número máximo 
de iterações nmax. 
SAÍDA: solução aproximada ou mensagem de erro. 
 
Passo 1: Faça i = 0; 
Passo 2: Enquanto i ≤ nmax , execute os passos 3 a 6. 
 Passo 3: Faça x = x0 – f (x0) / f’ (x0); (Calcula xi) 
 Passo 4: Se |x – x0| < tol, então: 
 SAÍDA (x); (Procedimento concluído com sucesso). 
 PARE. 
 
x
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 40/47 
Algoritmo Método de Newton 
 Passo 5: Faça i = i + 1. 
 
 Passo 6: Faça x0 = x; (Atualiza x0) 
 
Passo 7: SAÍDA (‘O método falhou após N0 iterações, N0 = ’, N0); 
 (O procedimento não foi bem-sucedido). PARE. 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 41/47 
Implementação 
clear all, clc 
x0 = input(‘aproximação inicial:’) 
tol = input(‘precisão:’) 
nmax = input (‘número máximo de iterações:’) 
 
function f = f(x) 
 f = x.^3-9*x+3 
endfunction 
i = 0; 
Aula 10 – MATLAB - Zeros de funções 
Cálculo Numérico 42/47 
Implementação 
while (i < nmax) 
 
 x1 = x0 – f(x0) / numderivative (f,x0); 
 if (abs(x1 – x0) < tol) then 
 printf(‘A raiz é: %1.8f\n’, x1); 
 printf(‘O número de iterações foi: %i’, i); 
 break 
 end 
 i = i + 1; 
 x0 = x1 
end

Outros materiais