Problema com a resolucao da equacao [RESOLVIDO]

1. Problema com a resolucao da equacao [RESOLVIDO]

Lucas
livo

(usa Ubuntu)

Enviado em 10/01/2017 - 15:30h

Boa tarde,

Essa função recebe o valor de re(double) e eu preciso que meu programa resolva essas duas equações e forneça um valor de f. O problema e que eu não sei se c++ simplesmente não resolve equações assim, ou se ha algum comando, porem não retorna o valor correto de f. Eu inclui a biblioteca math.h e acho que o retorno das variáveis re e rdh estão corretos, pois as outras opções do if estão funcionando corretamento.
Desde já agradeço.
 
if(resposta==2)
{
f= 1/((0.86 * (log (re) + log (sqrt(f))))- 0.8);
}
if(resposta==3)
{
f = sqrt (1/ ( -0.86* log ( ( rdh/3.7)+ (2.51 / (re * sqrt(f)) ) ) ) );
}





  


2. Re: Problema com a resolucao da equacao [RESOLVIDO]

Bruno Garcia
bcgarcia

(usa CentOS)

Enviado em 10/01/2017 - 15:43h

Boa tarde,

A equação parece estar correta, deveria retornar o valor exato,
Você incluiu a biblioteca math.h?

include math.h


Abraço.


3. Re: Problema com a resolucao da equacao [RESOLVIDO]

Lucas
livo

(usa Ubuntu)

Enviado em 10/01/2017 - 15:46h

bcgarcia escreveu:

Boa tarde,

A equação parece estar correta, deveria retornar o valor exato,
Você incluiu a biblioteca math.h?

include math.h


Abraço.

Boa tarde, inclui sim, e também esta retornando os valores corretos para f nas outras opções, apenas esses dois if não estão corretos. Obrigado



4. Re: Problema com a resolucao da equacao [RESOLVIDO]

Alexandre Fagner
afagner

(usa Fedora)

Enviado em 10/01/2017 - 16:02h

bom você verifico o retorno da variavel reposta se é esses valores mesmo para comparação ?


5. Re: Problema com a resolucao da equacao [RESOLVIDO]

Lucas
livo

(usa Ubuntu)

Enviado em 10/01/2017 - 16:14h

afagner escreveu:

bom você verifico o retorno da variavel reposta se é esses valores mesmo para comparação ?


Boa tarde, creio que esta correto, pois as outras opções do if estão funcionando corretamente. De qualquer forma vou postar o código, pq pode estar errado

double PerdaCarga:: Calcf( )
{
int resposta;
cout<< "\nReynold vale: " << CalcRe() <<"\n";
double reynold = re;
if(reynold>2000 && reynold<4000){
cout<<"Não é possivel calcular o fator de atrito (f), pois está é a região de transição.";
return 0;
}
if(reynold<2000 || reynold>4000)
{
cout<<"Dado o numero de Reynolds: "<< re << " e a rugosidade relativa: "<< rdh <<" qual é o tipo de escoamento?\n Digite:\n 1-Para escoamento laminar.\n 2-Para escoamento turbulento hidraulicamente liso.\n3-Para escoamento turbulento, com transição entre hidraulicamente liso e rugoso.\n 4-Para cescoamento completamente turbulento e hidraulicamente rugoso.\n";
cin>>resposta; cin.get();
//1-ok
if(resposta==1){
f= 64/re;
}
if(resposta==2){
f= 1/((0.86 * (log (re) + log (sqrt(f))))- 0.8);
}
if(resposta==3){
f = sqrt (1/ ( -0.86* log ( ( rdh/3.7)+ (2.51 / (re * sqrt(f)) ) ) ) );
}
// 4-ok
if(resposta==4){
f= sqrt( 1/ ( -0.86 * log( rdh / 3.7) ) );
}}
else
{cout<<"Resposta não consta nos registros, por favor rever.";}

cout<<"\nO valor de f e:\n"<<f<<endl;
return f;
}





6. Re: Problema com a resolucao da equacao [RESOLVIDO]

Lucas
livo

(usa Ubuntu)

Enviado em 10/01/2017 - 20:51h

O problema foi resolvido, eu não havia inicializado o valor de f, e como e uma função logarítmica estava dando erro, inicializei com o valor 1. Agora esta funcionando, muito obrigado.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts