trabalho teorico e computacional .pdf

30
UNIVERSIDADE FEDERAL DA BAHIA INSTITUTO DE CIÊNCIAS AMBIENTAIS E DESENVOLVIMENTO SUSTENTÁVEL- (ICADS) COLEGIADO DE FÍSICA DISCIPLINA: CALCULO NUMÉRICO Dérick Gabriel F. Borges Calculo numérico abordagem teórica e computacional Professor: Kennedy Morais Fernandes Barreiras-ba, 8 de outobro de 2012

Upload: lucassanches

Post on 24-Sep-2015

219 views

Category:

Documents


2 download

TRANSCRIPT

  • UNIVERSIDADE FEDERAL DA BAHIA INSTITUTO DE CINCIAS AMBIENTAIS E

    DESENVOLVIMENTO SUSTENTVEL- (ICADS) COLEGIADO DE FSICA

    DISCIPLINA: CALCULO NUMRICO Drick Gabriel F. Borges Calculo numrico abordagem terica e computacional

    Professor: Kennedy Morais Fernandes

    Barreiras-ba, 8 de outobro de 2012

  • Sumrio 1- Introduo

    -Conceito de calculo numrico -Aplicaes -erros

    2- Raizes -Mtodo da Bisseo -Mtodo de Newton -Mtodo da Secante

    3- Sistemas Lineares -Mtodo da Eliminao Gaussiana -Mtodo da Gauss Seidel

    4- Ajuste de curvas -Mtodos do Mnimo Quadrado

    5- Interpolao -Polinmio de Lagrange -Spline Cubico

    6- Integrao Numrica -Regra do Trapzio -Mtodo de Simpson

    7- Resoluo de EDO -Mtodo Euler -Mtodos de Runge Kutta

    8- Concluso

    9- Referncias

  • 1. Introduo Clculo Numrico e o ramo da matemtica que desenvolve algoritmos para simular processos matemticos complexos provenientes do mundo real. Esses algoritmos so seqncia de instrues ordenadas, de modo a fornecer em seu decurso, a soluo para um problema especfico. No contexto de Clculo Numrico, os algoritmos so denominados de Mtodos Numricos.[1] Esses mtodos se aplicam principalmente a problemas que no apresentam uma soluo exata(situao real), portanto precisam ser resolvidos numericamente. Calculo numerico aplica-se as cincias exatas e as engenharias, geralmente em problemas fisicos do contexto real, como: - eltricidade - petrleo - cores - presso - resistncia A utilizao de simuladores numricos para determinao da soluo de um problema requer a execuo da seguinte seqncia de etapas: Etapa 1: Definir o problema real a ser resolvido Etapa 2: Observar fenmenos, levantar efeitos dominantes e fazer referncias a conhecimentos prvios fsicos e matemticos Etapa 3: Modelagem, fase de obteno de um modelo matemtico que descreve um problema fsico em questo. Etapa 4: Resoluo, fase de obteno da soluo atravs da aplicao de mtodos numricos. Ao se tentar representar um fenmeno fsico por meio de um mtodo matemtico, raramente se tem uma descrio correta deste fenmeno, normalmente, so necessrias vrias simplificaes do mundo fsico para que se tenha um modelo. Tais simplificaes resultam em erros. A resoluo de modelos matemticos exige, muitas vezes, o uso de instrumentos de clculo que necessitam de aproximaes, tais aproximaes podem gerar erros, tais como: [1] - Erros inerentes. - Erros de arredondamento. - Erros de truncamento. Erro inerentes, so erros que existem nos dados e so causados pelos erros dos prprios equipamentos utilizados na captaao dos dados. Erros de arredondamento, so os erros originados pela representao do nmeros reais utilizando-se apenas um numero finito de casas decimais. Erros de truncamento, so os erros causados quando utilizamos num processo algoritmo infinito apenas uma parte finita do processo. A noo de erro sempre estar presente em todos os campos do Clculo Numrico, pois sempre temos dados nem sempre exatos, as operaes sobre valores no exatos propagam os erros e os Mtodos Numricos so, em geral mtodos de aproximao. [1]

  • 2. Raizes Nas mais diversas reas das cincias exatas ocorrem, frequentemente, situaes que envolvem a resoluo de uma equao do tipo () = 0 A idia central dos mtodos numricos para encontrar as raizes de uma equao, parti de uma aproximao inicial para a raiz (um intervalo onde imaginamos a raiz estar contida) e em seguida refinar essa aproximao atravs de um processo iterativo. [2] A forma como se efetua o refinamento que diferencia os mtodos. Temos varios mtodo, sero apontados nesse trabalho o da Bisseao, de Newton, da Secante. Mtodo da Bisseo, parte de um intervalo inicial [a,b] que se sabe conter o zero de , suposto nico. Em cada iterao produzido um intervalo com metade do comprimento do intervalo actual. Para tal, divide-se o intervalo actual a meio e escolhe-se o subintervalo esquerdo ou direito de forma a que a funo tenha sinais diferentes nos extremos do subintervalo escolhido. Ou seja, sendo [!, !] o intervalo na iterao n, calcula-se !!! = !!!!!! . O valor + 1 substitui ! ou ! consoante !!! (! ) < 0 ou !!! (! ) < 0 . Desta forma, assegura-se que s [!, !] em qualquer iterao. O erro absoluto da estimativa de ! e dado por !!!!! .[3] Calculando a raiz da funo = 1+ + ! pelo mtodo da bisseo, com erro de 10!!.

    Fortran 1 (implementao) program bissecao implicit none real xm,xe,xd,f,e integer result,i result=21 open(unit=result,file='result.txt') xe=-2. xd=-1. e=10**(-5.) xm=(xe+xd)/2. do while (abs(xe-xd)>e) if (f(xe)*f(xm)>0.) then xe=xm else xd=xm end if xm=(xe+xd)/2. write(*,*)'raiz',xm end do end

  • function f(x) real f,x f=1+x+exp(x) return end Resultados obtidos n ! f(!) ! f(!) !!! f(!!!) 0 -2.000 -0.865 -1.000 +0.368 -1.500 -0.277 1 -1.500 -0.277 -1.000 +0.368 -1.250 +0.037 2 -1.500 -0.277 -1.250 +0.037 -1.375 -0.122 3 -1.375 -0.122 -1.250 +0.037 -1.313 -0.043 4 -1.313 -0.043 -1.250 +0.037 -1.281 -0.004 5 -1.281 -0.004 -1.250 +0.037 -1.266 +0.016 6 -1.281 -0.004 -1.266 +0.016 -1.276 +0.006 7 -1.281 -0.004 -1.273 +0.006 -1.277 +0.001 Tabela 1 A soluo da equao ser s = 1.277 4 10!!, ou seja, s [1.281, 1.273].

    Mtodo da Newton, e um dos mtodos mais poderosos para resolver equaes do tipo () = 0. Este mtodo parte de uma estimativa inicial x0 e gera uma sucesso {!} de uma forma recorrente. Cada novo valor da sucesso, !!!, e determinado como sendo a abcissa do ponto de interseo com o eixo dos xx da reta tangente a funo no ponto (!, ((!)), ou seja, no ponto correspondente ao valor anterior da sucesso. A expresso de interao que permite determinar !!! em funo de ! e dado por : [3] y = f(!) + f(!) ( !) ! + 1 = ! (!)(!) Calculando a raiz da funo = 1+ + ! pelo mtodo de Newton, erro de 10!!.

    Fortran 2 (implementao) program newton implicit none real xo,xn,f,df,e,h integer i xo=0.

  • e=10**(-6.) xn=xo-(f(xo)/df(xo)) do while (abs(f(xn))>e) xo=xn xn=xo-(f(xo)/df(xo)) print*,xn end do end function f(x) real f,x f=1+x+exp(x) return end function df(x) real df,x,f,h h=0.01 df=(f(x+h)-f(x))/h return end Resultados obtidos n ! f(!) f(!) !!! erro 0 -1.0000 +3.68 10!! +1.368 -1.26894 1.2 10!! 1 -1.26894 +1.22 10!! +1.281 -1.27845 1.5 10!! 2 -1.27845 +1.27 10!! +1.278 -1.27846 1.6 10!!! Tabela 2 A soluo aproximada ser s 1.27846

    Mtodo da Secante, e semelhante ao mtodo de Newton, com a diferena de que a reta tangente a funo substituda pela reta secante nos dois ltimos pontos. Este mtodo obriga a que em cada iterao sejam guardadas as duas ltimas estimativas da soluo a determinar. Essa reta e descrita pela equao: [3] = !!! + !!! !!! ( !!!)

    !!! = + 1 (!!!) (!!!) Calculando a raiz da funo = 1+ + ! pelo mtodo da Secante, com erro de 10!!.

  • Fortran 3 (implementao) program newton implicit none real a,b,xn,f,e,h integer i a=-1. b=0. e=10**(-5.) xn=a-(f(a)/(f(a)-f(b)))*(a-b) do while (abs(f(xn))>e) a=xn xn=a-(f(a)/(f(a)-f(b)))*(a-b) print*,xn end do end function f(x) real f,x f=1+x+exp(x) return end Resultados obtidos n !!! ! !!! f(!!!) erro 0 -1.00000 -1.10000 -1.27249 7.65 10!! 7.6 10!! 1 -1.10000 -1.27249 -1.27834 1.55 10!! 1.7 10!! 2 -1.27249 -1.27834 -1.27846 1.01 10!! 1.2 10!! Tabela 3 A estimativa obtida s 1.27846.

    3. Sistemas lineares A resoluo de sistemas de equaes lineares um dos problemas numricos mais comuns em aplicaes cientficas. Tais sistemas surgem, por exemplo, em conexo com a soluo de equaes diferenciais parciais, determinao de caminhos timos em redes e interpolao o de pontos, dentre outros. Vamos abordar nesse capitulo dois mtodos para soluo de sistemas lineares o mtodo de Eliminao Gaussiana e Gauss Seidel.[4]

    Eliminao Gaussiana, e um mtodo exato tambm chamado de mtodo de Gauss Simples, consiste em transformar o sistema dado num sistema triangular equivalente atravs de uma sequncia de operaes elementares sobre as linhas do sistema original, isto , o sistema equivalente obtido atravs

  • da aplicao repetida da operao, substituir uma equao pela diferena entre essa mesma equao e uma outra equao multiplicada por uma constante diferente de zero. claro que tal operao no altera a soluo do sistema, isto , obtem-se com ela outro sistema equivalente ao original. O objetivo organizar essa sequncia de operaes de tal forma que o sistema linear resultante seja triangular superior. Utilizando o mtodo de Eliminao Gaussiana para encontrar a soluo para !, ! !. 3 1 11 4 20 2 5 !!! = 745 ! = 000 resultados obtidos: Soluo exata 2.0000 0.0000 1.0000 Tabela 4 Os resultados mostrados na tabela 4 corresponde a soluo exata para !, ! ! nessa ordem.

    Fortran 4 (implementao)

    program elininacaogauss implicit none real A(100,100), B(100), X(100), max, aux integer i, j, k, n, entrada,saida entrada = 12 saida=11 n = 3 open (unit = entrada, file = 'entrada.txt') open (unit = saida, file = 'saida.txt') do i=1,n,1 read (entrada,*) (A(i,j), j=1,n,1) end do do i=1,n,1 read (entrada,*) B(i) end do do i=1,n-1,1 k = i max = abs(A(i,i)) do j=i+1,n,1 if(abs(A(j,i)) > max) then max = abs(A(j,i))

  • k = j end if end do if (i .ne. k) then do j=1,n,1 aux = A(i,j) A(i,j) = A(k,j) A(k,j) = aux end do aux = B(i) B(i) = B(k) B(k) = aux end if do j=i+1,n,1 aux = A(j,i)/A(i,i) A(j,i) = 0 do k=i+1,n,1 A(j,k) = A(j,k) - aux*A(i,k) end do B(j) = B(j) - aux*B(i) end do end do do i=n, 1, -1 X(i) = B(i) do j=i+1,n,1 X(i) = X(i) - A(i,j)*X(j) end do X(i) = X(i)/A(i,i) end do do i=1,n,1 write(saida,*) X(i) end do close (entrada) close (saida) end

  • Mtodo de Gauss Seidel, sendo um mtodo interativo, tem melhor comportamento do que os mtodos exatos quando se trabalha com matrizes esparsas. um dos mtodos iterativos mais comuns e simples para ser programado em computador. A idia principal , cada coordenada do vetor correspondente nova aproximao calculada a partir da respectiva equao do sistema, utilizando-se as coordenadas do vetor aproximao da iterao anterior, quando essas ainda no foram calculadas na iterao corrente, e as coordenadas do vetor aproximao da iterao corrente, no caso contrrio. [5] A funo interao do mtodo de Gauss Seidel pode ser expressada por: !! = ! !"!!!!!!!! !"!!!!!!!!!!!! = 1

    Fortran 5 (implementao) program gausseidel implicit none real A(100,100), B(100), X(100) integer n, entrada, i, j, k,saida character * 15 texto entrada = 12 open (unit = entrada, file = 'dados.txt') open (unit = saida, file = 'saida.txt') read (entrada,*) texto read (entrada,*) n read (entrada,*) texto do i=1,n,1 read (entrada,*) (A(i,j), j=1,n,1) end do read (entrada,*) texto do i=1,n,1 read (entrada,*) B(i) end do do i=1,n,1 X(i) = 0 end do do k=1,100,1 do i=1,n,1

  • X(i) = B(i) do j=1,i-1,1 X(i) = X(i) - A(i,j)*X(j) end do do j=i+1,n,1 X(i) = X(i) - A(i,j)*X(j) end do X(i) = X(i)/A(i,i) end do end do do i=1,n,1 write(saida,*) X(i) end do end Aplicando-se Gaus Seidel, para calcular !, ! ! . 3 1 11 4 20 2 5 !!! = 745 ! = 000 Resultados obtidos Interaes ! ! ! 1 2.3333 0.4167 0.8333 2 1.9167 0.1042 0.9583 3 1.9792 0.0260 0.9896 4 1.9942 0.0065 0.9974 5 1.9987 0.0016 0.9993 6 1.9997 0.0004 0.9998 7 1.9999 0.0001 1.0000 Soluo exata 2.0000 0.0000 1.0000 Tabela 5 Observa-se, que com poucas interaes se obteve o soluo exata ! = 2.000, ! = 0.000, ! = 1.000

    4. Ajuste de curvas Seja um conjunto de dados contendo n pares de valores (x, y) obtidos numrica ou experimentalmente. De modo a calcular qualquer valor de y distinto dos valores tabelados, ajustamos uma funo y = f(x) atravs do chamado Mtodo dos Mnimos Quadrados.

  • Considere uma equao relacionando a varivel y com a varivel independente x, como y = f (x) , onde y indica que este o valor aproximado de y. Queremos encontrar a funo y = f (x) , cujo desvio em relao aos valores y seja expresso como ! = ! ! . Por uma questo de convenincia trabalharemos com o desvio quadrtico !! = (! !)! A funo y = f ( x ) que melhor ajusta os pontos (x, y) dados aquela que minimiza o somatrio dos desvios quadrticos S: = !!!!!! = (! !)!!!!! A condio de minimizao da funo S satisfeita fazendo-se dS = 0, ou seja, necessitamos calcular a derivada da funo S em relao aos parmetros de ajuste da funo y = f(x) para que possamos encontrar o sistema de equaes denominado equaes normais que conduz ao melhor ajuste dos pontos (x,y) pela funo y = f(x) escolhida. Para cada tipo de funo de ajuste existe um sistema de equaes normais que minimiza a soma dos desvios quadrticos S. Temos varios ajustes que se fundamentam nos mtodos dos Mnimos Quadrados, nesse trabalho ser apresentado ajuste linear, ajuste exponencial e ajuste potencial. Dados os pontos abaixo, faremos 3 ajustes: linear, exponencial e potencial. x 1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 2.8 3.0 y 0.525 0.8448 1.2807 1.8634 2.6326 3.6386 4.944 6.6258 8.7768 11.5076 14.9484 Tabela 6 Ajuste linear, funo na forma = ! + ! . A determinao dos coeficientes ! ! pelo mtodo dos mnimos quadrados e dado pelas expresses: ! = ! !!!! !!!! !!!!!!!! ! ( !!!! )!!!!! ! = !!!! !!!! !!!! ! ( !!!!!!!! )! Fortran 6 (implementao) program ajuste implicit none real X(100), Y(100), A(100,100), B(100), max, aux integer i, j, k, entrada , saida, n, pontos entrada = 12

  • saida = 14 open (unit = entrada, file = 'entrada.txt',status='old') open (unit = saida, file = 'saida.txt') read(entrada,*) n ! n determina o tipo de ajuste polinomial read(entrada,*) pontos !quantidade de pontos do i = 1, pontos, 1 read(entrada,*) X(i), Y(i) end do close(entrada) do i=1,n,1 do j=1,n,1 A(i,j) = 0 end do end do A(1,1) = pontos do i=1,n,1 do j= 1,pontos,1 A(i,n) = A(i,n) + X(j)**(n + i - 2) end do end do do j=2,n-1,1 do i=1,pontos,1 A(1,j) = A(1,j) + X(i)**(j - 1) end do end do do i=2,n,1 do j=1,n-1,1 A(i,j) = A(i - 1, j + 1) end do end do do i=1,n,1 B(i) = 0 end do do i=1,n,1 do j=1,pontos,1 B(i) = B(i) + (X(j)**(i - 1))*Y(j) end do

  • end do ! inicio da resoluo do sistema do i=1, n-1, 1 k=i max=abs(A(i,i)) do j=i+1,n,1 if (abs(A(j,i)) > max) then max = abs(A(j,i)) k = j end if end do if (i .ne. k) then do j=1, n, 1 aux = A(i,j) A(i,j) = A(k,j) A(k,j) = aux end do aux = B(i) B(i) = B(k) B(k) = aux end if do j=i+1,n,1 aux=A(j,i)/A(i,i) A(j,i)=0 do k=i+1,n,1 A(j,k)=A(j,k) - A(i,k)*aux end do B(j)=B(j) - B(i)*aux end do end do do i=n,1,-1 X(i) = B(i) do j=i+1,n,1 X(i)=X(i) - A(i,j)*X(j) end do

  • X(i)=X(i)/A(i,i) end do write (saida,*) 'Coeficientes do polinomio' do i=1,n,1 write(saida,*) X(i) end do close(saida) end solues logo o ajuste Linear : = 8.3187+ 6.770 O grfico 1 apresenta o ajuste Linear com os pontos da tabela 6.

    Ajuste Exponencial, funo na forma = !!! , precisa ser linearizada. Linearizao y = ln(y) ; ln = (!)+ (!) Logo ! = !! + !!

  • Soluo do ajuste exponencial : = 0.12349 !.!"#"! O grfico 2 apresenta o ajuste exponencial com os pontos da tabela 6.

    Ajuste potencial, funo na forma = !!! , precisa ser linearizada. Linearizao y = ln(y) ; x = ln(x). ln = ln ! + !ln () logo ! = !! + !! soluo do ajuste potencial : = 0.47227 !.!"#$ O grfico 3 apresenta o ajuste potencial com os pontos da tabela 6.

  • O grfico 4 apresenta todos os ajustes com os pontos da tabela 6. Utilizando se conceitos de estatstica, regra de Pearson obtemos que o melhor ajuste e o exponencial. Visualmente nota se tambm que o ajuste exponencial aproxima se melhor dos pontos do que os outros ajustes.

    5. Interpolao O problema de interpolao consiste em, dado um conjunto de pares ordenados (x0, y0), (x1, y1), . . . , (xn, yn), determinar uma funo g, designada funo interpoladora, tal que : g xi = yi , i = 0,1, . . . ,n. Os valores x0,x1,...,xn designam-se por ns de interpolao e devem satisfazer a condio i j xi xj, ou seja, serem todos diferentes. Os correspondentes valores y0, y1, . . . , yn designam-se por valores nodais. Perante um dado problema de interpolao ser necessrio ter em considerao diversas questes, das quais se destacam a escolha da classe de funes interpoladoras a utilizar e a forma de determinar concretamente a funo interpoladora. O problema de interpolao tem aplicaes em diversas situaes como: - O clculo de funes fornecidas por tabelas quando se pretende avaliar funo em pontos no tabelados. - Quando apenas se conhecem os valores de uma funo em certos pontos, por exemplo resultantes de medidas experimentais, e se pretende avaliar a funo em novos pontos. - Aproximao de funes cujo clculo seja complexo ou exija grande esforo.

  • - A base de muitos mtodos numricos. Dentre os tipos de interpolao se destacam interpolao linear, interpolao polinomial e interpolao trigonomtrica. Neste trabalho iremos apresentar a interpolao polinomial pela forma de Lagrange que ser definido mas adiante. Mas muitas vezes porem ocorre o inconveniente de uma funo g qualquer apresentar um valor muito discrepante em relao a um dado valor de f, valor real, ai que surge a necessidade de se utilizar um outro tipo de interpolao o Spline, que interpola f em grupos de poucos pontos. Nesse trabalho usaremos o Spline Cbico que tambm ser definido mais adiante. Forma Lagrange Num conjunto de pontos distintos (!)!!!! . Os polinmios (de grau n) definidos pela expresso: ! () = !! ! = 0,1!!!!,!!! designam-se por polinmios de Lagrange, relativos aos pontos x0, x1, . . . , xn. O polinmio interpolador na forma de Lagrange obtido como uma combinao linear dos polinmios de Lagrange relativos aos pontos em questo. Os coeficientes desta combinao linear sero os valores de y a interpolar. O polinmio p, de grau menor ou igual a n, que interpola o conjunto de valores y0, y1, ... , yn ns pontos distintos x0, x1, ... , xn dado por: [3] ! = !!()!!!! = ! Seja a funo = sen conhecida nos pontos da tabela 7.

    x y 0 0,031570 2 1.278745 4 -1.521074 6 -0.591799 8 2.793026 Tabela 7 Temos no grfico 5 a curva gerada pela interpolao de Lagrange, comparado com a curva exata.

  • Fortran 7 (implementao) program Lagrange implicit none real a, h, x(100), f(100), Paux(100), P integer i, j, entrada, saida, n entrada = 40 saida = 20 h = 0.1 !intervalo com o qual os pontos sero imprimidos na sada open (unit=entrada,file='lagrangeentrada.txt') open (unit=saida,file='lagrangesaida.txt') read (entrada,*) n !nmero de pontos do i=1,n,1 read(entrada,*) x(i), f(i) end do a = x(1) do while (a < x(n)) do i=1,n,1 Paux(i) = 1 end do do j=1,n,1

  • do i=1,j-1,1 Paux(j) = Paux(j)*(a - x(i))/(x(j) - x(i)) end do do i=j+1,n,1 Paux(j) = Paux(j)*(a - x(i))/(x(j) - x(i)) end do Paux(j) = Paux(j)*f(j) end do P=0 do i=1,n,1 P = P + Paux(i) end do write(saida,*) a,P a = a + h end do close (entrada) close (saida) end

    Forma Spline Cbica Suponha que f(x) esteja tabelada nos pontos ! , = 0,1,2, , a funo !() chamada spline cbica interpolante de f(x) nos ns ! , = 0,1,2, , se existem n polinmios de grau 3, !(), = 1, , tal que: ! = !( !)! + !( !)! + !( !)! + !, = 1,2, ,.

    !() Tem derivadas de primeira e segunda ordem contnuas, o que faz com que a curva ! () no tenha picos e nem troque abruptamente de curvatura nos ns. [6] Seja a mesma funo = sen do exemplo anterior, conhecida nos pontos da tabela 7. Temos o grfico da curva gerada pela interpolao de Spline Cbica. Temos no grfico 6 a curva gerada por Spline Cbica, comparado com a curva da soluo exata.

  • Fortran 8 (implementao) program splinecubico implicit none real X(0:100), Y(0:100), A(100,100), B(100), G(0:100), h, t, z real ak, bk, ck, dk, s integer n, i, j, k, entrada, saida entrada = 100 saida = 200 open (unit=entrada,file='splineentrada.txt') open (unit=saida,file='splinesaida.txt') read(entrada,*) n !numero de pontos read(entrada,*) h !intervalo entre os pontos !pontos do i=0,n-1,1 read(entrada,*) X(i), Y(i) end do close (entrada) do i=1, n-2, 1 do j=1, n-2,1 A(i,j) = 0 end do end do

  • do i=1, n-2,1 A(i,i) = 4*h end do do i=1,n-3,1 A(i,i+1)=h A(i+1,i)=h end do !imprimindo matriz !do i=1, n-2, 1 ! write(saida,*) (A(i,j), j=1, n-2, 1) !end do do i=1,n-2,1 B(i) = (6/h)*(Y(i+1) -2*Y(i) + Y(i-1)) end do !encontrando os gi com gausseidel do i=0,n-1,1 G(i) = 0 end do do k=1,100,1 do i=1,n-2,1 G(i) = B(i) do j=1,i-1,1 G(i) = G(i) - A(i,j)*G(j) end do do j=i+1,n,1 G(i) = G(i) - A(i,j)*G(j) end do G(i) = G(i)/A(i,i) end do end do !encontrando coeficientes para cada Si e imprimindo os pontos z = x(0) t = 0.1 !intervalo com o qual os pontos serao mostrados na saida do k=1, n-1,1 ak = (G(k) - G(k-1))/(6*h) bk = G(k)/2 ck = (Y(k) - Y(k-1))/h + (2*h*G(k) + G(k-1)*h)/6

  • dk = Y(k) do while (z
  • possui uma soluo analtica. Ela consiste na aproximao de uma integral definida do tipo: = !! por uma soma do tipo: = ()!! !(!)!!!! na qual ! so os valores da funo (), = !!! ! e ! um valor numrico de ponderao que tambm conhecido por funo peso. Nesse trabalho, nos restringiremos aos mtodos de integrao numrica para intervalo constante. A determinao desses mtodos consiste basicamente em avaliar o valor da funo peso ! . So os mtodos do Trapzio e Simpson. Regra do Trapzio, consiste em se aproximar o valor da funo contnua de () no intervalo [a,b] por uma funo de primeira ordem; isto, geometricamente, equivalente a aproximar uma curva qualquer por uma reta. Desta forma, a rea sob a funo (), que equivalente integral dessa funo, aproximada pela rea do trapzio cuja largura igual a (b a) e a altura mdia igual a [() + ()]/. Fazendo-se = , a frmula para a integral pode ser escrita como: [5] !! 2 [ + ] Calcular ! !! empregando a regra do trapzios. Soluo Exata Soluo pelo mtodo do trapzio Erro gerado 1.71828 172722 0.0089 Tabela 8 Como ilustrado na tabela 8 a soluo exata da equao ! !! 1.71828 . Utilizando n=4 obtemos com o mtodo do trapzio uma soluo para a mesma de 1.72722. Calculamos o erro pelo modulo da diferena entre as solues !"#$# !"#$%&'( , tivemos um erro de 0.0089.

    Fortran 9 (implementao)

    program trapzio implicit none real h,s,a,b,f ! a e b sao limite de integrcao integer n,solucao solucao=21 open(unit=solucao,file='solucao.txt') a=0. b=1.

  • n=4 h=(b-a)/n s=(h/2)*(f(0*h)+(2*f(1*h))+(2*f(2*h))+(2*f(3*h))+f(4*h)) write(solucao,*)'regra trapezio' ,s end function f(x) real f,x f = exp(x) return end

    Regra de Simpson consiste na aproximao da funo contnua f(x) no intervalo [a,b] por uma funo de segunda ordem, ou seja, na aproximao de uma curva por uma parbola. A frmula para a integral tem a forma: !! 3 [ ! + 4 ! + (!) Esta frmula tambm conhecida como regra de Simpson 1/3 por causa do fator que multiplica h. Observar que so necessrios, no mnimo, trs valores de f(!) para se calcular a integral pela regra de Simpson. Na notao usada aqui, ! = a, ! = b e ! um ponto equidistante de ! e !. Para n intervalos , a frmula pode ser escrita como: !! 3 [ ! + 4 ! + 2 ! ++ 2 !!! + 4 !!! + (!) na qual n par (correspondendo a um nmero par de intervalos de integrao) ou, equivalentemente, a regra de Simpson 1/3 s pode ser aplicada para um nmero mpar de pontos ! , f(!). [6] Calcular ! !! empregando a regra de Simpson 1/3. Soluo Exata Soluo pelo mtodo do Simpson Erro gerado 1.71828 1.71832 0.00004 Tabela 9 Como ilustrado na tabela 9, temos uma soluo exata para a equao ! !! de 1.71828. Utilizando n=4 pela regra do Simpson obtivemos uma soluo de 1.7832. Calculamos o erro pelo modulo da diferena entre as solues !"#$# !"#$!%& , tivemos um erro de 0.00004.

    Fortran 10 (implementao) program simpson implicit none real h,s,a,b,f ! a e b sao limite de integrcao integer n,solucao

  • solucao=21 open(unit=solucao,file='solucao.txt') a=0. b=1. n=4 h=(b-a)/n s=(h/2)*(f(0*h)+(4*f(1*h))+(2*f(2*h))+(4*f(3*h))+f(4*h)) write(solucao,*)'regra simpson' ,s end function f(x) real f,x f = exp(x) return end

    7. Resoluo de EDO

    Muitos problemas encontrados em engenharia e outras cincias podem ser formulados em termos de equaes diferenciais. Por exemplo, trajetrias balsticas, teoria dos satlites artificiais, estudo de redes eltricas, curvaturas de vigas, estabilidade de avies, teoria das vibraes, reaes qumicas e entre outras. Esse capitulo 7 tem como objetivo apresentar mtodos numericos que resolvam equaes diferenciais ordinrias, vamos abordar nesse trabalho o mtodo de Euler e mtodos de Runge Kutta. O mtodo de Euler, consiste em tomar a aproximao de primeira ordem de ( + ): + = + ! + () O resto o(h) indica que o erro em tomar essa aproximao ser, em geral da ordem de ! ou mais. Como ! = , o mtodo sugere que, na pratica, obtenhamos !!! = !!! = (! + ) como: !!! = ! + ! , ! A interao a partir do !acumular um erro da ordem de ! em cada etapa podendo acumular ao final um erro de !. Como = !!!! , ento o erro acumulado ser da ordem de . [3]

  • Considerando , ! !igual a zero. Calcule a distancia x percorrida em 10s, estabelecendo uma acelerao a constante de valor 5!!. Sendo a funo () =2,5. Atravs do mtodo de Euler, encontramos a soluo aproximada da equao Diferencial Ordinria do problema acima.

    ! = !!! + ()

    Fortran 11 (implementao) Program mruv " implicit none " real xo,vo,h,t,to,x,tf,v,ex integer i,n,dado " dado=20 open(unit=dado,file='exct.txt') tf= 10 " xo=0 " vo=0 " to=0 h=0.1 " i=0 n=(tfto)/h x=xo t=to write(dado,*)i,t,x,ex(t) doi=1,n,1 " x=x+h*v(t) " t=t+h write(dado,*)i,t,x,ex(t) end do " call system('pause') end " !.............. " function v(t) " real v,t,vo " v=vo+5*t " return " end " !...................... " function ex(t) " real ex,t " ex=2.5*t**2 " return " end Utilizado varios valores para h , observamos no grfico abaixo visualmente que o h=1 e o que se aproxima mais da soluo exata.

  • Mtodos de Runge-Kutta, so mtodos de passo simples requerem apenas derivadas de primeira ordem e pode fornecer aproximaes precisas com erros de truncamento da ordem de !, !, !, etc. Todas os mtodos de Runge-Kutta tm a seguinte forma geral: !!! = ! + (! ,! , ) onde , chamado de funo incremento, uma aproximao conveniente para f(x,y) no intervalo ! !!!.[5] O mtodo de Runge-Kutta de 4 ordem o mais usado na soluo numrica de problemas com equaes diferenciais ordinrias. Nesse trabalho ser apresentado um algoritmo para Runge Kutta de 4 ordem. Algoritmo Incio Se n = 0 Ento Escreva(Diviso imprpria) Seno Se n < 0 Ento Escreva(Intervalo invlido) Seno Incio h (xn x0)/n y y0 x x0 Para i = 1 at n faa Incio K1 f(x,y) K2 f(x + h / 2, y + h / 2 * K1)

  • K3 f(x + h / 2, y + h / 2 * K2) K4 f(x + h, y + h * K3) yy+h / 6*(K1+2*K2+2*K3+K4) xx+h Fim-Para Escreva(Valor da funo f no ponto k : , y) Fim Fim Variveis utilizadas no algoritmo: Reais: h, y, x, y0, x0, K1, K2, K3, K4 Inteiras: i, n 8. Concluso Foi demostrado com esse trabalho que calculo numrico, usado para resolver qualquer tipo de problema matemtico complexo. No captulo 2 o trabalho apresenta resoluo de raizes atravs de mtodos, entre os trs mtodos apresentado Bisseo, Newton e Secante, nota se que a melhor aproximao feita pelos mtodos foi a Secante e Newton, sendo que o mtodo da secante e menos complexo para se feito do que Newton, pois no precisamos da derivada da funo. No captulo 3 o trabalho apresento resoluo para sistemas lineares onde trabalhamos com os mtodos de Eliminao Gaussiana e o de Gauss Seidel, podemos observar com as tabelas 4 e 5 que os dois mtodo so eficientes. No captulo 4 foi apresentado ajuste de curvas pelo mtodo dos mnimos quadrados, em geral todo ajuste fundamenta-se nesse mtodo, o Fortran 6 apresentado faz qualquer ajuste; linear, parablico entre outros, s depende de seus dados de entrado para a leitura do programa. No captulo 5 foi apresentado dois mtodos para interpolao, Lagrange e Spline cubica bastantes eficientes, no exemplo apresentado o mtodo Spline cubica foi mas eficiente, mostrado no grfico 7. No captulo 6 foi apresentado dois mtodos para se fazer integraes, Trapzio e Simpson. Olhando se as tabelas 8 e 9 tem se que para o exemplo apresentado o mtodo de Simpson teve melhor soluo por apresentar menor erro. No captulo 7 apresentamos mtodos para resoluo de EDO, observa se com o grfico 8 que quanto menor o valor h escolhido melhor aproximao pelo mtodo de Euler. Conceituo se o mtodo de Runge Kutta e foi apresentado um algoritmo para resolues de 4 ordem. Enfim calculo numrico facilita a resoluo de problemas fsicos matemticos, com solues prximas da realidade que em geral seria infinito os clculos na mo .

  • 9. Referncias [1] Brito, N. S. D. Calculo Numrico [2] Pilling, S. Calculo Numrico [3] Matos, A. C. C. de. Apontamentos de Anlise Numrica [4] A.L. de Bortoli, C. Cardoso, M.P.G. Fachin & R.D. da Cunha. Calculo numrico com aplicaes. [5] Lira, W. W. M. L. Apostila de Calculo Numrico [6] Ruggiero, M. A. G. & Lopes, V. L. da R. Calculo numrico aspectos tericos e computacionais