Bug #6967

Vector#inner_product は複素数ベクトルのとき不適切

Added by 5 5 over 1 year ago. Updated about 1 year ago.

[ruby-dev:46101]
Status:Closed
Priority:Low
Assignee:Marc-Andre Lafortune
Category:lib
Target version:1.9.3
ruby -v:ruby 1.9.3p194 (2012-04-20) [i386-mingw32] Backport:

Description

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

複素数ベクトルでは内積といえばエルミート内積( = Σ ui vi)なので( は複素共役),inner_product の定義を

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

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

History

#1 Updated by Marc-Andre Lafortune over 1 year ago

  • Assignee set to Marc-Andre Lafortune

#2 Updated by Usaku NAKAMURA over 1 year ago

  • Status changed from Open to Assigned

#3 Updated by Marc-Andre Lafortune about 1 year ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

Fixed with r38983 (not sure why redmine didn't link the commit & close the issue).

ありがとうございます。

Also available in: Atom PDF