[duvida]função gamma [RESOLVIDO]

1. [duvida]função gamma [RESOLVIDO]

Froyd Oliver
froyd

(usa Linux Mint)

Enviado em 22/03/2017 - 03:12h

estou usando a função gamma do module math para calcular o fatorial de numeros decimais, mas estou tendo retorno de valores errados, alguém sabe o que se passa?

#Froyd
#youtube.com/c/ifroydcoder
import math
#sera usado o modulo math , somente para calcular fatorial de numeros
#decimais com a funcao math.gamma, pois os mesmos exigem estudos de
#calculos avancados!

def fatorial(n): #define a funcao fatorial, que tem como argumento um numero n inteiro
if n<0: #verifica se o numero digitado e negativo
print("A operacao fatorial nao suporta numeros negativos") #retorna um texto informativo
elif n>69: #verifica se o numero digitado e maior que 69
print("Digite apenas numeros,tal que, 0 <= n <= 69 \n") #retorna um texto informativo
elif n==0 or n==1: #verifica se o numero digitado e 0 ou 1
return 1 #retorna o valor 1, pois !0=1 e !1=1
else:
return n*fatorial(n-1) #retorna o calculo fatorial do numero digitado

def painel():
selecione = input('''
Painel
1 - Fatorial de numeros inteiros
2 - Fatorial de numeros fracionarios

Selecione: ''')
if selecione==1:
n=(input("Insira um numero , tal que, 0 <= n <= 69 \n")) #solicita ao usuario a insercao do valor n inteiro
if type(n) <> int:
print "Inclua somente numeros inteiros"
painel()
else:
print "O fatorial de n e:", fatorial(n) #mostra o resultado do calculo feito pela funcao fatorial
elif selecione==2:
print "Utilize o '.' como separador em vez de ','"
n=(input("Insira um numero do conjunto dos reais para realizar a operacao \n")) #solicita ao usuario a insercao do valor n real

if type(n) <> float:
print "Inclua somente numeros fracionarios"
painel()
elif n>69:
print("Digite apenas numeros,tal que, 0 <= n <= 69 \n")
painel()
elif n<0:
print("A operacao fatorial nao suporta numeros negativos")
painel()
else:
# math.gamma(n)
print "O fatorial de n e:", math.gamma(n) # mostra o resultado do calculo da funcao math.gamma do module math para calculo de fatorial de numeros decimais
else:
print "Selecione apenas o que esta no painel, tente novamente"
painel()

painel()


se eu uso math.gamma(4.0) , ele retorna 6.0 , mas deveria retornar 24.0 ...

se usarmos o console da no mesmo:

ActivePython 2.7.13.2713 (ActiveState Software Inc.) based on
Python 2.7.13 (default, Jan 18 2017, 15:40:43) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import math
>>> math.gamma(4.0)
6.0
>>>


Desde já, grato!



  


2. MELHOR RESPOSTA

Perfil removido
removido

(usa Nenhuma)

Enviado em 22/03/2017 - 03:25h

Você está certo da definição da função Gamma?

https://pt.wikipedia.org/wiki/Fun%C3%A7%C3%A3o_gama

Veja:

Gamma(n+1) = n!

Portanto

Gamma(4.0) = 6.

ou

Gamma(3.0+1) = 3! = 6

Escrevi Gamma com maiúscula. No código é com minúscula.

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden


3. [duvida]função gamma

Froyd Oliver
froyd

(usa Linux Mint)

Enviado em 22/03/2017 - 04:35h

Eu tinha resolvido assim que terminei de postar, mas obrigado pela atenção!

vlw!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts