Skip to content

Vector の基本的な修正 - #3314

Merged
znz merged 13 commits into
rurema:masterfrom
scivola:improve-Vector
Jul 27, 2026
Merged

Vector の基本的な修正#3314
znz merged 13 commits into
rurema:masterfrom
scivola:improve-Vector

Conversation

@scivola

@scivola scivola commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

主な修正点は

  • 基本的な整形(バッククオート付けなど)
  • サンプルコードの簡素化
  • 「自身」→ self
  • 述語メソッドに「そうでなければ false を返します」を追加
  • 一部のメソッドの説明のちょっとした訂正
  • 冒頭の説明の訂正

@znz

znz commented Jul 25, 2026

Copy link
Copy Markdown
Member

Vector の修正 PR ありがとうございます。実機 Ruby 3.4.8(matrix 0.4.3)で全サンプルコードを実行し、記載の出力と一致することを確認しました。また PR の head をチェックアウトして bitclust update --markdowntreestatichtml まで通し、コンパイルエラー・警告 0 でビルド・レンダリングできることも確認しています。

  • バッククォート整形・self 表記への統一・述語メソッド(zero? / independent?)への「そうでなければ false を返します」の補完・-@ の「逆ベクトル(各要素に -1 を乗じたベクトル)」への言い換え・Matrix.column_vector / Matrix.row_vector への SEE 追加、いずれも matrix-0.4.3 の実装と一致しています。
  • ### def / ## 見出しは base と完全一致(シグネチャの増減なし)なので、他ファイル(Vector__ZeroVectorError.mdMatrix.mdglossary.mdnews/*.md 等)からの [m:Vector#...] / [c:Vector] 参照が壊れないことも確認しました。
  • 例の簡略化・冒頭の「複素ベクトルも表せます」等の加筆も、内容を落とさず正確でした。

マージ可と考えます。

1 点だけ、この PR で触れている covector のブロックに既存の記述誤りがあるので、ついでに直していただけると良さそうです(この PR でも別 PR でもお任せします)。

### def covector -> Matrix

列ベクトル (行列)、すなわち、(n, 1) 型の行列に変換します。
実際には `Matrix.row_vector(self)` を適用します。

covector は実際には Matrix.row_vector(self)(この PR で SEE も追加された側)を呼ぶため、返るのは行ベクトル、すなわち (1, n) 型の行列です。同ブロックの例の出力 Matrix[[2, 3, 5]] も 1×3 の行ベクトルになっています(手元でも v.covector.row_count, column_count # => 1, 3 を確認)。したがって

行ベクトル (行列)、すなわち、(1, n) 型の行列に変換します。

が正しい説明になります(covector = 双対ベクトル = 行ベクトル、という名前とも整合します)。冒頭の「Matrix との演算では列ベクトルとして扱われる」(*Matrix.column_vector を使う)の記述は別の話で、そちらは正しいままです。

なお - **raise** の例外名が normalize では `Vector::ZeroVectorError`angle_with では `ZeroVectorError` と表記ゆれしていますが、こちらは既存の体裁差で本 PR とは無関係なので、気が向いたらで構いません。

🤖 Generated with Claude Code

scivola added 2 commits July 26, 2026 05:09
angle_with は Vector:: が抜けていた
[]=(range, v) は ExceptionForMatrix が Matrix になっていた
@scivola

scivola commented Jul 25, 2026

Copy link
Copy Markdown
Contributor Author

covector の誤りは気になっていましたが,確信が持てなかったのであとで調べようと思っていました。ご指摘で確信が持てたので,修正しました。
例外クラスも訂正しました。調べる際,[]=(range, v) の例外の誤りに気づいたのでそれも直しました。

@znz

znz commented Jul 27, 2026

Copy link
Copy Markdown
Member

3 コミットとも確認しました。マージ可と考えます。

  • covector の訂正(13debf8): 「行ベクトル (行列)、すなわち、(1, n) 型」で正確です。実機でも Vector[1, 0].covectorMatrix.row_vector(Vector[1, 0]) がともに Matrix[[1, 0]](1×2)になることを確認しました。これで説明・Matrix.row_vector(self) の記述・例の出力・SEE の4点がすべて一致しました。
  • 例外の訂正(e44fc42): ExceptionForMatrix::ErrDimensionMismatch が正規の名前(Matrix::ErrDimensionMismatch は include 経由で解決できていただけ)で、ファイル内の他の 9 箇所の表記とも統一されました。Vector::ZeroVectorError も、素の ZeroVectorError はトップレベルでは未定義なので正しい修正です。angle_with の零ベクトル両側・次元不一致、[]=(range, v) のサイズ不一致(ArgumentError)/次元不一致(ErrDimensionMismatch)をすべて実機で再現し、記載と一致することを確認しました。
  • 冒頭の訂正(dbb518b): 複素ベクトルの記述は実機どおり(Vector[1+2i, 3-1i].norm # => 3.872983346207417)で、「Matrix との演算では列ベクトル、行ベクトルにしたいときは 1 行の行列に変換」という整理は covector の訂正とも整合しています。

見出し・シグネチャは変更前後で完全一致(+6 行のシフトのみ)、バッククォートの対応も崩れていないことを確認済みです。

1 点だけ、この確認中に見つけた既存の誤りを参考までに(この PR の範囲外なので、対応は別途で構いません): []=(index, value)[]=(range, v) の raise 節(129 行目・153 行目)が TypeError になっていますが、実際に範囲外を指定したときに発生するのは IndexError です(Vector[0,0,0,0,0][99] = 1IndexError: given index 99 is outside of -5...5)。143 行目のご自身の例がすでに IndexError を示しているので、raise 節だけが古い状態です。

🤖 Generated with Claude Code

@znz

znz commented Jul 27, 2026

Copy link
Copy Markdown
Member

[]= の raise 節の訂正(a649c7c)を確認しました。index 版・range 版とも TypeErrorIndexError で、実機の挙動(Vector[0,0,0,0,0][99] = 1IndexError: given index 99 is outside of -5...5Vector[0,0,0][10..12] = 1IndexError: given range 10..12 is outside of vector dimensions: 0...3)と一致し、143 行目の例とも整合しました。

これで指摘事項はすべて解消です。マージ可と考えます。 一連の丁寧なご対応ありがとうございました。

🤖 Generated with Claude Code

@znz
znz merged commit 0c2466f into rurema:master Jul 27, 2026
9 checks passed
@scivola
scivola deleted the improve-Vector branch July 27, 2026 08:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants