From: "marcandre (Marc-Andre Lafortune)" <ruby-core@...>
Date: 2012-09-05T12:31:24+09:00
Subject: [ruby-dev:46115] [ruby-trunk - Bug #6967] Vector#inner_product は複素数ベクトルのとき不適切


Issue #6967 has been updated by marcandre (Marc-Andre Lafortune).

Assignee set to marcandre (Marc-Andre Lafortune)


----------------------------------------
Bug #6967: Vector#inner_product は複素数ベクトルのとき不適切
https://bugs.ruby-lang.org/issues/6967#change-29183

Author: 5.5 (5 5)
Status: Open
Priority: Low
Assignee: marcandre (Marc-Andre Lafortune)
Category: lib
Target version: 1.9.3
ruby -v: ruby 1.9.3p194 (2012-04-20) [i386-mingw32]


#6966 に関連して,Vector#inner_product は成分の単なる積和ですが,複素数ベクトル v については v.inner_product(v) が非負性を破るので,内積の定義に当てはまりません。

複素数ベクトルでは内積といえばエルミート内積(<u,v> = Σ u_i v_i*)なので(* は複素共役),inner_product の定義を

    p = 0
    each2(v) {|v1, v2|
      p += v1 * v2.conj
    }
    p

のようにするか,あるいは self や引数が実でないときは例外を出すことにし,inner_product とは別に hermitian_inner_product を導入しては如何でしょうか。



-- 
http://bugs.ruby-lang.org/