Google-Apps
Hauptmenü

Post a Comment On: LKVenia

"Cálculo da variância em Python"

7 Comments -

1 – 7 of 7
Blogger Tiago Albineli Motta said...

Ficou muito boa essa versão em Python

June 10, 2008 at 2:00 AM

Blogger ℭacilhας, ℒa ℬatalema said...

Muito legal! Também gostei. =)

Só não entendi por que você usou math.sqrt().

Geralmente faço isso com pow() ou com **.

Qual o motivo de sua escolha? Há alguma diferença de precisão ou desempenho?

[]'s
Cacilhas, La Batalema

June 10, 2008 at 6:32 AM

Blogger LKRaider said...

Não entendi a dúvida. Como você calcula a raiz usando potência?

Prefiro usar métodos prontos do que reimplementar na maioria dos casos. A biblioteca Python é extensa e "não tenho medo de usar" :D

June 10, 2008 at 6:46 PM

Blogger João Felipe Santos said...

A operação de "raiz" é uma potenciação, só que com um valor fracionário.

math.pow(10, 0.5) == math.sqrt(10)

Mas é claro que pra raízes quadradas, math.sqrt é muito mais intuitivo ;)

Parabéns pelo post, foi bem interessante!

June 13, 2008 at 11:08 AM

Blogger LKRaider said...

Tem razão ! *slaps own forehead* :)

Rodei alguns testes aqui, e a versão utilizando multiplicação é mais rápida, como pode ser visto ao rodar este código:


from timeit import Timer

print 'multiply:'
print min(Timer('10**0.5').repeat())

print 'math.sqrt:'
print min(Timer('sqrt(10)', 'from math import sqrt').repeat())


Aqui o resultado é:


multiply:
0.0717430114746
math.sqrt:
0.43367600441


Portanto, para quem quiser otimizar um pouco o código, pode trocar pela multiplicação mesmo.

O custo maior do math.sqrt ocorre por se tratar de uma chamada de função, que envolve busca no namespace:

"Function call overhead in Python is relatively high, especially compared with the execution speed of a builtin function." [1]

e nisso a operação de multiplicação direta leva vantagem.

June 13, 2008 at 10:41 PM

Blogger Walter Cruz said...

Bacana ;)

July 2, 2008 at 7:26 AM

Blogger LKRaider said...

Hm, troque onde eu falei "multiplicação" no comentário anterior por "potenciação", claro... :/

July 17, 2008 at 10:10 PM

You can use some HTML tags, such as <b>, <i>, <a>

This blog does not allow anonymous comments.

Comment moderation has been enabled. All comments must be approved by the blog author.

You will be asked to sign in after submitting your comment.
Please prove you're not a robot