Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
CEFET-RJ Cálculo Numérico (Laboratório) Profª Natalia Silveira Engenharia T1 – Série de Taylor A partir do exemplo a seguir, calcule o erro percentual da Série de Taylor da função f(x)=cos(bx), para quaisquer número de termos e ponto de expansão x0, onde 2x0 . A seguir é apresentado um exemplo de análise da Série de Taylor da função f(x)=sen(bx). Arquivo Fonte: taylor01.for Arquivo de entrada de dados: taylor01.1 ( x ) Resultados: Série de Taylor da função f(x) = sen(x), com o ponto de expansão x0=0, constante, variando apenas o número de termos da série (5, 9 e 13). Série de Taylor (x0 constante) -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5 -3.5 -3.0 -2.5 -2.0 -1.5 -1.0 -0.5 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 x(rad) f(x)=sen(x) F(x)(x0=0,nt=5) F(x)(x0=0,nt=9) f(x)(x0=0,nt=13) Observa-se no gráfico acima que os resultados encontrados para F(x) com 5, 9 e 13 termos, afastam-se da solução analítica f(x) em pontos afastados de x0=0. Pode-se notar também que quanto menor o número de termos da série, maior é o erro, ou seja, maior é a diferença )x(f)x(F . Sugere-se traçar um gráfico (E(%) x X) comparando os erros percentuais para n_termos diferentes. Série de Taylor da função f(x)=sen(x) com o número de termos da série constante igual a 5 e o ponto de expansão x0 variando (-2.0, 0 e 1.5 rad). Série de Taylor (n_t constante) -10 -5 0 5 10 15 -3.5 -3.0 -2.5 -2.0 -1.5 -1.0 -0.5 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 x(rad) f(x)=sen(x) F(x)(x0=-2.0,nt=5) F(x)(x0=0,nt=5) F(x)(x0=1.5,nt=5) x0=-2.0 x0= 0 x0= 1.5 A partir do gráfico anterior conclui-se que a série F(x) é igual à solução analítica em seus respectivos pontos de colocação. Pode-se concluir também que em cada uma das séries, quanto mais longe o ponto x está do ponto de colocação x0 maior o erro em relação à solução analítica (f(x)). Sugere-se traçar um gráfico (E(%) x X) comparando os erros percentuais para x0 diferentes. Arquivo Maple: taylor.mws A seguir são apresentados os comandos do programa Maple que permitem calcular séries de Taylor de uma função: > b:=1: nt1:=5: nt2:=nt1+4: nt3:=nt2+4; x0:= 0: := nt3 13 > convert(evalf(taylor(cos(b*x),x=x0,nt1)),polynom); 1. 0.5000000000 x2 0.04166666667 x4 > convert(evalf(taylor(cos(b*x),x=x0,nt2)),polynom); 1. 0.5000000000 x2 0.04166666667 x4 0.001388888889 x6 0.00002480158730 x8 > convert(evalf(taylor(cos(b*x),x=x0,nt3)),polynom); 1. 0.5000000000 x2 0.04166666667 x4 0.001388888889 x6 0.00002480158730 x8 0.2755731922 10-6 x10 0.2087675699 10-8 x12 > taylor01.for c ############################################################# c Este programa calcula o erro percentual da Série de Taylor da c função sen(bx), expandida no ponto x0 implicit double precision(a-h,o-z) dimension a(50) open(5,file='taylor01.1',status='old') open(6,file='taylor02.2',status='unknown') c Ponto de expansão da série write(*,*)' Entre com x0:' read(*,*)x0 c Grau da série polinomial mais um write(*,*)' Entre com o numero de termos da Serie de Taylor:' read(*,*)n_termos c Coeficiente multiplicador do ângulo x write(*,*)' Entre com o coeficiente b de sen(bx):' read(*,*)b c Número de abscissas read(5,*)n_x c Impressão do cabeçalho write(6,5) c determinação dos coeficientes da série de Taylor do n=1,n_termos i=1 if(mod(n-1,2).eq.0) then !par j=1 k=0 if(mod(n-1,4).eq.0) then !múltiplo de 4 i=2 endif else !ímpar j=0 k=1 if(mod((n-2),4).eq.0) then !múltiplo de 4 + 1 i=2 endif endif a(n)=(-1.d0)**(i)*b**(n-1)*sin(b*x0)**(j)*cos(b*x0)**k enddo do icont=1,n_x c Leitura das abscissas em arquivo read(5,*) x fxt=0. do n=1,n_termos c solução numérica fxt=fxt+a(n)*(x-x0)**(n-1)/fat(n-1) enddo c solução analítica fxe=sin(b*x) c erro percentual if(fxe.ne.0) then erro_p=abs((fxt-fxe)/fxe)*100.d0 write(6,15)x,fxe,fxt,erro_p else write(6,20)x,fxe,fxt endif enddo 5 format(14x,'x',26x,'f(x)',23x,'F(x)',23x,'E(%)') 15 format(3(f25.14,2x),es25.15) 20 format(3(f25.14,2x),' - ') stop end c ############################################################## function fat(n) implicit double precision(a-h,o-z) integer n fat=float(n) do i=n,2,-1 xi=float(i) fat=fat*(xi-1.) enddo if(n.eq.0) fat=1.d0 return end c ############################################################## taylor01.1 101 -3.1415926536 -3.0787608005 -3.0159289474 -2.9530970944 -2.8902652413 -2.8274333882 -2.7646015352 -2.7017696821 -2.6389378290 -2.5761059759 -2.5132741229 -2.4504422698 -2.3876104167 -2.3247785637 -2.2619467106 -2.1991148575 -2.1362830044 -2.0734511514 -2.0106192983 -1.9477874452 -1.8849555922 -1.8221237391 -1.7592918860 -1.6964600329 -1.6336281799 -1.5707963268 -1.5079644737 -1.4451326207 -1.3823007676 -1.3194689145 -1.2566370614 -1.1938052084 -1.1309733553 -1.0681415022 -1.0053096491 -0.9424777961 -0.8796459430 -0.8168140899 -0.7539822369 -0.6911503838 -0.6283185307 -0.5654866776 -0.5026548246 -0.4398229715 -0.3769911184 -0.3141592654 -0.2513274123 -0.1884955592 -0.1256637061 -0.0628318531 0.0000000000 0.0628318531 0.1256637061 0.1884955592 0.2513274123 0.3141592654 0.3769911184 0.4398229715 0.5026548246 0.5654866776 0.6283185307 0.6911503838 0.7539822369 0.8168140899 0.8796459430 0.9424777961 1.0053096491 1.0681415022 1.1309733553 1.1938052084 1.2566370614 1.3194689145 1.3823007676 1.4451326207 1.5079644737 1.5707963268 1.6336281799 1.6964600329 1.7592918860 1.8221237391 1.8849555922 1.9477874452 2.0106192983 2.0734511514 2.1362830044 2.1991148575 2.2619467106 2.3247785637 2.3876104167 2.4504422698 2.5132741229 2.5761059759 2.6389378290 2.7017696821 2.7646015352 2.8274333882 2.8902652413 2.9530970944 3.0159289474 3.0787608005 3.1415926536