• Anúncio Global
    Respostas
    Exibições
    Última mensagem

[Cálculo Numérico]Problema de Cálculo Numérico

[Cálculo Numérico]Problema de Cálculo Numérico

Mensagempor Piva » Qua Abr 11, 2012 15:10

Boa tarde a todos,

Estou com um pequeno problema em Cálculo numérico. Estou com um programa que rodo no force para a função do SENO. Só que estou com dificuldades para passá-la para COSSENO. Sou iniciante em cálculo numérico, se alguém puder me explicar como eu mudo para o COSSENO eu agradeceria. Eu ja entendi todo o funcionamento do código, porém estou errando em trocar a função.

Segue abaixo o código.
c #############################################################
c Este programa calcula o erro percentual da Serie de Taylor da
c funcaoo 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='taylor200510.2',status='unknown')
c Ponto de expansao da s‚rie
read(5,*)x0
c Grau da s‚rie polinomial + 1
read(5,*)n_termos
c Coeficiente multiplicador do angulo x
read(5,*)b
c Numero de abscissas
read(5,*)n_x
c Impressao do cabecalho
write(6,5)
c determinacao dos coeficientes da serie 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.d0
do n=1,n_termos
c solucao num‚rica
fxt=fxt+a(n)*(x-x0)**(n-1)/fat(n-1)
enddo
c solução analítica
fxa=sin(b*x)
c erro percentual
if(fxa.ne.0.d0) then
erro_p=abs((fxt-fxa)/fxa)*100.d0
write(6,15)x,fxa,fxt,erro_p
else
write(6,20)x,fxa,fxt
endif
enddo
5 format(14x,'x',26x,'f(x)',23x,'F(x)',23x,'E(%)')
15 format(3(f25.14,2x),e25.15)
20 format(3(f25.14,2x),' - ')
stop " Fim "
end
c ##############################################################
function fat(n)
implicit double precision(a-h,o-z)
integer n
fat=dfloat(n)
do i=n,2,-1
xi=dfloat(i)
fat=fat*(xi-1.d0)
enddo
if(n.eq.0) fat=1.d0
return
end
c ##############################################################


Creio que o que tenho que mudar está nessa linha:
a(n)=(-1.d0)**i*b**(n-1)*sin(b*x0)**j*cos(b*x0)**k

Entendo pouco de série de Taylor, mas se me explicarem alguma coisa eu acho que entendo!

Desde já, Obrigado pela ajuda!
Piva
Novo Usuário
Novo Usuário
 
Mensagens: 6
Registrado em: Qua Jun 29, 2011 18:51
Formação Escolar: GRADUAÇÃO
Área/Curso: Engenharia Mecânica
Andamento: cursando

Re: [Cálculo Numérico]Problema de Cálculo Numérico

Mensagempor LuizAquino » Qui Abr 12, 2012 11:58

Piva escreveu:Boa tarde a todos,

Estou com um pequeno problema em Cálculo numérico. Estou com um programa que rodo no force para a função do SENO. Só que estou com dificuldades para passá-la para COSSENO. Sou iniciante em cálculo numérico, se alguém puder me explicar como eu mudo para o COSSENO eu agradeceria. Eu ja entendi todo o funcionamento do código, porém estou errando em trocar a função.

Segue abaixo o código.
c #############################################################
c Este programa calcula o erro percentual da Serie de Taylor da
c funcaoo 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='taylor200510.2',status='unknown')
c Ponto de expansao da s‚rie
read(5,*)x0
c Grau da s‚rie polinomial + 1
read(5,*)n_termos
c Coeficiente multiplicador do angulo x
read(5,*)b
c Numero de abscissas
read(5,*)n_x
c Impressao do cabecalho
write(6,5)
c determinacao dos coeficientes da serie 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.d0
do n=1,n_termos
c solucao num‚rica
fxt=fxt+a(n)*(x-x0)**(n-1)/fat(n-1)
enddo
c solução analítica
fxa=sin(b*x)
c erro percentual
if(fxa.ne.0.d0) then
erro_p=abs((fxt-fxa)/fxa)*100.d0
write(6,15)x,fxa,fxt,erro_p
else
write(6,20)x,fxa,fxt
endif
enddo
5 format(14x,'x',26x,'f(x)',23x,'F(x)',23x,'E(%)')
15 format(3(f25.14,2x),e25.15)
20 format(3(f25.14,2x),' - ')
stop " Fim "
end
c ##############################################################
function fat(n)
implicit double precision(a-h,o-z)
integer n
fat=dfloat(n)
do i=n,2,-1
xi=dfloat(i)
fat=fat*(xi-1.d0)
enddo
if(n.eq.0) fat=1.d0
return
end
c ##############################################################


Creio que o que tenho que mudar está nessa linha:
a(n)=(-1.d0)**i*b**(n-1)*sin(b*x0)**j*cos(b*x0)**k



Piva escreveu:Entendo pouco de série de Taylor, mas se me explicarem alguma coisa eu acho que entendo!


Esse é o verdadeiro problema: você não sabe expandir (usando a Série de Taylor) a função f(x) = \cos bx em torno de x0.

Você precisa primeiro saber fazer essa expansão antes de querer mexer no código. Ou seja, você precisa primeiro estudar sobre a Série de Taylor.

Há um vasto material disponível na internet sobre essa assunto. Eu recomendo que você faça uma pesquisa sobre ele.

Vamos então considerar uma função f que possa ser expandida em Série de Taylor. A sua aproximação em torno de x0 será dada por:

f(x) \approx f(x_0) +\frac{f'(x_0)(x - x_0)^1}{1!} + \frac{f''(x_0)(x - x_0)^2}{2!} + \ldots + \frac{f^{(n)}(x_0)(x - x_0)^n}{n!}

Nesse caso, a expansão foi feita até o termo na posição n. Note que você precisa calcular a derivada de f até a ordem n.

Por exemplo, no caso de f(x) = \cos bx, temos que:

f^\prime(x) = -b \,\textrm{sen}\, bx

f^{\prime\prime}(x) = -b^2 \cos bx

f^{\prime\prime\prime}(x) = b^3 \,\textrm{sen}\, bx

f^{(4)}(x) = b^4 \cos bx

f^{(5)}(x) = - b^5 \,\textrm{sen}\, bx

f^{(6)}(x) = - b^6 \cos bx

(...)

Agora tente determinar o formato geral. Isto é, o formato para f^{(n)}(x) .
professoraquino.com.br | youtube.com/LCMAquino | @lcmaquino

"Sem esforço, não há ganho."
Dito popular.
Avatar do usuário
LuizAquino
Colaborador Moderador - Professor
Colaborador Moderador - Professor
 
Mensagens: 2654
Registrado em: Sex Jan 21, 2011 09:11
Localização: Teófilo Otoni - MG
Formação Escolar: PÓS-GRADUAÇÃO
Área/Curso: Mestrado - Modelagem Computacional
Andamento: formado


Voltar para Cálculo: Limites, Derivadas e Integrais

 



  • Tópicos relacionados
    Respostas
    Exibições
    Última mensagem

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 98 visitantes

 



Assunto: (FGV) ... função novamente rs
Autor: my2009 - Qua Dez 08, 2010 21:48

Uma função polinomial f do 1° grau é tal que f(3) = 6 e f(4) = 8.Portanto o valor de f(10) é :


Assunto: (FGV) ... função novamente rs
Autor: Anonymous - Qui Dez 09, 2010 17:25

Uma função de 1º grau é dada por y=ax+b.
Temos que para x=3, y=6 e para x=4, y=8.
\begin{cases}6=3a+b\\8=4a+b\end{cases}
Ache o valor de a e b, monte a função e substitua x por 10.


Assunto: (FGV) ... função novamente rs
Autor: Pinho - Qui Dez 16, 2010 13:57

my2009 escreveu:Uma função polinomial f do 1° grau é tal que f(3) = 6 e f(4) = 8.Portanto o valor de f(10) é :



f(x)= 2.x
f(3)=2.3=6
f(4)=2.4=8
f(10)=2.10=20


Assunto: (FGV) ... função novamente rs
Autor: dagoth - Sex Dez 17, 2010 11:55

isso ai foi uma questao da FGV?

haahua to precisando trocar de faculdade.


Assunto: (FGV) ... função novamente rs
Autor: Thiago 86 - Qua Mar 06, 2013 23:11

Saudações! :-D
ví suaquestão e tentei resolver, depois você conta-me se eu acertei.
Uma função de 1º grau é dada por y=3a+b

Resposta :
3a+b=6 x(4)
4a+b=8 x(-3)
12a+4b=24
-12a-3b=-24
b=0
substituindo b na 1°, ttenho que: 3a+b=6
3a+0=6
a=2
substituindo em: y=3a+b
y=30+0
y=30
:coffee: