作者: Zazel
日時: 2009/8/13(13:12)
Zazelです。

あるところ(^_^) に書かれていた、二次元方程式の解の公式。
Pythonならば複素数が扱えるなと入れてみたら…

>>> sol = lambda a,b,c:[(-b+k*(b*b-4*a*c)**(1/2))/(2*a) for k in (1,-1)]
>>> sol(1,2,3)
[(-0.9999999999999999+1.4142135623730951j), (-1-1.4142135623730951j)]

この演算で実部に違いが出てくるのはまずいような気がします。
それに、なぜ違いが発生するのかも理解できません。

「Python-3.1 はまだunstableだから」という理由で片付けてよければ
これ以上気にしませんが。

使ったのは
    Python 3.1
    [GCC 4.2.1 20070719  [FreeBSD]] on freebsd7
です。

(* SEKI Masatoshi  /  zazel.ts@..."cx"           *)
(*  Would you hold my hand? Softly, let's linger. *)