Sei sulla pagina 1di 47

CÁLCULO NUMÉRICO

Aula 7
Noções Básicas de Octave
COMANDOS
BÁSICOS

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 3/55
Símbolo >>

¨  Ao abrir o Octave, o símbolo >> aparece na Janela


de Comandos.

¨  Ele indica que o programa está pronto para receber


comandos.
¨  Se o símbolo >> não estiver aparecendo, significa
que o Octave ainda está rodando algum programa.

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 4/55
Instruções Exercícios
¨  Nos slides, as cores dos textos indicam:

¨  Vermelho : comando a ser digitado no Octave.

¨  Azul: resultado dado pelo Octave.

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 5/55
Exercício
Digite: 2*7
Resposta: ans = 14

A resposta (ANSwer) do comando que você digitou é 14.

Digite: 1/7 Digite: 10/7 Digite: 100/7


Resposta: 0.14286 Resposta: 1.4286 Resposta: 14.286

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 6/55
Exercício
Observe que o Octave sempre apresenta as respostas com 5
dígitos significativos.

Este é o format short

Entretanto, a representação interna do número contém 15


algarismos significativos.

Formatos disponíveis:
long/short e/ /short g/long g

mais próximo
da aritmética de
ponto flutuante
Aula 7 – MATLAB - Zeros de funções
Cálculo Numérico 7/55
¨  No Matlab, apenas um subconjunto F de dimensão finita do
conjunto dos números reais pode ser representado.

F = F(β, k, L, U) = F(2, 53,-1031, 1024)

limites
do
expoente
¨  53 algarismos significativos na base 2 correspondem aos 15
algarismos significativos na base 10 do format long.

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 8/55
Exercício
a=2;
b=7;
c = a*b;
c Isto nos mostrará o que está armazenado na variável c.
d = sqrt(c)

Observe que as variáveis a, b e c e seus valores aparecem no


Ambiente de Trabalho.
Observe ainda que os comandos digitados aparecem no
Histórico de Comandos.

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 9/55
Símbolo ;

¨  Os comandos podem terminar em ; ou não.

¨  Quando um comando termina com ; ele é


executado, mas o conteúdo das variáveis
envolvidas não são mostrados na tela.

¨  Para que o resultado apareça na tela é necessário


omitir o ; .

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 10/55
Digitando %

¨  O símbolo % é digitado no início de uma linha de comando


para se incluir um comentário.

% Esta linha não será executada.

¨  Assim, a linha não será executada.

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 11/55
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 7 – MATLAB - Zeros de funções


Cálculo Numérico 12/55
Operações Matemáticas
¨  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

¨  Se duas ou mais operações tiverem a mesma ordem de


precedência, a expressão mais à esquerda será executada
primeiro.
Aula 7 – MATLAB - Zeros de funções
Cálculo Numérico 13/55
Funções Matemáticas Elementares

¨  exp(x) – ex
¨  abs(x) – valor absoluto
¨  log(x) – logaritmo natural (base e)
¨  log10(x) – logaritmo na base 10
¨  sqrt(x) – raiz quadrada
¨  nthroot(x,n) – n-ésima raiz real
¨  factorial(x) – x!

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 14/55
Funções Trigonométricas

¨  sin(x) – seno (x em radianos)


¨  sind(x) – seno (x em graus)
¨  cos(x) – coseno (x em radianos)
¨  cosd(x) – coseno (x em graus)
¨  tan(x) – tangente (x em radianos)
¨  tand(x) – tangente (x em graus)
¨  cot(x) – cotangente (x em radianos)
¨  cotd(x)- cotangente (x em graus)

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 15/55
LIMPAR MEMÓRIA E COMANDOS
¨  Comando clc:

¤  Limpa os últimos resultados exibidos na janela de comandos.

¨  Comando clear:

¤  Limpa a memória.

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 16/55
Regras para nomes de variáveis

Os nomes das variáveis:


¨  Podem conter até 63 caracteres;
¨  Podem conter letras, números e o caractere sublinhar;
¨  Devem iniciar com uma letra;
¨ 

;
¨  Evite usar nomes de funções nativas do Octave para nomear
variáveis (p.ex. cos, sin, exp, sqrt, etc.)

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 17/55
Símbolos Lógicos

Operação Símbolo
Igualdade ==
Desigualdade ~=
Maior ou igual >=
Menor ou igual <=

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 18/55
?? Undefined variable
¨ 

¨  Erro comum: declara-se uma variável com letras minúsculas


e na hora de utilizá-la, usa-se letra maiúscula.
¨  Exemplo:
>> erro = 1;
>> Erro+2;
¨  Aparecerá a mensagem:

Error: ‘Erro’ undefined near line 1 column 1

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 19/55
Criando uma nova função
¨  Comando: function
Saídas Entradas

function [s1,s2] = nomearquivo(e1,e2,e3)


comandos
endfunction

O script (editor) deve ter o mesmo


nome da função (nomearquivo)
Aula 7 – MATLAB - Zeros de funções
Cálculo Numérico 20/55
Fase I: Isolamento das Raízes

¨  EXEMPLO 1: Seja f (x) = x3 – 9 x + 3. Vamos


analisar o sinal desta função.

¨  Construindo uma tabela de valores para f (x) e


considerando apenas os sinais, temos:

x - ∞ -100 -10 -5 -3 -1 0 1 2 3
f(x) - - - - + + + - - +

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 21/55
Function
No editor:
function [y] = f(x)
y=x.^3-9*x+3;
endfunction

Para podermos chamar essa função na janela de comandos, o


arquivo com a função deve ter o mesmo nome dado à função
(ex. f) e a extensão .m.
Além disso, é necessário que estejamos com a pasta na qual a
função foi salva aberta.

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 22/55
Function
Na janela de comandos:

>> f(0)
ans=3

>> [y]=f(0)
y=3

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 23/55
Function
¨ Podemos calcular o valor de f(x) para vários valores de x.
>> x=-5:5

>> y = f(x)

q  Note que o primeiro comando criou um vetor, x, cujos


elementos são os inteiros consecutivos desde -5 até 5.
q  O segundo comando criou outro vetor, y, contendo os
respectivos valores do polinômio f calculados neste inteiros.
¨  Para introduzir mais pontos entre -5 e 5, podemos fazer:

>> x=-5:0.5:5
Aula 7 – MATLAB - Zeros de funções
Cálculo Numérico 24/55
¨  Podemos construir o gráfico de uma função através do
comando fplot.

¨  Basicamente, você deve fornecer como primeiro argumento


a função que pretende usar entre apóstrofes e como segundo,
o intervalo em x sobre o qual a função será plotada.

>> fplot('f',[-5,5])

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 25/55
Plotar gráficos
¨  Podemos utilizar alguns comandos para melhorar a aparência
de nosso gráfico:
>> title ('título')

>> xlabel ('x')

>> ylabel ('y')

>> legend ('f(x)')

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 26/55
Em programas computacionais, além do teste de
parada usado para cada método, deve-se ter o
cuidado de estipular um número máximo de
iterações, para se evitar que o programa entre em
“looping”.

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 27/55
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 ‘prec’, número
máximo de iterações ‘nmax’.
SAÍDA: solução aproximada x .
Passo 1: Se f(a) * f(b) >0
Mensagem de condição não satisfeita.
senão
Passo 2: k = 1;
Passo 3: Enquanto k < nmax, execute os passos 3 a 6.
Passo 4: p = (a + b) / 2; ( )
Aula 7 – MATLAB - Zeros de funções
Cálculo Numérico 28/55
Algoritmo do Método da Bissecção
Passo 5: Se f (p) = 0 ou |b – a| < prec, então:

SAÍDA (p está entre a e b);


( ).
PARE.

Passo 6: k = k + 1.
Passo 7: Se f (a) * f (p) < 0, então faça b = p; ( ).

senão faça a = p.

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 29/55
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:

& E lógico
|| OU lógico
~ NÃO lógico

¨  Exemplo:

>> if(abs(f(p))=0 || abs(b – a)<erro)

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 30/55
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>
>> endif

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 31/55
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>
>> endwhile

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 32/55
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. Para isto, usa-se
o comando break.

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 33/55
Comando feval
¨  O comando feval avalia o valor de uma função em um
determinado ponto.

feval(f,a)

Usando o feval, podemos incluir f(x) como entrada na


function.
Neste caso, ao chamar a function, devemos fazer:

[p]=bissec(a,b,'f',prec)

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 34/55
Resumo de comandos

clear Limpa a memória


clc Limpa a tela (command window)
while Repete comandos enquanto condição especificada for verdadeira
if Condiciona execução de comandos
else Usado com o comando if
endif Usado para terminar a execução dos comando if
endwhile Usado para terminar a execução dos comando while
break Interrompe a execução de laços while e for
feval(f,a) Avalia o valor da função f no ponto a
Aula 7 – MATLAB - Zeros de funções
Cálculo Numérico 35/55
Método da Bissecção
¨ 

¤  Função: f

¤  Extremos dos intervalos: a, b

¤  Precisão: prec

¤  Número máximo de iterações: nmax

¤  A cada iteração: p

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 36/55
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 ‘prec’, número
máximo de iterações ‘nmax’.
SAÍDA: solução aproximada x .
Passo 1: Se f(a) * f(b) >0
Mensagem de condição não satisfeita.
senão
Passo 2: k = 0;
Passo 3: Enquanto k < nmax, execute os passos 3 a 6.
Passo 4: p = (a + b) / 2; ( )
Aula 7 – MATLAB - Zeros de funções
Cálculo Numérico 37/55
Algoritmo do Método da Bissecção
Passo 5: Se f (p) = 0 ou |b – a| < prec, então:

SAÍDA (p está entre a e b);


( ).
PARE.

Passo 6: k = k + 1.
Passo 7: Se f (a) * f (p) < 0, então faça b = p; ( ).

senão faça a = p.

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 38/55
EXEMPLO

Iremos resolver o seguinte exemplo usando o método da


bissecção.

Considere ε = 0,002 e adotando [2,3] como intervalo inicial,


para obter uma aproximação para a função:

f (x) = x log(x) −1

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 39/55
EXEMPLO

k ak bk f(ak) f(bk) xk+1 f(xk+1)


0 2,00000 3,00000 -0,39794 0,43136 2,50000 -0,00515

1 2,50000 3,00000 -0,00515 0,43136 2,75000 0,20816

2 2,50000 2,75000 -0,00515 0,20816 2,62500 0,10021

3 2,50000 2,62500 -0,00515 0,10021 2,56250 0,04720

4 2,50000 2,56250 -0,00515 0,04720 2,53125 0,02094

5 2,50000 2,53125 -0,00515 0,02094 2,51563 0,00788

6 2,50000 2,51563 -0,00515 0,00788 2,50782 0,00136

7 2,5000 2,50782 -0,00515 0,00136 2,50391 -0,00189

8 2,50391 2,50782 -0,00189 0,00136 2,50587 -0,00026

9 2,50587 2,50782 -0,00026 0,00136


x∈ -
[2,50587 - ]
, 2,50782
|b - a| = 0,00195 < ε =0,002
Aula 7 – MATLAB - Zeros de funções
Cálculo Numérico 40/55
Algoritmo do Método de Newton

ENTRADA: aproximação inicial x0; precisão prec, número


máximo de iterações nmax.
SAÍDA: solução aproximada x ou mensagem de erro.

Passo 1: k = 0;
Passo 2: Enquanto k < nmax , execute os passos 3 a 6.
Passo 3: p = x0 – f (x0) / f’ (x0); (Calcula xi)
Passo 4: Se |p – x0| < prec, então:
SAÍDA (x); (Procedimento concluído com sucesso).
PARE.

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 41/55
Algoritmo do Método de Newton

Passo 5: k = k + 1.

Passo 6: x0 = p; (Atualiza x0)

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 42/55
EXEMPLO 1
¨  Considere a função f (x) = x3 – 9x + 3

Seja x0 = 1,5 e ε = 10 -3.

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 43/55
EXEMPLO 1
k xk f (xk) f’ (xk)
0 0,1500 × 101 -0,7125 × 101 -0,2250× 101
1 -0,1667 × 101 0,1337× 102 -0,6663 × 100
2 0,1840 × 102 0,6067 × 104 0,1007 × 104
3 0,1238 × 102 0,1789 × 104 0,4508 × 103
4 0,8411 × 101 0,5223 × 103 0,2032 × 103
5 0,5841 × 101 0,1497 × 103 0,9335 × 102
6 0,4237 × 101 0,4093 × 102 0,4486 × 102
7 0,3325 × 101 0,9835 × 101 0,2417 × 102
8 0,2917 × 101 0,1567 × 101 0,1653 × 102
9 0,2822 × 101 0,7552 × 10-1 0,1489 × 102
10 0,2817 × 101 0,1273 × 10-3 0,1481 × 102
Aula 7 – MATLAB - Zeros de funções
44/55
|f(x)| < ε = 10-3 Cálculo Numérico
Algoritmo do Método da Secante

ENTRADA: aproximações iniciais x0 , x1; precisão prec , número


máximo de iterações nmax .
SAÍDA: solução aproximada x ou mensagem de erro.
Passo 1: Faça k = 1;

Passo 2: Enquanto k <nmax , execute os passos 3 a 6.


Passo 3:
x2 = (x0 f(x1) – x1 f(x0)) / (f(x1) - f(x0)); (Calcula xi)

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 45/55
Algoritmo do método da Secante

Passo 4: Se |x1 – x0| < prec, então:


SAÍDA (x2); (Procedimento concluído com sucesso).
PARE.

Passo 5: k = k + 1.

Passo 6: x0 = x1; (Atualiza x0 , x1 )


x1 = x2;

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 46/55
REFERÊNCIA

¨  Becker, A. J.; Silva, D. M. I.; Dias, F.H.S.; Pinheiro L. K.


Noções Básicas de Programação em MATLAB.
Universidade Federal de Santa Maria, Santa Maria, Outubro
de 2010.

¨  PET – Engenharia de Computação. Mini-curso de MATLAB


e Octave para Cálculo Numérico. Universidade Federal do
Espírito Santo. http://www.inf.ufes.br/~pet.

Aula 7 – MATLAB - Zeros de funções


Cálculo Numérico 47/55

Potrebbero piacerti anche