livitec - laboratório de informática para vigilância ... · neste volume iii de cálculo...

103
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.

Upload: lynga

Post on 16-Dec-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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.

Page 2: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 3: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 4: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 5: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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.

Page 6: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

312

PARTE I

PROVAS

Page 7: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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! ♣

Page 8: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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 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

Page 9: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 10: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 11: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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:

Page 12: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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-se 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:

Page 13: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 14: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 15: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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.

Page 16: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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! ♣

Page 17: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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) = ax2 + 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

Page 18: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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 < x1 ou 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 dos

dados apresentados na tabela indicada abaixo

x 1,0 2,5 4,7

f(x) 2,2 5,4 3,7

Como 2,5 < 3 < 4,7, tomaremos os pontos (2,5; 5,4) e (4,7; 3,7) para definir a

reta interpolante que, nesse caso, pode ser escrita como:

p(x) = ax + b

Determinação dos coeficientes a e b da reta:

Para x = 2,5, tem-se a(2,5) + b = 5,4.

Para x = 4,7, tem-se a(4,7) + b = 3,7.

Da primeira equação: a = [5,4 – b]/(2,5).

Substituindo esse resultado na segunda equação, (4,7)[5,4 – b]/(2,5) + b = 3,7.

Então, pode-se fazer o cálculo de b:

[(4,7)(5,4) – (4,7)b]/2,5 + b = 3,7,

ou seja, [25,38 – 4,7 b]/2,5 + b = 3,7.

Ou [10,152 – 1,88 b] + b = 3,7

Isto é, -0,88 b = -6,452

ou b = 7,332

Cálculo de a:

a = (3,7 – b)/4,7

a = (3,7 – 5,041)/4,7

ou a = -0,773

Conclusão: f(3) ≈ p(3) = -0,773 (3) + 7,332 = 5,013.

Tem-se 3,7 < 5,013 < 5,4, indicando um resultado dentro das expectativas.

Page 19: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

325

Resposta à Questão 3 – Nesta resposta vamos empregar um polinômio do segundo

grau p(x) = ax2 + bx + c para obter o valor de f(2,5) a partir dos pares de valores dados

no enunciado da questão. Construiremos um sistema de três equações lineares com três

incógnitas para obter os coeficientes da parábola. Indicaremos todas as operações

efetuadas.

x 1,2 2,3 3,6

f(x) 2,0 2,8 1,8

Para x = 1,2, tem-se: a(1,2)2 + b(1,2) + c = 2,0

Para x = 2,3, tem-se: a(2,3)2 + b(2,3) + c = 2,8

Para x = 3,6, tem-se: a(3,6)2 + b(3,6) + c = 1,8

Tem-se que 1,22 = 1,44; 2,3

2 = 5,29; 3,6

2 = 12,96

O sistema de equações lineares pode ser escrito na forma matricial:

1,44 1,2 1 a 2,0

5,29 2,3 1 b = 2,8

12,96 3,6 1 c 1,8

Esse sistema será resolvido pela Regra de Cramer. Os determinantes serão calculados

com a Regra de Sarrus.

Cálculo do determinante principal D da matriz dos coeficientes:

1,44 1,2 1

5,29 2,3 1

12,96 3,6 1

D = (1,44*2,3*1) + (1,2*1*12,96) + (1*3,6*5,29)

– (1*2,3*12,96) – (1*3,6*1,44) – (1*5,29*1,2)

= 3,312 + 15,552 + 19,044 – 29,808 – 5,184 – 6,348

= 37,908 – 41,340 = -3,432

Primeiro determinante característico D1:

D1 = (2,0*2,3*1) + (1,2*1*1,8) + (1*3,6*2,8)

- (1*2,3*1,8) – (1*3,6*2,0) – (1*2,8*1,2)

2,0 1,2 1

2,8 2,3 1

1,8 3,6 1

Page 20: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

326

= 4,60 + 2,16 + 10,08 – 4,14 – 7,20 – 3,36

= 16,84 – 14,7 = 2,14

Segundo determinante característico D2:

D2 = (1,44*2,8*1) + (2,0*1*12,96) + (1*1,8*5,29)

- (1*2,8*12,96) – (1*1,8*1,44) – (1*5,29*2,0)

= 4,032 + 25,92 + 9,522 – 36,288 – 2,592 – 10,58

= 39,474 – 49,46 = -9,986

Terceiro determinante característico D3:

2,0 1,2 2,0

2,8 2,3 12,8

1,8 3,6 1,8

D3 = (1,44*2,3*1,8) + (1,2*2,8*12,96) + (2,0*3,6*5,29)

– (2,0*2,3*12,96) – (2,8*3,6*1,44) – (1,8*5,29*1,2)

= 5,9616 + 43,5456 + 38,088 – 59,616 – 14,5152 – 11,4264

= 87,5952 – 85,5576 = 2,0376

Coeficientes da parábola:

a = D1/D = 2,14/-3,432 = -0,6235

b = D2/D = -9,986/-3,432 = 2,91

c = D3/D = 2,0376/-3,432 = -0,594

Então, f(2,5) ≈ p(2,5) = -0,6235(2,5)2 + 2,91(2,5) + (-0,594)

f(2,5) ≈ -3,897 + 7,285 – 0,594 = 2,794 que é um resultado coerente com os dados.

Resposta à Questão 4 – Nesta questão usaremos a metodologia de refinamentos

sucessivos para construir um algoritmo que automatize a interpolação linear.

1,44 2,0 1

5,29 2,8 1

12,96 1,8 1

INTPOLINEAR

Dados Resultados

n, xi, yi ,i = 1,2,...,n

xint xint, yint

Page 21: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

327

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 xint para

o qual se deseja obter o correspondente valor de yint = f(xint). Na Saída dos Resultados

espera-se ter o valor de xint e de seu correspondente yint.

Um esboço preliminar do algoritmo, em versão literal, já pode ser apresentado:

ALGORITMO INTPOLINEAR

REAL X(10), Y(10)

REAL XINT, YINT

INTEIRO I, N

INÍCIO

.

.

.

FIM DO ALGORITMO INTPOLINEAR.

Agora, abre-se a caixa preta para visualização de três novas caixas pretas:

Entrada dos Dados, Processamento dos Cálculos e Saída dos Resultados:

Detalhamento da Entrada dos Dados:

(* ENTRADA DOS DADOS: *)

LEIA N, XINT

PARA (I DE 1 ATÉ N) FAÇA

LEIA X(I), Y(I)

FIM PARA

(* FIM DA ENTRADA DOS DADOS. *)

Detalhamento do Processamento dos Cálculos:

(* PROCESSAMENTO DOS CÁLCULOS: *)

(* POSIÇÃO DE XINT NA TABELA: *)

PARA (I DE 1 ATÉ N-1) FAÇA

Resultados

INTPOLINEAR

ENTRADA

DOS

DADOS

PROCES-

SAMENTO

DOS

CÁLCULOS

SAÍDA

DOS

RESUL-

TADOS XINT, YINT

Dados

N,

X(I),Y(I)

I = 1, 2,...,N

XINT

Page 22: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

328

SE (( X(I) MENOR XINT) E

( XINT MENOR X(I+1))) ENTÃO

XA = X(I); YA = Y(I)

XB = X(I+1); YB = Y(I+1)

FIM SE

FIM PARA

(* DETERMINANTES DA MATRIZ: *)

D = XA*1 – 1*XB

D1 = YA*1 – 1*YB

D2 = XA*YB – YA*XB

(* COEFICIENTES DA RETA: *)

A = D1/D; B = D2/D

(* INTERPOLAÇÃO: *)

YINT = A*XINT + B

(* FIM DO PROCESSAMENTO DOS CÁLCULOS. *)

Detalhamento da Saída dos Resultados:

(* SAÍDA DOS RESULTADOS: *)

ESCREVA „PARA X = „, XINT

ESCREVA „TEM-SE Y =„, YINT

(* FIM DA SAÍDA DOS RESULTADOS. *)

Reunindo os três blocos de instruções e definindo os tipos de todas as variáveis

utilizadas, tem-se o algoritmo INTPOLINEAR em sua versão completa:

ALGORITMO INTPOLINEAR

REAL X(10), Y(10), XINT, YINT

REAL XA, XB, D, D1, D2, A, B

INTEIRO I, N

INÍCIO

(* ENTRADA DOS DADOS: *)

LEIA N, XINT

PARA (I DE 1 ATÉ N) FAÇA

LEIA X(I), Y(I)

FIM PARA

(* FIM DA ENTRADA DOS DADOS. *)

(* PROCESSAMENTO DOS CÁLCULOS: *)

(* POSIÇÃO DE XINT NA TABELA: *)

PARA (I DE 1 ATÉ N-1) FAÇA

SE (( X(I) MENOR XINT) E

( XINT MENOR X(I+1))) ENTÃO

Page 23: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

329

XA = X(I); YA = Y(I)

XB = X(I+1); YB = Y(I+1)

FIM SE

FIM PARA

(* DETERMINANTES DA MATRIZ: *)

D = XA*1 – 1*XB

D1 = YA*1 – 1*YB; D2 = XA*YB – YA*XB

(* COEFICIENTES DA RETA: *)

A = D1/D; B = D2/D

(* INTERPOLAÇÃO: *)

YINT = A*XINT + B

(* FIM DO PROCESSAMENTO DOS CÁLCULOS. *)

(* SAÍDA DOS RESULTADOS: *)

ESCREVA „PARA X = „, XINT

ESCREVA „TEM-SE Y =„, YINT

(* FIM DA SAÍDA DOS RESULTADOS. *)

FIM DO ALGORITMO INTPOLINEAR.

Page 24: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

330

PROVA 28 – Interpolação com Splines

FOLHA DE QUESTÕES:

Questão 1 (dissertativa) - escreva um resumo do tópico Interpolação com Splines. Por

favor, produza um texto com, no mínimo, uma página. De modo condensado, apresente:

(a) as principais definições;

(b) as condições que devem ser estabelecidas para garantir que a solução

teórica mantenha as características da solução gráfica; e

(c) uma breve indicação da dedução das fórmulas.

Se achar conveniente, enriqueça a sua apresentação com um gráfico que ilustre a curva

spline S3(x) mostrando as partes em que ela é dividida: s1(x), s2(x),..., sn(x).

Questão 2 (numérica) – Por favor, use a teoria de interpolação com a Spline Cúbica

Natural para obter a expressão algébrica de s1(x) a partir da tabela dada abaixo:

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

Questão 3 (numérica) – Empregue a interpolação com a Spline Cúbica Natural para

obter y = f(0,13) a partir da tabela dada abaixo. Se desejar, reutilize os resultados

obtidos na resposta à questão anterior. Por favor, indique todas as operações efetuadas.

x 0,0 0,1 0,2 0,3 0,4

y = f(x) 2,0 2,3 2,0 2,1 2,2

Questão 4 (algoritmo) – Construa um algoritmo para utilizar, de maneira automática,

no computador, uma interpolação para a função y = f(x) com a Spline Cúbica

Interpolante Natural. Na Entrada de Dados, faça-o ler as abscissas e as ordenadas [xi,

yi] i = 0, 1, 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! ♣

Page 25: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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)

Page 26: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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)

Page 27: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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 =

Page 28: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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 =

Page 29: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 30: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 31: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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: *)

Page 32: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 33: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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 = ...

Page 34: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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 = ∫ ( 4x4 – 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! ♣

Page 35: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 36: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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) = 4x4 –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]

Page 37: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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)x5 – 12x

Considerando os limites de integração:

I = [(4/5)25 – 12(2)] – [(4/5)0

5 – 12(0)]

I = [(4/5)25 – 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;

Page 38: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 39: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 40: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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.

Page 41: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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” = 3xy2 – 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)

Page 42: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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‟ = 4xy2 – 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

Page 43: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 44: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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” = 3xy2 – 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

Page 45: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

351

i = 1:

x1 = 0,0; y1 = 1; y1‟ = z1 = -2 (condição inicial)

y1‟‟ = z1‟ = 3y1x12 – 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‟ = 3y2x22 – 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‟ = 3y3x32 – 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‟ = 3y4x42 – 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.

Page 46: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 47: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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.

Page 48: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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‟ = 3x2 – 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) = y2

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! ♣

Page 49: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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 de termos 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‟ + (h2/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:

Page 50: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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) = 3x2 – 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,

Page 51: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 52: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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) = y2

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

Page 53: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 54: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 55: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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.

Page 56: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

362

PROVA 32 – Equações Diferenciais de Ordem Superior

FOLHA DE QUESTÕES:

Questão 1 (dissertativa) – 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.

yiv

= f(x, y, y‟, y‟‟, y‟‟‟) = 17 x2 - 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 x2 + 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! ♣

Page 57: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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‟) = 5x2y -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

Page 58: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

yiv

= f(x, y, y‟, y‟‟, y‟‟‟) = 17 x2 - 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:

Page 59: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

365

y‟ = z

z‟‟‟ = 17 x2 - 5 y

2 + y‟ – 17y‟‟ +yy‟‟‟ + 4

Agora, fazendo z‟ = w, tem-se o sistema:

z‟ = w

y‟ = z

w‟‟ = 17 x2 - 5 y

2 + y‟ – 17y‟‟ +yy‟‟‟ + 4

Finalmente, fazendo w‟ = t, tem-se

z‟ = w

y‟ = z

w‟ = t

t‟ = 17 x2 - 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 x2 + 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‟ = 12x2 + 3y

2 + z -17

i = 1:

x1 = 1,5; y1 = 2; y‟1 = z1 = 2 (condições iniciais)

Page 60: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

366

Com o emprego da segunda equação do sistema,

z‟1 = 12x12 + 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 = 12x22 + 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 = 12x32 + 3y3

2 + z3 -17

= 12(1,7)2 + 3(2,64)

2 + 7,664 -17

= 46,2528

Page 61: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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 = 12x42 + 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

Page 62: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 63: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 64: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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. *)

Page 65: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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.

Page 66: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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) = 5x3 + 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! ♣

Page 67: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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) = 2x3 + 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) = 7x5 – 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! ♣

Page 68: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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 = AeBx

(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) xi2 Yi

Questão 4 (algoritmo) – Por favor, elabore um algoritmo para ajustar a curva

exponencial Y = ABx 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.

Page 69: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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 x2

– 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 x2

– 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

Page 70: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

376

PARTE II

PROJETOS

Page 71: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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. *)

Page 72: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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}

Page 73: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 74: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 75: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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. *)

Page 76: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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): *)

Page 77: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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.

Page 78: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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 begin

h[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: *)

Page 79: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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 <= 4) do

begin

if ((xint>x[i])and(xint<x[i+1])) then

begin

k:= i+1; i:= 5;

end;{if}

end;{while}

(* 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;

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: *)

readkey;

writeln('Interpolação com Spline Cúbica Natural');

readkey;

writeln('Pontos Lidos:');

readkey;

for i:= 0 to 4 do begin

Page 80: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

386

writeln('x(',i,') =',x[i],' y(',i,') =',y[i]);

readkey;

end;{for}

writeln('Espaçamentos:');

for i:= 1 to 4 do begin

writeln('h(',i,') = ',h[i]);

readkey;

end;{for}

writeln('Sistema de Equações Lineares: ');

writeln('Matriz a(3X3):');

for i:= 1 to 3 do begin

for j:= 1 to 3 do begin

writeln('a(',i,',',j,') = ',a[i,j]);

readkey;

end;{for}

end;{for}

writeln('Vetor dos Termos Independentes: ');

for i:= 1 to 3 do begin

writeln('w(',i,') = ',w[i]);

readkey;

end;{for}

writeln('Determinantes:');

writeln('det = ',det);

writeln('det1 = ',det1);

writeln('det2 = ',det2);

writeln('det3 = ',det3);

readkey;

writeln('Derivadas de Segunda Ordem:');

for i:= 0 to 4 do begin

writeln('z(',i,') = ',z[i]); readkey;

end;{for}

writeln('Coeficientes do Polinômio Sk(x):');

readkey;

writeln('as(',k,') = ',as[k]);

writeln('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.}

Page 81: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 82: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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.

Page 83: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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‟ = 3x2 – 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

Page 84: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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: *}

Page 85: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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.

Page 86: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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.

Page 87: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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. *}

Page 88: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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.

Page 89: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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 x2 + 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‟ = 12x2 + 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

Page 90: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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;

Page 91: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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. *}

Page 92: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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.

Page 93: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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‟‟ = 12x2 + 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) = 12x2 + 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 ‟

Page 94: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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]);

Page 95: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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. *}

Page 96: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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.

Page 97: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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‟‟ = 12x2 + 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ável auxiliar z:

y‟ = f(x,y,z) = z

z‟ = g(x,y,z) = 12x2 + 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]);

Page 98: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 99: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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.

Page 100: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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}

Page 101: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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]);

m4[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;

Page 102: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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

Page 103: LIVITEC - Laboratório de Informática para Vigilância ... · Neste Volume III de Cálculo Numérico em Computadores - Provas e Projetos, completamos e encerramos a coleção iniciada

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.