• 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 40 visitantes

 



Assunto: Princípio da Indução Finita
Autor: Fontelles - Dom Jan 17, 2010 14:42

Não sei onde este tópico se encaixaria. Então me desculpem.
Eu não entendi essa passagem, alguém pode me explicar?
2n \geq n+1 ,\forall n \in\aleph*
O livro explica da seguinte forma.
1°) P(1) é verdadeira, pois 2.1 \geq 1+1
2°) Admitamos que P(k), k \in \aleph*, seja verdadeira:
2k \geq k+1 (hipótese da indução)
e provemos que 2(k+1) \geq (K+1)+1
Temos: (Nessa parte)
2(k+1) = 2k+2 \geq (k+1)+2 > (k+1)+1


Assunto: Princípio da Indução Finita
Autor: MarceloFantini - Seg Jan 18, 2010 01:55

Boa noite Fontelles.

Não sei se você está familiarizado com o Princípio da Indução Finita, portanto vou tentar explicar aqui.

Ele dá uma equação, no caso:

2n \geq n+1, \forall n \in \aleph^{*}

E pergunta: ela vale para todo n? Como proceder: no primeiro passo, vemos se existe pelo menos um caso na qual ela é verdadeira:

2*1 \geq 1+1

Portanto, existe pelo menos um caso para o qual ela é verdadeira. Agora, supomos que k seja verdadeiro, e pretendemos provar que também é verdadeiro para k+1.

\mbox{Suponhamos que P(k), }k \in \aleph^{*},\mbox{ seja verdadeiro:}
2k \geq k+1

\mbox{Vamos provar que:}
2(k+1) \geq (k+1)+1

Daí pra frente, ele usou o primeiro membro para chegar em uma conclusão que validava a tese. Lembre-se: nunca saia da tese.

Espero ter ajudado.

Um abraço.


Assunto: Princípio da Indução Finita
Autor: Fontelles - Seg Jan 18, 2010 02:28

Mas, Fantini, ainda fiquei em dúvida na passagem que o autor fez (deixei uma msg entre o parêntese).
Obrigado pela ajuda, mesmo assim.
Abraço!


Assunto: Princípio da Indução Finita
Autor: Fontelles - Qui Jan 21, 2010 11:32

Galera, ajuda aí!
Por falar nisso, alguém conhece algum bom material sobre o assunto. O livro do Iezzi, Matemática Elementar vol. 1 não está tão bom.


Assunto: Princípio da Indução Finita
Autor: MarceloFantini - Qui Jan 21, 2010 12:25

Boa tarde Fontelles!

Ainda não estou certo de qual é a sua dúvida, mas tentarei novamente.

O que temos que provar é isso: 2(k+1) \geq (k+1)+1, certo? O autor começou do primeiro membro:

2(k+1)= 2k+2

Isso é verdadeiro, certo? Ele apenas aplicou a distributiva. Depois, partiu para uma desigualdade:

2k+2 \geq (k+1)+2

Que é outra verdade. Agora, com certeza:

(k+1)+2 > (k+1)+1

Agora, como 2(k+1) é \geq a (k+1)+2, e este por sua vez é sempre > que (k+1)+1, logo:

2(k+1) \geq (k+1)+1 \quad \mbox{(c.q.d)}

Inclusive, nunca é igual, sempre maior.

Espero (dessa vez) ter ajudado.

Um abraço.


Assunto: Princípio da Indução Finita
Autor: Caeros - Dom Out 31, 2010 10:39

Por curiosidade estava estudando indução finita e ao analisar a questão realmente utilizar a desigualdade apresentada foi uma grande sacada para este problema, só queria tirar uma dúvida sobre a sigla (c.q.d), o que significa mesmo?


Assunto: Princípio da Indução Finita
Autor: andrefahl - Dom Out 31, 2010 11:37

c.q.d. = como queriamos demonstrar =)


Assunto: Princípio da Indução Finita
Autor: Abelardo - Qui Mai 05, 2011 17:33

Fontelles, um bom livro para quem ainda está ''pegando'' o assunto é:'' Manual de Indução Matemática - Luís Lopes''. É baratinho e encontras na net com facilidade. Procura também no site da OBM, vais encontrar com facilidade material sobre PIF... em alguns sites que preparam alunos para colégios militares em geral também tem excelentes materiais.


Assunto: Princípio da Indução Finita
Autor: MarceloFantini - Qui Mai 05, 2011 20:05

Abelardo, faz 1 ano que o Fontelles não visita o site, da próxima vez verifique as datas.


Assunto: Princípio da Indução Finita
Autor: Vennom - Qui Abr 26, 2012 23:04

MarceloFantini escreveu:Abelardo, faz 1 ano que o Fontelles não visita o site, da próxima vez verifique as datas.

Rpz, faz um ano que o fulano não visita o site, mas ler esse comentário dele enquanto respondia a outro tópico me ajudou. hAUEhUAEhUAEH obrigado, Marcelo. Sua explicação de indução finita me sanou uma dúvida sobre outra coisa. :-D