Buscar

1MatLab_AN2012

Prévia do material em texto

1 
Atividades de Análise Numérica com OCTAVE ou MATLAB 
 
J. A. Salvador 
salvador@dm.ufscar.br 
 
 
Onde quer que haja mulheres e homens, há sempre o que fazer, há sempre o que 
ensinar, há sempre o que aprender! (Paulo Freire) 
 
 
Foram elaboradas Fichas de Atividades no ambiente computacional 
para o estudante dominar o OCTAVE OU MATLAB para compreender os Métodos 
Numéricos bem como testar suas limitações, que são abordados num curso básico de 
Cálculo Numérico. 
 
 
Introdução 
Introdução ao OCTAVE OU MATLAB 
Obtendo ajuda no OCTAVE OU MATLAB 
Comandos básicos do OCTAVE OU MATLAB 
Programação em OCTAVE OU MATLAB 
Arquivos M 
FICHAS DE ATIVIDADES 
ZEROS DE FUNÇÕES 
Método da Bisseção 
Método das Aproximações Sucessivas 
Método das Secantes 
Método de Newton - Raphson 
 
INTERPOLAÇÃO POLINOMIAL 
Polinômio interpolador de Lagrange 
SOLUÇÃO NUMÉRICA DE SISTEMAS DE EQUAÇÕES LINEARES 
Métodos Diretos 
Eliminação de Gauss 
Métodos indiretos 
Método de Jacobi - Richardson 
Método de Gauss-Seidel 
2 
SOLUÇÕES NUMÉRICAS DE EQUAÇÕES DIFERENCIAIS ORDINÁRIAS: 
PROBLEMAS DE VALOR INICIAL 
Método de Euler 
3 
Introdução 
 
O tema aborda a construção de uma ferramenta computacional de apoio 
ao ensino de cálculo numérico no ensino Superior. 
Tendo em vista a grande utilização do computador na rede de ensino, se 
faz necessário à implementação de ferramentas computacionais de ensino que possam 
contribuir para o aprendizado do aluno. Uma destas ferramentas de ensino, sem dúvida 
nenhuma, é o domínio de softwares. A escola como local de investigação e 
capacitação de futuros agentes transformadores da nossa realidade parece que ainda 
não esta totalmente preparada para proporcionar aos seus alunos condições necessárias 
para a utilização do computador como mais uma ferramenta de aprendizagem embora 
já tenha alcançado um avanço razoável. 
A utilização do computador pode possibilitar uma redefinição da escola 
como foco de ensino, investigação e pesquisa. A escola deve neste momento discutir 
qual será o seu papel na sociedade globalizada e quais ferramentas de ensino e 
aprendizagem podem fazer parte de suas dinâmicas. Tentando fornecer elementos para 
esta discussão, este trabalho de graduação tem por objetivo investigar o Ensino da 
Matemática na disciplina de Calculo Numérico no ensino superior por meio do uso de 
uma ferramenta computacional e pedagógica, o OCTAVE1 que é um software livre ou 
MATLAB2. 
 
Introdução ao OCTAVE ou MATLAB 
 
OCTAVE OU MATLAB são softwares interativos de alta performance 
voltados para o cálculo numérico. Eles integram a análise numérica, cálculo com 
matrizes, processamento de sinais e construção de gráficos em ambiente fácil de usar 
onde problemas e soluções são expressos somente como eles são escritos 
matematicamente, ao contrário da programação tradicional. 
Neles, o elemento básico de informação é uma matriz que não requer 
dimensionamento. Esse sistema permite a resolução de muitos problemas numéricos 
em apenas uma fração do tempo que se gastaria para escrever um programa 
 
1
 www.gnu.org./software/octave 
2
 www.mathworks.com 
4 
semelhante em linguagem Fortran, Basic ou C++. Além disso, as soluções dos 
problemas são expressas quase exatamente como elas são escritas matematicamente. 
 
Obtendo ajuda no OCTAVE ou MATLAB 
 
O comando help nestes softwares nos fornece ajuda on-line sobre 
qualquer outro comando. Por exemplo, para obter ajuda sobre o comando who: 
 
>> help who 
 WHO list current variables. 
 WHO lists the variables in the current workspace. 
 WHOS lists more information about each variable. 
 
Outro comando que pode ajudar bastante é o lookfor, que procura entre 
todas as funções do OCTAVE ou MATLAB a palavra-chave especificada. 
 
>> lookfor max 
 BITMAX Maximum floating point integer. 
 REALMAX Largest positive floating point number. 
 MAX Largest component. 
 
Comandos básicos do OCTAVE ou MATLAB 
 
» Clear Apaga todas as variáveis do espaço de trabalho 
» Clc Limpa a janela de comandos 
» % O Operador Percentagem, permite adicionar comentários 
após comandos do OCTAVE ou MATLAB, ou seja, tudo que esteja à direita deste 
operador será ignorado. 
 
Tipos de dados em OCTAVE ou MATLAB: Matrizes 
 
Em OCTAVE ou MATLAB os dados são armazenados essencialmente 
como matrizes. Há várias formas de especificar matrizes, para que se possa manipulá-
las. 
5 
Para definir explicitamente uma matriz A, devem-se usar colchetes a 
delimitar seus elementos. Estes serão separados por vírgula ou espaços dentro da 
mesma linha, sendo estas finalizadas por ponto e vírgula. 
 
Exemplo: 
» A = [4 3 1; 5 7 0 ]; 
 
O Ponto e Vírgula no final da instrução impede que o OCTAVE ou 
MATLAB mostre os dados introduzidos, embora os deixa guardados na memória. 
Caso não se coloque, serão visualizados o seguinte: 
A = 
 4 3 2 
 5 7 0 
 
O OCTAVE ou MATLAB possui alguns comandos internos no caso de 
se criar matrizes elementares. 
 
» zeros(n,m) - Cria uma matriz nxm em que todos os elementos são 
nulos. 
» ones(n,m) – Cria uma matriz nxm em que todos elementos são a 
unidade. 
» eye(n) – Cria uma matriz identidade nxn 
 
Para obter acesso a um elemento da linha i e coluna j de uma matriz. 
utiliza-se o comando M(i,j) , sendo M a matriz. 
 
O Operador: 
O Operador: (dois pontos) possui várias funções no OCTAVE ou 
MATLAB. 
 
Exemplos: 
 
» D= 1:7 
 cria uma matriz D, linha, em que seus elementos são: [1 2 3 4 5 6 7 ]. 
6 
 
» D = 1:0.1:2 
cria uma matriz D, linha, com um espaçamento de 0,1 entre seus 
elementos 
[1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00 ] 
 
» D (1,: ) 
Se quiser obter a primeira linha da matriz D 
[1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00 ] 
 
» D(1,2:4) 
Se quiser obter a porção entre a Segunda e Quarta colunas, na primeira 
linha 
 [1.10 1.20 1.30 ] 
 
Constantes do OCTAVE ou MATLAB no format long com 15 dígitos 
 
pi 3,14159265358979 
exp(1) 2.71828182845905 
 
Ou no format short com 5 dígitos 
 
pi 3.1416 
exp(1) 2.7183 
e ainda a unidade imaginária 
i 0 + 1.0000i 
 
 
Variáveis em OCTAVE ou MATLAB 
 
As variáveis em OCTAVE ou MATLAB não necessitam de ser 
explicitamente declaradas, é feita distinção entre maiúsculas e minúsculas. 
 
7 
O OCTAVE ou MATLAB cria automaticamente a variável resposta ans 
(de ANSwer), que guarda o valor da última expressão calculada, quando este não 
estiver sido atribuído a nenhuma outra variável. Geralmente atribuímos um nome a 
uma variável definida, como 
» x = [1 2 3 4] 
x = 
 1 2 3 4 
 
Programação em OCTAVE ou MATLAB 
 
Aqui está um grande diferencial do OCTAVE ou MATLAB , quando se 
trabalha com expressões, pode-se envolver matrizes inteiras, ao invés de obrigar a 
trabalhar apenas elemento a elemento, como acontece em muitas linguagens de 
programação. 
 
Exemplos: 
 
A’ Transposta da matriz A 
inv(A) Inversa da matriz A 
det(A) Determinante da matriz A 
size(A) Dimensão da matriz A 
eig(A) Autovalores da matriz A 
rank(A) posto da matriz A 
 
Os número podem ser introduzidos como inteiros (2546), negativos 
( -456.003 ), decimais (4.634), complexos (8 + 7*i) ou notação científica ( 1.5e-5) que 
corresponde a 1.5 * 10^(-5) 
 
Na maioria dos softwares computacionais, principalmente no ambinete 
do Octave ou MatLab (VENDRAMETTO JR., C. E. \& ARENALES, 2000) 
indicamos os operadores lógicos ou relacionaisem ordem de precedência mais alta são 
os parênteses, em seguida exponenciação, lógica NOT (\~) e as operações aritméticas 
com números . Os Operadores Aritméticos habituais são a 
 
8 
 
 potenciação ( ^) 
 fatoração 
 multiplicação (*), 
 divisão direta (/) 
 \ (barra invertida) indica a divisão indireta. 
 adição ( + ) ou subtração ( - ) 
 
Os operadores relacionais utilizados são: <, >, >=, <=, ==, ~, =, a lógica AND (&) e 
a lógica OR (|). 
O operadores que podem ser aplicados a matrizes incluem além das 
vistas acima, a multiplicação elemento a elemento (.* ), a divisão elemento a elemento 
( . / ), e a potenciação elemento a elemento ( . ^ ) 
 
Por Exemplo: 
 Dado as matrizes 
» X = [1 2; 3 4 ] % e 
» Y = [ 0 1; 2 3 ] 
 
A Multiplicação elemento a elemento significa que o resultado de 
» Z = X.*Y, 
é igual a 
 Z = 0 6 
 2 12 
 
Que é diferente da regra atual de multiplicações de matrizes 
» Z = X*Y 
 Z = 4 7 
 8 15 
 
Os Controles de seqüências do programa são 
 
for variavel = valor_inicial : {passo :} valor final; 
 {intruções} 
9 
end 
 
Exemplo: Para se criar vetores com potências de dois. 
 
for i = 0:9 
 P(i+1) = 2 ^ i; 
end 
 
» P 
 
P = 
 
 1 2 4 8 16 32 64 128 256 512 
 
Outros comandos para controles de seqüências não serão abordados 
aqui, como while, break, continue (ver Help no próprio software!). 
 
Os testes lógicos 
 
if expressão 
{Instruções se expressão verdadeira } 
else 
 {Instruções se expressão falsa} 
end 
 
O OCTAVE ou MATLAB possuem várias funções elementares 
 
sin(x) seno em radianos 
cos(x) coseno, em radianos 
tan(x) tangente, em radianos 
exp(x) exponencial 
log(x) logaritmos 
sqrt(x) raiz quadrada dos elementos da matriz x 
abs(x) valor Absoluto 
10 
 
Arquivos.m 
 
A utilização de arquivos do tipo nome.m no OCTAVE ou MATLAB, 
significa que podemos criar um arquivo texto com toda a programação de determinada 
rotina como os ciclos, testes lógicos, funções, comentários, etc. e só a chamar no 
OCTAVE ou MATLAB, como se fosse uma função interna. Evitando perda de tempo, 
redigitação de muitos comandos, organizando melhor nossa programação, e tendo a 
facilidade de editarmos ou reeditarmos os comandos em qualquer editor de texto como 
o Bloco de Notas (Notepad) do Windows, além de que o OCTAVE e MATLAB 
possuem um editor próprio com a facilidade de depurarmos a rotina (debug) quando 
cometemos um erro. 
Abaixo estão alguns comandos básicos para se trabalhar com esses 
arquivos: 
Um arquivo no OCTAVE ou MATLAB é criado através do comando 
edit (este comando abre o editor) 
 
Edit nome.m (abre o arquivo nome.m para ser editado) 
 
É necessário indicar ao OCTAVE ou MATLAB em qual diretório se 
está trabalhando, através de comandos semelhantes ao DOS. 
 
Exemplo: 
dir lista os arquivos do diretório ativo 
 cd Indica o diretório ativo 
 cd salvador muda o diretório ativo para salvador 
 
 
Guardando e Recuperando variáveis em arquivos 
 
As variáveis do ambiente de trabalho podem ser guardadas através da 
função save 
 save nome grava todas as variáveis para o arquivo nome.mat 
save nome x gravar a variável x para o arquivo nome.mat 
11 
save nome x y grava as variáveis x e y para o arquivo nome.mat 
 
As variáveis do ambiente de trabalho podem ser lidas através da função 
load 
 load nome recupera todas as variáveis do arquivo nome.mat 
 load nome x recupera apenas a variável x do arquivo nome.mat
 load nome x y recupera as variáveis x e y no do arquivo nome.mat 
 
Visualização de Dados 
 
A parte de gráficos é outro ponto forte do OCTAVE ou MATLAB, com 
visualização em duas ou três dimensões. Como os gráficos são gerados em janelas 
independentes podemos salvá-los em formatos diferentes, editarmos suas escalas e 
mesmo o aspecto. 
plot(x,y) 
 desenha gráficos a duas dimensões, além disso, podemos especificar as opções 
gráficas 
 
Exemplo: Para plotar o gráfico y = f(x), primeiro cria-se um vetor x 
contendo os valores das abscissas, e depois um vetor y contendo os valores das 
respectivas ordenadas, satisfazendo a função. Então chama-se a função plot, que é 
usada da seguinte maneira 
>> x = [0 1 2 3 4 5]; 
>> y =x.^2; 
>> plot(x,y) 
 
 
 
 
 
 
 
 
12 
 
 Figura 1. Gráfico de y = x.^2 
 
Os softwares OCTAVE ou MATLAB abrem uma janela especial com a 
figura do gráfico. A função plot recebe um número variável de argumentos. Sua forma 
mais geral é 
plot(x1, y1, opção1, x2, y2, opção2, ...xn, yn, opçãon) 
ou seja, você consegue traçar mais de uma curva no mesmo gráfico. Os argumentos 
opçãoi, i= 1, 2,... representam as várias opções para o gráfico, que pode ser qualquer 
um da seguinte tabela. 
 
TABELA 1 
y Amarelo w Branco + Cruz 
m Roxo k Preto - Sólida 
c Azul claro -- Tracejada * Estrela 
r Vermelho - Ponto : Pontilhada 
g Verde ο Circulo -. Traço ponto 
b Azul x X 
 
Depois do gráfico plotado, alguns detalhes podem ser acrescentados 
 
 
TABELA 2 
Title Título do gráfico xlabel Nome do eixo x 
text Escreve no local especificado ylabel Nome do eixo y 
axis Intervalo dos eixos no gráfico grid Deseja linhas de grade 
gtext Escreve texto no gráfico usando o mouse 
 
>> x = [0 1 2 3 4 5]; 
>> y = x.^2; % mapeia os valores de x 
>> plot(x,y,'--') 
>> title('gráfico da função y = x^2') 
>> xlabel('eixo x') 
>> ylabel('eixo y') 
13 
 
 
 
 
 
 
 
 
 
FIGURA 2: Gráfico de x2 
14 
FICHAS DE ATIVIDADES DE CÁLCULO NUMÉRICO 
 
Zeros de funções 
 
Definição: Dizemos que x é um zero de f(x), ou uma raiz da equação 
f(x) = 0, se f(x) = 0. 
 
Exemplo: Seja f(x) = x3 – 8. Então x = 2 é uma raiz de equação f(x) = 0, 
ou x3 – 8 = 0. 
 
Podemos resolver tal equação f(x) = 0 usando os seguintes passos: 
1. Avaliamos uma aproximação inicial x0 da raiz x, ou um intervalo de 
pequena amplitude que a contém. 
 Um método que podemos usar para avaliar uma aproximação inicial é o 
denominado Método Gráfico, que consiste em obtermos graficamente a aproximação 
desejada, ou seja construímos o gráfico de y = f(x) e obtemos sua interseção com o 
eixo das abscissas. 
Exemplo, seja f(x) = x^2 – x – 2 
>> fplot((‘x^2-x-2’), [-10,10]) 
−10 −8 −6 −4 −2 0 2 4 6 8 10
−20
0
20
40
60
80
100
120
x2 − x − 2
 
 
FIGURA 3 
 
15 
2. Refinamos essa aproximação através de métodos iterativos 
conhecidos como Bisseção, Ponto Fixo, Newton, etc. 
 
Usando a ferramenta OCTAVE ou MATLAB 
 
Na determinação do zero de uma função é necessário plotar o gráfico da 
função, no OCTAVE ou MATLAB o comando utilizado é o fplot. Ao lado do 
comando entre parênteses deve aparecer a função entre “strings” e o intervalo em que 
o gráfico será plotado. 
>> fplot((‘x^3-9*x+3’),[-10,10]) 
−10 −8 −6 −4 −2 0 2 4 6 8 10
−1000
−800
−600
−400
−200
0
200
400
600
800
1000
x3 − 9*x + 3
 
 
 FIGURA 4 
 
A Figura 4 não mostra claramente onde se encontram os zeros de f, assim damos um 
zoom restringindo o intervalo gráfico. Assim, com 
 
>> fplot((‘x^3-9*x+3’), [-10,10]) 
 
Vemos os pontos onde f cruza o eixo ox, ou seja, os zeros de f mais claramente 
16 
−4 −3 −2 −1 0 1 2 3 4
−30
−20
−10
0
10
20
30
40
x3 − 9*x + 3
 
Figura 4 a. Zeros de f 
 
O Comando fzero nos fornece o(s) zero(s) da função no intervalo 
especificado. Por exemplo, no intervalo [0, 1] temos:>> fzero((‘x^3-9*x+3’), [0,1]) 
ans = 0.3376 
 
O Comando eval encontra o valor da função no ponto dado 
>> y = ‘x.^3-9*x+3’; 
>>.x=0; 
>> m = eval(y) 
 m=3 
 
Na determinação dos zeros da função pelo Método de Newton é 
importante saber determinar a derivada da função, cujo comando no OCTAVE ou 
MATLAB é diff 
 
>>diff(‘x^3-9*x+3’) 
ans = 3*x^2-9 
 
 
17 
Exercícios 
 
1. Localize graficamente as raízes das equações, fazendo os gráficos no OCTAVE ou 
MATLAB 
a) 4 cos(x) – e2x = 0 No Octave ou MatLab escrevemos como 4*cos(x) - exp(2*x) 
 b) 2x - 3x = 0 
c) x3 + x – 100 = 0 
d) 1 – x ln(x) = 0 
 
Método da Bisseção 
 
Pelo teorema do valor intermediário sabemos que se f(x) é uma função 
contínua no intervalo [a, b] tal que f(a) * f(b) < 0, então existe um 0 (zero) de f neste 
intervalo. Para simplificar, suponha que nesse intervalo exista uma única raiz 
(A derivada de f, f(x)’ possui um mesmo sinal para todos pontos de [a, b]). 
Em cada iteração a amplitude do intervalo é reduzida pela metade, 
observe: 
 
O novo intervalo é obtido da seguinte maneira, se f(x) * f(a) > 0, a 
recebe o valor de x, caso contrário b recebe o valor de x. Repete-se esse processo até 
que (b – a) < ε, em que ε é a precisão desejada e escolhe-se qualquer número 
pertencente ao intervalo obtido na ultima iteração, para obter a raiz aproximada. 
Exemplo: Seja f(x) = x3 – 2 = 0 . Encontrar um raiz aproximada da 
equação f(x) = 0, com 210−=ε . Consideremos o intervalo inicial [r0,s0] = [1,2] 
 
Aqui apresentamos uma rotina em OCTAVE ou MATLAB para 
encontrar a raiz de uma função pelo Método da Bisseção. Consideramos a função x3-2 
que possui uma raiz no intervalo [1, 2] 
 
function bissecao 
 
função = 'x.^3-2'; % a função 
2
b)(a
 
+
=x
18 
int_inicial = 1; % limite inferior do intervalo onde quero encontrar a raiz 
int_final = 2; % limite superior do intervalo onde quero encontrar a raiz 
erro = .1e-3 % tolerância permitida 
passa = erro*3; % valor atual do x anterior 
valor = 0; % valor do x atual 
while abs(passa-valor) > erro % enquanto o módulo da diferença do x anterior e o x 
atual for maior que o erro o laço deve ser repetido 
 passa = valor; 
 valor = (int_inicial+int_final) / 2; % calcula o x atual 
 x = int_inicial; 
 fa = eval(funcao); % encontra o valor da função no ponto x e assumi o valor do 
intervalo inicial. 
 x = int_final; % faz de x igual a intervalo final 
 fb = eval(funcao); % encontra o valor da função no ponto x assumi o valor do 
intervalo final 
 x = valor; % faz x igual ao x atual 
 fx = eval(funcao); % encontra o valor da função no ponto x e assumi o valor x atual 
 if (fa * fx) < 0 % esta testando se entre fa e fx esta a raiz 
 int_final = valor; % Se a condição for verdadeira, o int_final é subtituido porque 
não faz parte do intervalo que contém a raiz. 
 else 
 int_inicial = valor; % comando executado se a condição for falsa 
 end 
end 
valor % Mostra a raiz aproximada da função 
 
Obtemos 
 
erro = 
 1.0000e-004 
valor = 
 1.2599 
 
 
19 
Exercícios 
 
1. Modifique a rotina acima, de modo que venha a pedir para o usuário informar os 
valores das variáveis funcao, erro, int_inicial e int_final, tornando-a uma rotina 
genérica. 
 
2. Utilizando a rotina genérica do exercício anterior, encontre a raiz aproximada da 
função f(x) = x3 – 9x + 3 com 310−=ε no intervalo [0 1] 
 
No OCTAVE ou MATLAB o comando que pede informações ao usuário é input 
 
Exemplo: Erro = input('Entre com o erro '); 
 
Método das Aproximações Sucessivas 
 
Suponha que f(x) é contínua no intervalo [a, b] tal que f(a) * f(b) < 0, e 
que o intervalo [a, b] contém apenas uma raiz da equação f(x) = 0. 
O Método das Aproximações Sucessivas ou do Ponto Fixo consiste em 
transformar essa equação em uma equação equivalente x = j(x), e a partir de uma 
aproximação inicial x0 gerar uma seqüência {xk} de aproximações para obter o zero da 
função (em que f(X) = 0), pela relação xk+1 = j(xk), sabendo que a função j(x) é tal que 
f(X) = 0 se e somente se j(X) = X. 
 
A função j(x) recebe o nome de função de iteração para a equação 
f(x) = 0. 
Exemplo: Seja f(x) = x2 – 7, encontrar aproximadamente, a raiz positiva 
da equação f(x) = 0. 
Solução: 
i) Escolhendo, inicialmente θ(x) = 2, em que θ(x) = x+ θ(x)f(x) 
ii) Tomando x0 = 2,5 
 
Usando o Método Numérico das Aproximações Sucessivas (programa 
desenvolvido em Visual Basic 6.0), obteremos: 
20 
)*2(
) 1(
x
−
 
 FIGURA 6 
Observa-se que a seqüência não está convergindo para raiz 7 de f(x) = 0 
(Compare-o com um programa elaborado no Octávio ou Matlab) 
 
Escolhendo agora, θ(x) = temos: 
 
FIGURA 7 
Obs: No método das aproximações sucessivas, se escolhermos φ de tal 
forma que | φ’ (x) | > 1 em qualquer vizinhança de x, o método pode não convergir. 
21 
Exercícios 
 
1) Desenvolva um algoritmo em OCTAVE ou MATLAB, para se calcular o métodos 
das aproximações sucessivas. 
 
 
Método de Newton - Raphson 
 
A idéia central no método de Newton-Raphson é a de escolher uma 
função, tal que a derivada de , na raiz que está procurando, seja zero. Assim teremos, 
não só garantia da convergência quanto convergência muito rápida. 
O Método de Newton acelera o Método do Ponto Fixo. Primeiramente 
é fornecido um ponto inicial x0, no ponto (x0, f(x0)) traça-se uma reta tangente, a 
interseção dessa reta com o eixo das abscissas encontra-se em (j(x0), 0), troca-se x0 por 
j(x0), repete-se esse processo até que a precisão seja alcançada. 
Em outras palavras, a estimativa do zero da função f(x) é feita a partir 
da reta tangente à função em um ponto de partida. O ponto em que a reta tangente 
intercepta o eixo das abscissas corresponde á estimativa do zero da função. 
 
Aqui temos uma rotina em OCTAVE ou MATLAB para encontrar a 
raiz pelo método de Newton-Raphson 
 
function newton 
funcao=input('Entre com a funcao '); % Pede para o usuário entrar com a função 
funcao_der = diff(funcao); % Calcula a derivada da funcao 
erro=input('Entre com o erro '); % Pede para o usuário informar a tolerância 
int_inicial=input('Entre com a aproximação inicial '); % Pede para o usuário informar 
a aproximacao inicial 
passa=erro*3; 
iteracoes =0; 
while abs(passa)>abs(erro) % Faça enquanto o erro for maior que a tolerância dada 
 x = int_inicial; 
 int_final=x - (eval(funcao) / eval(funcao_der)); % aplica o método 
 passa = abs(int_final-int_inicial)/abs(int_final); % calcula o erro 
 int_inicial=int_final; 
22 
1
1)()(
−
−
−
−
nn
nn
xx
xFxF
 iteracoes=iteracoes+1; % controla o número de iterações 
 pause; 
end 
disp(' '); % Mostra uma linha em branco 
disp( 'depois de '); % Mostra na Tela o texto ‘depois de ‘ 
ss=sprintf('%f iterações', iteracoes); % monta o texto 
disp( ss ); % mostra a variável ss na tela 
disp(' '); 
ss=sprintf('x = %f ', int_final); 
disp( ss ); 
disp(' '); 
disp('é a solução de'); 
funcao 
disp(' '); 
ss=sprintf('com erro relarivo igual a %f', passa); 
disp( ss ); 
 
Exercícios 
 
1) Usando o algoritmo acima, determine o zero da função , 
utilizando o Método de Newton-Raphson com x0= 1 e tolerância 
 
2) Determine o zero da função , a partir de 3 iterações do 
Método de Newton-Raphson com valor inicial x0= 1. usando o OCTAVE OU 
MATLAB . 
 
Método das Secantes 
 
 
Uma grande desvantagem do Método Newton-Raphson é a necessidade 
do cálculo de derivadas, quando a função é mais complicada. Uma maneira de 
contornar este problema é substituir a derivada por uma diferença do tipo10)( 4 −−= xxxf
310−=ε
xexxf += ln)(
23 
Em que xn e xn-1 são duas aproximações da raiz desejada. Fazendo essa 
substituição no método de Newton-Raphson temos o método da Secantes . 
 
Dadas as aproximações iniciais x0 e x1, a seqüência xk gerada no método das secantes 
é dada por 
 
xx+1 = (xn-1 f(xn) – xnf(xn-1)) / (f(xn) – f(xn-1)) 
 n = 1, 2, 3, 4....,convergindo assim para a raiz procurada. 
 
Aqui temos uma rotina em OCTAVE ou MATLAB para encontrar a 
raiz pelo método das Secantes 
 
function secantes 
função = input('Entre com a funcao '); 
erro = input('Entre com o erro tolerável '); 
int_inicial = input('Entre com o valor inicial do intervalo (x0) '); 
int_final = input('Entre com o valor final do intervalo (x1) '); 
passa = erro*3; 
iterações = 0; 
while abs(passa) > abs(erro) 
 x = int_inicial; 
 resultado_inicial = eval(funcao); 
 x = int_final; 
 resultado_final = eval(funcao); 
 resultado = int_final - (((int_final-int_inicial) * resultado_final)/(resultado_final- 
resultado_inicial)) 
 passa = abs(resultado-int_final)/abs(resultado) 
 int_inicial = int_final; 
 int_final = resultado; 
 iterações = iterações + 1; 
 pause; 
end 
disp(' '); 
disp( 'depois de '); 
24 
ss = sprintf('%f iterações', iteracoes); 
disp( ss ); 
disp(' '); 
ss = sprintf('x = %f ', int_final); 
disp( ss ); 
disp(' '); 
disp('é a solução de'); 
funcao 
disp(' '); 
ss = sprintf('com erro relarivo igual a %f', passa); 
disp( ss ); 
disp(' '); 
 
Exercícios 
 
1. Usando o algoritmo acima do método das secantes , determinar uma aproximação 
para a raiz de : x3 - 2x2 + 2x – 5 = 0 com erro 10-3 
( Plote o gráfico e “chute” os intervalos iniciais ) 
 
2. Qual método em geral será o mais rápido o de Newton-Raphson ou o das Secantes ? 
Porquê ?, Faça testes com algumas funções simples e outras mais complicadas. 
 
 
 
 
 
 
 
 
 
 
 
 
 
25 
FICHAS DE ATIVIDADES DE CÁLCULO NUMÉRICO 
Interpolação Polinomial 
 
Apresentamos aqui a aproximação de uma função de uma variável real por outras 
funções mais simples, de modo que operações em geral sejam realizadas com mais 
facilidade. 
 Esta situação ocorre quando temos uma função f(x) e esta apresenta um grau de 
dificuldade, por exemplo, para avaliar em pontos, derivar ou ainda integrar, ou mesmo 
quando conhecemos esta função em um número finito de pontos de um intervalo 
[a, b], sem o conhecimento de sua forma analítica, geralmente obtida em 
experimentos. 
 Desta forma, esta função será aproximada por funções polinomiais, 
exponenciais, trigonométricas, etc., que representarão a função original e, para obter 
qualquer informação sobre a função original, utilizamos a sua forma aproximada. 
 Exibimos nesta unidade apenas a aproximação de uma função f(x), utilizando 
funções polinomiais, pela simplicidade no tratamento, continuidade e 
diferenciabilidade dessas funções, embora nas referências bibliográficas podemos 
estudar outros tipos de aproximações. 
 
 Teorema de Existência e Unicidade 
 
Considere uma função f(x) definida em n10 x,...,x,x (n+1) pontos distintos de 
um intervalo [a, b], então existe um único polinômio P(x) de grau menor ou igual a n, 
tal que iii y)x(f)x(P == i=1,...,n. 
Prova: 
 Seja o polinômio de grau n, 011n1nnn axa....xaxa)x(P ++++= −− tal que 
iii y)x(f)x(P == i=0, 1,...,n. 
Desta forma, para que o polinômio coincida com a função nos (n+1) pontos temos: 
26 
 









=++++
=++++
=++++
−
−
−
−
−
−
n0n1
1n
n1n
n
nn
1011
1n
11n
n
1n
0001
1n
01n
n
0n
yaxa...xaxa
yaxa...xaxa
yaxa...xaxa
M
 
 Podemos observar que obtemos um sistema de equações lineares Ax=b, em que 
t
n10
t
01nn )y,...,y,y(b,)a,...,a,a(x == − e a matriz A dada por: 
 
 


















=
−
−
−
1x...xx
1x...xx
1x...xx
A
n
1n
n
n
n
1
1n
1
n
1
0
1n
0
n
0
M
 
O det(A), chamado de determinante de Vandermonde é dado por, 
)xx()Adet( ji
ji
−= ∏
<
 
 Como os pontos n,...,1,0ix i = são distintos, podemos mostrar que de(A) 0≠ , o 
que significa que o sistema linear possui uma única solução e, portanto os 
coeficientes n10 a,...,a,a do polinômio são únicos dados pela resolução deste sistema. 
Assim, o polinômio P(x) existe e é único. 
 
Cálculo do Polinômio Interpolador 
 
Existem várias formas de se calcular o polinômio de interpolação dentre 
elas destacamos: Solução de Sistemas, Forma de Lagrange e Forma de Newton-
Gregory. 
 
Solução de Sistemas 
 
O Cálculo do polinômio interpolador por meio da solução de sistema 
linear é de fácil compreensão, porém é muito trabalhosa, e podem ocorrer erros de 
arredondamento gerando soluções irreais. 
27 
Exemplo: 
Dados os pares de pontos: (-1, 15); (0, 8); (3, -1) determinar o 
polinômio de interpolação para a função definida por este conjunto de pares de pontos. 
Solução: 
 x0 = -1 y0 = 15 = f(x0) 
 x1 = 0 y1=8 = f(x1) 
 x2 = 3 y2=-1 = f(x2) 
 
Com n = 2 e procuramos P2(x) = a0 + a1 x + a2 x2 , tal que 
 
P2(xk) = yk, k = 0, 1, 2. Podemos então escrever: 
 
Resolvendo o sistema linear para as variáveis a0, a1 e a2, obtemos os 
valores de a0, a1 e a2 do polinômio de interpolação P2(x) = 8 –6x + x2 
 
Usando a ferramenta OCTAVE ou MATLAB 
 
O Programa abaixo resolve o polinômio Interpolador usando resolução 
de sistemas no OCTAVE ou MATLAB. 
 
Function interp_sistema 
x=input('Entre os pontos de interpolação na forma [x0 x1 ... xn]'); % Pede para o 
usuário informar os pontos de interpolação 
y=input('Entre os valores da função na forma [y0 y1 ... yn]'); % Pede para o usuário 
informar os valores da função 
res=input('Você deseja ver o gráfico dos pontos da função dada? S/N [S] ','s'); % Pede 
para o usuário dizer se deseja ver o gráfico da função 
if isempty(res) % caso o usuário não responda, o sistema mostrará o gráfico 
 res='S'; 
end 










=++
=++
=++
222210
112110
002010
y xa xa a
y xa xa a
y xa xa a
2
2
2
28 
n = length(x); % obtem o grau do polinômio 
hold; 
xmin = min(x) - 1; 
xmax = max(x) + 1; 
ymin = min(y) - 1; 
ymax = max(y) + 1; 
axis([xmin xmax ymin ymax]); 
if((res=='S') | (res=='s')) % se o usuário respondeu em maiúsculo ou minúsculo 
 for i=1:n 
 plot(x(i),y(i), 'o'); % plota o gráfico 
 end 
 disp('Pressione qualquer tecla para continuar') 
 pause; 
end 
for i=1:n 
 for j=1:n 
 a(i,j) = x(i)^(j-1); 
 end 
end 
coef = a \ y'; 
res=input('Voce deseja ver o grafico do polinômio interpolador? S/N [S] ','s'); 
if isempty(res) 
 res='S'; 
end 
if((res=='S') | (res=='s')) % se o usuário respondeu em maiúsculo ou minúsculo 
 h = (xmax - xmin)/100; 
 xx = xmin : h : xmax; 
 yy = polyval(fliplr(coef'),xx); 
 plot(xx,yy); % plota o gráfico do polinômio interpolador 
end 
ss=sprintf('Os coeficientes do polinomio interpolador na ordem a0 a1 a2 ... an são:'); 
disp(' '); 
disp(ss); 
coef % lista os coeficientes do polinômio interpolador 
29 
Exemplo: 
Utilizando o algoritmo de solução de sistemas, encontre os coeficientes do polinômio 
interpolador P2(x) = a0 + a1 x + a2 x2 da tabela abaixo 
 
x -1 0 2 
f(x) 4 1 -1 
 
» solucao 
Entre os pontos de interpolação na forma [x0 x1 ... xn][-1 0 2] 
Entre os valores da função na forma [y0 y1 ... yn][4 1 -1] 
Voce deseja ver o grafico dos pontos da funcao dada? S/N [S] s 
Pressione qualquer tecla para continuar 
Voce deseja ver o grafico dopolinômio interpolador? S/N [S] s 
 
Os coeficientes do polinomio interpolador na ordem a0 a1 a2 ... an são: 
 
coef = 
 
 1.0000 
 -2.3333 
 0.6667 
 
 
 
 
 
 
1) Utilizando o algoritmo de solução de sistemas, encontre os coeficientes do 
polinômio interpolador da tabela abaixo 
 
X 0.1 0.2 0.3 0.4 
f(x) 5 13 -4 -8 
 
30 
Depois de encontrado os coeficientes do polinômio interpolador, teste 
os pontos da tabela nele. O que você observou ? 
 
Obs: Verifique o determinante da matriz de Vandermonde deste 
problema, o condicionamento da matriz do sistema. 
 
FORMA INTERPOLADORA DE LAGRANGE 
Sejam x0, x1,...., xn n +1 pontos distintos. Consideremos para k = 0,1,...,n, os seguintes 
polinômios lk(x) de grau n: 
 
 
 Para f0 = f(xo), f1 = f(x1), ..., fn = f(xn) 
 
é o polinômio de interpolação de f(x). 
A fórmula acima é conhecida como Forma de Lagrange para o 
polinômio de interpolação 
O Programa a seguir resolve o polinômio interpolador usando a forma 
de lagrange 
 
function lagrange 
x=input('Entre os pontos de interpolação na forma [x0 x1 ... xn]: '); 
y=input('Entre os valores da função na forma [y0 y1 ... yn]: '); 
xx=input('Entre o valor do ponto de avaliação do polinômio interpolador: '); 
res=input('Voce deseja ver o grafico dos pontos da funcao dada? S/N [S] ','s'); 
if isempty(res) 
) x- (x ... ) x- (x ) x- (x ... ) x- (x
) x-(x ... ) x-(x ) x-(x ... )-x(x 
 )(
nk1kk1-kk0k
n1k1-k0
+
+
=xlk
{
{
 j k se 1, 
, j k se 0, )(
=
≠=xjlk
∑
=
=
n
0 k kk
(x)l f )(xPn
31 
res='S'; 
end 
n = length(x); 
xmin = min(x) - 1; 
xmax = max(x) + 1; 
ymin = min(y) - 1; 
ymax = max(y) + 1; 
if((res=='S') | (res=='s')) 
hold; 
axis([xmin xmax ymin ymax]); 
for i=1:n 
plot(x(i),y(i), 'o'); 
end 
disp('Pressione qualquer tecla para continuar') 
pause; 
end 
sol = pol(n, x, y, xx); 
ss=sprintf('O valor do polinômio interpolador no ponto %f é: %f', xx,sol); 
disp(' '); 
disp(ss); 
disp(' '); 
res=input('Voce deseja ver o grafico do polinômio interpolador? S/N [S] ','s'); 
if isempty(res) 
res='S'; 
end 
if((res=='S') | (res=='s')) 
h = (xmax - xmin)/100; 
xxx = xmin : h : xmax; 
m = length(xxx); 
32 
for i=1:m 
yy(i) = pol(n, x, y, xxx(i)); 
end 
plot(xxx,yy); 
end 
 
function solucao = pol(n, x, y, xx) 
p = 1; 
soma = 0; 
for i=1:n 
dd = xx-x(i); 
if (dd == 0) 
solucao = y(i); 
return; 
end 
p = p*dd; 
for j=1:i-1 
dd = dd*(x(i)-x(j)); 
end 
for j=i+1:n 
dd = dd*(x(i)-x(j)); 
end 
soma = soma + y(i)/dd; 
end 
solucao = p*soma; 
 
Exercícios: 
1. Suponha uma função f(x), tal que conhecemos apenas os pontos mostrados na 
tabela. Determine usando o algoritmo acima de Lagrange o valor de f(0,73) 
 
33 
x 0 1 
f(x) 1,35 2,94 
 
Obs: Veja abaixo a facilidade que o OCTAVE OU MATLAB nos 
oferece: 
No OCTAVE ou MATLAB o comando polyfit encontra o polinômio 
interpolador, o número 1 dentro dos parênteses indica o grau do polinômio: 
 
>> x = [0 1]; 
>> y = [1.35 2.94] 
>> p=polyfit(x,y,1) 
p = 
 1.5900 1.3500 
 
O comando polyval usa o polinômio encontrado para calcular o valor 
de x 
>> x = 0.73 
>> polyval(p,x) 
ans = 
 2.5107 
 
Para Determinar a interpolação de um ponto, o OCTAVE OU 
MATLAB disponibiliza o comando interp1 
 
>> x = [0 1] 
>> y = [1.35 2.94] 
>> p073 = interp1(x,y,0.73,’linear’) 
 p073 = 
 2.5107 
 
 
 
34 
FICHAS DE ATIVIDADES DE CÁLCULO NUMÉRICO 
MÉTODOS NUMÉRICOS PARA A SOLUÇÃO DE SISTEMAS DE 
EQUAÇÕES LINEARES 
 
Métodos Diretos 
São os métodos para a resolução de sistemas lineares Ax = b, cuja 
matriz A é não singular. Tais métodos forneceriam a solução exata do sistema, exceto 
os erros de arredondamento efetuando um número finito de operações. 
 
Eliminação de Gauss 
Seja o sistema linear Ax = b, em que A є M(n,n) é não singular. 
O Método de Eliminação de Gauss, com pivotamento na diagonal, 
consiste em transformar o sistema linear original num sistema linear equivalente com 
matriz dos coeficientes triangular superior, pois estes são de resolução imediata. 
O Programa abaixo resolve o sistema Ax = b, através da Eliminação de 
Gauss com pivotamento parcial. 
 
function Gauss_Parcial 
A = input('Entre com a Matriz A '); % Pede para o usuário entrar com a Matriz A 
b= input('Entre com a matriz b '); % Pede para o usuário entrar com a Matriz b 
tic % Inicia o temporizador do OCTAVE ou MATLAB 
[m,n]=size(A); % iguala m = ao número de linhas da Matriz A e n = ao número de 
colunas da Matriz A 
a=[A b]; % define a nova matriz 
for j=1:n-1 
 ipiv=j; 
35 
 amax=abs(a(j,j)); 
 for i=j+1:n 
 if abs(a(i,j))>amax % verifica se o pivô é o elemento de maior módulo entre os 
coeficientes 
 ipiv=i; 
 amax=abs(a(i,j)); 
 end 
 end 
 if amax==0 % caso for zero, sai do for 
 break 
 end 
 if ipiv>j 
 for k=1:n+1 
 x=a(ipiv,k); 
 a(ipiv,k)=a(j,k); 
 a(j,k)=x; 
 end 
 end 
 for i=j+1:n 
 lambda(i,j)=a(i,j)/a(j,j); 
 a(i,j)=lambda(i,j); 
 for k=j+1:n+1 
 a(i,k)=a(i,k)-lambda(i,j)*a(j,k); 
 end 
 end 
end 
if a(n,n)==0 % caso for zero, sai do for 
 break 
else 
36 
 a(n,n+1)=a(n,n+1)/a(n,n); 
end 
for i=n-1:-1:1 
 s=0; 
 for j=i+1:n 
 s=s+a(i,j)*a(j,n+1); 
 end 
 a(i,n+1)=(a(i,n+1)-s)/a(i,i); 
end 
% Matriz ampliada = a 
for z=1:n % formando o vetor x 
 x(z)=a(z,n+1); 
end 
x=x'; % igualando x a sua transposta 
toc % mostra para o usuário o tempo que demorou 
disp('A solucao desse sistema é o vetor'); 
x % mostra o vetor solução para o usuário 
 
Exemplo 
 
» eliminacao_gauss_parcial 
Entre com a Matriz A [3 2 4 ; 0 0.33 0.66 ; 0 0 -8] 
Entre com a matriz b [1 ;1.66; 0] 
A solução desse sistema é o vetor 
x = 
 -3.0202 
 5.0303 





=
=+
=++
0 8x- 
1.66 0.66x 0.33x 
1 4x 2x 3
3
 32
321x
37 
n1,2,..., i 0, =≠
 0 
elapsed_time = 
 
 0 
 
Exercício 
 
1. Resolva o sistema abaixo, pelo método de eliminação de Gauss. 
 
 
 
Métodos Iterativos 
Um método é dito iterativo quando fornece uma seqüência de 
aproximações, cada um de seus termos obtidos dos anteriores pela repetição do 
processo. 
Um método iterativo para resolver um sistema linear A x = b, consiste 
em transformá-lo em um sistema linear equivalente da forma 
 x = C x + g 
E computar a seguinte seqüência: 
x
(k+1)
 = Cx(k) + g , k = 0, 1, 2, ..., 
Onde x(0) é uma aproximação inicial para a solução X do sistema. 
 
Método de Jacobi - Richardson 
 
Consideremos um sistema Ax = b com aii 
O Método de Jacobi - Richardson é definido através do processo 
iterativo: 
X(k+1) = Cx(k) + g, k = 0,1,2,... 
 
Usando a ferramenta OCTAVE ou MATLAB 
O Programa abaixo resolve o método de Jacobi – Richardson 
 





=+
=++
=++
3 2x - 3x 4x
 2 2x x x
1 4x 2x 3
321
 321
321x
38 
function jacobi 
A = input('Entre com a matriz A'); % Pede para o usuário entrar com a matriz A 
b = input('Entre com a matriz b'); % Pede para o usuário entrar com a matriz b 
x0 = input('Entre com o x0'); % Pede para o usuário entrar com x0 
tol = input('Entre com a tolerância do erro'); % Pede para o usuário entrar com o erro 
L=-tril(A,-1); % extrai a parte triangular inferior da matriz 
U=-triu(A,1);% extrai a parte triangular superior da matriz 
D=diag(diag(A)); % extrai os elementos da diagonal principal da matriz 
N=L+U; 
C=D\N; % Monta a matriz C 
G=D\b; % Monta a matriz G 
iteracoes=1; 
x=C*x0+G; %monta x 
while norm(x-x0)>tol*norm(x) % faça enquanto a norma de (x-xo) > erro * a norma 
de (x) 
 x0=x; 
 x=C*x0+G; % monta x 
 iteracoes=iteracoes + 1; 
end 
x % mostra o resultado ao usuário 
iteracoes % mostra o número de iterações ao usuário 
erro_aproximado = norm(x-x0)/norm(x) % mostra o erro ao usuário 
 
39 
n1,2,..., i 0, =≠
Exercícios 
1) Resolver o sistema linear Ax = b, onde 
 
Pelo método iterativo de Jacobi-Richardson com x(0) = (0,0,0,0) e 210−=ε 
 
Método de Gauss-Seidel 
 
Consideremos um sistema Ax = b com aii 
O método de Gauss-Seidel pode ser considerado como uma variante do 
método de Jacobi-Richardson., ele incorpora os valores atualizados de x 
imediatamente após o seu cálculo. A forma de Gauss-Seidel para a equação é dada 
por: 
(L+D)x = -U.x+b 
 
O processo iterativo de Gauss-Seidel é expresso por: 
 
 X(k+1) = G.x(k) + (L+D)-1.b 
O Programa abaixo em OCTAVE ou MATLAB resolve o método de Gauss – Seidel 
 
function gauss_seidel 
A = input('Entre com a matriz A'); 
b = input('Entre com a matriz b'); 
x0 = input('Entre com o x0'); 
tol = input('Entre com a tolerância do erro'); 
L=tril(A,-1); % extrai a parte triangular inferior da matriz 
U=-triu(A,1); % extrai a parte triangular superior da matriz 












=












=
13 
5 
21-
 6- 
 b ; 
5 1 0 1
0 2 1 0
1 1- 20 1
0 0 6 10
 A
40 
D=diag(diag(A)); % extrai os elementos da diagonal principal da matriz 
M=D+L; 
C=M\U; 
G=M\b; 
iteracoes=1; 
x=C*x0+G; 
while norm(x-x0)>tol*norm(x) 
 x0=x; 
 x=C*x0+G 
 iteracoes=iteracoes + 1; 
end 
x % mostra o vetor solução ao usuário 
iteracoes % informa o número de iterações ao usuário 
erro_aproximado = norm(x-x0)/norm(x) % Mostra o erro ao usuário 
Exemplo 
» gauss_seidel 
Entre com a matriz A [3 2 4 ; 0 0.333 0.666 ; 0 0 -8] 
Entre com a matriz b [1 ;1.666; 0] 
Entre com o x0 [0;0;0] 
Entre com a tolerância do erro 0.001 
x = 
 -3.0020 
 5.0030 
41 
 0 
iteracoes = 
 3 
erro_aproximado = 
 0 
 
 
 
 
 
1) Resolva o sistema linear 
 
Pelo método de Gauss-Seidel com x(0) = (0,0,0,0) e 210−=ε 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 










=










=
0 
6 
 5 
 b ; 
 6 3 3
 1 4 3
 1 1 5
 A
42 
 
 
 
 
 
 
 
Soluções Numéricas de Equações Diferenciais Ordinárias: 
Problemas de Valor Inicial 
 
A razão mais forte de introduzirmos métodos numéricos para aproximar 
soluções de problemas de valor inicial (PVI ) é a dificuldade de se encontrar, as 
soluções de certas equações na forma analítica ou mesmo podem não existir uma 
expressão simples que as represente. 
Dado o PVI: 
 y’ = f(x, y) 
 y(x0) = y0 
Se para calcular o valor yj = y(xj) , usamos yj-1 teremos um método de 
passo simples 
 
Método de Euler 
 
Um método numérico que podemos aplicar a solução aproximada de 
um PVI: y’ = f(x, y), y(x0) = y0 é o método de Euler. 
Como conhecemos x0 e y0 = y(x0), então sabemos calcular y’(x0) = f(x0, 
y0). Assim a reta que passa por (x0, y0) com coeficiente angular y’(x0), r0(x) é 
conhecida: 
r0(x) = y(x0) + (x – x0)y’(x0) 
Escolhido h = xk+1 – xk, y(x1) = y1 = r0 (x1) = y0 + hy’(x0), ou seja 
y1 = y0 + h f(x0, y0). 
De um modo geral podemos calcular yk+1 = yk + h f(xk, yk). 
 
Usando a ferramenta OCTAVE OU MATLAB 
O Programa abaixo resolve um PVI usando o método de Euler. 
 
43 
function euler 
 
funcao = input('Entre com a função y ' ); 
x0=input('Entre com o valor inicial x ' ); 
y0=input('Entre com o valor inicial y ' ); 
pontos = input('Entre com o número pontos do intervalo ' ); 
h = input('Entre com o h '); 
y=y0; 
for i = 0 : pontos; 
 x =x0 + i*h ; 
 y = y + eval(funcao) * h 
end 
 
Exercícios 
 
“Existem 10 tipos de estudantes, os que conhecem o sistema binário e os que 
não conhecem!” 
 
1. Converta os números decimais para a base binária: 
 a) 27 b) 2345 c) 1958 d) 33.56 e) 2012 f) 0.4 
2. Converta os números binários em para a base decimal: 
 a) 11111011100 b) 1111.0111 c) 11.11 d) 1010101 
 
3. Usando a técnica de arredondamento, representar os números abaixo com 4 
casas decimais: 
a) 0.1267899 b) 23.456797 c) 11.233333 d) 5.897234 
 4. O ano de 2009 foi o Ano Internacional da Astronomia. Muitos cientistas 
antigos efetuaram cálculos astronômicos com erros, comparados aos valores reais 
conhecidos hoje com o avanço das técnicas de medições. Sabemos que a distância 
média da Terra à Lua é de 384000 km. A distância da Terra a Lua obtida por 
Hiparco de Nicéia na segunda metade do séc. II a.C. foi de 402500 km. 
a) Calcule o erro absoluto cometido por Hiparco. Qual é o valor do erro 
absoluto em porcentagem? 
44 
b) Calcule o erro relativo cometido por Hiparco. Qual é o valor do erro 
relativo em porcentagem? 
5. Resolver a equação 06x 2 =− , usando o seguinte processo iterativo: 
...1,0)6(
2
1
1 =+=+ k
x
xx
k
kk com 
410−=ε no critério de parada partindo de um 
ponto inicial x0 = 1. 
6. Faça um mapa conceitual detalhado sobre os erros em processos numéricos 
considerando as definições, introduzindo labels indicando se aprendeu (A), não 
aprendeu (N), se gostou (G) e se detestou (D ), achou interessante (I) etc. 
Obs. Os mapas conceituais podem ser feitos com os softwares disponíveis 
como: Xmind (http://www.xmind.net ), CMAPS (http://cmap.ihmc.us/) ou mesmo 
com a barra de desenhos do office, word ou powerpoint. 
 
 
 
 
 
 
1. Seja uma função f(x) definida conforme a tabela abaixo: 
 
 x 0 1 2 3 
 f(x) -5.6 -4 
8.1 
 9 
 
 
Determine o polinômio interpolador de f(x), avalie f(2.3) usando: 
 
a) Lagrange b) Newton - Gregory. 
 
 
2. Seja uma função f(x) definida conforme abaixo: 
 
 x 
0.1 
 
0.2 
 0.3 0.4 
 f(x) 8 3.9 4.8 -8.9 
 
Determine o polinômio interpolador de f(x) nos pontos dados, usando Newton 
Gregory na variável u. Avalie f(0.35). 
 
 
3. Estude o polinômio interpolador de Lagrange e o limitante superior para o erro. 
 
4. Seja a função f(x) = ex + cos(x) + 1 tabelada como segue: 
 
 x 0 0.5 1.1 
 f(x) 3 3.53 4.46 
 
45 
Usando o polinômio interpolador de Lagrange, avalie f(0.6) e um limitante superior 
para o erro. 
 
 
5. O calor específico da água em função da temperatura em Co é dado por: 
 
t 30 35 40 45 
c 0.99826 0.99818 0.99828 0.99890 
 
Com o Software Numérico - Referência Bibliográfica [1], usando o polinômio 
interpolador de Newton-Gregory, calcule aproximadamente o calor específico para t = 
37.5 Co. 
 
6. A partir dos seus conhecimentos de aproximação de funções, resolver o problema 
da temperatura em relação a profundidade de um lago, proposto no início deste 
capítulo, usando um polinômio interpolador de grau 2. Analise os resultados obtidos. 
 
7. Usando o Método dos Mínimos Quadrados, determine 21 axa)x(g += 
que melhor se ajusta aos dados da tabela abaixo: 
 
x -2 -1 0 1 2 3 4 
f(x) -4.98 -3.00 -1.01 0.99 3.01 4.98 7.01 
 
Calcule ∑=
7
1i
2
i)x(e e, analise os resultados obtidos. 
 
8. Com o Software Numérico e usando o Método dos Mínimos Quadrados 
determine uma função g(x) que melhor se ajusta aos dados da tabela 
abaixo: 
 
x -2 -1 0 0.1 1 2 3 
f(x) 6.00 1.01 0 0.12 3.00 9.98 20.98 
 
Calcule o erro ∑
=
7
1i
2
i )x(e e, analise os resultados obtidos. 
 
9. Considere o problema de previsão de escoamento de água, exibido neste capítulo: 
a) Faça um gráfico dos dados da tabela. 
b) Usando O Método dos Mínimos Quadrados, determine a melhor reta que se ajusta 
aos dados da tabela e faça uma previsão do escoamento anual de água se a 
precipitação for de 120 cm. 
 
10. Usando o Software Octave ou Matlab, resolva os exercícios 7) e 8). 
 
11. Faça um Mapa Conceitual detalhado, sobre os tópicos de interpolação e ajuste 
de curvas - MMQ, introduzindo labels indicando se aprendeu (A), não aprendeu (N), 
se gostou (G) e se detestou (D), achou interessante (I) etc. 
46 
 
 
1. Calcule I = ∫ ++
−
7.0
1.0
x6 dx)3x4.8e( usando: 
a) Regra dos Trapézios com 6 pontos; 
b) Regra 1/3 de Simpson com 6 subintervalos; 
c) Calcule um limitante superior para o erro em cada caso. 
 
2. Seja uma função f(x) tabelada como segue 
 
 
x -1 0 1 2 3 4 5 
f(x) 1 0.51 0.42 0.82 1.91 0.99 1.88 
 
 
Calcule ∫
−
5
1
)( dxxf , usando a Regra dos Trapézios e a Regra 1/3 de Simpson. 
 
3. Calcule ∫ ++
1
0
2 )5.3)cos(6.4( dxxx , usando a Regra dos Trapézios com 6 pontos 
e um limitante superior para o erro. 
4. Estude a Regra 3/8 de Simpson e um limitante superior para o erro e, resolva o 
exercício 2) - Referência Bibliográfica [1]. 
 
5. Calcular ∫ ++
2
1
3 )65.8( dxxe x usando: 
Regra dos Trapézios com 4 sub-intervalos, Regra 1/3 de Simpson com 6 sub-
intervalos, a Regra 3/8 Simpson com 9 sub-intervalos e, um limitante superior 
para o erro. 
 
6. Determine o menor número de sub-intervalos em que podemos dividir o intervalo 
[0 1] para obter I = ∫ −
1
0
2 )5( dxe x usando a Regra dos Trapézios com erro menor ou 
igual 0.001. 
 
6. Resolva o exercício 6) usando a Regra 1/3 Simpson, a Regra 3/8 de Simpson e 
para a divisão encontrada calcular a integral I. 
 
7. Uma linha reta foi traçada de modo a tangenciar as margens de um rio nos pontos 
A e B. Para medir a área entre o rio e a reta AB foram traçadas perpendiculares em 
relação a AB com um intervalo de 0.05 m. Qual é esta área? 
 
 
Perpendiculares 1 2 3 4 5 6 7 8 9 
 
47 
Comprimento(m) 3.28 4.02 4.64 5.26 4.98 3.62 3.82 3.68 3.26 
 
 
 
Faça uma interpretação gráfica do problema e, resolva-o usando seus 
conhecimentos de Cálculo Numérico. 
 
8. Com o Software Matlab, usando a Regra dos Trapézios, calcular as integrais das 
seguintes funções: 
 
 a) dx)1.3x)x(sen(
5
1
2 +−∫ 
 
 b) dx)8.2)xcos(e(
3
1
x
∫
−
−+ 
 
9. Com o Software Numérico - Referência Bibliográfica [1], usando a Regra 1/3 de 
Simpson, calcule o valor aproximado da integral das seguintes funções: 
 
a) dxxe x )9.45(
4
1
++∫
−
, usando 6 sub-intervalos e um limitante superior para o erro. 
 
b) dxxx )26(
5.2
1
3 ++∫ , usando 9 pontos e um limitante superior para o erro. 
 
 
10. Faça um Mapa Conceitual detalhado, sobre Integração Numérica, introduzindo 
labels indicando se aprendeu (A), não aprendeu (N), se gostou (G) e se detestou 
(D), achou interessante (I) etc. 
 
 
 
1. Usando o Método de Euler, resolva as seguintes equações diferenciais com valor 
inicial: 
 a) y’ = 4 - 2x , com y(0) = 2. Usando h = 0.01 calcule y(0.05); 
 b) y’ =1 - y/x , com y(2) = 2. Usando h = 0.1 calcule y(2.4); 
 c) y’ = -x/y , com y(0) = 20. Usando h = 0.2 calcule y(1.0). 
 
2. Usando o Método de Euler Aperfeiçoado, calcule a solução aproximada para as 
seguintes equações diferenciais com valor inicial: 
 
a) y’ = -x /y com y(0) = 20. Usando h = 0.2, calcule y(1.2); 
b) y’= y - x com y(0) = 2. Usando h = 0.1, calcule y(0.9). 
48 
 
 3. Com o Software Numérico - Referência Bibliográfica [1], usando o Método de 
Euler calcule a solução aproximada para as seguintes equações diferenciais com 
valor inicial: 
 a) y’ = -2 y +1 com y(0) = 1. 
 Usando h = 0.1 e depois h = 0.01, calcule y(0.9). O que você pode afirmar sobre a 
qualidade dos resultados obtidos? Justifique suas afirmações teoricamente. 
 b) y’ = y com y(0) = 1. Usando h = 0.2, calcule y(2.0) e um limitante superior para o 
erro. 
 
4. Escreva as equações discretizadas da equação diferencial parabólica da difusão 
para: 
 
 a) h = 0.1 e k = 0.1 
 
 b) h = 0.5 e k = 0.3 
 
5. Discretize a equação diferencial parcial parabólica da difusão, 
)( ( )tx
x
u
tx
t
u
,, 2
2
∂
∂
=
∂
∂
 
 utilizando o Método das Diferenças Finitas para valores de passos no tempo 
05.0k = e no espaço 1.0h = . 
Considere as condições de contorno u(0,t) = u(2,t) = 0, 0 < t < T, e as condições 
iniciais u(x,0) = , 1 2≤≤ x , para calcular o valor de u(x,t) nos pontos (0.9,0.05), (1, 
0.05), (1.1, 0.05) e (1, 0.1). 
 
6. Discretize a equação diferencial parcial parabólica da difusão, 
)( ( )tx
x
u
tx
t
u
,, 2
2
2
∂
∂
=
∂
∂
α 
utilizando o Método das Diferenças Finitas para valores do coeficiente de difusão 
1=α . 
Escolha valores para os passos no tempo k e no espaço h e encontre um valor 
aproximado para a solução numa região quadriculada de lado 1, considerando as 
condições de contorno u(0,t) = u(1,t) = 0, 0 < t < T, e as condições iniciais u(x,0) = 1, 
0 1≤≤ x . Plote os valores das aproximações obtidas nos pontos da malha. 
 
7. Faça um Mapa Conceitual detalhado sobre métodos numéricos para as Equações 
Diferenciais Ordinárias, introduzindo labels indicando se aprendeu (A), não aprendeu 
(N), se gostou (G) e se detestou (D ), achou interessante (I) etc. 
49 
 
8. Faça um Mapa Conceitual detalhado sobre métodos numéricos para as sobre 
Equações Diferenciais Parciais, introduzindo labels indicando se aprendeu (A), não 
aprendeu (N), se gostou (G) e se detestou (D ), achou interessante (I) etc. 
 
 
Referências 
 
Hanselman, D. e Littlefield, B., Matlab 6 Curso Completo, Prentice Hall, São Paulo, 
(2003) 
 
 
Vendrametto Junior, C. E. e Arenales, S. H. V. , MATLAB: fundamentos e 
programação, EDUFSCar (2000)

Outros materiais