Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

307 
 
Universidade Federal de Santa Catarina 
Centro Tecnológico 
Departamento de Informática e Estatística 
 
LIVITEC - Laboratório de Informática para 
Vigilância Tecnológica 
 
 
 
CÁLCULO NUMÉRICO 
EM COMPUTADORES 
Provas e Projetos 
Vol.3 
 
 
 
Bernardo Gonçalves Riso 
Mirela Sechi Moretti Annoni Notare 
 
 
 
 
 
Florianópolis SC, Junho 2011. 
308 
 
SUMÁRIO 
 
Dedicatória ................................................................................................................. 310 
Apresentação ................................................................................................................311 
 
 
PARTE I – PROVAS 
 
 
PROVA 26 - Método da Relaxação ......................................................................... 313 
Folha de Questões 
Respostas 
PROVA 27- Introdução à Interpolação Polinomial ............................................... 322 
Folha de Questões 
Respostas 
PROVA 28 – Interpolação com a Spline Cúbica ................................................... 330 
Folha de Questões 
Respostas 
PROVA 29 - Integração Gaussiana ........................................................................ 340 
Folha de Questões 
Respostas 
PROVA 30 - Método de Euler ................................................................................. 347 
Folha de Questões 
Respostas 
PROVA 31 - Métodos de Runge-Kutta ................................................................... 354 
Folha de Questões 
Respostas 
PROVA 32- Eq. Dif. Ord. de Ordem Superior ....................................................... 362 
Folha de Questões 
Respostas 
PROVA Proposta (1) ................................................................................................. 372 
Folha de Questões 
Respostas 
PROVA Proposta (2) ................................................................................................. 373 
Folha de Questões 
Respostas 
PROVA Proposta (3) ................................................................................................. 374 
Folha de Questões 
Respostas 
PROVA Proposta (4) ................................................................................................ 375 
Folha de Questões 
Respostas 
 
 
 
 
 
 
 
309 
 
PARTE II – PROJETOS 
 
 
PROJETO 28 – Programa Gregory-Newton ............................................................. 377 
PROJETO 29 – Programa Spline .............................................................................. 381 
PROJETO 30 – Programa Runge_Kutta_3 ............................................................... 389 
PROJETO 31 – Programa Euler ................................................................................ 392 
PROJETO 32 – Programa Euler-sup ........................................................................ 395 
PROJETO 33 – Programa Runge_Kutta_3-sup ......................................................... 399 
PROJETO 34 – Programa Runge_Kutta_4-sup ......................................................... 403 
PROJETO 35 – Programa Runge_Kutta_4-3Eq ........................................................ 406 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
310 
 
DEDICATÓRIA - Dedico este livro aos milhares 
de estudantes que, ao longo desses 30 anos em que 
venho atuando como professor de Cálculo 
Numérico em Computadores, assistiram às minhas 
aulas e comigo trabalharam, ajudando-me e 
ensinando-me a mim tanto quanto eu a eles. A 
todos esses rapazes e moças agradeço muitíssimo e 
a todos eles desejo imensa felicidade e sucesso. 
 
Bernardo Gonçalves Riso 
 
 
DEDICATÓRIA – Inicialmente, dedico este livro 
aos estudantes que, ao longo desses 10 anos em 
que venho atuando como professora de Cálculo 
Numérico, assistiram às minhas aulas, ensinando-
me a mim tanto quanto eu a eles. Dedico ainda, ao 
Prof. Bernardo Gonçalves Riso, que muito admiro 
como professor e pessoa; e ao meu marido e ao 
meu filho, Itamar e Gianluca, respectivamente. 
 
Mirela Sechi Moretti Annoni Notare 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
311 
 
APRESENTAÇÃO 
 
Neste Volume III de Cálculo Numérico em Computadores - Provas e 
Projetos, completamos e encerramos a coleção iniciada com o Volume I 
(encadernada) e continuada com o Volume II (gravada em dois CDs). Os 
dois primeiros volumes já constam do acervo da Biblioteca Central da 
UFSC e estão disponíveis para consulta e empréstimo à comunidade. 
 
Os temas tratados neste Volume III dizem respeito à Resolução de 
Sistemas de Equações Lineares, à Interpolação Polinomial, à Integração 
de Funções e à Resolução de Problemas de Valor Inicial. 
 
Os autores desejam agradecer ao senhor Itamar Annoni Notare pelo 
empenho na organização dos capítulos deste segundo volume de Cálculo 
Numérico em Computadores. Sem sua contribuição o texto ora apresentado 
não poderia ter o mesmo bom gosto na distribuição das matérias que 
compõem esta monografia. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
312 
 
 
 
 
 
 
 
 
 
 
 
PARTE I 
PROVAS 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
313 
 
PROVA 26 – Método da Relaxação 
 
 
FOLHA DE QUESTÕES: 
 
 
Questão 1 (dissertativa) – Descreva os principais aspectos da resolução de sistemas de 
equações lineares relacionados com o emprego do Método da Relaxação. Por favor, no 
seu texto, refira-se às seguintes variantes desse método: a Sub-Relaxação e a Sobre-
Relaxação. Ocupe, pelo menos, uma página para responder a esta pergunta. 
 
Questão 2 (numérica) – Considere o seguinte sistema de equações lineares já pronto 
para a aplicação do Método da Relaxação: 
 
–x + 3y – 3z – 7 = 0 
2x – y + 2z + 5 = 0 
2x – 3y – z + 4 = 0 
 
Por favor, aplique o método referido fazendo duas iterações a partir da estimativa inicial 
x1 = y1 = z1 = 0. Indique todas as operações efetuadas e organize os valores obtidos em 
uma tabela com o seguinte cabeçalho: 
 
x R1 y R2 z R3 
 
 
Questão 3 (numérica) – Use o Método da Relaxação para resolver o sistema dado a 
seguir: 
 
– 2x + y – 3z = – 7 
x – 4y + z = 4 
3x – y – 2z = 2 
 
 
Faça três iterações a partir da estimativa inicial: x1 = x2 = x3 = 1. Por favor, não deixe de 
indicar todas as operações que você efetuar. Organize os resultados parciais em uma 
tabela com o cabeçalho seguinte: 
 
x1 R1 x2 R2 x3 R3 
 
 
Questão 4 (algoritmo) – Construa um algoritmo para automatizar o uso do Método da 
Relaxação no caso de um sistema de n equações lineares com n incógnitas. 
 
♣ Boa Prova! ♣ 
 
 
 
 
314 
 
RESPOSTAS: 
 
Resposta à Questão 1 – A Relaxação, a Sub-Relaxação e a Sobre-Relaxação são 
métodos de aproximações sucessivas (isto é, métodos iterativos) que permitem resolver 
sistemas de n equações lineares com n incógnitas de pequeno e médio porte. 
 
Pode-se dizer que a Relaxação é o método de referência, enquanto que a Sub-
Relaxação e a Sobre-Relaxação são suas variantes. Dado o sistema AX = C, precisa-se 
preparar o sistema previamente ao emprego da relaxação. Para ficar adequado, o sistema 
deve ter os termos independentes situados do lado esquerdo de cada equação e, além 
disso, ele precisa ter todos os elementos da diagonal principal da matriz A, dos 
coeficientes, iguais a -1. 
 
Assim, a partir de uma estimativa inicial da solução, 
 
xi,1, com i = 1, 2, 3,...,n, 
 
podem-se obter estimativas mais precisas, substituindo-se as aproximações em cada 
equação e observando os valores (os resíduos) então obtidos: 
 
A primeira equação fornece o resíduo R1; 
A segunda equação fornece o resíduo R2; 
.................................................................. 
A n-ésima equação fornece o resíduo Rn 
 
Identifica-se o maior– Escreva um resumo de seus estudos no âmbito da resolução 
numérica de equações diferenciais ordinárias de ordem superior. Refira-se à 
apresentação de problemas nessa área e à redução de uma equação dessas a um sistema 
de equações diferenciais ordinárias de primeira ordem. Por favor, dê um exemplo desse 
tipo de redução para uma equação de terceira ordem. 
 
 
Questão 2 (numérica) – Usando as variáveis auxiliares z, w e t, reduza a equação 
diferencial ordinária de quarta ordem dada abaixo por um sistema de quatro equações 
diferenciais ordinárias de primeira ordem. Por favor, indique claramente as 
transformações realizadas. 
 
y
iv
 = f(x, y, y‟, y‟‟, y‟‟‟) = 17 x
2
 - 5 y
2
 + y‟ – 17y‟‟ +yy‟‟‟ + 4 
 
 
Questão 3 (numérica) – Para reduzir a equação diferencial ordinária de segunda ordem 
dada abaixo use a variável auxiliar z. 
 
y‟‟ = f(x, y, y‟) = 12 x
2
 + 3 y
2
 + y‟ - 17 
 
Após essa redução, empregue o Método de Euler para resolver o sistema obtido no 
intervalo de integração [1,5; 1,8] com passo constante h = 0,1. As condições iniciais 
são: para x = 1,5 tem-se y = z = 2. Por favor, indique todas as operações efetuadas. 
Disponha os resultados em uma tabela com o seguinte cabeçalho: 
 
i xi yi zi = yi‟ zi‟ = yi‟‟ 
. 
 
Questão 4 (algoritmo) – Construa um algoritmo estruturado para implementar o uso do 
Método de Runge-Kutta de 4ª Ordem no caso da resolução de um problema de valor 
inicial que envolva um sistema de equações diferenciais ordinárias de primeira ordem 
resultante da redução de uma equação diferencial ordinária de segunda ordem. 
 
 
 
♣ Boa Prova! ♣ 
 
 
 
 
 
 
363 
 
RESPOSTAS: 
 
Resposta à Questão 1 – As equações diferenciais ordinárias de ordem superior, isto é, 
de segunda ordem, de terceira, e assim por diante, surgem freqüentemente nos 
ambientes de pesquisa e de aplicação das ciências exatas e das engenharias. Por esse 
motivo seu estudo reveste-se de grande importância. 
 
Uma equação diferencial ordinária de ordem n pode ser denotada como: 
 
y
(n)
 = f(x, y, y‟, y‟‟, ..., y
(n-1)
) 
 
Exemplo: 
 
y‟‟ = f(x, y, y‟) = 5x
2
y -34 xy‟ -12 
 
 
Quando uma dessas equações está acompanhada de condições iniciais, constitui-
se, então, o que se denomina um problema de valor inicial de ordem superior: 
 
 
y
(n)
 = f(x, y, y‟, y‟‟, ..., y
(n-1)
) 
 
Para x = x1, tem-se: 
y = y1, 
y‟ = y‟1, 
y‟‟ = y‟‟1, ..., 
y
(n-1)
 = y
(n-1)
1 
 
 
Exemplo: 
 
y‟‟ = f(y, x, y‟) = -16 x y‟ + 5y – 2 
 
Para x = x1 = 4,5, tem-se: 
y = y1 = 16,2 e 
y‟= y‟1 = -3,3 
 
 
Um problema desse tipo pode ser resolvido em um intervalo de integração [x1, 
xk]. Esse intervalo pode ser percorrido com um passo hi = (xi+1 – xi), i = 1, 2,..., k-1, 
variável, ou com um passo h constante. 
 
Para resolvê-lo, pode-se empregar um método numérico como o Método de 
Euler, ou de Runge-Kutta, ou outro. Com um emprego de um desses métodos obtém-se 
uma seqüência de valores de x e de seus correspondentes valores de y = f(x), além dos 
valores das derivadas y‟, y‟‟,..., y(n). Tais valores podem ficar bem dispostos em uma 
tabela com o cabeçalho: 
 
i xi yi y‟i y‟‟i ... y
(n)
i 
364 
 
 
Pode-se reduzir uma equação diferencial ordinária de ordem n a um sistema de n 
equações diferenciais de primeira ordem. Portanto, um problema de valor inicial de 
ordem superior é passível, ele também, de ser reescrito como um problema que envolve 
um conjunto de equações diferenciais ordinárias de primeira ordem. 
 
Para realizar essa redução introduzem-se variáveis auxiliares. 
 
Exemplo: 
 
Reduza a equação diferencial ordinária de terceira ordem (n = 3) dada a seguir: 
 
y‟‟‟ = f(x, y, y‟, y‟‟) = 9yy‟- 13x + 6 
 
Solução: 
 
 
Fazendo y‟ = z, tem-se o sistema: 
 
 
y‟ = z 
 
z‟‟ = 9yy‟ – 13x + 6 
 
 
Em seguida, fazendo z‟ = t, tem-se 
 
y‟ = z 
 
z‟ = t 
 
t‟ = 9yz – 13x + 6 
 
 
que constitui um sistema de três equações diferenciais ordinárias de primeira ordem. 
 
 
Resposta à Questão 2 – Aqui se utiliza um conjunto de variáveis auxiliares, z, w e t, 
para reduzir a equação diferencial ordinária de quarta ordem dada abaixo 
 
y
iv
 = f(x, y, y‟, y‟‟, y‟‟‟) = 17 x
2
 - 5 y
2
 + y‟ – 17y‟‟ +yy‟‟‟ + 4 
 
a um sistema de quatro equações diferenciais ordinárias de primeira ordem. 
 
Fazendo y‟ = z, tem-se o sistema: 
 
 
 
 
365 
 
y‟ = z 
z‟‟‟ = 17 x
2
 - 5 y
2
 + y‟ – 17y‟‟ +yy‟‟‟ + 4 
 
 
Agora, fazendo z‟ = w, tem-se o sistema: 
 
z‟ = w 
y‟ = z 
w‟‟ = 17 x
2
 - 5 y
2
 + y‟ – 17y‟‟ +yy‟‟‟ + 4 
 
 
Finalmente, fazendo w‟ = t, tem-se 
 
 
z‟ = w 
y‟ = z 
w‟ = t 
t‟ = 17 x
2
 - 5 y
2
 + z – 17w + yt + 4 
 
 
 
Resposta à Questão 3 – Neste problema tem-se a equação diferencial ordinária de 
segunda ordem 
 
 
y‟‟ = f(x, y, y‟) = 12 x
2
 + 3 y
2
 + y‟ - 17 
e as condições iniciais: 
para x = x1 = 1,5 tem-se y1 = z1 = 2. 
 
 
Após reduzir-se a equação dada a um sistema de duas equações diferenciais 
ordinárias de primeira ordem, resolve-se o problema com a fórmula do Método de 
Euler: 
 
yi+1 = yi + hy‟i 
 
no intervalo de integração [1,5; 1,8] com passo constante h = 0,1. 
 
Ora, a equação dada pode ser reduzida a 
 
y‟ = z 
 
z‟ = 12x
2
 + 3y
2
 + z -17 
 
 
 
i = 1: 
 
x1 = 1,5; y1 = 2; y‟1 = z1 = 2 (condições iniciais) 
366 
 
 
Com o emprego da segunda equação do sistema, 
 
z‟1 = 12x1
2
 + 3y1
2
 + z1 – 17 
= 12(1,5)
2
 + 3(2)
2
 + 2 – 17 
= 24 
x2 = x1 + h = 1,5 + 0,1 = 1,6 
 
y2 = y1 + hy‟1 (Euler) 
 
= 2 + (0,1)(2) = 2,2 
 
z2 = y‟2 = z1 + hz‟1 (Euler) 
 
= 2 + (0,1)(24) = 4,4 
 
z‟2 = y‟‟2 = 12x2
2
 + 3y2
2
 + z2 -17 
 
= 12(1,6)
2
 + 3(2,2)
2
 + 4,4 -17 
 
= 32,64 
 
 
 
i = 2: 
 
x3 = x2 + h = 1,6 + 0,1 = 1,7 
 
y3 = y2 + hy‟2 (Euler) 
 
= 2,2 + (0,1)(4,4) 
 
= 2,64 
 
 
z3 = y‟3 = z2 + hz‟2 (Euler) 
 
= 4,4 + (0,1)(32,64) 
 
= 7,664 
 
 
 
z3‟ = y‟‟3 = 12x3
2
 + 3y3
2
 + z3 -17 
 
= 12(1,7)
2
 + 3(2,64)
2
 + 7,664 -17 
 
= 46,2528 
 
367 
 
 
i = 3: 
 
x4 = x3 + h = 1,7 + 0,1 = 1,8 
 
y4 = y3 + hy‟3 (Euler) 
 
= 2,64 + (0,1)(7,664) 
 
= 3,4064 
 
 
z4 = y‟4 = z3 + hz‟3 (Euler) 
 
= 7,664 + (0,1)(46,2528) 
 
= 12,28928 
 
 
z4‟ = y‟‟4 = 12x4
2
 + 3y4
2
 + z4 -17 
 
= 12(1,8)
2
 + 3(3,4064)
2
 + 12,28928 -17 
 
= 68,979962 
 
 
 
 
 
i xi 
yi 
(Euler) 
zi = y’i 
(Euler) 
zi’ = y’’i 
(Eq. Dif.) 
1 1,5 2 (dado) 2 (dado) 24 
2 1,6 2,2 4,4 32,64 
3 1,7 2,64 7,664 46,2528 
4 1,8 3,4064 12,28928 68,979962 
 
 
Resposta à Questão 4 – Segue a construção de um algoritmo estruturado que realiza o 
emprego automático do Método de Runge-Kutta de 4ª Ordem. Considera-se o caso da 
resolução de um problema de valor inicial que envolve um sistema de duas equações 
diferenciais ordinárias de primeira ordem provenientes da redução de: 
 
y‟‟ = f(x, y, y‟) = 3xyy‟ -15x -6 
 
Fazendo y‟ = z, tem-se o sistema: 
 
 
y‟ = z 
z‟ = 3xyz – 15x - 6 
368 
 
Caixa preta inicial: 
 
 
 
 
Esboço inicial em linguagem algorítmica: 
 
ALGORITMO RK4_SIST 
 
REAL X(10), Y(10), Z(10), YL(10), ZL(10) 
 REAL H 
INTEIRO N, I 
 
F(X, Y, Z) = Z 
 G(X, Y, Z) = 3*X*Y*Z -15*X - 6 
 
INÍCIO 
... 
... 
... 
FIM DO ALGORITMO RK4_SIST. 
 
As caixas pretas internas à caixa preta inicial são: Entrada dos Dados, 
Processamento dos Cálculos e Saída dos Resultados. 
 
RK4_SIST 
f(x,y,z) = z 
g(x,y,z) = 3xyz-15x-6 
Dados 
 
n, x1, xn, 
y1, z1 
 
Resultados 
xi, yi ,zi, yli, zli‟ 
i = 1,2,...,n 
 
369 
 
 
Detalham-se as caixas interiores em que, no caso do Método de Runge-Kutta de 
Quarta Ordem, tem-se: 
 
K1 = f[xi, yi] 
K2 = f[xi + (1/2)h, yi + (1/2)hK1] 
K3 = f[xi + (1/2)h, yi + (1/2)hK2] 
K4 = f[xi + h, yi + hK3] 
 
yi+1 = yi + (h/6)[K1 + 2K2 + 2K3 + K4] 
 
que, empregado na resolução de um sistema de duas equações diferenciais ordinárias,y‟ = f(x,y,z) = z 
z‟ = g(x,y,z) = 3xyz – 15x - 6 
 
 
assume a forma: 
 
K1 = f[xi, yi]; 
L1 = g[xi, yi] 
 
K2 = f[xi + (1/2)h, yi + (1/2)hK1, zi + (1/2)hL1 ]; 
L2 = g[xi + (1/2)h, yi + (1/2)hK1, zi + (1/2)hL1] 
 
K3 = f[xi + (1/2)h, yi + (1/2)hK2, zi + (1/2)hL2]; 
L3 = g[xi + (1/2)h, yi + (1/2)hK2, zi + (1/2)hL2] 
 
K4 = f[xi + h, yi + hK3, zi + hL3]; 
L4 = G[xi + h, yi + hL3, zi + hL3] 
 
yi+1 = yi + (h/6)[K1 + 2K2 + 2K3 + K4]; 
zi+1 = zi + (h/6)[L1 + 2L2 + 2L3 + L4] 
Resul- 
tados 
RK4_SIST 
 
 
 
 
 
 
 
ENTRADA 
DOS 
DADOS 
PROCES- 
SAMENTO 
DOS 
CÁLCULOS 
SAÍDA 
DOS 
RESUL- 
TADOS X(I), 
Y(I), 
Z(I), 
YL(I), 
ZL(I), 
I=1,2,
…N 
 
N, 
X(1), 
X(N), 
Y(1), 
Z(1), 
 
Dados 
370 
 
ALGORITMO RK4_SIST 
 
(* Resolve um problema de valor inicial que envolve um sistema 
com duas equações diferenciais ordinárias de primeira ordem pelo 
Método de Runge-Kutta de Quarta Ordem. *) 
 
REAL X(10), Y(10), Z(10), YL(10), ZL(10) 
 REAL K1(10), K2(10), K3(10), K4(10) 
 REAL L1(10), L2(10), L3(10), L4(10) 
REAL H 
INTEIRO N, I 
 
F(X, Y, Z) = -X*Z 
 G(X, Y, Z) = Y*Y 
 
INÍCIO 
 
(* ENTRADA DOS DADOS: *) 
 LEIA N, X(1), X(N) 
 LEIA Y(1), Z(1) 
(* FIM DA ENTRADA DOS DADOS. *) 
 
(* PROCESSAMENTO DOS CÁLCULOS: *) 
 H = (X(N) – X(1))/(N – 1) 
 YL(1) = F(X(1), Y(1), Z(1)) 
 ZL(1) = G(X(1), Y(1), Z(1)) 
 
PARA (I DE 1 ATÉ N - 1) FAÇA 
 
 K1(I) = F(X(I), Y(I), Z(I)) 
 L1(I) = G(X(I), Y(I), Z(I)) 
 
 K2(I) = F(X(I) + H/2, Y(I) + H*K1(I)/2, Z(I) + H*L1(I)/2) 
 L2(I) = G(X(I) + H/2, Y(I) + H*K1(I)/2, Z(I) + H*L1(I)/2) 
 
 K3(I) = F(X(I)+H/2, Y(I)+H*K2(I)/2, Z(I)+H*L2(I)/2) 
 L3(I) = G(X(I)+H/2, Y(I)+H*K2(I)/2, Z(I)+H*L2(I)/2) 
 
 K4(I) = F(X(I)+H, Y(I)+H*K3, Z(I)+H*L3) 
 L4(I) = G(X(I)+H, Y(I)+H*K3, Z(I)+H*L3) 
 
 X(I + 1) = X(I) + H 
 Y(I + 1) = Y(I) + (H/6)*(K1(I) + 2*K2(I) + 2*K3(I) + K4(I)) 
 Z(I + 1) = Z(I) + (H/6)*(L1(I) + 2*L2(I) + 2*L3(I) + L4(I)) 
 YL(I + 1) = F(X(I+1), Y(I+1), Z(I+1)) 
 ZL(I + 1) = G(X(I+1), Y(I+1), Z(I+1)) 
 
FIM PARA 
(* FIM DO PROCESSAMENTO DOS CÁLCULOS. *) 
371 
 
 
(* SAÍDA DOS RESULTADOS: *) 
 PARA (I DE 1 ATÉ N) FAÇA 
 ESCREVA I, X(I), Y(I), Z(I) 
 ESCREVA YL(I), ZL(I) 
 FIM PARA 
 PARA (I DE 1 ATÉ N - 1) FAÇA 
 ESCREVA I, K1(I), L1(I), K2(I), L2(I), K3(I), L3(I), K4(I), L4(I) 
 FIM PARA 
 ESCREVA „FIM.‟ 
(* FIM DA SAÍDA DOS RESULTADOS. *) 
FIM DO ALGORITMO RK4_SIST. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
372 
 
PROVA PROPOSTA Nº 1 
 
Referente aos temas: Sistemas de numeração; Ponto flutuante; Erros; Equações 
algébricas e transcendentes. Com consulta ao material individual do aluno. Cada 
questão vale 2,5 pontos. 
 
 
Questão 1 (dissertativa) – Escreva um resumo de seu estudo sobre o Método da 
Bisseção e o Método de Newton-Raphson. Por favor, procure escrever com 
originalidade: não copie diretamente os textos de consulta. Escreva com clareza e 
correção. Não deixe de ocupar pelo menos uma página da prova. 
 
Questão 2 (numérica) – Por favor, realize as mudanças de base indicadas abaixo. Não 
deixe de apresentar todas as operações efetuadas. 
(1000,111)2 → (???)10 
(7,777)10 → (???)2 
 
Questão 3 (numérica) – Use o Método da Falsa Posição para obter uma raiz real da 
equação 
f(x) = 3x
3 
 + 6x – 8,5 = 0. 
 
no intervalo [0; 1]. Faça duas partições, isto é, aplique duas vezes a fórmula. No final, 
comente a evolução do processo de cálculo. Seria conveniente fazer mais partições? Por 
favor, indique todas as operações efetuadas e preencha completamente uma tabela com 
duas linhas de resultados e o seguinte cabeçalho: 
 
i a xfp b f (a) f(xfp) f(b) b – a 
 
Questão 4 (algoritmo) – Por favor, construa um algoritmo para obter uma raiz real da 
equação 
f(x) = 5x
3
 + sen(x
2
) – 22 = 0 
 
pelo Método da Bisseção. Use uma metodologia de refinamentos sucessivos, a partir de 
uma caixa preta inicial que represente o algoritmo no mais alto nível de abstração. Use 
letras maiúsculas, pelo menos, na versão final do algoritmo. Observe que essa versão 
precisa ser completa, isto é, ela deve incluir os blocos de Entrada dos Dados, de 
Processamento dos Cálculos e de Saída dos Resultados, além da declaração dos tipos 
das variáveis e outras informações. 
 
♣ Boa Prova! ♣ 
 
 
 
 
 
 
 
373 
 
PROVA PROPOSTA Nº 2 
 
Referente aos tópicos: Método da Secante; Equações Polinomiais e Eliminação 
Gaussiana. Com consulta a material individual do aluno. Cada questão vale 2,5 pontos. 
 
 
Questão 1 (dissertativa) – Por favor, estabeleça comparações entre as características dos 
seguintes métodos numéricos: Secante; Birge-Vieta; e Müller. Você pode considerar as 
classes de equações às quais esses métodos se aplicam, assim como os diferentes tipos 
de raízes que eles permitem obter, a quantidade de estimativas iniciais que necessitam 
para ser inicializados, e assim por diante. Procure ser criativo: não se limite a copiar 
outros autores; e não deixe de ocupar pelo menos uma página com o seu texto. 
 
 
Questão 2 (numérica) – Por favor, use o Método de Müller para tentar obter uma raiz 
real da equação 
P(x) = 2x
3
 + 3x
2
 – 3 = 0. 
Por favor, adote as estimativas iniciais: x1 = –1; x2 = 0; x3 = 1. Faça duas iterações, isto 
é, calcule x4 e x5, sempre indicando as operações efetuadas. Organize os resultados em 
uma tabela como aquela dada a seguir. No final, estabeleça uma avaliação do processo 
iterativo. Observação: no caso de obter números complexos, interrompa os cálculos e 
escreva um comentário mencionando o fato. 
 
i xi-2 xi-1 xi xi+1 P(xi-2) P(xi-1) P(xi) P(xi+1) P(xi+1) - P(xi) 
3 -1 0 1 
4 
 
 
Questão 3 (numérica) - Empregue a Eliminação Gaussiana na resolução do seguinte 
sistema: 
 
 3 x1 – 4 x2 = 1 
 2 x1 – 3 x2 = 2 
 
 
Questão 4 (algoritmo) – Por favor, construa um algoritmo para implementar 
computacionalmente o Método da Secante no caso da equação: 
 
f(x) = 7x
5
 – 8x
2
 –78x –125 = 0 
 
Sugestões: logo após a declaração dos tipos das variáveis, faça a definição da função 
f(x); na Entrada dos Dados, mande ler as estimativas iniciais da raiz e outras 
informações necessárias; no Processamento dos Cálculos, mande realizar as iterações; e, 
na Saída dos Resultados, mande imprimir o valor da raiz, caso a precisão exigida tenha 
sido alcançada. 
 
♣ Boa Prova! ♣ 
 
 
374 
 
PROVA PROPOSTA Nº 3 
 
Referente aos temas: Sistemas Lineares (Fatoração LU, Gauss-Seidel e Relaxação); 
Sistemas Não Lineares (Newton, Quase Newton); e Ajustamento (Polinomial e Não 
Polinomial). Com consulta ao material individual do aluno. Cada questão vale dois 
pontos e meio. 
 
Questão 1 (dissertativa) - Escreva sobre a resolução de sistemas de equações não 
lineares, tanto pelo (a) Método de Newton, quanto pelo (b) Método Quase Newton 
estudado. Por favor, ocupe, no mínimo, uma página. 
 
 
Questão 2 (numérica) - Use o Método de Gauss-Seidel para tentar obter a solução do 
sistema de equações lineares dado a seguir: 
 
 8 x
 
+ 3y
 
 = 30 
3 x
 
– 7 y
 
 = 20 
 
 
Faça duas iterações, isto é, obtenha (x2, y2) e (x3, y3), indicando todas as 
operações efetuadas. Por favor, escreva um comentário sobre a seqüência de valores 
obtidos. Há convergência? Apresente os resultados organizados na forma de uma tabela 
com o cabeçalho: 
 
 
 
 
 
 
Questão 3 (numérica) – Ajuste Y = Ae
Bx
 (em que e ≈ 2,71828 é a base dos logaritmos 
neperianos) aos pontos: (2; 2), (3; 5), (4; 15), (5; 77). Use o Método dos Mínimos 
Quadrados. Por favor, indique todas as operações efetuadas. Armazene os resultados 
parciais em uma tabela com o seguinte cabeçalho: 
 
i xi yi ln(yi) xiln(yi) xi
2
 Yi 
 
 
Questão 4 (algoritmo) – Por favor, elabore um algoritmo para ajustar a curva 
exponencialY = AB
x
 a um conjunto de n pontos dados por suas coordenadas (xi, yi), i = 
1, 2, 3, ..., n. A Saída dos Resultados deve apresentar o valor de A e o de B. 
 
 
♣ Boa Prova! ♣ 
 
 
 
 
 
 
 
i 
 
xi 
 
yi 
desvioi = 
│xi+1 – xi│ + │yi+1 – yi│ 
Inicie o processo iterativo 
com x1 = y1 = 0,5. 
375 
 
PROVA PROPOSTA Nº 4 
 
Referente aos assuntos: Sistemas Não Lineares (Newton e Quase Newton); 
Ajustamento; e Equações Diferenciais (Euler e Runge-Kutta). Com consulta ao 
material do aluno. Cada questão vale 2,5 pontos. 
 
 
Questão 1 (descritiva) – Escreva um resumo do seu estudo sobre a resolução numérica 
de sistemas de equações não lineares. Por favor, em sua exposição refira-se aos métodos 
de Newton e Quase Newton. Não deixe de ocupar pelo menos uma página com a sua 
resposta, mas não se prolongue muito além disso. 
 
 
Questão 2 (numérica) – Use o Método dos Mínimos Quadrados para ajustar uma reta 
p(x) = a1 + a2 x aos dados apresentados a seguir. Por favor, construa uma tabela para 
obter todos os somatórios. 
 
 
 
 
 
 
Questão 3 (numérica) - Use o Método de Runge-Kutta de Terceira Ordem para resolver 
o problema de valor inicial: 
y‟ = 3 x
2 
 – y 
 Para x = 0, y = 1. 
 
Por favor, considere o intervalo de integração [0,0; 0,1]. Adote o passo h = 0,1. Indique 
todos os cálculos efetuados e preencha uma tabela com o cabeçalho: 
 
 
 
 
Atenção: Observe que a tabela só terá duas linhas, pois apenas um passo será dado. Os 
valores de K1, K2 e K3 serão calculados apenas uma vez. 
 
 
Questão 4 (algoritmo) – Por favor, elabore um algoritmo estruturado em três blocos 
(Entrada dos Dados, Processamento dos Cálculos e Saída dos Resultados) para 
automatizar a aplicação do Método de Runge-Kutta de Quarta Ordem a um problema de 
valor inicial com a equação y‟ = f(x, y) = 3 x
2 
 – y. 
 
 
♣ Boa Prova! ♣ 
 
 
 
 
 
x 1,0 2,0 3,0 5,0 
y – 2,0 1,0 2,0 – 1,0 
i xi yi K1 K2 K3 
376 
 
 
 
 
 
 
 
 
 
 
 
 
PARTE II 
PROJETOS 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
377 
 
PROJETO 28 (Programa Gregory_Newton) – Automatize a aplicação da Interpolação 
Polinomial com o Método de Gregory-Newton e Diferenças Divididas. 
 
Solução: Neste caso implementa-se o seguinte algoritmo estruturado: 
 
ALGORITMO GREGNEWTON 
REAL XINT, YINT 
REAL X(5), Y(5), PROD(10) 
REAL D(10, 10) 
INTEIRO I, K, N 
INÍCIO 
 
(* ENTRADA DOS DADOS: *) 
 LEIA N, XINT 
 PARA (I DE 0 ATÉ N) FAÇA 
 LEIA X(I), Y(I) 
 FIM PARA 
(* FIM DA ENTRADA DOS DADOS. *) 
 
(* PROCESSAMENTO DOS CÁLCULOS: *) 
 
(* CÁLCULO DAS DIFERENÇAS DIVIDIDAS: *) 
 
 PARA (I DE 0 ATÉ N) FAÇA 
 D(0, I) = Y(I) 
 FIM PARA 
 
PARA (K DE 1 ATÉ N) FAÇA 
PARA (I DE 0 ATÉ N-K ) FAÇA 
 D(K,I) = (D(K–1, I+1) – D(K–1, I)) / (X(I+K) – X(I)) 
 FIM PARA 
 FIM PARA 
(* FIM DO CÁLCULO DAS DIFERENÇAS DIVIDIDAS. *) 
 
(* CÁLCULO DOS PRODUTÓRIOS: *) 
PROD(0) = 1 
 PARA (K DE 1 ATÉ N) FAÇA 
 PROD(K) = PROD(K–1)*(XINT – X(K–1)) 
 FIM PARA 
(* FIM DO CÁLCULO DOS PRODUTÓRIOS. *) 
 
(* CÁLCULO DO VALOR DO POLINÔMIO INTERPOLANTE: *) 
YINT = 0 
 PARA (K DE 0 ATÉ N) FAÇA 
 YINT = YINT + D(K,0)*PROD(K) 
 FIM PARA 
(* FIM DO CÁLCULO DO VALOR DO POLINÔMIO INTERPOLANTE. *) 
 
(* FIM DO PROCESSAMENTO DOS CÁLCULOS. *) 
378 
 
 
(* SAÍDA DOS RESULTADOS: *) 
 
(* SAÍDA DO VALOR DO POLINÔMIO DE INTERPOLAÇÃO: *) 
 ESCREVA „PARA X = „, XINT 
ESCREVA „TEM-SE Y = „, YINT 
 (* FIM DA SAÍDA DO VALOR DO POLINÔMIO DE INTERPOLAÇÃO. *) 
 
(* FIM DA SAÍDA DOS RESULTADOS. *) 
 
FIM DO ALGORITMO GREGNEWTON. 
 
 
 
Implementação Pascal do algoritmo GREGNEWTON: 
 
 
program gregnewton; 
 
(* Implementa a interpolação com 
o polinômio de Gregory-Newton e 
Diferenças Divididas. *) 
 
uses crt; var 
i, k, n: integer; 
xint, yint: real; 
x, y: array[0..5] of real; 
prod: array[0..10] of real; 
d: array[0..10,0..10] of real; 
begin clrscr; 
 
(* ENTRADA DOS DADOS: *) 
 writeln('Digite n ='); readln(n); 
 for i:=0 to n do begin 
 writeln('Digite x(',i,') ='); readln(x[i]); 
 writeln('Digite y(',i,') ='); readln(y[i]); 
 end;{for} 
 writeln('Digite xint ='); readln(xint); 
 (* FIM DA ENTRADA DOS DADOS. *) 
 
(* PROCESSAMENTO DOS CÁLCULOS: *) 
 (* CÁLCULO DAS DIFERENÇAS DIVIDIDAS: *) 
 for i:= 0 to n do begin 
 d[0,i]:= y[i]; 
 end;{for} 
 for k:= 1 to n do begin 
 for i:= 0 to n-k do begin 
 d[k,i]:= (d[k-1,i+1]-d[k-1,i])/(x[i+k]-x[i]); 
 end;{for} 
379 
 
 end;{for} 
 (* FIM DO CÁLCULO DAS DIFERENÇAS DIVIDIDAS. *) 
 (* CÁLCULO DOS PRODUTÓRIOS: *) 
 prod[0]:= 1; 
 for k:= 1 to n do begin 
 prod[k]:= 1; 
 for i:= 0 to k-1 do begin 
 prod[k]:= prod[k]*(xint-x[i]); 
 end;{for} 
 end;{for} 
 (* FIM DO CÁLCULO DOS PRODUTÓRIOS. *) 
 (* CÁLCULO DO VALOR DO POLINÔMIO INTERPOLANTE: *) 
 yint:= 0; 
 for k:= 0 to n do begin 
 yint:= yint + d[k,0]*prod[k]; 
 end;{for} 
 (* FIM DO CÁLCULO DO VALOR DO POLINÔMIO INTERPOLANTE. *) 
(* FIM DO PROCESSAMENTO DOS CÁLCULOS. *) 
 
(* SAÍDA DOS RESULTADOS: *) 
 writeln('Interpolação de Gregory-Newton.'); 
 writeln('Valores das Diferenças Divididas:');for k:= 0 to n do begin 
 for i:= 0 to n-k do begin 
 writeln('d(',k,',',i,') = ',d[k,i]); 
 end;{for} 
 end;{for} 
 writeln('Valores dos Produtórios:'); 
 for k:= 0 to n do begin 
 writeln('prod(',k,') = ',prod[k]); 
 end;{for} 
 writeln('Resultado da Interpolação:'); 
 writeln('para x = ',xint,' tem-se y = ',yint); 
 writeln('FIM'); 
readkey; 
(* FIM DA SAÍDA DOS RESULTADOS. *) 
end. 
 
 
 
Execução do programa GREGNEWTON para dados particulares: 
 
 
Digite n = 
3 
Digite x(0) = 
1 
Digite y(0) = 
0 
380 
 
Digite x(1) = 
5 
Digite y(1) = 
4 
Digite x(2) = 
7 
Digite y(2) = 
8 
Digite x(3) = 
9 
Digite y(3) = 
6 
Digite xint = 
3 
Interpolação de Gregory-Newton. 
Valores das Diferenças Divididas: 
d(0,0) = 0.0000000000E+00 
d(0,1) = 4.0000000000E+00 
d(0,2) = 8.0000000000E+00 
d(0,3) = 6.0000000000E+00 
d(1,0) = 1.0000000000E+00 
d(1,1) = 2.0000000000E+00 
d(1,2) = -1.0000000000E+00 
d(2,0) = 1.6666666667E-01 
d(2,1) = -7.5000000000E-01 
d(3,0) = -1.1458333333E-01 
Valores dos Produtórios: 
prod(0) = 1.0000000000E+00 
prod(1) = 2.0000000000E+00 
prod(2) = -4.0000000000E+00 
prod(3) = 1.6000000000E+01 
Resultado da Interpolação: 
para x = 3.0000000000E+00 tem-se y = -5.0000000000E-01 
FIM 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
381 
 
PROJETO 29 (Programa Spline) – Implemente um programa de computador para 
realizar a interpolação com Spline Cúbica Natural. Ele deve calcular o valor de yint 
correspondente a xint. Para simplificar a tarefa, considere o caso simples de um conjunto 
de cinco pontos [xi, yi = f(xi)], i = 0, 1, 2, 3, 4. O programa deve admitir a possibilidade 
de espaçamento variável: hi = xi – xi-1, i = 1, 2, 3, 4; isto é, os pontos não precisam estar 
igualmente espaçados. 
 
Solução. Neste caso, implementa-se em Pascal o seguinte algoritmo estruturado: 
 
ALGORITMO SPLINE 
 
(* REALIZA INTERPOLAÇÃO 
COM SPLINE CÚBICA NATURAL, 
CONSIDERANDO CINCO PONTOS 
COM ESPAÇAMENTO VARIÁVEL. *) 
 
REAL XINT, YINT, DET, DET1, DET2, DET3 
REAL X(5), Y(5), W(3), Z(3) 
REAL AS(4), BS(4), CS(4), DS(4), H(4) 
REAL A(3, 3) 
INTEIRO I, K, N 
INÍCIO 
 
(* ENTRADA DOS DADOS: *) 
 LEIA XINT 
 PARA (I DE 0 ATÉ 4) FAÇA 
 LEIA X(I), Y(I) 
 FIM PARA 
(* FIM DA ENTRADA DOS DADOS. *) 
 
(* PROCESSAMENTO DOS CÁLCULOS: *) 
 
 (* CÁLCULO DOS ESPAÇAMENTOS: *) 
PARA (I DE 1 ATÉ 4) FAÇA 
 H(I) = X(I) – X(I–1) 
FIM PARA 
 (* FIM DO CÁLCULO DOS ESPAÇAMENTOS. *) 
 
(* CONSTRUÇÃO DO SISTEMA: *) 
 
(* CONSTRUÇÃO DA MATRIZ A: *) 
 
 A(1,1) = 2*(H(1)+H(2)); A(1,2) = H(2); A(1,3) = 0 
 
 A(2,1) = H(2); A(2,2) = 2*(H(2)+H(3)); A(2,3) = H(3) 
 
 A(3,1) = 0; A(3,2) = H(3); A(3,3) = 2*(H(3)+H(4)) 
 
(* FIM DA CONSTRUÇÃO DA MATRIZ A. *) 
382 
 
 
 (*VETOR W DOS TERMOS INDEPENDENTES: *) 
 
 W(1) = 6*((Y(2)-Y(1))/H(2) – (Y(1)-Y(0))/H(1)) 
 W(2) = 6*((Y(3)-Y(2))/H(3) – (Y(2)-Y(1))/H(2)) 
 W(3) = 6*((Y(4)-Y(3))/H(4) – (Y(3)-Y(2))/H(3)) 
 
(* FIM DO VETOR W DOS TERMOS INDEPENDENTES. *) 
 
(* FIM DA CONSTRUÇÃO DO SISTEMA AZ = W. *) 
 
(* RESOLUÇÃO DO SISTEMA POR CRAMER: *) 
 
(* DETERMINANTE PRINCIPAL: *) 
DET= 
A(1,1)*A(2,2)*A(3,3)+A(1,2)*A(2,3)*A(3,1)+A(1,3)*A(3,2)*A(2,1)- 
A(1,3)*A(2,2)*A(3,1)-A(2,3)*A(3,3)*A(1,1)-A(3,3)*A(2,1)*A(1,2) 
 
(* PRIMEIRO DETERMINANTE CARACTERÍSTICO: *) 
DET1=W(1)*A(2,2)*A(3,3)+A(1,2)*A(2,3)*W(3)+A(1,3)*A(3,2)*W(2) 
-A(1,3)*A(2,2)*W(3)-A(2,3)*A(3,2)*W(1)-A(3,3)*W(2)*A(1,2) 
 
(* SEGUNDO DETERMINANTE CARACTERÍSTICO: *) 
DET2=A(1,1)*W(2)*A(3,3)+W(1)*A(2,3)*A(3,1)+A(1,3)*W(3)*A(2,1) 
-A(1,3)*W(2)*A(3,1)-A(2,3)*W(3)*A(1,1)-A(3,3)*A(2,1)*W(1) 
 
(* TERCEIRO DETERMINANTE CARACTERÍSTICO: *) 
DET3=A(1,1)*A(2,2)*W(3)+A(1,2)*W(2)*A(3,1)+W(1)*A(3,2)*A(2,1) 
-W(1)*A(2,2)*A(3,1)-W(2)*A(3,2)*A(1,1)-W(3)*A(2,1)*A(1,2) 
 
(* SOLUÇÃO DO SISTEMA: *) 
Z(1) = DET1/DET; Z(2) = DET2/DET; Z(3) = DET3/DET 
 
(* FIM DA RESOLUÇÃO DO SISTEMA POR CRAMER. *) 
 
(* LOCALIZAÇÃO DE XINT: *) 
 
 I = 0 
 ENQUANTO (I MENOR OU IGUAL 4) FAÇA 
 SE ((XINT MAIOR X(I)) E (XINT MENOR X(I+1))) ENTÃO 
 K = I+1 
 I = 5 
 FIM SE 
 I = I + 1 
 FIM ENQUANTO 
 
(* FIM DA LOCALIZAÇÃO DE XINT. *) 
 
(* CÁLCULO DOS COEFICIENTES DE SK(X): *) 
383 
 
 
AS(K) = (Z(K) – Z(K-1))/(6*H(K)) 
 BS(K) = Z(K)/2 
 CS(K) = (Y(K) – Y(K-1))/H(K) + (2*H(K)*Z(K) + Z(K-1)*H(K))/6 
 DS(K) = Y(K) 
 
(* FIM DO CÁLCULO DOS COEFICIENTES DE SK(X). *) 
 
(* CÁLCULO DE YINT = SK(XINT): *) 
 
YINT = 
AS(K)*(XINT–X(K))*(XINT–X(K))*(XINT–X(K))+ 
BS(K)*(XINT–X(K))*(XINT–X(K))+ 
CS(K)*(XINT – X(K))+ 
DS(K) 
 
(* FIM DO CÁLCULO DE YINT = SK(XINT). *) 
 
(* FIM DO PROCESSAMENTO DOS CÁLCULOS. *) 
 
(* SAÍDA DOS RESULTADOS: *) 
 
 ESCREVA „INTERPOLAÇÃO COM SPLINE CÚBICA NATURAL‟ 
ESCREVA „PARA X = „, XINT, 
ESCREVA „TEM-SE Y = „, YINT 
 
(* FIM DA SAÍDA DOS RESULTADOS. *) 
 
FIM DO ALGORITMO SPLINE. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
384 
 
Implementação Pascal do Algoritmo Spline: 
 
 
program spline; 
 
(* Implementa a interpolação com spline 
cúbica natural. Considera cinco pontos 
que podem ter espaçamento variável. *) 
 
 uses crt; var 
 
 xint, yint, det, det1, det2, det3: real; 
 x, y, z: array[0..4] of real; 
 as, bs, cs, ds, h: array[1..4] of real; 
 w: array[0..4] of real; 
 a: array[1..3,1..3] of real; 
 i, j, k, n: integer; 
 
begin clrscr; 
 
(* ENTRADA DOS DADOS: *) 
 writeln('Digite xint ='); readln(xint); 
 for i:= 0 to 4 do begin 
 writeln('Digite x(',i,') ='); readln(x[i]); 
 writeln('Digite y(',i,') ='); readln(y[i]); 
 end;{for} 
(* FIM DA ENTRADA DOS DADOS. *) 
 
(* PROCESSAMENTO DOS CÁLCULOS: *) 
 (* CÁLCULO DOS ESPAÇAMENTOS: *) 
 for i:= 1 to 4 do beginh[i]:= x[i] - x[i-1]; 
 end;{for} 
 (* FIM DO CÁLCULO DOS ESPAÇAMENTOS. *) 
 (* CONSTRUÇÃO DO SISTEMA aw = z: *) 
 (* CONSTRUÇÃO DA MATRIZ a: *) 
 a[1,1]:= 2*(h[1]+h[2]); a[1,2]:= h[2]; a[1,3]:= 0; 
 a[2,1]:= h[2]; a[2,2]:=2*(h[2]+h[3]); a[2,3]:= h[3]; 
 a[3,1]:= 0; a[3,2]:= h[3]; a[3,3]:= 2*(h[3]+h[4]); 
 (* FIM DA CONSTRUÇÃO DA MATRIZ a. *) 
 (* VETOR w DOS TERMOS INDEPENDENTES: *) 
 w[1]:= 6*((y[2]-y[1])/h[2] - (y[1]-y[0])/h[1]); 
 w[2]:= 6*((y[3]-y[2])/h[3] - (y[2]-y[1])/h[2]); 
 w[3]:= 6*((y[4]-y[3])/h[4] - (y[3]-y[2])/h[3]); 
 (* FIM DO VETOR w DOS TERMOS INDEPENDENTES. *) 
 (* FIM DA CONSTRUÇÃO DO SISTEMA aw = z. *) 
 (* RESOLUÇÃO DO SISTEMA POR CRAMER: *) 
 z[0]:=0; z[4]:=0; 
 (* DETERMINANTE PRINCIPAL: *) 
385 
 
det:= 
 a[1,1]*a[2,2]*a[3,3]+a[1,2]*a[2,3]*a[3,1]+a[1,3]*a[3,2]*a[2,1] 
-a[1,3]*a[2,2]*a[3,1]-a[2,3]*a[3,2]*a[1,1]-a[3,3]*a[2,1]*a[1,2]; 
 (* PRIMEIRO DETERMINANTE CARACTERÍSTICO: *) 
det1:= 
 w[1]*a[2,2]*a[3,3]+a[1,2]*a[2,3]*w[3]+a[1,3]*a[3,2]*w[2] 
-a[1,3]*a[2,2]*w[3]-a[2,3]*a[3,2]*w[1]-a[3,3]*w[2]*a[1,2]; 
 (* SEGUNDO DETERMINANTE CARACTERÍSTICO: *) 
det2:= 
 a[1,1]*w[2]*a[3,3]+w[1]*a[2,3]*a[3,1]+a[1,3]*w[3]*a[2,1] 
-a[1,3]*w[2]*a[3,1]-a[2,3]*w[3]*a[1,1]-a[3,3]*a[2,1]*w[1]; 
 (* TERCEIRO DETERMINANTE CARACTERÍSTICO: *) 
det3:= 
 a[1,1]*a[2,2]*w[3]+a[1,2]*w[2]*a[3,1]+w[1]*a[3,2]*a[2,1] 
-w[1]*a[2,2]*a[3,1]-w[2]*a[3,2]*a[1,1]-w[3]*a[2,1]*a[1,2]; 
 (* SOLUÇÃO DO SISTEMA: *) 
 z[1]:= det1/det; z[2]:= det2/det; z[3]:= det3/det; 
 (* FIM DA RESOLUÇÃO DO SISTEMA POR CRAMER. *) 
 (* LOCALIZAÇÃO DE xint: *) 
 i:= 0; 
 while (i x[i])and(xintwriteln('bs(',k,') = ',bs[k]); 
 writeln('cs(',k,') = ',cs[k]); 
 writeln('ds(',k,') = ',ds[k]); 
 readkey; 
 writeln('Para x = ',xint,' tem-se y = ',yint); 
 writeln('FIM.'); readkey; 
(* FIM DA SAÍDA DOS RESULTADOS. *) 
end.{ FIM DO PROGRAMA SPLINE.} 
 
 
 
 
 
 
 
387 
 
 
 
Resultados obtidos com a execução do Programa Spline para um conjunto 
particular de dados: 
 
 
Digite xint = 
1.33 
Digite x(0) = 
1.0 
Digite y(0) = 
1.55 
Digite x(1) = 
1.7 
Digite y(1) = 
2.1 
Digite x(2) = 
2.2 
Digite y(2) = 
1.3 
Digite x(3) = 
2.5 
Digite y(3) = 
1.7 
Digite x(4) = 
2.6 
Digite y(4) = 
2.9 
Interpolação com Spline Cúbica Natural 
Pontos Lidos: 
x(0) = 1.0000000000E+00 y(0) = 1.5500000000E+00 
x(1) = 1.7000000000E+00 y(1) = 2.1000000000E+00 
x(2) = 2.2000000000E+00 y(2) = 1.3000000000E+00 
x(3) = 2.5000000000E+00 y(3) = 1.7000000000E+00 
x(4) = 2.6000000000E+00 y(4) = 2.9000000000E+00 
Espaçamentos: 
h(1) = 7.0000000000E-01 
h(2) = 5.0000000000E-01 
h(3) = 3.0000000000E-01 
h(4) = 9.9999999999E-02 
Sistema de Equações Lineares: 
Matriz a(3X3): 
a(1,1) = 2.4000000000E+00 
a(1,2) = 5.0000000000E-01 
a(1,3) = 0.0000000000E+00 
a(2,1) = 5.0000000000E-01 
a(2,2) = 1.6000000000E+00 
a(2,3) = 3.0000000000E-01 
a(3,1) = 0.0000000000E+00 
388 
 
a(3,2) = 3.0000000000E-01 
a(3,3) = 8.0000000000E-01 
Vetor dos Termos Independentes: 
w(1) = -1.4314285714E+01 
w(2) = 1.7600000000E+01 
w(3) = 6.4000000001E+01 
Determinantes: 
det = 2.6560000000E+00 
det1 = -1.4474000000E+01 
det2 = -6.5622857150E+00 
det3 = 2.1494085715E+02 
Derivadas de Segunda Ordem: 
z(0) = 0.0000000000E+00 
z(1) = -5.4495481927E+00 
z(2) = -2.4707401036E+00 
z(3) = 8.0926527541E+01 
z(4) = 0.0000000000E+00 
Coeficientes do Polinômio Sk(x): 
as(1) = -1.2975114745E+00 
bs(1) = -2.7247740964E+00 
cs(1) = -4.8584695925E-01 
ds(1) = 2.1000000000E+00 
Para x = 1.3300000000E+00 tem-se y = 1.9724646498E+00 
FIM. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
389 
 
PROJETO 30 (Programa Runge_Kutta_3) – Desenvolva um programa Pascal para 
realizar uma aplicação do Método de Runge-Kutta de Quarta Ordem. Considere o caso 
da resolução de um Problema de Valor Inicial de Primeira Ordem. 
 
Solução: utiliza-se o programa RUNGE_KUTTA_3 para resolver um problema de 
valor inicial de primeira ordem com a equação: 
 
y‟ = 3x
2
 – y 
 
no intervalo de integração [x1; xn], a ser percorrido com passo constante, h. Neste caso, 
implementa-se computacionalmente o algoritmo seguinte: 
 
 
ALGORITMO RUNGE_KUTTA_3 
 
(* RESOLVE UM PROBLEMA DE VALOR 
INICIAL DE PRIMEIRA ORDEM PELO MÉTODO 
DE RUNGE_KUTTA DE TERCEIRA ORDEM. *) 
 
REAL X(10), Y(10), YL(10) 
 REAL K1(10), K2(10), K3(10) 
 REAL H 
INTEIRO N, I 
 
F(X, Y) = 3*X*X - Y 
 
INÍCIO 
 
(* ENTRADA DOS DADOS: *) 
 LEIA N, X(1), X(N), Y(1) 
(* FIM DA ENTRADA DOS DADOS. *) 
 
(* PROCESSAMENTO DOS CÁLCULOS: *) 
 H = (X(N) – X(1))/(N – 1) 
 YL(1) = F(X(1), Y(1)) 
 PARA (I DE 1 ATÉ N - 1) FAÇA 
 K1(I) = F(X(I), Y(I)) 
 K2(I) = F(X(I)+H/2, Y(I)+H*K1(I)/2) 
 K3(I) = F(X(I)+H, Y(I)+2*H*K2(I)–H*K1(I)) 
 X(I + 1) = X(I) + H 
 Y(I + 1) = Y(I) + (H/6)*(K1(I)+4*K2(I)+K3(I)) 
 YL(I + 1) = F(X(I+1), Y(I+1)) 
 FIM PARA 
(* FIM DO PROCESSAMENTO DOS CÁLCULOS. *) 
 
(* SAÍDA DOS RESULTADOS: *) 
PARA (I DE 1 ATÉ N - 1) FAÇA 
 ESCREVA I, K1(I), K2(I), K3(I) 
 FIM PARA 
390 
 
 PARA (I DE 1 ATÉ N) FAÇA 
 ESCREVA I, X(I), Y(I), YL(I) 
 FIM PARA 
 ESCREVA „FIM‟ 
(* FIM DA SAÍDA DOS RESULTADOS. *) 
FIM DO ALGORITMO RUNGE_KUTTA_3. 
 
 
Segue uma implementação Pascal do algoritmo RUNGE_KUTTA_3: 
 
program rkutta3; 
 
(* Resolve um problema de valor inicial 
de primeira ordem pelo Método de 
Runge-Kutta de Terceira Ordem. *) 
 
uses crt; var 
x, y, yl: array[1..10] of real; 
k1, k2, k3: array[1..10] of real; 
h: real; 
i, n: integer; 
function f(x,y: real): real; 
 begin f:=3*x*x-y; 
end;{function} 
 
begin 
clrscr; 
 
{* ENTRADA DOS DADOS: *} 
 writeln('Digite o valor de n = ');readln(n); 
 writeln('Digite o valor de x(1) = ');readln(x[1]); 
 writeln('Digite o valor de x(n) = ');readln(x[n]); 
 writeln('Digite o valor de y(1) = ');readln(y[1]); 
{* FIM DA ENTRADA DOS DADOS. *} 
 
{* PROCESSAMENTO DOS CÁLCULOS: *} 
 h:= (x[n]-x[1])/(n-1); 
 yl[1]:= f(x[1], y[1]); 
 for i:= 1 to n-1 do begin 
 k1[i]:= f(x[i], y[i]); 
 k2[i]:= f(x[i]+h/2, y[i]+h*k1[i]/2); 
 k3[i]:= f(x[i]+h, y[i]+2*h*k2[i]-h*k1[i]); 
 x[i+1]:= x[i]+h; 
 y[i+1]:= y[i]+(h/6)*(k1[i]+4*k2[i]+k3[i]); 
 yl[i+1]:= f(x[i+1], y[i+1]); 
 end;{for} 
{* FIM DO PROCESSAMENTO DOS CÁLCULOS. *} 
 
{* SAÍDA DOS RESULTADOS: *} 
391 
 
 writeln('----------------------'); 
 writeln('Programa Runge-Kutta-3.'); 
 writeln('............................'); 
 for i:= 1 to n do begin 
 writeln('i=',i,' k1=',k1[i],' k2=',k2[i],' k3=',k3[i]); 
 end;{for} 
 readkey; 
 writeln('............................'); 
 for i:= 1 to n do begin 
 writeln('i=',i,' x=',x[i],' y=',y[i],' yl=',yl[i]);end;{for} 
 readkey; 
 writeln('FIM.'); 
 readkey; 
{* FIM DA SAÍDA DOS RESULTADOS. *} 
 
end.{* FIM DO PROGRAMA RKUTTA-3. *} 
 
 
 
Relatório produzido por uma execução do programa RKUTTA-3: 
 
Digite o valor de n = 
2 
Digite o valor de x(1) = 
0.0 
Digite o valor de x(n) = 
0.1 
Digite o valor de y(1) = 
1.0 
---------------------- 
Programa Runge-Kutta-3. 
............................ 
i=1 k1=-1.0000000000E+00 k2=-9.4250000000E-01 k3=-8.8150000000E-01 
i=2 k1= 0.0000000000E+00 k2= 0.0000000000E+00 k3= 0.0000000000E+00 
............................ 
i=1 x= 0.0000000000E+00 y= 1.0000000000E+00 yl=-1.0000000000E+00 
i=2 x= 1.0000000000E-01 y= 9.0580833333E-01 yl=-8.7580833333E-01 
FIM. 
 
 
 
 
 
 
 
 
 
 
392 
 
PROJETO 31 (Programa Euler) – Programe computacionalmente um caso de 
resolução de um Problema de Valor Inicial de Primeira Ordem com o Método de Euler. 
 
Solução: Pode-se considerar a realização computacional do seguinte algoritmo, no qual 
se resolve um problema de valor inicial de primeira ordem com o Método de Euler: 
 
 
ALGORITMO EULER 
 
(* RESOLVE UM PROBLEMA DE 
VALOR INICIAL DE PRIMEIRA ORDEM 
PELO MÉTODO DE EULER. *) 
 
REAL X(10), Y(10), YL(10) 
REAL H 
INTEIRO I, N 
F(X, Y) = 3*Y - 5*X - 2 
INÍCIO 
 
(* ENTRADA DOS DADOS: *) 
LEIA N, H, X(1), Y(1) 
(* FIM DA ENTRADA DOS DADOS. *) 
 
(* PROCESSAMENTO DOS CÁLCULOS: *) 
 YL(1) = F(X(1), Y(1)) 
PARA (I DE 1 ATÉ N-1) FAÇA 
X(I+1) = X(I) + H 
Y(I+1) = Y(I) + H*YL(I) 
YL(I+1) = F(X(I+1), Y(I+1)) 
 FIM PARA 
(* FIM DO PROCESSAMENTO DOS CÁLCULOS. *) 
 
(* SAÍDA DOS RESULTADOS: *) 
 PARA (I DE 1 ATÉ N) FAÇA 
 ESCREVA „I = „,I 
 ESCREVA „X(„,I,‟) =‟,X(I) 
 ESCREVA „Y(„,I,‟) =‟,Y(I) 
 ESCREVA „YL(„,I,‟) =‟,YL(I) 
 FIM PARA 
 ESCREVA „FIM‟ 
(* FIM DA SAÍDA DOS RESULTADOS. *) 
 
FIM DO ALGORITMO EULER. 
 
 
 
 
 
 
393 
 
 
Implementação do algoritmo Euler em Pascal: 
 
 
 
program euler; 
 
(* Resolve um problema de valor inicial 
de primeira ordem pelo Método de Euler. *) 
 
uses crt; var 
x, y, yl: array[1..20] of real; 
h: real; 
i, n: integer; 
function f(x,y: real): real; 
 begin f:=3*y-5*x-2; 
end;{function} 
 
begin 
clrscr; 
 
{* ENTRADA DOS DADOS: *} 
 writeln('Digite o valor de n = ');readln(n); 
 writeln('Digite o valor de h = ');readln(h); 
 writeln('Digite o valor de x(1) = ');readln(x[1]); 
 writeln('Digite o valor de y(1) = ');readln(y[1]); 
{* FIM DA ENTRADA DOS DADOS. *} 
 
{* PROCESSAMENTO DOS CÁLCULOS: *} 
 yl[1]:= f(x[1], y[1]); 
 for i:=1 to n-1 do begin 
 x[i+1]:= x[i]+h; 
 y[i+1]:= y[i]+h*yl[i]; 
 yl[i+1]:= f(x[i+1], y[i+1]); 
 end;{for} 
{* FIM DO PROCESSAMENTO DOS CÁLCULOS. *} 
 
{* SAÍDA DOS RESULTADOS: *} 
 writeln('----------------------'); 
 writeln('Programa Euler.'); 
 for i:= 1 to n do begin 
 writeln('i=',i,' x=',x[i],' y=',y[i],' yl=',yl[i]); 
 end;{for} 
 readkey; 
 writeln('FIM.'); 
 readkey; 
{* FIM DA SAÍDA DOS RESULTADOS. *} 
 
end.{* FIM DO PROGRAMA EULER. *} 
394 
 
 
 
O seguinte relatório apresenta o resultado de uma execução 
do programa EULER correspondente a um conjunto de dados: 
 
 
 
Digite o valor de n = 
5 
Digite o valor de h = 
0.5 
Digite o valor de x(1) = 
0.0 
Digite o valor de y(1) = 
1.0 
---------------------- 
Programa Euler. 
i=1 x= 0.0000000000E+00 y= 1.0000000000E+00 yl= 1.0000000000E+00 
i=2 x= 5.0000000000E-01 y= 1.5000000000E+00 yl= 0.0000000000E+00 
i=3 x= 1.0000000000E+00 y= 1.5000000000E+00 yl=-2.5000000000E+00 
i=4 x= 1.5000000000E+00 y= 2.5000000000E-01 yl=-8.7500000000E+00 
i=5 x= 2.0000000000E+00 y=-4.1250000000E+00 yl=-2.4375000000E+01 
FIM. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
395 
 
PROJETO 32 - (Programa Euler-sup) – Desenvolva um programa Pascal para realizar 
uma aplicação do Método de Euler na resolução de um Problema de Valor Inicial de 
Ordem Superior. 
 
Solução: tem-se a equação diferencial ordinária de ordem superior (segunda ordem): 
 
 
y‟‟ = f(x, y, y‟) = 12 x
2
 + 3 y
2
 + y‟ - 17 
e as condições iniciais: para x = x1 = 1,5 tem-se y1 = 2. 
 
 
Após reduzir-se a equação dada a um sistema de duas equações diferenciais 
ordinárias de primeira ordem, resolve-se o problema com a utilização do Método de 
Euler no intervalo de integração [1,5; 1,8]. Passo constante h = 0,1. 
 
Ora, a equação dada pode ser reduzida a 
 
y‟ = z 
 
z‟ = 12x
2
 + 3y
2
 + z -17 
 
 
 
Fórmula de Euler: yi+1 = yi + hy‟i 
Pretende-se que o programa calcule os valores correspondentes a uma tabela com o 
seguinte cabeçalho: 
i xi yi zi = yi‟ zi‟ = yi‟‟ 
Resultados esperados: 
 
i xi 
yi 
(Euler) 
zi = y’i 
(Euler) 
zi’ = y’’i 
(Eq. Dif.) 
1 1,5 2 (dado) 2 (dado) 24 
2 1,6 2,2 4,4 32,64 
3 1,7 2,64 7,664 46,2528 
4 1,8 3,4064 12,28928 68,979962 
 
 
 
Algoritmo que é implementado: 
 
ALGORITMO EULER_SUP 
 
(*RESOLVE UM PROBLEMA DE VALOR INICIAL 
DE SEGUNDA ORDEM PELO MÉTODO DE EULER. 
CONSIDERA QUE A EQUAÇÃO JÁ 
FOI DESDOBRADA EM UM SISTEMA. *) 
 
REAL X(10), Y(10),YL(10), Y2L(10), H 
INTEIRO I, N 
396 
 
 G(X, Y, Z) = 12*X*X+3*Y*Y+Z-17 
INÍCIO 
 
(* ENTRADA DOS DADOS: *) 
LEIA N, X(1), X(N), Y(1), YL(1) 
(* FIM DA ENTRADA DOS DADOS. *) 
 
(* PROCESSAMENTO DOS CÁLCULOS: *) 
H = (X(N) – X(1))/(N – 1) 
Z(1) = YL(1) 
Y2L(1) = G(X(1), Y(1), Z(1)) 
PARA (I DE 1 ATÉ N-1) FAÇA 
 X(I+1) = X(I) + H 
 Y(I+1) = Y(I) +H*YL(I) 
 YL(I+1) = YL(I) + H*Y2L(I) 
 Z(I+1) = YL(I+1) 
 Y2L(I+1) = G(X(I+1), Y(I+1), Z(I+1)) 
 FIM PARA 
(* FIM DO PROCESSAMENTO DOS CÁLCULOS. *) 
 
(* SAÍDA DOS RESULTADOS: *) 
 ESCREVA „APLICAÇÃO DO MÉTODO DE EULER‟ 
 ESCREVA „A UM PROBLEMA DE VALOR INICIAL‟ 
 ESCREVA „DE SEGUNDA ORDEM‟ 
PARA (I DE 1 ATÉ N) FAÇA 
 ESCREVA I, X(I), Y(I), YL(I), Y2L(I) 
 FIM PARA 
 ESCREVA „FIM.‟ 
(* FIM DA SAÍDA DOS RESULTADOS. *) 
 
FIM DO ALGORITMO EULER_SUP. 
 
 
 
 
Implementação do algoritmo EULER_SUP: 
 
 
program euler_sup; 
 
(* Resolve um problema de valor inicial 
de segunda ordem pelo Método de Euler. 
Considera que a equação já foi 
desdobrada em um sistema. *) 
 
uses crt; var 
x, y, yl, z, y2l: array[1..10] of real; 
h: real; 
i, n: integer; 
397 
 
function g(x,y,z: real): real; 
 begin g:= 12*x*x+3*y*y+z-17; 
end;{function} 
begin 
clrscr; 
 
{* ENTRADA DOS DADOS: *} 
 writeln('Digite o valor de n = ');readln(n); 
 writeln('Digite o valor de x(1) = ');readln(x[1]); 
 writeln('Digite o valor de x(n) = ');readln(x[n]); 
 writeln('Digite o valor de y(1) = ');readln(y[1]); 
 writeln('Digite o valor de yl(1) = ');readln(yl[1]); 
{* FIM DA ENTRADA DOS DADOS. *} 
 
{* PROCESSAMENTO DOS CÁLCULOS: *} 
 h:= (x[n]-x[1])/(n-1); 
 z[1]:= yl[1]; 
 y2l[1]:= g(x[1], y[1], z[1]); 
 for i:= 1 to n-1 do begin 
 x[i+1]:= x[i]+h; 
 y[i+1]:= y[i]+h*yl[i]; 
 yl[i+1]:= yl[i]+h*y2l[i]; 
 z[i+1]:= yl[i+1]; 
 y2l[i+1]:= g(x[i+1], y[i+1], z[i+1]); 
 end;{for} 
{* FIM DO PROCESSAMENTO DOS CÁLCULOS. *} 
 
{* SAÍDA DOS RESULTADOS: *} 
 writeln('----------------------'); 
 { writeln('Aplicação do Método de Euler.'); 
 writeln('a um problema de valor inicial'); 
 writeln('de segunda ordem');} 
 for i:= 1 to n do begin 
 writeln('i=',i,' x =',x[i],' y =',y[i]); 
 writeln('yl =',yl[i],' y2l = ',y2l[i]); 
 writeln('----------------------'); 
 end;{for} 
 readkey; 
 writeln('FIM.'); 
 readkey; 
{* FIM DA SAÍDA DOS RESULTADOS. *} 
 
end.{* FIM DO PROGRAMA EULER_SUP. *} 
 
 
 
 
 
 
398 
 
Resultado de uma execução do programa EULER_SUP: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Digite o valor de n = 
4 
Digite o valor de x(1) = 
1.5 
Digite o valor de x(n) = 
1.8 
Digite o valor de y(1) = 
2 
Digite o valor de yl(1) = 
2 
---------------------- 
i=1 x = 1.5000000000E+00 y = 2.0000000000E+00 
yl = 2.0000000000E+00 y2l = 2.4000000000E+01 
---------------------- 
i=2 x = 1.6000000000E+00 y = 2.2000000000E+00 
yl = 4.4000000000E+00 y2l = 3.2640000000E+01 
---------------------- 
i=3 x = 1.7000000000E+00 y = 2.6400000000E+00 
yl = 7.6640000000E+00 y2l = 4.6252800000E+01 
---------------------- 
i=4 x = 1.8000000000E+00 y = 3.4064000000E+00 
yl = 1.2289280000E+01 y2l = 6.8979962880E+01 
---------------------- 
FIM. 
 
399 
 
PROJETO 33 (Programa Runge_Kutta_3_Sup) – Construa um programa de 
computador em linguagem Pascal para resolver um problema de valor inicial que 
envolva uma equação diferencial ordinária de segunda ordem. Esse problema deve ser 
resolvido pelo Método de Runge-Kutta de Terceira Ordem. 
 
Solução: a equação y‟‟ = 12x
2
 + 3y
2
 + y‟ -17 pode ser desdobrada em um sistema de 
duas equações diferenciais ordinárias de primeira ordem: 
 
y‟ = f(x,y,z) = z 
z‟ = g(x,y,z) = 12x
2
 + 3y
2
 + y -17 
 
 
Para resolver esse problema, pode-se adotar o algoritmo seguinte: 
 
ALGORITMO RK3_SUP 
REAL X(50), Y(50), Z(50), ZLINHA(50), H 
REAL K1(50), K2(50), K3(50), L1(50), L2(50), L3(50) 
INTEIRO I, QPONTOS 
F(X,Y,Z) = Z 
G(X,Y,Z) = 12*X*X + 3*Y*Y + Z - 17 
INÍCIO 
 
(* ENTRADA DOS DADOS: *) 
LEIA X(1), Y(1), Z(1), QPONTOS, H 
(* FIM DA ENTRADA DOS DADOS. *) 
 
(* PROCESSAMENTO DOS CÁLCULOS: *) 
ZLINHA(1) = G(X(1), Y(1), Z(1)) 
PARA (I DE 1 ATÉ QPONTOS-1) FAÇA 
 
K1(I) = F(X(I),Y(I),Z(I)) 
L1(I) = G(X(I),Y(I),Z(I)) 
K2(I) = F(X(I)+H/2,Y(I)+H*K1(I)/2, Z(I)+H*L1/2) 
L2(I) = G(X(I)+H/2,Y(I)+H*K1(I)/2, Z(I)+H*L1/2) 
K3(I) = F(X(I)+H, Y(I)+2*H*K2(I)-H*K1(I), Z(I)+2*H*L2(I)-H*L1(I)) 
L3(I) = G(X(I)+H, Y(I)+2*H*K2(I)-H*K1(I), Z(I)+2*H*L2(I)-H*L1(I)) 
 
X(I+1) = X(I) + H 
Y(I+1) = Y(I) + (H/6)*(K1(I)+4*K2(I)+K3(I)) 
Z(I+1) = Z(I) + (H/6)*(L1(I)+4*L2(I)+L3(I)) 
ZLINHA(I+1) = G(X(I+1), Y(I+1), Z(I+1)) 
 
 FIM PARA 
(* FIM DO PROCESSAMENTO DOS CÁLCULOS. *) 
 
(* SAÍDA DOS RESULTADOS: *) 
 ESCREVA „APLICAÇÃO DO MÉTODO DE„ 
ESCREVA „RUNGE-KUTTA DE TERCEIRA ORDEM‟ 
ESCREVA ‟APLICADO A UM PROBLEMA DE ‟ 
400 
 
ESCREVA ‟VALOR INICIAL DE SEGUNDA ORDEM‟ 
PARA (I DE 1 ATÉ QPONTOS) FAÇA 
 ESCREVA I, X(I), Y(I), Z(I), ZLINHA(I) 
 ESCREVA K1(I), K2(I),K3(I),L1(I),L2(I),L3(I) 
FIM PARA 
ESCREVA „FIM.‟ 
(* FIM DA SAÍDA DOS RESULTADOS. *) 
 
FIM DO ALGORITMO RK3-SUP.Implementação, em linguagem Pascal, do algoritmo RK3-SUP: 
 
 
 
program rk3_sup; 
 
(* Resolve um problema de valor inicial 
de segunda ordem pelo Método de Runge-Kutta 
de Terceira Ordem. Considera o problema 
já desdobrado em um sistema.*) 
 
uses crt; var 
x, y, z, zlinha: array[1..10] of real; 
k1,k2,k3, l1,l2,l3: array[1..10] of real; 
h: real; 
i, qpontos: integer; 
function f(x,y,z: real): real; 
 begin f:= z; 
end;{function f} 
function g(x,y,z: real): real; 
 begin g:= 12*x*x+3*y*y+z-17; 
end;{function g} 
 
begin 
clrscr; 
 
{* ENTRADA DOS DADOS: *} 
 writeln('Digite o valor de x(1) = ');readln(x[1]); 
 writeln('Digite o valor de y(1) = ');readln(y[1]); 
 writeln('Digite o valor de z(1) = ');readln(z[1]); 
 writeln('Digite o valor de qpontos = ');readln(qpontos); 
 writeln('Digite o valor de h = ');readln(h); 
{* FIM DA ENTRADA DOS DADOS. *} 
 
{* PROCESSAMENTO DOS CÁLCULOS: *} 
 zlinha[1]:= g(x[1], y[1], z[1]); 
 for i:= 1 to qpontos-1 do begin 
 k1[i]:= f(x[i], y[i], z[i]); 
401 
 
 l1[i]:= g(x[i], y[i], z[i]); 
 k2[i]:= f(x[i]+h/2, y[i]+h*k1[i]/2, z[i]+h*l1[i]/2); 
 l2[i]:= g(x[i]+h/2, y[i]+h*k1[i]/2, z[i]+h*l1[i]/2); 
 k3[i]:= f(x[i]+h, y[i]+2*h*k2[i]-h*k1[i], z[i]+2*h*l2[i]-h*l1[i]); 
 l3[i]:= g(x[i]+h, y[i]+2*h*k2[i]-h*k1[i], z[i]+2*h*l2[i]-h*l1[i]); 
 
 x[i+1]:= x[i]+h; 
 y[i+1]:= y[i]+(h/6)*(k1[i]+4*k2[i]+k3[i]); 
 z[i+1]:= z[i]+(h/6)*(l1[i]+4*l2[i]+l3[i]); 
 zlinha[i+1]:= g(x[i+1], y[i+1], z[i+1]); 
 end;{for} 
{* FIM DO PROCESSAMENTO DOS CÁLCULOS. *} 
 
{* SAÍDA DOS RESULTADOS: *} 
 writeln('----------------------'); 
 writeln('Método de Runge-Kutta-3 aplicado'); 
 writeln('a um problema de segunda ordem.'); 
 writeln('............................'); 
 for i:= 1 to qpontos do begin 
 writeln('i=',i,':'); 
 writeln('k1=',k1[i],' k2=',k2[i],' k3=',k3[i]); 
 end;{for} 
 readkey; 
 writeln('............................'); 
 for i:= 1 to qpontos do begin 
 writeln('i=',i,':'); 
 writeln('l1=',l1[i],' l2=',l2[i],' l3=',l3[i]); 
 end;{for} 
 readkey; 
 writeln('............................'); 
 for i:= 1 to qpontos do begin 
 writeln('i=',i,' x=',x[i],' y=',y[i]); 
 writeln('z=',z[i],' zlinha=',zlinha[i]); 
 end;{for} 
 readkey; 
 writeln('FIM.'); 
 readkey; 
{* FIM DA SAÍDA DOS RESULTADOS. *} 
 
end.{* FIM DO PROGRAMA RKUTTA-3. *} 
 
 
 
 
 
 
 
 
 
402 
 
Resultado de uma execução do programa RK3_sup: 
 
 
Digite o valor de x(1) = 
1.5 
Digite o valor de y(1) = 
2 
Digite o valor de z(1) = 
2 
Digite o valor de qpontos = 
4 
Digite o valor de h = 
0.1 
---------------------- 
Método de Runge-Kutta-3 aplicado 
a um problema de segunda ordem. 
............................ 
i=1: 
k1= 2.0000000000E+00 k2= 3.2000000000E+00 k3= 5.2520000000E+00 
i=2: 
k1= 4.8978800000E+00 k2= 6.6460474460E+00 k3= 9.8557901137E+00 
i=3: 
k1= 9.2612076536E+00 k2= 1.1979196423E+01 k3= 1.7463327055E+01 
i=4: 
k1= 0.0000000000E+00 k2= 0.0000000000E+00 k3= 0.0000000000E+00 
............................ 
i=1: 
l1= 2.4000000000E+01 l2= 2.8260000000E+01 l3= 3.6832800000E+01 
i=2: 
l1= 3.4963348920E+01 l2= 4.2271225029E+01 l3= 5.7751410184E+01 
i=3: 
l1= 5.4359775382E+01 l2= 6.8190484699E+01 l3= 9.9901315989E+01 
i=4: 
l1= 0.0000000000E+00 l2= 0.0000000000E+00 l3= 0.0000000000E+00 
............................ 
i=1 x= 1.5000000000E+00 y= 2.0000000000E+00 
z= 2.0000000000E+00 zlinha= 2.4000000000E+01 
i=2 x= 1.6000000000E+00 y= 2.3342000000E+00 
z= 4.8978800000E+00 zlinha= 3.4963348920E+01 
i=3 x= 1.7000000000E+00 y= 3.0231643316E+00 
z= 9.2612076536E+00 zlinha= 5.4359775382E+01 
i=4 x= 1.8000000000E+00 y= 4.2671863383E+00 
z= 1.6378258156E+01 zlinha= 9.2884895894E+01 
FIM. 
 
 
 
 
 
403 
 
 
PROJETO 34 (Programa Runge_Kutta_4_Sup) – Construa um programa de 
computador em linguagem Pascal, de modo estruturado, para resolver um problema de 
valor inicial que envolva uma equação diferencial ordinária de segunda ordem. Esse 
problema deve ser resolvido pelo Método de Runge-Kutta de Quarta Ordem. 
 
Solução: 
 
Pode-se considerar a equação diferencial ordinária de segunda ordem: y‟‟ = 12x
2
 + 3y
2
 
+ y‟ -17. Essa equação é reduzida a um sistema de duas equações diferenciais ordinárias 
de primeira ordem, com a introdução da variávelauxiliar z: 
 
y‟ = f(x,y,z) = z 
z‟ = g(x,y,z) = 12x
2
 + 3y
2
 + z -17 
 
 
Para resolver esse problema, pode-se adotar o programa rungekutta4_sup: 
 
 
program rungekutta4_sup; 
 
 uses crt;var 
 x,y,z,zlinha:array[0..50]of real; 
 k1,k2,k3,k4: array[0..50]of real; 
 l1,l2,l3,l4: array[0..50]of real; 
 h: real; 
 i,qpassos:integer; 
 
function f(x,y,z:real):real; 
 begin f:= z;end;{function f} 
 
function g(x,y,z:real):real; begin 
 g:= 12*x*x+3*y*y+z-17; 
 end;{function g} 
 
begin clrscr; 
{ENTRADA DOS DADOS:} 
 writeln('Digite o valor de x1:'); readln(x[1]); 
 writeln('Digite o valor de y1:'); readln(y[1]); 
 writeln('Digite o valor de z1:'); readln(z[1]); 
 writeln('Digite o valor de h:'); readln(h); 
 writeln('Digite o valor de qpassos:'); readln(qpassos); 
{FIM DA ENTRADA DOS DADOS.} 
 
{PROCESSAMENTO DOS CÁLCULOS:} 
 zlinha[1]:= g(x[1],y[1],z[1]); 
 for i:=1 to qpassos-1 do begin 
 k1[i]:=f(x[i],y[i],z[i]); 
 l1[i]:=g(x[i],y[i],z[i]); 
404 
 
 
 k2[i]:=f(x[i]+h/2,y[i]+h*k1[i]/2+h*l1[i]/2); 
 l2[i]:=g(x[i]+h/2,y[i]+h*k1[i]/2+h*l1[i]/2); 
 
 k3[i]:=f(x[i]+h/2,y[i]+h*k2[i]/2,+h*l2[i]/2); 
 l3[i]:=g(x[i]+h/2,y[i]+h*k2[i]/2,+h*l2[i]/2); 
 
 k4[i]:= f(x[i]+h,y[i]+h*k3[i]+h*l3[i]); 
 l4[i]:= g(x[i]+h,y[i]+h*k3[i]+h*l3[i]); 
 
 x[i+1]:=x[i]+h; 
 y[i+1]:=y[i]+(h/6)*(k1[i]+2*k2[i]+2*k3[i]+k4[i]); 
 z[i+1]:= z[i]+(h/6)*(l1[i]+2*l2[i]+2*l3[i]+l4[i]); 
 zlinha[i]:= g(x[i],y[i],z[i]); 
 end;{for} 
{FIM DO PROCESSAMENTO DOS CÁLCULOS.} 
 
{SAÍDA DOS RESULTADOS:} 
 for i:=1 to qpassos do begin 
 writeln('i=',i,' x(',i,')=',x[i],' y(',i,')=',y[i]); 
 end;{for} 
{FIM DA SAÍDA DOS RESULTADOS.} 
 
readkey; 
end. 
 
 
 
Resultado de uma execução do programa Runge_Kutta_4_sup: 
 
 
Digite o valor de n = 
4 
Digite o valor de x1 = 
1.5 
Digite o valor de xn = 
1.8 
Digite o valor de y1 = 
2 
Digite o valor de z1 = 
2 
i=1 x= 1.5000000000E+00 y= 2.0000000000E+00 
 z= 2.0000000000E+00 zlinha=-1.7000000000E+01 
i=2 x= 1.6000000000E+00 y= 2.3358330000E+00 
 z= 4.9014772845E+00 zlinha= 3.4989824696E+01 
i=3 x= 1.7000000000E+00 y= 3.0282165618E+00 
 z= 9.2741214556E+00 zlinha= 5.4464408091E+01 
i=4 x= 1.8000000000E+00 y= 4.2801650592E+00 
 z= 1.6419551930E+01 zlinha= 9.3258990732E+01 
405 
 
i=1 
k1= 2.0000000000E+00 k2= 3.2000000000E+00 k3= 3.4130000000E+00 k4= 
4.9239800000E 
+00 
l1= 2.4000000000E+01 l2= 2.8260000000E+01 l3= 2.9239800000E+01 l4= 
3.5089037070E 
+01 
i=2 
k1= 4.9014772845E+00 k2= 6.6509685193E+00 k3= 7.0166877467E+00 k4= 
9.3062238895E 
+00 
l1= 3.4989824696E+01 l2= 4.2304209245E+01 l3= 4.4047466050E+01 l4= 
5.4665474983E 
+01 
i=3 
k1= 9.2741214556E+00 k2= 1.1997341860E+01 k3= 1.2690517101E+01 k4= 
1.6467070468E 
+01 
l1= 5.4464408091E+01 l2= 6.8327912917E+01 l3= 7.1929490120E+01 l4= 
9.3746614270E 
+01 
FIM. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
406 
 
 
PROJETO 35 (Programa Runge-Kutta_4_3Eq) – Elabore um programa para aplicar 
automaticamente o Método de Runge-Kutta de Quarta ordem a um sistema de três 
equações diferenciais ordinárias de primeira ordem. 
 
Solução: Neste caso, considera-se o seguinte problema de valor inicial definido pelo 
sistema de três equações diferenciais ordinárias, proposto e resolvido em 
“Computational Mathematics – worked examples and problems with elements of 
theory”, de N. V. Kopchenova e I. A. Maron, Moscou, Mir Publishers, traduzido para o 
inglês em 1975, pag. 227. (O livro não apresenta programas computacionais.): 
 
 
x‟ = dx/dt = f1(t,x,y,z) = -2x + 5z 
y‟ = dy/dt = f2(t,x,y,z) = -(1-sen t)x –y + 3z 
z‟ = dz/dt = f3(t,x,y,z) = -x + 2z 
 
 
 
Com as condições iniciais: para t = 0, tem-se x = 2; y = 1; e z = 1. A ser 
resolvido no intervalo de integração [0,0; 0,3] com passo constante h = 0,1. 
 
 
Listagem do programa computacional RK4_3EQ: 
 
program RK4_3EQ; 
 
{Resolve um sistema de três equações 
diferenciais ordinárias de primeira 
ordem pelo Método de Runge-Kutta 4.} 
uses crt; var 
 
 t,x,y,z:array[1..20] of real; 
 k1,k2,k3,k4:array[1..20] of real; 
 l1,l2,l3,l4:array[1..20] of real; 
 m1,m2,m3,m4:array[1..20] of real; 
 h:real; 
 i,n:integer; 
 
function f1(t,x,y,z:real):real; 
 begin f1:= -2*x+5*z; 
end;{function f1} 
function f2(t,x,y,z:real):real; 
 begin f2:= -(1-sin(t))*x-y+3*z; 
end;{function f2} 
function f3(t,x,y,z:real):real; 
 begin f3:= -x+2*z; 
 
end;{function f3} 
 
407 
 
begin clrscr; 
 
{* ENTRADA DOS DADOS: *} 
 writeln('Digite o valor de n = ');readln(n); 
 writeln('Digite o valor de h = ');readln(h); 
 writeln('Digite o valor de t1 = ');readln(t[1]); 
 writeln('Digite o valor de x1 = ');readln(x[1]); 
 writeln('Digite o valor de y1 = ');readln(y[1]); 
 writeln('Digite o valor de z1 = ');readln(z[1]); 
{* FIM DA ENTRADA DOS DADOS. *} 
 
{* PROCESSAMENTO DOS CÁLCULOS: *} 
 for i:=1 to n-1 do begin 
 
 k1[i]:=f1(t[i],x[i],y[i],z[i]); 
 l1[i]:=f2(t[i],x[i],y[i],z[i]); 
 m1[i]:=f3(t[i],x[i],y[i],z[i]); 
 
 k2[i]:=f1(t[i]+h/2,x[i]+h*k1[i]/2,y[i]+h*l1[i]/2,z[i]+h*m1[i]/2); 
 l2[i]:=f2(t[i]+h/2,x[i]+h*k1[i]/2,y[i]+h*l1[i]/2,z[i]+h*m1[i]/2); 
 m2[i]:=f3(t[i]+h/2,x[i]+h*k1[i]/2,y[i]+h*l1[i]/2,z[i]+h*m1[i]/2); 
 
 k3[i]:=f1(t[i]+h/2,x[i]+h*k2[i]/2,y[i]+h*l2[i]/2,z[i]+h*m2[i]/2); 
 l3[i]:=f2(t[i]+h/2,x[i]+h*k2[i]/2,y[i]+h*l2[i]/2,z[i]+h*m2[i]/2); 
 m3[i]:=f3(t[i]+h/2,x[i]+h*k2[i]/2,y[i]+h*l2[i]/2,z[i]+h*m2[i]/2); 
 
 k4[i]:=f1(t[i]+h,x[i]+h*k3[i],y[i]+h*l3[i],z[i]+h*m3[i]); 
 l4[i]:=f2(t[i]+h,x[i]+h*k3[i],y[i]+h*l3[i],z[i]+h*m3[i]);resíduo em valor absoluto. Em seguida, pode-se agir de acordo 
com uma das três seguintes estratégias: 
 
Na Relaxação, o maior resíduo é zerado. Para isso, dá-se à variável correspondente 
o valor que ela tinha antes acrescido do valor do resíduo. Assim, por exemplo, se o 
maior resíduo é o R3, dá-se a x3 o valor que já tinha acrescido do resíduo R3; 
 
Na Sub-Relaxação, menos agressiva, vamos dizer assim, o maior resíduo não chega 
a ser zerado, ele é apenas diminuído, mas sem mudar de sinal, agindo-se sobre a 
variável correspondente; e 
 
Na Sobre-Relaxação, estratégia mais agressiva, o maior resíduo troca de sinal. Tal 
se consegue do mesmo modo que anteriormente, isto é, agindo-se sobre a variável 
correspondente. 
 
Para se proceder do modo organizado, constrói-se uma tabela que tem como 
cabeçalho indicações para os sucessivos valores das variáveis e dos resíduos. Assim, no 
caso de se estar resolvendo um sistema com três incógnitas, pode-se ter o seguinte 
cabeçalho: 
 
 
ITER X RX Y RY Z RZ 
 
 
315 
 
Em que ITER é um contador de iterações (ou relaxações), X, Y e Z são as três 
incógnitas do sistema, e RX, RY e RZ representam os resíduos correspondentes. 
Durante a resolução de um mesmo sistema, pode-se variar a estratégia, caso o 
utilizador do método perceba que tal variação traz alguma vantagem para o 
aceleramento do processo iterativo. Desse modo, ele pode a alcançar a precisão desejada 
mais rapidamente. 
 
 
Resposta à Questão 2 – Na resposta a este item da prova busca-se resolver, por 
Relaxação, o sistema: 
 
–x + 3y – 3z – 7 = 0 
2x – y + 2z + 5 = 0 
2x – 3y – z + 4 = 0 
 
 
a partir da estimativa inicial x = y = z = 0. Os valores obtidos ao longo do processo são 
armazenados na tabela a seguir: 
 
 
x R1 y R2 z R3 
0 -7 0 5 0 4 
-7 0 0 -9 0 -10 
-7 30 0 -29 -10 0 
 
 
Substituindo as estimativas iniciais nas equações do sistema, obtêm-se os 
resíduos: 
 
R1 = (–1)(0) + (3)(0) + (–3)(0) – 7 = 0 + 0 + 0 – 7 = – 7 
R2 = (2)(0) + (-1)(0) + (2)(0) + 5 = 0 + 0 + 0 + 5 = 5 
R3 = (2)(0) + (–3)(0) +(–1)(0) + 4 = 0 + 0 + 0 + 4 = 4 
 
O maior resíduo em valor absoluto é R1 = –7. Faz-se então a primeira iteração 
(relaxação): x toma o valor que tinha antes (0) acrescido do resíduo R1. Isto é, agora, 
tem-se x = 0 + (–7) = –7. Tem-se então: x = –7; y = 0; e z = 0. Substituindo esses 
valores nas equações do sistema, obtêm-se os resíduos: 
 
R1 = (–1)(-7) + (3)(0) + (–3)(0) – 7 = 7 + 0 + 0 – 7 = 0 
R2 = (2)(-7) + (-1)(0) + (2)(0) + 5 = -14 + 0 + 0 + 5 = -9 
R3 = (2)(-7) + (–3)(0) +(–1)(0) + 4 = -14 + 0 + 0 + 4 = -10 
 
Agora, o maior resíduo em valor absoluto é R3 = –10. Faz-se então a segunda 
iteração (relaxação): z toma o valor que tinha antes (0) acrescido do resíduo R3. De 
modo que z = 0 + (–10) = –10. Tem-se então: x = – 7; y = 0; e z = –10. 
 
Substituindo esses valores nas equações do sistema, obtêm-se os resíduos: 
 
R1 = (–1)(-7) + (3)(0) + (–3)(-10) – 7 = 7 + 0 + 30 – 7 = 30 
316 
 
R2 = (2)(-7) + (-1)(0) + (2)(-10) + 5 = -14 + 0 -20 + 5 = -29 
R3 = (2)(-7) + (–3)(0) +(–1)(-10) + 4 = -14 + 0 + 10 + 4 = 0 
 
Observação: os resíduos estão aumentando, progressivamente, em valor 
absoluto, quando se esperava que eles fossem aos poucos diminuindo. Dever-se-ia, 
possivelmente, tomar outros valores como estimativas iniciais da solução, ou reescrever 
o sistema (trocando de ordem as equações) e preparando-o de novo para a aplicação do 
método. 
 
Resposta à Questão 3 – Trata-se de resolver o sistema 
 
 
– 2x + y – 3z = – 7 
x – 4y + z = 4 
3x – y – 2z = 2 
 
 
com o emprego do Método da Relaxação, fazendo-se três iterações a partir de x = y = z 
= 1. Inicialmente, prepara-se o sistema. Trazendo os termos independentes para o lado 
esquerdo de cada equação, tem-se: 
 
 
– 2x + y – 3z + 7 = 0 
x – 4y + z - 4 = 0 
3x – y – 2z - 2 = 0 
 
 
Agora, dividindo-se cada equação pelo recíproco do valor do elemento da 
diagonal principal, vem: 
 
 
– x + 0,5 y – 1,5z + 3,5 = 0 
0,25x – y + 0,25z - 1 = 0 
1,5x – 0,5y – z - 1 = 0 
 
 
Pode-se então aplicar o método. 
 
1ª iteração: Substituindo os valores da estimativa inicial: 
 
R1 = [–1](1) + [0,5](1) + [–1,5](1) +3,5 
= -1 + 0,5 -1,5 + 3,5 = 4 – 2,5 = 1,5 
 
R2 = [0,25](1) + [-1](1) + [0,25](1) -1 
= 0,25 -1 + 0,25 – 1 = 0,5 -2 = -1,5 
 
R3 = [1,5](1) + [–0,5](1) + [–1](1) - 1 
= 1,5 – 0,5 – 1 – 1 = 1,5 - 2,5 = -1 
 
317 
 
Soma dos valores absolutos dos resíduos: 1,5 + 1,5 + 1 = 4 
 
2ª iteração: Os resíduos R1 e R2 têm o mesmo valor absoluto: 1,5. Escolhe-se 
arbitrariamente zerar o valor de R1. 
Corrigindo-se o valor de x, obtém-se: x = 1 + 1,5 = 2,5. Os valores de y e z 
permanecem os mesmos: y = 1 e z = 1. 
Calculam-se os novos resíduos: 
 
R1 = [–1](2,5) + [0,5](1) + [–1,5](1) +3,5 
= -2,5 + 0,5 -1,5 + 3,5 = 4 – 4 = 0 
 
R2 = [0,25](2,5) + [-1](1) + [0,25](1) -1 
= 0,625 -1 + 0,25 – 1 = 0,875 -2 = -1,125 
 
R3 = [1,5](2,5) + [–0,5](1) + [–1](1) – 1 
= 3,75 – 0,5 – 1 – 1 = 3,75 – 2,5 = 1,25 
 
Desta vez, o resíduo de maior valor absoluto é R3 = 1,25. 
Soma dos valores absolutos dos resíduos: 0 + 1,125 + 1,25 = 2,375. 
 
 
3ª iteração: O valor de z é corrigido: z = 1 + R3 = 1 + 1,25 = 2,25. As outras 
variáveis mantêm os mesmos valores: x = 2,5; e y = 1. 
 
Com esses valores calculam-se os novos resíduos: 
 
R1 = [–1](2,5) + [(0,5](1) + [–1,5](2,25) +3,5 
= -2,5 + 0,5 -3,375 + 3,5 
= 4 – 5,875 
= -1,875 
 
R2 = [0,25](2,5) + [-1](1) + [0,25]( 2,25) -1 
= 0,625 -1 + 0,5625 – 1 
= 1,1875 -2 
= 0,8125 
 
R3 = [1,5](2,5) + [–0,5](1) + [–1]( 2,25) - 1 
= 3,75 -0,5 – 2,25 – 1 
= 3,75 - 3,75 
= 0 
 
 Soma dos valores absolutos dos resíduos: 1,875 + 0,8125 + 0 = 2,6875. 
 
 
Os principais resultados são armazenados em uma tabela: 
 
 
 
 
318 
 
x1 R1 x2 R2 x3 R3 
 
∑│Ri│ 
i = 1, 2, 3 
1 1,5 1 -1,5 1 -1 4 
2,5 0 1 -1,125 1 1,25 2,375 
2,5 -1,875 1 -0,8125 2,25 0 2,6875 
 
Observação: A soma dos valores absolutos dos resíduos, ∑│Ri│i = 1, 2, 3, 
diminui da estimativa inicial (4) para a primeira iteração (2,375), mas cresceu logo a 
seguir (2,6875). Pode ser necessário efetuar mais iterações para se conseguir 
convergência mais nítida para a solução do sistema e para se obter resultados finais 
precisos. Professor: embora não tenha sido solicitado, usei a Regra de Cramer para 
obter 
 x ≈ 1,41; y ≈ - 0,326; e z ≈ 1,28. 
Observo que, após três iterações, os valores obtidos pela Relaxação ainda estão 
consideravelmente distantes daqueles calculados com a Regra de Cramer. 
 
Resposta à Questão 4 – Neste caso, constrói-se um algoritmo para implementar, 
computacionalmente, a aplicação do Método de Relaxação a um sistema de equações 
lineares com n incógnitas. Considera-se que o sistema dado não está preparado para essa 
aplicação, de modo que se faz necessário preparar o sistema preliminarmente ao uso do 
método. 
 
Por esse motivo, na Entrada dos Dados manda-se ler o valor de n, os elementos 
aij (i, j = 1, 2, ... n) da matriz A e os elementos ci do vetor C dos termos independentes. 
Também se mandam ler xi,1 que constituem as estimativas iniciais da solução do 
sistema. A quantidade máxima de iterações permitidas, itmax, e um valor pequeno, 
dmin, associado à precisão requerida na apresentação dos resultados. 
 
No Processamento dos Cálculos, prepara-se o sistema para a aplicação do 
Método da Relaxação. Nessa preparação trazem-se os termos independentes para o 
primeiro membro de cada equação e faz-se com que, na diagonal principal, todos os 
elementos sejam iguais a -1. Em seguida, executam-se as iterações, substituindo os 
valores das incógnitas nas equações e calculando-se os resíduos. O maior resíduo deve 
ser zerado alterando-se o valor da variável correspondente. Quando se alcançar a 
precisão desejada, então se interrompe o processo iterativo. 
 
Na Saída dos Resultados, manda-sem4[i]:=f3(t[i]+h,x[i]+h*k3[i],y[i]+h*l3[i],z[i]+h*m3[i]); 
 
 t[i+1]:=t[i]+h; 
 x[i+1]:=x[i]+(h/6)*(k1[i]+2*k2[i]+2*k3[i]+k4[i]); 
 y[i+1]:=y[i]+(h/6)*(l1[i]+2*l2[i]+2*l3[i]+l4[i]); 
 z[i+1]:=z[i]+(h/6)*(m1[i]+2*m2[i]+2*m3[i]+m4[i]); 
 
 end;{for} 
{* FIM DO PROCESSAMENTO DOS CÁLCULOS. *} 
 
{* SAÍDA DOS RESULTADOS: *} 
 writeln('-----------------------'); 
 writeln('-----------------------'); 
 for i:=1 to n do begin 
 writeln('i = ',i,':'); 
 writeln('t = ',t[i],' x = ',x[i]); 
 writeln('y = ',y[i],' z = ',z[i]); 
 writeln('.......................'); 
 end;{for} 
 writeln('---------------------------'); 
 readkey; 
408 
 
 for i:=1 to n-1 do begin 
 writeln('i = ',i);readkey; 
 writeln('k1=',k1[i],' k2=',k2[i]); 
 writeln('k3=',k3[i],' k4=',k4[i]); 
 writeln('.......................'); 
 readkey; 
 writeln('l1=',l1[i],' l2=',l2[i]); 
 writeln('l3=',l3[i],' l4=',l4[i]); 
 writeln('.......................'); 
 readkey; 
 writeln('m1=',m1[i],' m2=',m2[i]); 
 writeln('m3=',m3[i],' m4=',m4[i]); 
 writeln('.......................'); 
 readkey; 
 end;{for} 
 writeln('FIM.'); 
 readkey; 
{* FIM DA SAÍDA DOS RESULTADOS. *} 
 
end.{* FIM DO PROGRAMA RK4_3EQ. *} 
 
 
Relatório produzido pela execução do programa RK4_3EQ: 
 
 
Digite o valor de n = 
4 
Digite o valor de h = 
0.1 
Digite o valor de t1 = 
0.0 
Digite o valor de x1 = 
2.0 
Digite o valor de y1 = 
1.0 
Digite o valor de z1 = 
1.0 
----------------------- 
----------------------- 
i = 1: 
t = 0.0000000000E+00 x = 2.0000000000E+00 
y = 1.0000000000E+00 z = 1.0000000000E+00 
....................... 
i = 2: 
t = 1.0000000000E-01 x = 2.0898416667E+00 
y = 1.0054583683E+00 z = 9.9500416667E-01 
....................... 
i = 3: 
t = 2.0000000000E-01 x = 2.1588023598E+00 
409 
 
y = 1.0233360819E+00 z = 9.8006659724E-01 
....................... 
i = 4: 
t = 3.0000000000E-01 x = 2.2061930483E+00 
y = 1.0551563071E+00 z = 9.5533654286E-01 
....................... 
--------------------------- 
i = 1 
k1= 1.0000000000E+00 k2= 9.0000000000E-01 
k3= 8.9750000000E-01 k4= 7.9550000000E-01 
....................... 
l1= 0.0000000000E+00 l2= 5.2457297006E-02 
l3= 4.7084536305E-02 l4= 9.9168428809E-02 
....................... 
m1= 0.0000000000E+00 m2=-4.9999999999E-02 
m3=-5.0000000001E-02 m4=-9.9749999999E-02 
....................... 
i = 2 
k1= 7.9533750000E-01 k2= 6.9084541666E-01 
k3= 6.8885707291E-01 k4= 5.8289910624E-01 
....................... 
l1= 9.8835998910E-02 l2= 1.4876101350E-01 
l3= 1.4324608060E-01 l4= 1.9106238498E-01 
....................... 
m1=-9.9833333334E-02 m2=-1.4958354167E-01 
m3=-1.4933395833E-01 m4=-1.9858583229E-01 
....................... 
i = 3 
k1= 5.8272826669E-01 k2= 4.7478814870E-01 
k3= 4.7333132803E-01 k4= 3.6447408997E-01 
....................... 
l1= 1.9074917430E-01 l2= 2.3469182240E-01 
l3= 2.2920595579E-01 l4= 2.6941249581E-01 
....................... 
m1=-1.9866916528E-01 m2=-2.4767249514E-01 
m3=-2.4717582223E-01 m4=-2.9543746253E-01 
....................... 
FIM.imprimir a resposta: xi,it em que i = 1, 2, 3, 
... n. 
 
Inicialmente, representa-se o algoritmo por uma caixa preta que recebe a nome 
de Relaxação: 
 
 
319 
 
 
Ao esquema gráfico inicial dado pela caixa preta corresponde a um esboço do 
algoritmo escrito em pseudolinguagem de programação. Tal esquema declara os tipos 
das variáveis mencionadas: 
 
 
ALGORITMO RELAXAÇÃO 
REAL A(30,30), C(30), X(30,100) 
REAL DMIN 
INTEIRO ITMAX 
INÍCIO 
... 
... 
... 
FIM DO ALGORITMO RELAXAÇÃO. 
 
Abrindo-se a caixa preta para visualização de sua composição interna, 
distinguem-se as três caixas que correspondem aos blocos de instruções com as 
principais funcionalidades de um algoritmo numérico. 
 
As caixas pretas são: Entrada dos Dados, Processamento dos Cálculos e Saída 
dos Resultados. 
 
 
Em seguida, detalhando cada um dos três blocos de instruções, pode-se ter: 
 
Relaxação 
 
Dados Resultados 
aij, ci, 
xi,1 
i,j = 1,2,...,n 
itmax, 
dmin 
xi,it 
i = 1,2,...,n 
 
Resul- 
tados 
RELAXAÇÃO 
 
 
 
 
 
 
 
 
ENTRADA 
DOS 
DADOS 
PROCES- 
SAMENTO 
DOS 
CÁLCULOS 
SAÍDA 
DOS 
RESUL- 
TADOS X(I,IT) 
I=1,2,
…N 
 
A(I,J) 
C(I) X(I,1) 
I,J=1,2,…N 
ITMAX 
DMIN 
 
Dados 
320 
 
ALGORITMO RELAXAÇÃO 
REAL A(30,30), C(30), X(30,100), R(30) 
REAL DMIN, D, MAIOR 
INTEIRO ITMAX, IT, I, J, K, N 
INÍCIO 
 
(* ENTRADA DOS DADOS: *) 
LEIA N, ITMAX, DMIN 
PARA (I DE 1 ATÉ N) FAÇA 
PARA (J DE 1 ATÉ N) FAÇA 
LEIA A(I,J) 
FIM PARA 
 LEIA C(I), X(I,1) 
FIM PARA 
(* FIM DA ENTRADA DOS DADOS. *) 
 
(* PROCESSAMENTO DOS CÁLCULOS: *) 
 
(* PREPARAÇÃO DO SISTEMA: *) 
PARA (I DE 1 ATÉ N) FAÇA 
 SE (A(I,I) MAIOR 0) ENTÃO 
PARA (J DE 1 ATÉ N) FAÇA 
SE (I NÃO IGUAL J) ENTÃO 
 A(I,J) = A(I,J)/(-A(I,I)) 
FIM SE 
 FIM PARA 
 C(I) = C(I)/A(I,J) 
 FIM SE 
 SE (A(I,I) MENOR 0) ENTÃO 
 PARA (J DE 1 ATÉ N) FAÇA 
 SE (I NÃO IGUAL J) ENTÃO 
 A(I,J) A(I,J)/A(I,I) 
 FIM SE 
 FIM PARA 
 C(I) = -C(I)/A(I,I) 
 FIM SE 
 A(I,I) = -1 
 FIM PARA 
(* FIM DA PREPARAÇÃO DO SISTEMA. *) 
 
(* APLICAÇÃO DA RELAXAÇÃO: *) 
IT = 1; D = 1000.0 
ENQUANTO ((IT MENOR ITMAX) E (D MAIOR DMIN)) FAÇA 
 
(* CÁLCULO DOS RESÍDUOS: *) 
 PARA (I DE 1 ATÉ N) FAÇA 
 R(I) = C(I) 
 FIM PARA 
 PARA (I DE 1 ATÉ N) FAÇA 
321 
 
PARA (J DE 1 ATÉ N) FAÇA 
R(I) = R(I) + A(I,J)*X(J,IT) 
 FIM PARA 
 FIM PARA 
(* FIM DO CÁLCULO DOS RESÍDUOS. *) 
 
(* DETERMINAÇÃO DO MAIOR RESÍDUO: *) 
 MAIOR = R(1) 
 PARA (I DE 2 ATÉ N) FAÇA 
 SE (ABS(R(I)) MAIOR ABS(MAIOR)) ENTÃO 
 MAIOR = R(I); K = I 
 FIM SE 
 FIM PARA 
(* FIM DA DETERMINAÇÃO DO MAIOR RESÍDUO. *) 
 
(* ATUALIZAÇÃO DA VARIÁVEL: *) 
 X(K,IT+1) = X(K,IT) + R(K) 
(* FIM DA ATUALIZAÇÃO DA VARIÁVEL. *) 
 
(* DETERMINAÇÃO DA PRECISÃO: *) 
D = 0 
PARA (I DE 1 ATÉ N) FAÇA 
 D = D + ABS(R(I)) 
FIM PARA 
 (* FIM DA DETERMINAÇÃO DA PRECISÃO. *) 
 
 IT = IT + 1 
FIM ENQUANTO 
 
 (* FIM DA APLICAÇÃO DA RELAXAÇÃO. *) 
 
(* FIM DO PROCESSAMENTO DOS CÁLCULOS. *) 
 
(* SAÍDA DOS RESULTADOS: *) 
ESCREVA „FORAM REALIZADAS‟, IT,„ITERAÇÕES‟ 
SE (D MENOR OU IGUAL DMIN) ENTÃO 
ESCREVA „SOLUÇÃO DO SISTEMA:‟ 
 PARA (I DE 1 ATÉ N) FAÇA 
 ESCREVA „X(„,I,‟) = „,X(I,IT) 
 FIM PARA 
 FIM SE 
 SE (D MAIOR DMIN) ENTÃO 
 ESCREVA „PRECISÃO NÃO ALCANÇADA‟ 
 FIM SE 
 ESCREVA „FIM‟ 
(* FIM DA SAÍDA DOS RESULTADOS. *) 
 
FIM DO ALGORITMO RELAXAÇÃO. 
 
322 
 
PROVA 27 – Introdução à Interpolação Polinomial 
 
 
 
FOLHA DE QUESTÕES: 
 
 
Questão 1 (dissertativa) – Apresente um resumo de seu estudo sobre a interpolação 
polinomial. Nesse resumo, descreva o problema da interpolação e como esse problema 
pode ser resolvido com o emprego de polinômios. Se achar conveniente, construa 
gráficos e dê exemplos para ilustrar a sua exposição. Por favor, ocupe pelo menos uma 
página da prova com a sua resposta. 
 
Questão 2 (numérica) – Considere a tabela dada a seguir. Usando a interpolação linear, 
obtenha f(3). Indique todas as operações efetuadas para a obtenção desse resultado. 
 
x 1,0 2,5 4,7 
y = f(x) 2,2 5,4 3,7 
 
 
Questão 3 (numérica) – Empregue um polinômio interpolante do segundo grau para 
obter o valor de f(2,5) a partir dos pares de valores apresentados na tabela dada abaixo. 
Por favor, não deixe de indicar todas as operações efetuadas. 
 
 
x 1,2 2,3 3,6 
y = f(x) 2,0 2,8 1,8 
 
 
Questão 4 (algoritmo) – Use a metodologia de refinamentos sucessivos para construir 
um algoritmo que automatize a interpolação linear. Na Entrada dos Dados devem ser 
lidos os pares de valores [xi; yi = f(xi)] com i = 1, 2, 3,..., n, em que n representa a 
quantidade de pares de valores, e o valor de x para o qual se deseja obter o 
correspondente valor de y = f(x). No Processamento dos Cálculos, faça calcular esse 
valor de y. Na Saída dos Resultados mande imprimir o valor de x e o de seu 
correspondente y. 
 
 
 
 
♣ Boa Prova! ♣ 
 
 
 
 
 
 
 
 
323 
 
RESPOSTAS: 
 
Resposta à Questão 1 – Na interpolação tem-se um conjunto de n pares de valores: 
 
[xi, yi = f(xi)], i = 1, 2, 3, ...n, 
 
que podem ser interpretados como pontos do gráfico de uma função f(x). Nessas 
circunstâncias, deseja-se conhecer o valor yk da função f(x), isto é, 
 
yk = f(xk), 
 
correspondente a um valor de xk que pertence ao intervalo [x1, xn]. Naturalmente, xk ≠ 
xi, i = 1, 2, 3, ...n. 
 
Para determinar yk = f(xk) pode-se usar uma técnica de interpolação polinomial. 
Ligando por uma reta, p(x) = ax + b, o ponto que tem abscissa imediatamente menor do 
que xk e o ponto que tem abscissa imediatamente maior do que xk, obtém-se uma reta. 
Então, lê-se, sobre a reta assim traçada, ou calcula-se 
 
p(xk) ≈ yk = f(xk) 
 
Não há, verdadeiramente, necessidade de escolher os pontos com os quais se 
define a reta de interpolação da maneira como foi descrita acima. Entretanto, esse 
procedimento é freqüentemente razoável. 
 
Além da interpolação linear, pode-se usar uma interpolação quadrática, caso em 
que se passa uma parábola, isto é, um polinômio do segundo grau: 
 
p(x) = ax
2
 + bx + c 
 
por três pontos da tabela, escolhidos convenientemente na área em que se pretende 
realizar a interpolação. A interpolação polinomial ainda pode ser cúbica, caso em que se 
usa uma curva do terceiro grau. Pode-se fazer a interpolação com o emprego de 
polinômios de grau ainda mais alto. Nem sempre é conveniente, contudo, usar 
polinômios de grau três ou superior, pois o resultado da interpolação pode não ser muito 
bom. 
 
 Quanto aos dados, é preciso ficar atento ao fato de que a função y = f(x) deve ser 
contínua, pelo menos, na área em que se pretende realizar a interpolação. Se os pontos 
dados [xi, yi = f(xi)], i = 1, 2, 3, ...n, tiverem sido bem escolhidos, tem-se uma boa 
representação da função f(x), mesmo que eles estejam bem espaçados. O espaçamento: 
 
hi = xi+1 – xi , i = 1, 2,..., n-1, 
não precisa ser constante. 
 
 Em qualquer caso de interpolação polinomial, em que se deseja ter a expressão 
analítica do polinômio interpolante, p(x), por exemplo, para fins de derivação, é preciso 
determinar os coeficientes do polinômio. No caso da reta, resolve-se um sistema de duas 
324 
 
equações lineares com duas incógnitas (a e b); no caso da parábola, um sistema de três 
equações lineares com três incógnitas (a, b e c); e assim por diante. 
 
 Observação 1: Se xk está fora do intervalo [x1, xn], isto é, xk xn, então 
o procedimento adotado para a determinação de yk = f(xk) é denominado, algumas 
vezes, extrapolação. 
 
 Observação 2: Várias técnicas foram desenvolvidas com a finalidade de facilitar 
o uso da interpolação. Entre as técnicas mais importantes, é possível citar aquela que 
emprega os Polinômios de Lagrange e a que usa os Polinômios de Gregory-Newton. 
 
 
 
Resposta à Questão 2 - Usaremos a interpolação linear para obter f(3) a partir dosdados apresentados na tabela indicada abaixo 
 
x 1,0 2,5 4,7 
f(x) 2,2 5,4 3,7 
 
Como 2,51, 2, ..., n dos pontos que serão empregados na interpolação, assim como um 
valor para a variável xint, para a qual se deseja obter yint = f(xint). 
 
 
 
 
♣ Boa Prova! ♣ 
 
 
 
331 
 
RESPOSTAS: 
 
Resposta à Questão 1 – Uma spline é uma régua de material flexível que se adapta 
bem a uma distribuição de pontos do gráfico de uma função contínua. Quando é 
empregada, ela permite traçar uma curva que se aproxima do gráfico da função. Desse 
modo, pode-se fazer uma interpolação de maneira gráfica, buscando, para valores de x 
não tabelados, os correspondentes valores de y sobre a curva traçada com a régua. 
 
Entretanto, os cientistas fizeram um tratamento matemático desse tipo de 
interpolação. As curvas, nesse caso, são denominadas de splines e podem ser de 
diferentes graus. As curvas splines de terceiro grau correspondem a polinômios de grau 
três. 
Quando, para essas curvas, se estabelecem certas condições, têm-se as Splines 
Cúbicas Naturais, que são muito empregadas na prática da ciência e da técnica. Por esse 
motivo, são estudadas em muitos cursos universitários. 
 
 A spline cúbica pode ser representada por 
 
S3(x) 
 
Ela é uma função polinomial do terceiro grau por partes, quer dizer, cada uma 
de suas partes, sk(x), é um polinômio de grau três: 
 
sk(x) = Ak(x-xk)
3
 + Bk(x-xk)
2
 + Ck(x-xk) + Dk 
 
A função sk(x) é uma cúbica no intervalo [xk-1, xk]. O índice k assume os valores: 
1, 2,... , n. 
 
 Apesar de S3(x) ser constituída de vários polinômios concatenados, o seu gráfico 
tem um aspecto de ondulações suaves, isto é, sem variações bruscas de curvatura. Para 
garantir esse aspecto, a construção de S3(x) precisa assumir uma série de condições, 
entre as quais, ter as derivadas de primeira e segunda ordem como funções contínuas. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 x0 xn x1 
S3(x) 
Y 
X 
s1(x) 
 
x2 
s2(x) 
 
332 
 
Importante: a determinação de S3(x) exige o cálculo de quatro coeficientes para cada k 
(cada polinômio sk(x)), perfazendo o total de 4n coeficientes. 
 
Para s1(x): A1 B1 C1 D1 
 
Para s2(x): A2 B2 C2 D2 
 
... 
 
Para sn(x): An Bn Cn Dn 
 
 
As expressões que permitem calcular os valores desses coeficientes são as 
seguintes: 
 
Ak = [s”k(xk) – s”k-1(xk-1)]/6hk 
 
Bk = [s”k(xk)]/2 
 
Ck = {[f(xk) – f(xk-1)]/hk} + [2 hk s”k(xk) + hk s”k-1(xk-1)]/6 
 
 Dk = f(xk) 
 
Nessas expressões, o símbolo s”k(xk) representa a derivada de segunda ordem da 
função sk(x) calculada para x = xk. O índice k pode assumir os seguintes valores: 0, 1,..., 
n. 
 
Como, na spline natural, as réguas iniciam e terminam como retas, então 
 
s”0(x0) = 0 (no início da régua spline) e 
 
s”n(xn) = 0 (no final da régua spline). 
 
Já, hk = xk – xk-1 está associado ao espaçamento das abscissas. Esse espaçamento 
pode ser constante ou variável. 
 
 
Resposta à Questão 2 – Neste caso, têm-se cinco pontos, logo, n = 4. A Spline Cúbica 
Natural S3 vai ser usada para se obter a expressão algébrica de s1(x) correspondente aos 
dados. 
 
i 0 1 2 3 4 
xi 0,0 0,1 0,2 0,3 0,4 
yi = f(xi) 2,0 2,3 2,0 2,1 2,2 
 
A expressão procurada tem o seguinte formato geral: 
 
 sk(x) = Ak(x-xk)
3
 + Bk(x-xk)
2
 + Ck(x-xk) + Dk 
 
s2(x) 
333 
 
Para k = 1, tem-se 
 
s1(x) = A1(x-x1)
3
 + B1(x-x1)
2
 + C1(x-x1) + D1 
 
O valor de x1 pode ser lido na tabela: x1 = 0,1. É preciso determinar os valores dos 
coeficientes A1, B1, C1 e D1. Essa determinação envolve o cálculo das derivadas de 
segunda ordem: 
 
s”k(xk), em que k = 0, 1, 2, 3, 4. 
 
Para simplificar a notação, faz-se 
 
s”k(xk) = zk, k = 0, 1, 2, 3, 4. 
 
Como a spline cúbica é do tipo natural, então 
 
z0 = z4 = 0 
 
 
Determinam-se as outras três derivadas de segunda ordem, isto é, z1, z2 e z3, com a 
resolução do sistema de três equações lineares com três incógnitas: AZ = W, em que a 
matriz A tem os seguintes elementos: 
 
2(h1 + h2) h2 0 
h2 2(h2 + h3) h3 
0 h3 2(h3 + h4) 
 
Em que o espaçamento é constante: h1 = h2 = h3 = h4 = 0,1. De modo que se obtém: 
 
 
0,4 0,1 0,0 
0,1 0,4 0,1 
0,0 0,1 0,4 
 
O vetor dos termos independentes é 
 
6[(y2 – y1)/h2 – (y1 – y0)/h1] 
6[(y3 – y2)/h3 – (y2 – y1)/h2] 
6[(y4 – y3)/h4 – (y3 – y2)/h3] 
 
Substituindo os valores: 
 
6[(2,0 – 2,3)/0,1 – (2,3 – 2,0)/ 0,1] 
6[(2,1 – 2,0)/ 0,1 – (2,0 – 2,3)/ 0,1] 
6[(2,2 – 2,1)/ 0,1 – (2,1 – 2,0)/ 0,1] 
 
Efetuando os cálculos: 
 
W = 
A = 
W = 
A = 
334 
 
 
-36 
24 
0 
 
O sistema AW = Z pode ser resolvido pela Regra de Cramer. Cálculo dos 
determinantes: 
 
det = (0,4)(0,4)(0,4) + 0 + 0 – 0 – (0,1)(0,1)(0,4) – (0,4)(0,1)(0,1) 
 = 0,064 – 0,004 – 0,004 = 0,056 
 
det1 = (–36)(0,4)(0,4) + 0 + 0 – 0 – (0,1)(0,1)(36) – (0,4)(24)(0,1) 
 = –5,76 – 0,36 – 0,96 = –7,08 
 
det2 = (0,4)(24)(0,4) + 0 + 0 – 0 – 0 – (0,4)(0,1)( –36) 
 = 3,84 + 1,44 = 5,28 
 
det3 = 0 + 0 + (–36)(0,1)(0,1) – 0 – (24)(0,1)(0,4) – 0 
 = –0,36 – 0,96 = –1,32 
 
Daí vem a solução do sistema: 
 
z1 = det1/det = –7,08/0,056 = –126,4 
z2 = det2/det = 5,28/0,056 = 94,29 
z3 = det3/det = –1,32/0,056 = –23,57 
 
Agora, pode-se obter cada um dos coeficientes de s1(x), considerando k = 1: 
 
A1 = [z1 – z0][(6)(h1)] = [–126,4 – 0]/[(6)(0,1)] = –210,7 
 
B1 = z1/2 = – 126,4/2 = – 63,2 
 
C1 = {[y1 – y0]/h1} + [2 h1 z1 + h1 z0]/6 
 = {[2,3 – 2,0]/0,1} + [2(0,1)(–126,4) + (0,1)(0)]/6 = –1,213 
 
 D1 = y1 = 2,3 
 
Então, s1(x) = –210,7 (x - 0,1)
3
 – 63,2 (x - 0,1)
2
 –1,213 (x - 0,1) + 2,3 
 
 
Resposta à Questão 3 – Neste caso, deseja-se empregar a interpolação com a Spline 
Cúbica Natural para o cálculo de y = f(0,13) a partir dos dados apresentados na tabela 
 
 
 
 
 
 
i 0 1 2 3 4 
xi 0,0 0,1 0,2 0,3 0,4 
yi = f(xi) 2,0 2,3 2,0 2,1 2,2 
W = 
335 
 
Podem-se reutilizar os valores obtidos na resposta à questão anterior. Assim, como 0,13 
pertence ao intervalo [0,1; 0,2], utiliza-se o polinômio: 
 
s3(x) = A3(x-x3)
3
 + B3(x-x3)
2
 + C3(x-x3) + D3 
 
O cálculo de seus coeficientes pode ser realizado com os valores das derivadas de 
segunda ordem já obtidos na questão anterior: 
 
z0 = 0; z1 = –126,4; z2 = 94,29; z3 = –23,57; z4 = 0 
 
A3 = [z3 – z2]/[(6)(h3)] = [–23,57 – 94,29]/[(6)(0,1)] = –117,86/0,6 = –196,43 
 
B3 = [z3]/2 = –23,57/2 = –11,785 
 
C3 = {[y3 – y2]/h3}+ [2 h3 z3 + h3 z2]/6 
= {[2,1 – 2,0]/0,1}+ [2(0,1)(–23,57) + (0,1)( 94,29)]/6 
= {1} + [–4,714 + 9,429]/6 = 1 + 0,7858 = 1,7858 
 
 D3 = y3 = 2,1 
 
Assim, 
f(0,13) ≈ s3(0,13) 
= –196,43 (0,13 – 0,3)
3
 –11,785 (0,13 – 0,3)
2
 + 1,7858 (0,13 – 0,3) + 2,1 
 = 0,9651 – 0,3406 – 0,3036 + 2,1 
 = 2,42 
 
Conclusão: f(0,13) ≈ 2,42 que é um valor dentro das expectativas. 
 
 
Resposta à Questão 4 – Nesta questão, constrói-se um algoritmo para realizar uma 
interpolação para a função y = f(x) com a Spline Cúbica Interpolante Natural. 
Considera-se que são fornecidas as coordenadas cartesianas de cinco pontos. Também é 
dado o valor de xint para o qual se deseja yint. O espaçamento pode ser variável: hi = xi+1 
– xi, i = 0, 1, 2, 3. 
 
Inicialmente, desenha-se a caixa preta que representa o algoritmo no mais alto nível de 
abstração: 
 
 
 
 
 
SPLINES 
 
Dados Resultados 
xint, xi, yi , 
i = 0,1,2,3,4 
xint 
xint, yint 
 
336 
 
Na Entrada dos Dados manda-se ler o valor xint (valor de x para o qual se quer 
fazer a interpolação). Manda-se ler cada um dos os pares de valores [xi; yi = f(xi)] com i 
= 0, 1, 2, 3, 4. 
 
Na Saída dos Resultados espera-se apresentar o valor de xint e de seu 
correspondente yint = f(xint). 
 
Segue um esboço preliminar do algoritmo, desta vez, em versão literal: 
 
ALGORITMO SPLINES 
REAL X(5), Y(5) 
REAL XINT, YINT 
INTEIRO I 
INÍCIO 
. 
. 
. 
FIM DO ALGORITMO SPLINES. 
 
Em seguida, na segunda etapa de desenvolvimento do algoritmo, abre-se a caixa 
preta para visualização de seu interior.Surgem três novas caixas pretas: 
 
Entrada dos Dados; 
Processamento dos Cálculos; e 
Saída dos Resultados. 
 
 
 
 
Então, detalham-se os três blocos internos. 
 
Os blocos de Entrada dos Dados e de Saída dos Resultados formalizam o 
comportamento já descrito acima. O bloco de Processamento dos Cálculos, por sua vez, 
por ter mais complexidade, pode ser repartido em cinco etapas: 
 
 1. Construção do sistema (matriz A e vetor W dos termos independentes) 
 2. Resolução do sistema pela Regra de Cramer (cálculo de determinantes) 
 3. Localização de xint no intervalo de interpolação 
 4. Cálculo dos coeficientes Ak, Bk, Ck e Dk do sk(x) a que pertence xint. 
 5. Cálculo de yint. 
Resultados 
 SPLINES 
 
 
 
 
 
 
ENTRADA 
DOS 
DADOS 
PROCES- 
SAMENTO 
DOS 
CÁLCULOS 
SAÍDA 
DOS 
RESUL- 
TADOS 
XINT, 
YINT 
 
Dados 
XINT 
X(I),Y(I) 
I = 0,1...4 
 
337 
 
 As segundas derivadas de f(x), isto é, s”k(xk), k = 0, 1, ..., 4 são denotadas no 
algoritmo por Z(0), Z(1),..., Z(4). Os valores de Z(0) e de Z(4) são nulos porque 
trabalha-se com a spline cúbica natural. Já, os valores de Z(1), Z(2) e de Z(3) são 
obtidos através da resolução de um sistema de três equações lineares com essas três 
incógnitas. 
 
 
ALGORITMO SPLINE 
 
(* REALIZA INTERPOLAÇÃO 
COM SPLINE CÚBICA NATURAL, 
CONSIDERANDO CINCO PONTOS 
COM ESPAÇAMENTO VARIÁVEL. *) 
 
REAL XINT, YINT, DET, DET1, DET2, DET3 
REAL X(5), Y(5), W(3), Z(3) 
REAL AS(4), BS(4), CS(4), DS(4), H(4) 
REAL A(3, 3) 
INTEIRO I, K, N 
INÍCIO 
 
(* ENTRADA DOS DADOS: *) 
 LEIA XINT 
 PARA (I DE 0 ATÉ 4) FAÇA 
 LEIA X(I), Y(I) 
 FIM PARA 
(* FIM DA ENTRADA DOS DADOS. *) 
 
(* PROCESSAMENTO DOS CÁLCULOS: *) 
 
 (* CÁLCULO DOS ESPAÇAMENTOS: *) 
PARA (I DE 1 ATÉ 4) FAÇA 
 H(I) = X(I) – X(I–1) 
FIM PARA 
 (* FIM DO CÁLCULO DOS ESPAÇAMENTOS. *) 
 
(* CONSTRUÇÃO DO SISTEMA: *) 
 
(* CONSTRUÇÃO DA MATRIZ A: *) 
 
 A(1,1) = 2*(H(1)+H(2)); A(1,2) = H(2); A(1,3) = 0 
 
 A(2,1) = H(2); A(2,2) = 2*(H(2)+H(3)); A(2,3) = H(3) 
 
 A(3,1) = 0; A(3,2) = H(3); A(3,3) = 2*(H(3)+H(4)) 
 
(* FIM DA CONSTRUÇÃO DA MATRIZ A. *) 
 
 (*VETOR W DOS TERMOS INDEPENDENTES: *) 
338 
 
 W(1) = 6*((Y(2)-Y(1))/H(2) – (Y(1)-Y(0))/H(1)) 
 W(2) = 6*((Y(3)-Y(2))/H(3) – (Y(2)-Y(1))/H(2)) 
 W(3) = 6*((Y(4)-Y(3))/H(4) – (Y(3)-Y(2))/H(3)) 
 
(* FIM DO VETOR W DOS TERMOS INDEPENDENTES. *) 
 
(* FIM DA CONSTRUÇÃO DO SISTEMA AZ = W. *) 
 
(* RESOLUÇÃO DO SISTEMA POR CRAMER: *) 
 
(* DETERMINANTE PRINCIPAL: *) 
DET= 
A(1,1)*A(2,2)*A(3,3)+A(1,2)*A(2,3)*A(3,1)+A(1,3)*A(3,2)*A(2,1)- 
A(1,3)*A(2,2)*A(3,1)-A(2,3)*A(3,3)*A(1,1)-A(3,3)*A(2,1)*A(1,2) 
 
(* PRIMEIRO DETERMINANTE CARACTERÍSTICO: *) 
DET1=W(1)*A(2,2)*A(3,3)+A(1,2)*A(2,3)*W(3)+A(1,3)*A(3,2)*W(2) 
-A(1,3)*A(2,2)*W(3)-A(2,3)*A(3,2)*W(1)-A(3,3)*W(2)*A(1,2) 
 
(* SEGUNDO DETERMINANTE CARACTERÍSTICO: *) 
DET2=A(1,1)*W(2)*A(3,3)+W(1)*A(2,3)*A(3,1)+A(1,3)*W(3)*A(2,1) 
-A(1,3)*W(2)*A(3,1)-A(2,3)*W(3)*A(1,1)-A(3,3)*A(2,1)*W(1) 
 
(* TERCEIRO DETERMINANTE CARACTERÍSTICO: *) 
DET3=A(1,1)*A(2,2)*W(3)+A(1,2)*W(2)*A(3,1)+W(1)*A(3,2)*A(2,1) 
-W(1)*A(2,2)*A(3,1)-W(2)*A(3,2)*A(1,1)-W(3)*A(2,1)*A(1,2) 
 
(* SOLUÇÃO DO SISTEMA: *) 
Z(1) = DET1/DET; Z(2) = DET2/DET; Z(3) = DET3/DET 
 
(* FIM DA RESOLUÇÃO DO SISTEMA POR CRAMER. *) 
 
(* LOCALIZAÇÃO DE XINT: *) 
 
 I = 0 
 ENQUANTO (I MENOR OU IGUAL 4) FAÇA 
 SE ((XINT MAIOR X(I)) E (XINT MENOR X(I+1))) ENTÃO 
 K = I+1 
 I = 5 
 FIM SE 
 I = I + 1 
 FIM ENQUANTO 
 
(* FIM DA LOCALIZAÇÃO DE XINT. *) 
 
(* CÁLCULO DOS COEFICIENTES DE SK(X): *) 
 
AS(K) = (Z(K) – Z(K-1))/(6*H(K)) 
 BS(K) = Z(K)/2 
339 
 
 CS(K) = (Y(K) – Y(K-1))/H(K) + (2*H(K)*Z(K) + Z(K-1)*H(K))/6 
 DS(K) = Y(K) 
 
(* FIM DO CÁLCULO DOS COEFICIENTES DE SK(X). *) 
 
(* CÁLCULO DE YINT = SK(XINT): *) 
 
YINT = 
AS(K)*(XINT–X(K))*(XINT–X(K))*(XINT–X(K))+ 
BS(K)*(XINT–X(K))*(XINT–X(K))+ 
CS(K)*(XINT – X(K))+ 
DS(K) 
 
(* FIM DO CÁLCULO DE YINT = SK(XINT). *) 
 
(* FIM DO PROCESSAMENTO DOS CÁLCULOS. *) 
 
(* SAÍDA DOS RESULTADOS: *) 
 
 ESCREVA „INTERPOLAÇÃO COM SPLINE NATURAL‟ 
ESCREVA „PARA X = „, XINT, 
ESCREVA „TEM-SE Y = „, YINT 
 
(* FIM DA SAÍDA DOS RESULTADOS. *) 
 
FIM DO ALGORITMO SPLINE. 
 
 
Relatório que será produzido na execução do algoritmo: 
 
 
 
 
 
 
 
 
 
 
INTERPOLAÇÃO COM SPLINES 
 
PARA X = ... 
 
TEM-SE Y = ... 
340 
 
PROVA 29 – Integração Gaussiana 
 
 
 
FOLHA DE QUESTÕES: 
 
 
Questão 1 (dissertativa) – Descreva alguns dos aspectos mais importantes da 
Integração Gaussiana. Se achar conveniente, apresente fórmulas e figuras para ilustrar 
e enriquecer sua descrição. Por favor, não ocupe menos do que uma página. 
 
 
Questão 2 (numérica) – Use o Método de Gauss-Legendre com Dois Pontos para obter 
o valor da integral definida: 
 
 2,0 
I = ∫ ( 4x
4
 – 12)dx 
 0,0 
 
Por favor, apresente a indicação de todos os cálculos efetuados. Compare o resultado 
com o valor exato da integral. 
 
 
Questão 3 (numérica) – Por favor, considere a função f(x) = sen(x) – 3x + 1. Calcule a 
integral definida de f(x) com os seguintes limites de integração: limite inferior: a = 0,8; 
limite superior: b = 1,0. Utilize a Integração Gaussiana com dois pontos: 
 
I = A0 F(t0) + A1 F(t1) 
em que 
 
F(t) = [(b – a)/2]f{[(b – a)/2]t + [(b + a)/2]}; 
 
A0 = A1 = 1; 
 
t0 = - 1/ 3 ; e t1 = 1/ 3 . 
 
 
Questão 4 (algoritmo) – Elabore um algoritmo para automatizar a aplicação do Método 
de Gauss no caso da integração da função f(x) = 3e 
–x/2
. 
 
Por favor, na Entrada dos Dados, mande ler a e b, os limites de integração; 
no Processamento dos Cálculos, faça obter o valor da integral I; 
e, na Saída dos Resultados, mande escrever o valor de I. 
 
 
♣ Boa Prova! ♣ 
 
341 
 
RESPOSTAS: 
 
Resposta à Questão 1 – A integração gaussiana (Método de Gauss-Legendre) é um 
poderoso recurso de natureza numérica para o cálculo de integrais definidas. Isto, 
porque, em vários casos práticos, a aplicação desse método leva a resultados bastante 
precisos. 
 
Entretanto, emprega-se a integração gaussiana quando é difícil realizar a 
integração por processos analíticos. 
 
 Diferentemente de outros métodos, tais como os métodos de Newton-Côtes, 
entretanto, para o emprego do Método de Gauss-Legendre é preciso conhecer a 
expressão algébrica da função integranda. Quer dizer, para se obter, pelo Método de 
Gauss-Legendre, o valor da integral 
 
I = 
b
a
dxxf )( 
 
é preciso que se conheça a expressão algébrica que define f(x), além do valor de a 
(limite inferior do intervalo de integração) e do valor de b (limite superior desse 
intervalo). 
 
De posse dessas informações, pode-se utilizar a integração gaussiana em 
diferentes modalidades: 
 
No caso de se considerar dois pontos (recurso mais simples), tem-se 
 
 
I = 
b
a
dxxf )( ≈ IG2 = A0F(t0) + A1F(t1) 
 
em que 
 
F(t) = [(b – a)/2]f{[(b – a)/2]t + (b – a)/2} 
 
e 
 
A0 = A1 = 1; 
 
t0 = –1/ 3 ≈ –0,577350269; e 
 
t1 = +1/ 3 ≈ +0,577350269 
 
Já, no caso de se empregar a integração gaussiana com quatro pontos (recurso 
que permite resultados mais precisos que a abordagem anterior), tem-se 
 
342 
 
I = 
b
a
dxxf )( ≈ IG4 = A0F(t0) + A1F(t1) + A2F(t2) + A3F(t3) 
 
em que, por sua vez, 
 
A0 = A3 = 0,347854845; 
A1 = A2 = 0,652145155. 
 
t0 = – 0,861136312; 
t1 = – 0,339981044; 
t2 = 0,339981044; e 
t3 = 0,861136312 
 
Resposta à Questão 2 – Neste caso, pede-se I =  
0,2
0,0
4 )124( dxx , considerando, portanto, 
os limites de integração: limite inferior: 0,0; e limite superior: 2,0. Isto é, neste caso, 
tem-se a = 0,0 e b = 2,0. A função a integrar é f(x) = 4x
4
 –12. Como se vai usar o 
Método de Gauss com dois pontos, tem-se: 
 
I ≈ IG2 = A0F(t0) + A1F(t1) 
 
Em que 
 
A0 = A1 = 1; 
 
t0 = –1/ 3 ≈ –0,577350269; e 
 
t1= +1/ 3 ≈ +0,577350269 
 
Além disso, 
 
F(t) = [(b – a)/2]f{[(b – a)/2]t + (b – a)/2} 
 
Isto é, 
 
F(t) = [(2 – 0)/2]f{[(2 – 0)/2]t + (2 – 0)/2} 
 
F(t) = f(t + 1) 
 
F(t) = 4(t + 1)
4
 – 12 
 
 
Então, 
 
 
I ≈ IG2 = 1[4(t0 + 1)
4
 – 12] + 1[4(t1 + 1)
4
 –12] 
 
343 
 
I ≈ IG2 = [4(–1/√3 + 1)
4
 – 12] + [4(1/√3 + 1)
4
 –12] 
 
I ≈ IG2 = [4(–0,577350269 + 1)
4
 – 12] + [4(0,5773502 + 1)
4
 –12] 
 
I ≈ IG2 = 4(0,4226497)
4
 + 4(1,5773502)
4
 – 24 
 
I ≈ IG2 = 0,1276387 + 24,761246 – 24 
 
I ≈ IG2 = 0,8888847 
 
Cálculo do valor exato para comparação com o resultado numérico: 
 
I = (4/5)x
5
 – 12x 
 
Considerando os limites de integração: 
 
I = [(4/5)2
5
 – 12(2)] – [(4/5)0
5
 – 12(0)] 
 
I = [(4/5)2
5
 – 12(2)] 
 
I = (4/5)(32) – 24 
 
I = 1,6 
 
Conclusão: neste caso particular, existe considerável diferença entre o valor calculado 
numericamente (IG2 = 0,8888847) e o valor obtido por meio analítico (I = 1,6). Tal se 
dá, possivelmente, devido à natureza da função integranda (uma quártica). Pode-se 
tentar obter uma resposta mais precisa com o emprego, por exemplo, da Integração 
Gaussiana com Quatro Pontos. 
. 
 
Resposta à Questão 3 – Nesta questão calcula-se a integral 
 
I = 
0,1
8,0
)( dxxf 
 
isto é, 
 
I =  
0,1
8,0
]13)([ dxxxsen 
 
pelo Método de Gauss com dois pontos: 
 
IG2 ≈ A0 F(t0) + A1 F(t1) 
em que 
 
 a = 0,8; b = 1,0; 
344 
 
F(t) = [(b – a)/2]f{[(b – a)/2]t + [(b + a)/2]}; 
A0 = A1 = 1; t0 = - 1/ 3 ≈ - 0,5773502; e t1 = 1/ 3 ≈ 0,5773502 
 
Ora, 
[(b – a)/2] = [(1,0 – 0,8)/2] = 0,2/2 = 0,1 
[(b + a)/2] = [(1,0 + 0,8)/2] = 1,8/2 = 0,9 
 
Assim, 
 
f{[(b – a)/2]t0 + [(b + a)/2]} 
= f{[0,1](- 0,5773502) + [0,9]} 
= f{0,842265} 
= sen(0,842265) – 3(0,842265) + 1 
= 0,746153 – 2,526795 + 1 
= -0,7806419 
 
 
f{[(b – a)/2]t1 + [(b + a)/2]} 
= f{[0,1](0,5773502) + [0,9]} 
= f{0,957735} 
= sen(0,957735) – 3(0,957735) + 1 
= 0,8178904 – 2,873205 + 1 
= -1,0553145 
 
Desse modo, obtém-se 
 
I ≈ F(t0) + F(t1) 
= [(b – a)/2]f{[(b – a)/2]t0 + [(b + a)/2} 
+ [(b – a)/2]f{[(b – a)/2]t1 + [(b + a)/2]} 
= [0,1](-0,7806419) + [0,1](-1,0553145) 
= -0,1835955 
 
 
Conclusão: I =  
0,1
8,0
]13)([ dxxxsen ≈ -0,1835955. 
 
 
Resposta à Questão 4 – Constrói-se a caixa preta inicial: 
 
 
Gauss_2 
 
f(x) = 3e 
–x/2
. 
Dados 
a, b 
 
Resultados 
I 
 
345 
 
 
São dados os limites de integração a e b. 
 
O resultado esperado é I, o valor da integral. 
 
Agora, pode-se esboçar o algoritmo Gauss_2 em forma literal correspondente ao 
esquema gráfico dado pela caixa preta: 
 
ALGORITMO GAUSS_2 
REAL A, B, I, A0, A1, T0, T1 
REAL X0, X1, FT0, FT1 
F(X) = = 3*EXP(-X/2) 
INÍCIO 
... 
... 
... 
FIM DO ALGORITMO GAUSS_2. 
 
 
A caixa preta inicial contém, em sua composição interna, as três caixas que 
correspondem aos blocos de instruções com as principais funcionalidades do algoritmo. 
 
Tais caixas pretas internas são: Entrada dos Dados, Processamento dos Cálculos 
e Saída dos Resultados. 
 
 
 
 
 
 
Detalhando cada um dos três blocos de instruções, pode-se ter: 
 
ALGORITMO GAUSS_2 
 
(* CALCULA O VALOR DA INTEGRAL DEFINIDA I 
DE UMA FUNÇÃO F(X) COM O USO DO MÉTODO 
DE GAUSS-LEGENDRE COM DOIS PONTOS. *) 
Resul- 
tados 
GAUSS_2 
 
 
 
 
 
 
F(X) = = 3*EXP(-X/2) 
 
 
ENTRADA 
DOS 
DADOS 
PROCES- 
SAMENTO 
DOS 
CÁLCULOS 
SAÍDA 
DOS 
RESUL- 
TADOS I 
 
A, B 
Dados 
346 
 
 
REAL A, B, I, A0, A1, T0, T1 
REAL X0, X1, FT0, FT1 
F(X) = 3*EXP(-X/2) 
 
INÍCIO 
 
(* ENTRADA DOS DADOS: *) 
LEIA A, B 
(* FIM DA ENTRADA DOS DADOS. *) 
 
(* PROCESSAMENTO DOS CÁLCULOS: *) 
A0 = 1; A1 = 1; T0 = -1/SQRT(3); T1 = 1/SQRT(3) 
X0 = ((B-A)/2)*T0 + (B+A)/2 
X1 = ((B-A)/2)*T1 + (B+A)/2 
FT0 = ((B-A)/2)*F(X0) 
FT1 = ((B-A)/2)*F(X1) 
I = A0*FT0 + A1*FT1 
(* FIM DO PROCESSAMENTO DOS CÁLCULOS. *) 
 
(* SAÍDA DOS RESULTADOS: *) 
 ESCREVA „INTEGRAL = „, I 
(* FIM DA SAÍDA DOS RESULTADOS. *) 
 
FIM DO ALGORITMO GAUSS_2. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
347 
 
PROVA 30 – Método de Euler 
 
FOLHA DE QUESTÕES: 
 
Questão 1 (dissertativa) – Escreva um resumo, de pelo menos uma página de extensão, 
para apresentar os principais aspectos da abordagem numérica aos problemas de valor 
inicial com o Método de Euler. Por favor, não deixe de referir-se à obtenção da fórmula 
de Euler. Também procure enriquecer seu resumo com um gráfico que ilustre o 
fenômeno da propagação de erros quando o valor da solução numérica é comparado 
com o valor exato da solução do mesmo problema. 
 
Questão 2 (numérica) - empregue o Método de Euler para resolver o seguinte problema 
de valor inicial: 
 
y’ = 3 y – 5 x – 2 
 Para x = 0,5 tem-se y = 1,2. 
 
 
Resolva-o no intervalo de integração [ 0,5; 0,7 ] com passo constante h = 0,1. Indique 
todas as operações efetuadas. Por favor, apresente os resultados na forma de uma tabela 
com o seguinte cabeçalho: 
 
 
 
 
 
Questão 3 (numérica) – Use o Método de Euler, e a substituição y‟ = z, para resolver o 
seguinte problema de valor inicial de segunda ordem: 
 
y” = 3xy
2
 – y‟ – 3, sendo que, para x = 0 tem-se y = 1 e y‟ = -2. 
 
O problema deve ser resolvido no intervalo de integração [0,0; 0,6] com passo constante 
h = 0,2. Por favor, indique todas as operações efetuadas. Preencha uma tabela com o 
seguinte cabeçalho: 
 
 
 
 
 
 
Questão 4 (algoritmo) - Construa um algoritmo para empregar o Método de Euler na 
resolução de um problema de valor inicial com a equação diferencial de primeira 
ordem: 
y’ = 3 y – 5 x – 2 
 
 
♣ Boa Prova! ♣ 
 
 
i xi yi (Euler) y‟i (Eq. Dif.) 
i xi 
yi 
(Euler) 
y‟i = zi 
(Euler) 
y”i = z‟i 
(Equação Diferencial) 
348 
 
RESPOSTAS: 
 
Resposta à Questão 1 – Um problema de valor inicial de ordem n é constituído de uma 
equação diferencial ordinária de ordem n e de igual número (n) de condições iniciais. 
 
Assim, se a equação é de primeira ordem, tem-se apenas uma condição inicial. 
Por exemplo: 
 
y‟ = 4xy
2
 – 2x -7 (equação diferencial) 
 
Para x = 1 tem-se y = -8 (condição inicial) 
 
 
Um problema dessa natureza pode ser resolvido pelo Método de Euler em um 
pequeno intervalo de integração [x1, xn], digamos de x1 = 1,0 até xn = 1,5, com passo 
constante h = 0,1. 
 
Não convém que o intervalo [x1, xn] seja grande porque pode haver acúmulo de 
erros de arredondamento e de truncamento, ao longo do processo de integração, levando 
a resultados muito distantes dos valores exatos. 
 
Pelos mesmos motivos, também o valor do passo, h, não deve ser grande. O 
passo, entretanto, não precisa ser constante. Ele pode variar ao longo do intervalo de 
integração: 
 
hi, com i = 1, 2, ... 
 
O Método de Euler é um método direto, isto é, não iterativo e, além disso, é um 
método de passo simples, quer dizer, para se obter o valor da solução no ponto seguinte 
é bastante dispor de informações no ponto anterior. Essas informações são o valor da 
função, y, e o de sua derivada, y‟. 
 
A cada passo da resolução de um problema de valor inicial emprega-se a 
fórmula: 
 
yi+1 = yi + hiy‟i 
 
com i = 1, 2, ... 
 
A fórmula empregada para o cálculo dos valores da função solução do problema 
de valor inicial pode ser obtida por truncamento da Série de Taylor: 
 
yi+1 = yi + hy‟i + (h/2)y‟‟i + ... 
 
 De modo que, considerando apenas os dois primeiros termos da série obtém-se 
 
yi+1 ≈ yi + hy‟i 
 
349 
 
O fato de o valor de yi+1 ser calculado apenas aproximativamente resulta em um 
erro que pode se propagar ao longo do intervalo de integração. Esse fenômeno pode ser 
visualizado pela figura apresentada a seguir. Nela, a linha cheia corresponde aos valores 
exatos da solução, enquanto que a linha tracejada corresponde aos valores obtidos com 
o emprego do Método de Euler:Resposta à Questão 2 – Aqui se emprega o Método de Euler para resolver o problema 
de valor inicial de primeira ordem: 
 
y’ = 3 y – 5 x – 2 
 Para x = 0,5 tem-se y = 1,2. 
 
 
no intervalo de integração [ 0,5; 0,7 ] com passo constante h = 0,1. 
 
i = 1: 
x1 = 0,5; y1 = 1,2 (condição inicial) 
y1‟ = 3 y1 – 5x1 – 2 (equação diferencial) 
y1‟ = 3 (1,2) – 5 (0,5) – 2 = 3,6 – 2,5 – 2 = 3,6 – 4,5 = -0,9 
 
i = 2: 
x2 = x1 + h = 0,5 + 0,1 = 0,6 
y2 = y1 + hy1‟ (Euler) 
y2 = 1,2 + (0,1)(-0,9) = 1,2 – 0,09 = 1,11 
y2‟ =3y2 – 5x2 – 2 (equação diferencial) 
y2‟ = 3 (1,11) – 5 (0,6) – 2 = 3,33 – 3,0 – 2 = 3,33 – 5,0 = -1,67 
 
i = 3: 
x3 = x2 + h = 0,6 + 0,1 = 0,7 
y3 = y2 + hy2‟ (Euler) 
y3 = 1,11 + (0,1)(-1,67) = 1,11 – 0,167 = 0,943 
y3‟ =3y3 – 5x3 – 2 (equação diferencial) 
y3‟ = 3 (0,943) – 5 (0,7) – 2 = 2,829 – 3,5 – 2 = 2,829 – 5,5 = -2,671 
 
X 
Y 
350 
 
 
 
 
 
 
 
 
 
 
 
 
 
Resposta à Questão 3 – Us-se o Método de Euler, e a substituição y‟ = z, para resolver 
o problema de valor inicial de segunda ordem: 
 
 
y” = 3xy
2
 – y‟ – 3, 
 
com a condição inicial: 
para x = 0, tem-se y = 1 e y‟ = -2. 
 
 
Considerando a substituição y‟ = z, tem-se o sistema de duas equações 
diferenciais ordinárias de primeira ordem: 
 
y‟ = z 
 
z‟ = 3xy – z -3 
 
com a condição inicial: 
para x = 0, tem-se y = 1 e y‟ = z -2. 
 
 
O problema é resolvido no intervalo de integração [0,0; 0,6] com passo 
constante h = 0,2. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
i xi 
yi 
(Euler) 
y’i 
(Eq. Dif.) 
1 0,5 
 
1,2 (condição inicial) 
 
-0,9 
2 0,6 1,11 -1,67 
3 0,7 0,943 -2,671 
i xi 
yi 
(Euler) 
y i’ = zi 
(Euler) 
y i” = z i’ 
(Equação Diferencial) 
1 0,0 1 -2 -1 
2 0,2 0,6 -2,2 -0,728 
3 0,4 0,16 -2,3456 -3,0832 
4 0,6 -0,30912 -2,96224 -3,6429696 
351 
 
i = 1: 
x1 = 0,0; y1 = 1; y1‟ = z1 = -2 (condição inicial) 
y1‟‟ = z1‟ = 3y1x1
2 
– y1‟ – 3 (equação diferencial) 
y1‟‟ = z1‟ = 3(1)(0,0)
2
 – (-2) – 3 = -1 
 
i = 2: 
x2 = x1 + h = 0,0 + 0,2 = 0,2 
y2 = y1 + hy1‟ (Euler) 
y2 = 1+ (0,2)(-2) = 1 – 0,4 = 0,6 
y2‟ = z2 = y1‟ + hy1” (Euler) 
y2‟ = z2 = -2 + (0,2)(-1) = -2 – 0,2 = -2,2 
y2” = z2‟ = 3y2x2
2 
– y2‟– 3 (equação diferencial) 
y2” = z2‟ = 3(0,6)(0,2)
2 
– (-2,2) – 3 = 2,272 - 3 = -0,728 
 
i = 3: 
x3 = x3 + h = 0,2 + 0,2 = 0,4 
y3 = y2 + hy2‟ (Euler) 
y3 = 0,6 + (0,2)(-2,2) = 0,6 – 0,44 = 0,16 
y3‟ = z3 = y2‟ + hy2” (Euler) 
y3‟ = z3 = -2,2 + (0,2)(-0,728) = -2,2 – 0,1456 = -2,3456 
y3”= z3‟ = 3y3x3
2 
– y3 – 3 (equação diferencial) 
y3” = z3‟ = 3(0,16)(0,4)
2 
– 0,16 – 3 = 0,0768 - 3,16 = -3,0832 
 
 
i = 4: 
x4 = x4+ h = 0,4 + 0,2 = 0,6 
y4 = y3+ hy3‟ (Euler) 
y4 = 0,16 + (0,2)(-2,3456) = 0,16 – 0,46912 = -0,30912 
y4‟ = z4 = y3‟ + hy3” (Euler) 
y4‟ = z4 = -2,3456 + (0,2)(-3,0832) = -2,3456 – 0,61664 = -2,96224 
y4” = z4‟ = 3y4x4
2 
– y4 – 3 (equação diferencial) 
y4” = z4‟ = 3(-0,30912)(0,6)
2 
– 0,30912 – 3 = -0,3338496 - 3,30912 = -3,6429696 
 
 
 
Resposta à Questão 4 – Nesta resposta, constrói-se um algoritmo para aplicar o 
Método de Euler na resolução de um problema de valor inicial que envolve a equação 
diferencial de primeira ordem: y’ = f(x, y) = 3 y – 5 x – 2. 
 
Inicialmente, fazemos a caixa preta que representa o algoritmo em altíssimo 
nível de abstração. Associados a essa caixa, representam-se os dados e os resultados 
pretendidos. 
 
Os dados são: a condição inicial x1, y1 e a quantidade de pontos, n, considerados 
no intervalo de integração, além do passo constante, h. 
 
Os resultados esperados são: as abscissas e ordenadas, xi, yi, dos pontos que 
constituem a solução do problema, mais os valores das derivadas, yli. 
352 
 
 
 
Em seguida, esboçamos o algoritmo em forma literal correspondente ao esquema 
gráfico inicial dado pela caixa preta. Tal esboço declara os tipos das variáveis 
mencionadas: 
 
 
ALGORITMO EULER 
REAL X(10), Y(10), YL(10) 
REAL H 
INTEIRO I, N 
F(X, Y) = 3*Y -5*X - 2 
INÍCIO 
... 
... 
... 
FIM DO ALGORITMO EULER. 
 
 
A caixa preta inicial contém, em sua composição interna, as três caixas que 
correspondem aos blocos de instruções com as principais funcionalidades de um 
algoritmo numérico simples. 
 
Essas caixas pretas internas são: Entrada dos Dados, Processamento dos 
Cálculos e Saída dos Resultados. 
 
 
 
Euler 
f(x, y) = 3 y – 5 x – 2 
Dados 
x1, y1, n, 
h 
 
Resul- 
tados 
EULER 
 
 
 
 
 
 
 
 
ENTRADA 
DOS 
DADOS 
PROCES- 
SAMENTO 
DOS 
CÁLCULOS 
SAÍDA 
DOS 
RESUL- 
TADOS X(I), 
Y(I), 
YL(I), 
I=1,2,
…N 
 
X(1),Y(1) 
N, H 
Dados 
Resultados 
xi, yi ,yi‟ 
i = 1,2,...,n 
 
353 
 
Em seguida, detalhando cada um dos três blocos de instruções, pode-se ter o 
algoritmo completo: 
 
ALGORITMO EULER 
 
(* RESOLVE UM PROBLEMA DE 
VALOR INICIAL DE PRIMEIRA ORDEM 
PELO MÉTODO DE EULER. *) 
 
REAL X(10), Y(10), YL(10) 
REAL H 
INTEIRO I, N 
F(X, Y) = 3*Y -5*X - 2 
INÍCIO 
 
(* ENTRADA DOS DADOS: *) 
LEIA N, H, X(1), Y(1) 
(* FIM DA ENTRADA DOS DADOS. *) 
 
(* PROCESSAMENTO DOS CÁLCULOS: *) 
 YL(1) = F(X(1), Y(1)) 
PARA (I DE 1 ATÉ N-1) FAÇA 
X(I+1) = X(I) + H 
Y(I+1) = Y(I) + H*YL(I) 
YL(I+1) = F(X(I+1), Y(I+1)) 
 FIM PARA 
(* FIM DO PROCESSAMENTO DOS CÁLCULOS. *) 
 
(* SAÍDA DOS RESULTADOS: *) 
 PARA (I DE 1 ATÉ N) FAÇA 
 ESCREVA „I = „,I 
 ESCREVA „X(„,I,‟) =‟,X(I) 
 ESCREVA „Y(„,I,‟) =‟,Y(I) 
 ESCREVA „YL(„,I,‟) =‟,YL(I) 
 FIM PARA 
 ESCREVA „FIM‟ 
(* FIM DA SAÍDA DOS RESULTADOS. *) 
 
FIM DO ALGORITMO EULER. 
 
 
 
 
 
 
 
 
 
 
354 
 
PROVA 31 – Métodos de Runge-Kutta 
 
 
FOLHA DE QUESTÕES: 
 
 
Questão 1 (dissertativa) – Apresente um estudo dos Métodos de Runge-Kutta. Em 
especial, descreva os métodos de 3ª e de 4ª ordens. Por favor, ocupe pelo menos uma 
página. 
 
Questão 2 (numérica) – Use o Método de Runge-Kutta de 3ª Ordem para resolver o 
seguinte problema de valor inicial: 
 
y‟ = 3x
2
 – y 
Para x = 0,0, tem-se y = 1,0. 
 
Intervalo de integração: [0,0; 0,1], a ser percorrido com passo constante h = 0,1. 
Apresente indicações de todos os cálculos que você realizar. Por favor, preencha uma 
tabela com os resultados. Atenção: observe que a tabela só tem duas linhas, pois apenas 
um passo é dado. Calculam-se os valores de K1, K2 e K3 apenas uma vez. 
 
Questão 3 (numérica) – Por favor, use o Método de Runge-Kutta de 4ª Ordem para 
obter o valor de y correspondente a x = 1,1, em um único passo, sabendo que 
y‟ = 5xy - 7 
e que para x = 1,0 tem-se y = 9. 
 
Questão 4 (algoritmo) – Construa um algoritmo para resolver um problema de valor 
inicial pelo Método de Runge-Kutta de 3ª Ordem que envolve o sistema de duas 
equações diferenciais de primeira ordem 
 
y‟ = f(x, y, z)= -xy 
z‟ = g(x, y, z) = y
2
 
 
Por favor, após declarar os tipos das variáveis, defina as funções f e g. Depois, 
na Entrada dos Dados, mande ler a quantidade n de pontos considerada na solução do 
problema, os limites do intervalo de integração [x1, xn] e a condição inicial (x1, y1, z1). 
No Processamento dos Cálculos, mande calcular o passo h e os valores das derivadas 
y1‟ e z1‟. Logo após, crie uma estrutura de repetição PARA-FAÇA para calcular K1i, 
L1i, K2i, L2i, K3i, L3i, nessa ordem, e depois, calcular xi, yi , zi. Os valores de y‟i e z‟i 
são calculados do segundo ponto do intervalo de integração em diante. Na Saída dos 
Resultados, mande imprimir uma tabela com os valores das seguintes variáveis i, xi, yi, 
zi, yi‟, zi‟, K1i, L1i, K2i, L2i, K3i, L3i. 
 
 
♣ Boa Prova! ♣ 
 
 
 
 
355 
 
RESPOSTAS: 
 
Resposta à Questão 1 – Do mesmo modo que o Método de Euler, podem-se obter os 
Métodos de Runge-Kutta a partir da Série de Taylor. No caso do Método de Euler 
consideram-se apenas os dois primeiros termos da série. Já, nos Métodos de Runge-
Kutta, considera-se uma quantidade maior determos da série. Por esse motivo, quando 
aplicados, estes últimos levam a resultados mais precisos, em geral. 
 
A Série de Taylor pode assim ser representada: 
 
yi+1 = yi + hyi‟ + (h
2
/2!)yi‟‟ + (h
3
/3!)yi‟‟‟ + ... 
 
Por considerarem maior quantidade de termos da Série de Taylor, os Métodos de 
Runge-Kutta precisam aproximar os valores de derivadas de ordem superior. Tal se dá 
diferentemente do Método de Euler, que leva em consideração apenas os valores das 
primeiras derivadas. 
 
Os Métodos de Runge-Kutta são, assim como o Método de Euler, métodos 
diretos, isto é, não iterativos. E são, além disso, de passo simples, quer dizer, para 
calcular o ponto seguinte no intervalo de integração bastam as informações relacionadas 
ao ponto anterior. 
 
Dado um problema de valor inicial de primeira ordem: 
 
y‟ = f(x, y) 
 
Para x = x1 tem-se y = y1. 
 
 
pode-se adotar, para sua resolução, um Método de Runge-Kutta. 
 
No caso de adoção do Método de Runge-Kutta de Terceira Ordem, tem-se: 
 
K1 = f[xi, yi] 
 
K2 = f[xi + (1/2)h, yi + (1/2)hK1] 
 
K3 = f[xi + h, yi + 2hK2 – hK1] 
 
 
E então: 
 
yi+1 = yi + (h/6)[K1 + 4K2 + K3] 
 
em que i = 1, 2, 3, ... , n-1, se [x1, xn] é o intervalo de integração e h é o passo de valor 
constante utilizado para percorrer esse intervalo. 
 
Já, no caso de adoção do Método de Runge-Kutta de Quarta Ordem, tem-se: 
 
356 
 
K1 = f[xi, yi] 
K2 = f[xi + (1/2)h, yi + (1/2)hK1] 
 
K3 = f[xi + (1/2)h, yi + (1/2)hK2] 
 
K4 = f[xi + h, yi + hK3] 
 
 
E então: 
 
yi+1 = yi + (h/6)[K1 + 2K2 + 2K3 + K4] 
 
tendo-se, igualmente, i = 1, 2, 3, ... , n-1 para o intervalo de integração [x1, xn] e passo 
constante h. 
 
 
Resposta à Questão 2 – Aqui, usa-se o Método de Runge-Kutta de 3ª Ordem para 
resolver: 
 
y‟ f(x,y) = 3x
2
 – y 
Para x = 0,0, tem-se y = 1,0. 
 
no intervalo de integração: [0,0; 0,1], com passo h = 0,1. 
 
 
i xi yi K1 K2 K3 
1 0,0 1,0 -1,0 -0,9425 -0,8815 
2 0,1 0,9058 - - - 
 
i =1: 
 
x1 = 0,0; y1 = 1,0 (dados) 
 
K1 = f[x1, y1] = f[0,0; 1,0] 
 = 3(0,0)
2
 – 1,0 = -1,0 
 
K2 = f[x1+(1/2)h; y1+(1/2)hK1] 
 = f[0,0+(1/2)(0,1); 1,0+(1/2)(0,1)(-1,0)] 
 = f[0,05; 0,95] 
 = 3(0,05)
2
 – 0,95 
 = -0,9425 
 
K3 = f[x1+h; y1+2hK2 – hK1] 
 = f[0,0+0,1; 1,0+2(0,1)(-0,9425) – (0,1)(-1,0)] 
 = f[0,1; 0,9115] 
 = 3(0,1)
2
 – 0,9115 
 = -0,8815 
 
Então, 
357 
 
y2 = y1 + (h/6)[K1 + 4K2 + K3] 
 = 1,0 + (0,1/6)[-1,0 + 4(-0,9425) + (-0,8815)] 
 = 1,0 + (0,1/6)[-1,0 – 3,77 – 0,8815] 
 = 1,0 + (-0,09419) 
 = 0,9058. 
 
 
Resposta à Questão 3 – Nesta questão usa-se o Método de Runge-Kutta de 4ª Ordem 
para calcular o valor de y correspondente a x = 1,1, em um único passo, sabendo que 
 
y‟ = f(x,y) = 5xy – 7. 
 
Tem-se que a x = 1,0 corresponde y = 9. Por outro lado, h = 1,1 – 1,0 = 0,1. 
 
 
i xi yi K1 K2 K3 K4 
1 1,0 9 38 50,225 53,434062 71,888734 
2 1,1 14,286759 - - - - 
 
i = 1: 
 
x1 = 1,0; y1 = 9 (dados) 
 
K1 = f(x1, y1) 
= f(1,0; 9) 
= 5(1,0)(9) – 7 
= 38 
 
K2 = f[x1 + (1/2)h, y1 + (1/2)hK1] 
= f{[1,0 + (1/2)(0,1)]; [9 + (1/2)(0,1)(38)]} 
= f(1,05; 10,9) 
= 5(1,05)(10,9) – 7 
= 57,225 – 7 
= 50,225 
 
K3 = f[x1 + (1/2)h; y1 + (1/2)hK2] 
= f{[1,0 + (1/2)(0,1)]; [9 + (1/2)(0,1)(50,225)]} 
= f(1,05; 11,51125) 
= 5(1,05)(11,51125) – 7 
= 60,434062 – 7 
= 53,434062 
 
K4 = f[x1 + h, y1 + hK3] 
= f{[1,0 + 0,1]; [9 + (0,1)(53,434062)]} 
= f(1,1; 14,3434062) 
= 5(1,1)(14,3434062) – 7 
= 78,888734 – 7 
= 71,888734 
 
358 
 
E então: 
 
x2 = x1 + h = 1,0 + 0,1 = 1,1 
 
y2 = y1 + (h/6)[K1 + 2K2 + 2K3 + K4] 
= 9 + (0,1/6)[38 + 2(50,225)+ 2(53,434062) + 71,888734] 
= 9 + (0,0166666)[38 + 100,45 + 106,86812 + 71,888734] 
= 9 + (0,0166666)[317,20685] 
= 9 + 5,2867598 
= 14,286759 
 
Resposta à Questão 4 – Agora, constrói-se um algoritmo estruturado para aplicar 
automaticamente o Método de Runge-Kutta de Ordem 3 na resolução de um problema 
de valor inicial que envolve um sistema de equações diferenciais ordinárias de primeira 
ordem: 
 
y‟ = f(x, y, z)= -xy 
z‟ = g(x, y, z) = y
2
 
 
 
 
Inicialmente, uma caixa preta representa o algoritmo em altíssimo nível de 
abstração. Na entrada, representam-se os dados; na saída, os resultados pretendidos. 
 
Os dados são: a condição inicial x1, y1, z1; e a quantidade de pontos, n; além do 
intervalo de integração [x1, xn] (para posterior cálculo do valor do passo constante, h). 
 
Os resultados esperados são: as abscissas e ordenadas, xi, yi, zi dos pontos que 
constituem a solução do problema, mais os valores das derivadas, yli, zli. 
 
 
 
 
 
Em seguida, delineia-se o algoritmo (agora, em forma literal correspondente ao 
esquema gráfico inicialmente representado pela caixa preta). Tal delineamento declara 
os tipos das variáveis mencionadas: 
 
 
 
 
RK3_SIST 
F(X, Y, Z) = -X*Z 
G(X, Y, Z) = Y*Y 
 
Dados 
 
n, x1, xn, 
y1, z1 
 
Resultados 
xi, yi ,zi, yli, zli‟ 
i = 1,2,...,n 
 
359 
 
ALGORITMO RK3_SIST 
 
REAL X(10), Y(10), Z(10), YL(10), ZL(10) 
 REAL H 
INTEIRO N, I 
 
F(X, Y, Z) = -X*Z 
 G(X, Y, Z) = Y*Y 
 
INÍCIO 
... 
... 
... 
FIM DO ALGORITMO RK3_SIST. 
 
 
A caixa preta inicial é decomposta em três caixas. Estas correspondem 
diretamente aos blocos de instruções com as principais funcionalidades de um algoritmo 
numérico simples. 
 
As caixas pretas internas são: Entrada dos Dados, Processamento dos Cálculos 
e Saída dos Resultados. 
 
 
 
 
 
 
Em seguida, detalhando cada um dos três blocos de instruções, e incluindo-se a 
declaração dos tipos de novas variáveis, tem-se o algoritmo completo, pronto para ser 
codificado em uma linguagem de programação: 
 
 
 
Resul- 
tados 
RK3_SIST 
 
 
 
 
 
 
 
ENTRADA 
DOS 
DADOS 
PROCES- 
SAMENTO 
DOS 
CÁLCULOS 
SAÍDA 
DOS 
RESUL- 
TADOS X(I), 
Y(I), 
Z(I), 
YL(I), 
ZL(I), 
I=1,2,
…N 
 
N, 
X(1), 
X(N), 
Y(1), 
Z(1), 
 
Dados 
360 
 
ALGORITMO RK3_SIST 
 
(* Resolve um problema de valor inicial que envolve um sistema 
com duas equações diferenciais ordinárias de primeira ordem pelo 
Método de Runge-Kutta de Terceira Ordem. *) 
 
REAL X(10), Y(10), Z(10), YL(10), ZL(10) 
 REAL K1(10), L1(10), K2(10), L2(10), K3(10), L3(10) 
 REAL H 
INTEIRO N, I 
 
F(X, Y, Z) = -X*Z 
 G(X, Y, Z) = Y*Y 
 
INÍCIO 
 
(* ENTRADA DOS DADOS: *) 
 LEIA N, X(1), X(N) 
 LEIA Y(1), Z(1) 
(* FIM DA ENTRADA DOS DADOS. *) 
 
(* PROCESSAMENTO DOS CÁLCULOS: *) 
 H = (X(N) – X(1))/(N – 1) 
 YL(1) = F(X(1), Y(1), Z(1)) 
 ZL(1) = G(X(1), Y(1), Z(1)) 
 
PARA (I DE 1 ATÉ N - 1) FAÇA 
 K1(I) = F(X(I), Y(I), Z(I)) 
 L1(I) = G(X(I), Y(I), Z(I)) 
 
 K2(I) = F(X(I) + H/2, Y(I) + H*K1(I)/2, Z(I) + H*L1(I)/2) 
 L2(I) = G(X(I) + H/2, Y(I) + H*K1(I)/2, Z(I) + H*L1(I)/2) 
 
 K3(I) = F(X(I)+H, Y(I)+2*H*K2(I)–H*K1(I), Z(I)+2*H*L2(I)-H*L1(I)) 
 L3(I) = G(X(I)+H, Y(I)+2*H*K2(I)–H*K1(I), Z(I)+2*H*L2(I)-H*L1(I)) 
 
 X(I + 1) = X(I) + H 
 Y(I + 1) = Y(I) + (H/6)*(K1(I) + 4*K2(I) + K3(I)) 
 Z(I + 1) = Z(I) + (H/6)*(L1(I) + 4*L2(I) + L3(I)) 
 YL(I + 1) = F(X(I+1), Y(I+1), Z(I+1)) 
 ZL(I + 1) = G(X(I+1), Y(I+1), Z(I+1)) 
 FIM PARA 
(* FIM DO PROCESSAMENTO DOS CÁLCULOS. *) 
 
(* SAÍDA DOS RESULTADOS: *) 
 PARA (I DE 1 ATÉ N) FAÇA 
 ESCREVA I, X(I), Y(I), Z(I) 
 ESCREVA YL(I), ZL(I) 
 FIM PARA 
361 
 
 PARA (I DE 1 ATÉ N - 1) FAÇA 
 ESCREVA I, K1(I), L1(I), K2(I), L2(I), K3(I), L3(I) 
 FIM PARA 
 ESCREVA „FIM‟ 
(* FIM DA SAÍDA DOS RESULTADOS. *) 
FIM DO ALGORITMO RK3_SIST. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
362 
 
PROVA 32 – Equações Diferenciais de Ordem Superior 
 
 
 
FOLHA DE QUESTÕES: 
 
 
Questão 1 (dissertativa)

Mais conteúdos dessa disciplina