[#38470] ruby-dev summary 21403-21530 (draft) — Minero Aoki <aamine@...>

青木です。

25 messages 2003/10/07
[#38475] Re: ruby-dev summary 21403-21530 (draft) — maili31s@... (SugHimsi==SUGIHARA Hiroshi) 2003/10/07

すぎむし。

[#38480] Re: ruby-dev summary 21403-21530 (draft) — Minero Aoki <aamine@...> 2003/10/08

青木です。

[#38481] marshal_dump (was Re: ) — m_seki@... 2003/10/08

[#38484] Re: marshal_dump (was Re: ) — matz@... (Yukihiro Matsumoto) 2003/10/09

まつもと ゆきひろです

[#38486] Re: marshal_dump (was Re: ) — Masatoshi Seki <m_seki@...> 2003/10/09

咳といいます

[#38489] exit status on exit! — YANAGAWA Kazuhisa <kjana@...4lab.to>

<http://www.unixuser.org/~ysjj/diary/?200310a&to=200310082#200310082>

29 messages 2003/10/09
[#38490] Re: exit status on exit! — Koji Arai <JCA02266@...> 2003/10/09

新井です。

[#38503] Re: exit status on exit! — YANAGAWA Kazuhisa <kjana@...4lab.to> 2003/10/10

In Message-Id: <20031010.082218.74733862.JCA02266@nifty.ne.jp>

[#38505] Re: exit status on exit! — Koji Arai <JCA02266@...> 2003/10/10

新井です。

[#38507] Re: exit status on exit! — matz@... (Yukihiro Matsumoto) 2003/10/11

まつもと ゆきひろです

[#38514] Re: exit status on exit! — YANAGAWA Kazuhisa <kjana@...4lab.to> 2003/10/11

In Message-Id: <1065883639.405037.23137.nullmailer@picachu.netlab.jp>

[#38515] Re: exit status on exit! — WATANABE Hirofumi <eban@...> 2003/10/11

わたなべです。

[ruby-list:38447] 複素数を考慮したVectorクラス

From: TANAKA Kenta <c30318@...>
Date: 2003-10-01 05:59:55 UTC
List: ruby-list #38447
みなさん、はじめまして。Ruby歴(=OOP歴)1週間の田中と申します。

添付ライブラリのVectorクラスは、複素数に対してあまり考慮されていないよ
うなので、無謀にも、その書き換えを画策しました。

具体的には、inner_productおよびrメソッドを書き換え、
a.inner_product(b)ならば、aの各成分の複素共役をとってから、bの各成分と
の積を求める(rメソッドも同様)ようにする、というものです。
#これが、内積本来の定義?

そこで、Vectorクラス内において、

def initialize(method, array, copy)
  @comp = $".include?("complex.rb")
  self.send(method, array, copy)
end

def inner_product(v)
  Vector.Raise ErrDimensionMismatch if size != v.size
  p = 0
  if @comp
    each2(v) {
      |v1, v2|
      p += v1.conjugate * v2
    }
  else
    each2(v) {
      |v1, v2|
      p += v1 * v2
    }
  end
  p
end

def r
  v = 0
  if @comp
    for e in @elements
      v += (e.conjugate*e)
      v = v.real
    end
  else
    for e in @elements
      v += e*e
    end
  end
  return Math.sqrt(v)
end

としました。

とりあえず、意図どおり動作しているようですが、数々の疑問がわいてきます。

1) @comp = $".include?("complex.rb") はinitializeに書いてよいのか。
2) compは、インスタンス変数とすべきなのか。
3) inner_product, r内の if @comp 〜 else … では、〜と…はほとんど同じ
   処理で、美しくない。別の書き方はないのか。
   @comp ? v1.conjugate : v1なども考えたが、これはループごとに
   @comp評価が起こり(?)、無駄である。

以上、ご教示よろしくお願いします。

田中 健太(TANAKA Kenta)
論理によって証明し、直感によって考え出す。

In This Thread

Prev Next