Buscar

Apostila Prática com 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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 3, do total de 15 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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 6, do total de 15 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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 9, do total de 15 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

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Universidade Federal de Lavras
Departamento de Ciências Exatas
GEX240 – Cálculo Numérico – 2019/2
Prof. Tiago Vieira
Apostila para aulas práticas com o Scilab
Lavras – MG
Sumário
Guia rápido 3
Comandos no Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Sites de apoio para análise gráfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Sistemas de numeração e erros 7
Revisão teórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Rotinas computacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Roteiro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Questões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Zeros de funções – métodos intervalares 11
Revisão teórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Rotinas computacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Roteiro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Questões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Zeros de funções – métodos abertos 15
Revisão teórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Rotinas computacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Roteiro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Questões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Sistemas não-lineares 19
Revisão teórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Rotinas computacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Roteiro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1
Sistemas lineares – métodos iterativos 23
Revisão teórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Rotinas computacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Roteiro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Questões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Sistemas lineares – métodos exatos 28
Revisão teórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Rotinas computacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Roteiro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Questões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Regressão polinomial pelo método dos quadrados mı́nimos 33
Revisão teórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Rotinas computacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Roteiro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Questões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Interpolação polinomial 39
Revisão teórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Rotinas computacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Roteiro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Interpolação por splines 44
Revisão teórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Rotinas computacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Roteiro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Integração numérica 48
Revisão teórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Rotinas computacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Roteiro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Questões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2
Guia rápido
Comandos no Scilab
comando
Descrição do comando.
; (ponto e v́ırgula)
Todo comando digitado terminado por um ; não mostra o resultado das operações executa-
das. Se o comando não terminar com ponto e v́ırgula, então os resultados da execução do
comando serão mostrados na janela de comandos do Scilab.
a = [1:0.5:2.5]
Atribui o vetor-linha [1, 1.5, 2, 2.5] à variável a. Para atribuir um vetor coluna, pode-se uti-
lizar o mesmo comando adicionando uma aspa simples imediatamente depois do caractere ].
linha = [1,2,3], coluna = [1;2;3]
Num vetor-linha definido por enumeração os elementos devem ser separados por v́ırgula. Os
elementos de um vetor-coluna, por outro lado, eles devem ser separados por ponto e v́ırgula.
A = [1,2,3;4,5,6;7,8,9]
Atribui a matriz


1 2 3
4 5 6
7 8 9

 à variável A. A transposta é obtida adicionando uma aspa
simples logo depois de ].
cos(x), sin(x) e tan(x)
Calcula respectivamente o cosseno, o seno e a tangente do ângulo x, que deve ser informado
em radianos. O parâmetro x pode ser um único valor ou um vetor numérico.
deff(‘[s1,s2,...]=identificador(e1,e2,...)’,[‘comando 1’;‘comando 2’;...])
Define uma função indicando seus valores de sáıda s1,s2,..., parâmetros de entrada
e1,e2,..., o identificador que dá nome à função e os comandos por ela executados. Esse co-
mando pode ser utilizando para definir funções matemáticas, por exemplo, f(x) = x2 · ln(x),
a qual é definida através do comando
deff(‘z=f(x)’,‘z=(x^2)*log(x)’)
3
Essa função tem o identificador f , o valor de retorno, o parâmetro de entrada x e executa
apenas um comando. Como segundo exemplo, a função matemática g(x, y) = sen(x) · cos(x),
que tem dois valores de entrada e um de sáıda, pode ser de definida com o comando
deff(‘z=g(x,y)’,‘z=sin(x)*cos(y)’)
Para exemplificar uma função mais genérica com dois valores de entrada, dois de sáıda e dois
comandos, pode-se considerar a função
deff(‘[Ea,Er]=E(xc,xa)’,[‘Ea=abs(xc-xa)’;‘Er=abs(Ea/xc)’])
exec(‘local do arquivo/arquivo.sci’)
Executa uma rotina chamada arquivo.sci que se localiza no diretório (pasta)
‘local do arquivo’, que deve incluir toda a sequência de diretórios desde a raiz. Alter-
nativamente, quando arquivo.sci estiver aberto no Scinotes (editor de códigos do Scilab),
pode-se pressionar a tecla F5 ou a combinação Crtl+F5.
horner(p,x)
Calcula a imagem dos valores armazenados em x através do polinômiop. O valor retornado
por esta rotina é uma matriz (ou vetor) com as mesmas dimensões de x.
log(x) ou log2(x) ou log10(x)
Calcula o logaritmo do(s) valor(es) numérico(s) armazenado(s) na variável x. O logaritmo
natural (base e) é calculado através da função log, o logaritmo de base 2 é calculado com o
uso da função log2 e o logaritmo de base 10 por meio da função log10.
[L,U,P]=lu(A) e [PL,U]=lu(A)
Calcula a fatoração LU da matriz A. Essa rotina executa a fatoração junto com a estratégia
de pivotamento parcial visando ter o maior pivô posśıvel a cada passo da execução da rotina.
Se for utilizado o comando
[L,U,P]=lu(A)
a matriz triangular inferior ficará armazenada em L, a triangular superior em U e a matriz
de permutação será armazenada em P. Ao utilizar o comando
[PL,U]=lu(A)
a variável PL guardará a matriz triangular inferior já com todas as operações de permutação
executadas pela estratégia de pivotamento parcial citada, portanto podendo não ser exata-
mente uma matriz triangular inferior, enquanto U guarda a matriz triangular superior.
plot(‘abscissas’,‘ordenadas’,‘caracterı́sticas visuais’,...)
Desenha na janela gráfica. Esse comando tem o seguinte padrão de chamada, o qual pode se
repetir quantas vezes se deseje: o 1o parâmetro é um vetor de valores que dão as abscissas dos
pontos a serem desenhados; o 2o parâmetro é um vetor contendo os valores das ordenadas dos
pontos a serem desenhados; e o 3o parâmetro contém as caracteŕısticas visuais do desenho,
como cor, tipo de linha e śımbolos para representar os pontos. Por exemplo, o comando
plot(vx,vy,‘b.’)
desenha os pontos com coordenadas horizontais vx e coordenadas verticais vy na forma de
4
pequenos ćırculos azuis. O . (ponto) diz que se deve desenhar pequenos ćırculos e o b informa
que a cor é azul. Outro exemplo:
plot(vxx,vyy,‘r’)
ao invés de desenhar os pontos com coordenadas guardadas em vxx e vyy, na verdade desenha
segmentos de reta ligando esse pontos e utilizando a cor vermelha por causa do r. Para
mostrar ao mesmo tempo os pontos e os segmentos de reta que os ligam, pode-se usar o
comando
plot(vxx,vyy,‘r*-’)
em que o * indica a figura utilizada para mostrar cada ponto e o - seguinte indica que eles
devem estar ligados por segmentos de reta. Nesse tipo de comando, tanto os pontos quanto
os segmentos de retas têm a mesma cor vermelha por causa do r. Para desenhar os pontos e
segmentos de retas tracejados com cores diferentes, por exemplo, nas cores amarela e verde,
respectivamente, usa-se
plot(vxx,vyy,‘y*’,vxx,vyy,‘g--’)
Esse último comando mostra outro padrão de chamada para a rotina plot, passando dois
grupos de parâmetros “abscissas, ordenadas e caracteŕısticas visuais”. Pode-se chamar a
rotina plot com quantos grupos desse quanto se deseje e sem a necessidade de que os vetores
com as abscissas e ordenadas sejam iguais, por exemplo:
plot(v1,v2,‘k*’,v3,v4,‘m’)
desenha um conjunto de pontos com abscissas v1 e ordenadas v2 na forma * e na cor preta; e
ao mesmo tempo desenha os segmentos de retas entre os pontos com abscissas v3 e ordenadas
v4 na cor magenta.
As cores que podem ser utilizadas e seus especificadores são
azul amarelo magenta preto vermelho verde
b y m k r g
Os tipos de śımbolos utilizados para desenhar os pontos e seus especificadores são
ponto asterisco ćırculo quadrado triângulo para cima triângulo para baixo
. * o s ^ v
Os estilos de linhas desenhadas para ligar os pontos e seus especificadores são
sólida tracejada pontilhada traço e ponto
- -- : -.
scf() ou scf(3)
O comando
scf();
(sem passagem de parâmetros) abre uma janela gráfica sem identificação espećıfica. Se for
desejado identificar a janela gráfica a ser aberta, o comando deve ser invocado com um valor
numérico como parâmetro. Por exemplo,
scf(3);
5
abre a “Janela gráfica número 3”. Identificar as janelas gráficas é útil quando se está utili-
zando mais de uma aberta ao mesmo tempo e são feitos plots alternados numa janela e na
outra. Nesse caso, antes de cada comando plot deve ser chamado o comando scf com o iden-
tificador da janela na qual se deseja desenhar. O ponto e v́ırgula que finaliza cada chamada
ao comando scf evita que sejam mostradas as propriedades da janela gráfica aberta.
clc()
Limpa todos os comandos mostrados na janela de comandos, não apagando nenhuma das
variáveis armazenadas na memória do Scilab.
clear
Apaga uma ou mais variáveis definidas anteriormente que estão armazenadas na memória do
Scilab. Se quiser apagar a variável a, utiliza-se o comando
clear a
Se quiser apagar mais de uma variável ao mesmo tempo, elas devem ser separadas por espaços.
Por exemplo, para apagar as variáveis a, b e c utiliza-se o comando
clear a b c
Para apagar todas as variáveis armazenadas de um vez, basta utilizar o comando
clear
sem listar qualquer variável após a palavra “clear”.
Sites de apoio para análise gráfica
www.wolframalpha.com
Para ver o gráfico da função f(x) = x sen(x) no intervalo [−π, 2π], usa-se o comando:
plot x*sin(x) from -pi to 2*pi
Para ver o gráfico de duas ou mais funções simultaneamente, basta separar as expressões
algébricas das funções por v́ırgulas. Para ver os gráficos do seno e do cosseno, por exemplo,
usa-se o comando:
plot sin(x),cos(x) from -pi to 2*pi
www.google.com
Pode-se visualizar os gráficos de uma, duas ou mais funções simultaneamente ao se utilizar
comandos iguais aos mostrados acima para a ferramente WolframAlpha. Os comandos devem
ser digitados diretamente no campo de buscas.
www.geogebra.org/graphing
Para ver o gráfico de qualquer função, basta digitar sua expressão algébrica no campo ade-
quado.
www.graphsketch.com
Para ver o gráfico de qualquer função, basta digitar sua expressão algébrica no campo ade-
quado.
6
Sistemas de numeração e erros
Revisão teórica
• Dado um número qualquer representado pelo numeralD10 em base 10 e também pelo numeral
B2 em base 2, a conversão entre ambos os sistemas de numeração segue este racioćınio: ao
expandir D10 em potências de base 2, os coeficientes 0 ou 1 que multiplicam cada potência
são os algarismos que formam o numeral B2. Ou seja,
D10 =
�
k
�
Nk · 2k
�
⇒ B2 = . . . N3 N2 N1 N0 . N(−1) N(−2) N(−3) . . .
De forma similar, ao expandir B2 em potências de base 10, os coeficientes 0, 1, 2, . . . ou 9
que multiplicam cada potência são os algarismos que forma o numeral D10:
B2 =
�
k
�
Mk · 10k
�
⇒ D10 = . . .M3 M2 M1 M0 .M(−1) M(−2) M(−3) . . .
• Erros de arredondamento derivam da impossibilidade de escrever adequadamente alguns
números utilizando uma quantidade finita de algarismos.
Erros de truncamento originam-se das limitações dos métodos numéricos utilizados.
• Sendo x o valor exato de uma certa variável e x∗ seu valor aproximado, o erro absoluto é
dado por
EA = |x− x∗|
e o erro relativo é
ER =
����
x− x∗
x
����
• A série de Maclaurin para a função exponencial é
ex =
∞�
k=0
�
xk · d
k (ex)
d xk
�
=
∞�
k=0
xk
k!
= 1 + x+
x2
2!
+
x3
3!
+ · · ·
7
Rotinas computacionais
b2parab10.sci
Realiza a conversão de um numeral binário para decimal. Os parâmetros de entrada são:
(1o) st2: numeral em binário na forma de uma string.
(2o) af: quantidade de algarismos fracionários que devem aparecer no numeral em decimal
resultante.
O valor de retorno da rotina é o numeral em notação decimal contendo a quantidade de
algarismos fracionários especificada.
Comando para execução:
st10 = b2parab10(st2,af)
b10parab2.sci:
Converte um numeral de decimal para binário. Os parâmetros de entrada são:
(1o) st10: numeral em decimal na forma de uma string.
(2o) af: quantidade de algarismos fracionários que devem aparecer no numeral em binário
resultante.
O valor de retorno da rotina é o numeral em notação binária contendo a quantidade de
algarismos fracionários especificada.
Comando para execução:
st2 = b10parab2(st10,af)
b10parab2i.sci:Faz a conversão de um número decimal inteiro para binário. O parâmetro de entrada é a
representação de um número inteiro em decimal na forma de uma string.
O valor de retorno da rotina é o numeral em notação binário contendo a quantidade de
algarismos fracionários especificada.
Comando para execução:
st2i = b10parab2i(st10,af)
Essa rotina é utilizada internamente pela anterior, b10parab2.sci.
aproxexp.sci:
Calcula o valor aproximado da função exponencial de acordo com a série de Maclaurin
truncada. Os parâmetros de entrada são:
(1o) x: número para o qual se deseja aproximar o valor da função exponencial (base e).
(2o) n: quantidade de termos considerada na expansão de Maclaurin.
O valor de retorno da rotina é valor aproximado da exponencial ex ao considerar os n primeiros
termos da série de Maclaurin.
8
Comando para execução:
y = aproxexp(x,n)
Roteiro
1. Carregar, através do comando exec, as rotinas no Scilab.
2. Utilize as rotinas de conversão entre binário e decimal para verificar como os erros de arredon-
damento surgem ao se fazer conversões sucessivas com precisão numérica limitada. Converta
o numeral ‘11.11’ de binário para decimal e seu resultado novamente para binário. Depois
converta o numeral ‘11.11’ de decimal para binário e seu resultado novamente para decimal.
Faça isso usando 2, 4 e 6 algarismos fracionários.
2 algs. 4 algs. 6 algs.
binário 11.11
decimal
binário
2 algs. 4 algs. 6 algs.
decimal 11.11
binário
decimal
3. Use a rotina aproxexp para observar como o erro de truncamento diminui com o aumento
da quantidade de termos utilizados na aproximação da função exponencial. Por exemplo,
observe como sucessivas aprovimações de e1 calculada através da soma de 1, 2, 3, 4, . . . 10
termos converge em direção ao número 2,718281828. Calcule o erro absoluto ou o erro relativo
em relação à variável %e, que pode ser tomada como o valor correto de e1.
n aproxexp(1,n) Erro
1
2
3
4
5
6
7
8
9
10
9
Exerćıcios
1. Repita o que foi feito no item 2 do roteiro, preenchendo as duas tabelas, mas considerando
como numeral inicial ‘10.1’.
2. Refaça os cálculos do item 3 do roteiro, considerando o mesmo tipo de erro escolhido naquele
item, mas agora calculando aproximações sucessivas de e2.
Questões
1. Embora as duas tabelas do item 2 iniciem pelo mesmo numeral, os resultados obtidos na
última linha de cada tabela não são os mesmos. Por que isso acontece? Explique da forma
mais sucinta posśıvel levando em consideração a quantidade de algarismos no numeral 11.11
e a sequência de operações de conversão utilizadas.
2. Qual valor inicial poderia ser usado para as duas tabelas do item 2 de modo que ambas as
tabelas tenham a última linha diferente da primeira linha?
3. A série de Maclaurin de uma função f(x) é desenvolvida na vizinhança de x = 0, portanto
espera-se que quanto mais próximo de zero seja o valor de x, mais rápido a série convirja
para o valor correto. Se for constrúıda uma tabela semelhante àquela do item 3 para calcular
as sucessivas aproximações de e1/2, o que se espera dos valores calculados para o erro em
comparação àqueles para as aproximações de e1?
10
Zeros de funções – métodos intervalares
Revisão teórica
• Chama-se de zero da função real f(x), o valor x = x∗ tal que f(x∗) = 0.
• O teorema do valor intermediário permite afirmar que há um zero da função f(x) no intervalo
[a; b] sempre que f(a) · f(b) ≤ 0.
• Os métodos intervalares da bisseção e da posição falsa trabalham sobre um intervalo da reta
real, diminuindo sucessivamente sua largura, afim de cercar de maneira cada vez mais precisa
o zero da função.
� O método da bisseção divide ao meio o intervalo [a; b] no qual se sabe haver um zero da
função f(x):
[a; b] →
�
[a;m]
[m; b]
, onde m =
a+ b
2
.
Em seguida utiliza o teorema do valor intermediário para decidir em qual das duas
metades está o zero da função.
� O método da posição falsa divide o intervalo [a; b] no qual há um zero da função f(x)
em duas partes de tamanhos (geralmente) desiguais:
[a; b] →
�
[a;m]
[m; b]
, onde m =
a |f(b)|+ b |f(a)|
|f(a)|+ |f(b)| .
O teorema do valor intermediário é utilizado para decidir em qual das duas partes está
o zero da função.
• O método da posição falsa pode ser melhorado, garantindo uma convergência mais rápida, ao
se exigir que, quando uma das extremidades é mantida durante duas iterações consecutivas,
a imagem correspondente àquela extremidade seja dividida pela metade. Considerando que
o intervalo inicial seja [a, b], a sequência de passos abaixo ilustra a afirmação anterior:
[a, b]
(1)−→ m = a |f(b)|+ b |f(a)||f(a)|+ |f(b)|
(2)−→ [a,m] (3)−→ n =
a |f(m)|+m
���f(a)2
���
���f(a)2
���+ |f(m)|
(4)−→ [n,m] (5)−→
11
(5)−→ u =
n
���f(m)2
���+m |f(n)|
|f(n)|+
���f(m)2
���
(6)−→ [u,m] (7)−→ v =
a
���f(b)4
���+ b |f(a)|
|f(a)|+
���f(b)4
���
(8)−→ · · ·
(1) Dado o intervalo inicial [a; b], a primeira estimativa para o zero da função é calculada
como sendo m.
(2) Supõe-se que o zero da função está na metade esquerda do intervalo inicial: [a,m].
(3) A segunda estimativa do zero da função é calculada como n. Lembrando que a extre-
midade inferior do intervalo de trabalho se repete, a imagem utilizada no passo (1) é
didivida por 2.
(4) Supondo o zero da função localizado na metade direita do intervalo anterior: [n,m].
(5) Cálculo da terceira estimativa para o zero da função, considerando que neste caso a
extremidade superior do intervalo foi a que se manteve constante em duas iterações
consecutivas.
(6) Supõe que o zero da função esteja na metade direita do intervalo anterior: [u,m].
(7) Cálculo da quarta estimativa para o zero da função, considerando que a extremidade
superior do intervalo manteve-ser constante por três iterações consecutivas.
(8) Os cálculos devem continuar até que a condição de parada seja alcançada.
Rotinas computacionais
bissecao.sci
Implementa o método da bisseção. Os parâmetros de entrada são:
(1o) f: a função que se deseja encontrar um dos zeros.
(2o) a: a extremidade inferior do intervalo no qual se sabe que está um dos zeros da função.
(3o) b: a extremidade superior de tal intervalo.
(4o) ed: o valor do erro máximo desejado.
(5o) ted: (facultativo) o tipo do erro calculado, que deve ser informado com valor 0 para a
largura do intervalo, 1 para o erro absoluto, 2 para o erro relativo e 3 para o cálculo da
função na última estimativa do zero. O valor padrão é 0 (zero).
(6o) nmax: (facultativo) a quantidade máxima de iterações que poderão ser executadas. O
valor padrão é 20.
Os valores de retorno da rotina são:
(1o) x: a estimativa do valor do zero da função encontrado na última iteração.
(2o) ec: (facultativo) o primeiro valor do erro que satisfaz a condição de parada.
(3o) n: (facultativo) a quantidade de iterações executadas.
12
Comandos para execução:
[x,ec,n] = bissecao(f,a,b,ed,ted,nmax) // todos os parâmetros
ou
x = bissecao(f,a,b,ed) // apenas parâmetros obrigatórios
Essa rotina escreve na tela uma tabela composta por cinco colunas: a 1a coluna contém a
contagem das iterações; a 2a contém a extremidade inferior do intervalo em cada iteração;
a 3a contém a extremidade superior; a 4a traz cada uma das estimativas calculas para o zero
da função; e a 5a coluna mostra o valor do erro calculado a cada iteração.
pfalsa.sci
Implementa o método da posição falsa, Os parâmetros de entrada e valores de retorno são
os mesmos da rotina do método da bisseção.
Comandos para execução:
[x,ec,n] = pfalsa(f,a,b,ed,ted,nmax) // todos os parâmetros
ou
x = pfalsa(f,a,b,ed) // apenas parâmetros obrigatórios
Essa rotina escreve na tela uma tabela semelhante àquela da rotina do método da bisseção.
pfalsarap.sci
Versão do método da posição falsa que tem a convergência acelerada em relação à imple-
mentaçãopadrão. Os parâmetros de entrada e valores de retorno são os mesmos da rotina
anterior.
Comandos para execução:
[x,ec,n] = pfalsarap(f,a,b,ed,ted,nmax) // todos os parâmetros
ou
x = pfalsarap(f,a,b,ed) // apenas parâmetros obrigatórios
Escreve na tela uma tabela análoga àquela da rotina anterior.
Roteiro
1. Carregar, através do comando exec, as rotinas no Scilab.
2. Defina a função f(x) = x3 − 2x utilizando o comando deff:
deff(‘y=f(x)’,‘y=x^3-2^x’)
3. Utilize uma ferramenta computacional de análise gráfica para ver o gráfico desta função
e poder escolher adequadamente intervalos iniciais que permitam aos métodos intervalares
encontrar os zeros da função.
13
4. Escolha um intervalo inicial [a; b] de largura unitária (ou seja, b−a = 1) que cerque o primeiro
zero da função (aquele que é mais próximo de x = 0). Em seguida chame a rotina do método
da bisseção através de um comando do tipo
[x,ec,n] = bissecao(f,a,b,ed)
atribuindo valores adequados para os parâmetros. Considere como critério de parada o erro
máximo de 10−2, calculado como a largura do intervalo.
5. Repita o passo anterior para o segundo zero da função f(x).
6. Repita os passos 4 e 5 para as duas rotinas citadas do método da posição falsa.
7. Preencha o quadro abaixo a partir dos resultados obtidos.
1o zero 2o zero
Rotina [a, b] x n [a, b] x n
bissecao
pfalsa
pfalsarap
Exerćıcios
1. Repita os mesmos procedimentos do roteiro, considerando a mesma função, mas calculando
o erro como sendo:
(a) o erro absoluto;
(b) o erro relativo;
(c) o erro na estimativa de f(x).
2. Repita os passos 2 a 4 do roteiro para encontrar:
(a) os dois zeros da função h(x) = ex − 3x;
(b) os dois zeros da função p(x) = 2 + x− ex;
(c) os dois zeros da função q(x) = exp(x/2)− 2x.
Questões
1. Retorne aos itens 4 e 5 do roteiro, escolha intervalos iniciais diferentes daqueles usados antes,
mas mantendo a largura unitária, e calcule novamente o primeiro e o segundo zero da função
através do método da bisseção. Por que a quantidade de iterações se manteve a mesma?
2. Veja as tabelas geradas pelo método padrão da posição falsa. As últimas iterações mostram
que as duas extremidades do intervalo de dados ficam praticamente fixas, enquanto uma
delas está na vizinhança do zero da função. Que tipo de erro poderia ter sido utilizado para
evitar que isso acontecesse e por quê?
14

Continue navegando