在我的Rails應用程序中的lib/matrix.rb我已經進入下面的代碼擴展內置Matrix類:我是否正確地擴展了這個內置的ruby類?
module Matrix
require 'matrix'
class Matrix
def symmetric?
return false if not square?
(0 ... row_size).each do |i|
(0 .. i).each do |j|
return false if self[i,j] != self[j,i]
end
end
true
end
def cholesky_factor
raise ArgumentError, "must provide symmetric matrix" unless symmetric?
l = Array.new(row_size) {Array.new(row_size, 0)}
(0 ... row_size).each do |k|
(0 ... row_size).each do |i|
if i == k
sum = (0 .. k-1).inject(0.0) {|sum, j| sum + l[k][j] ** 2}
val = Math.sqrt(self[k,k] - sum)
l[k][k] = val
elsif i > k
sum = (0 .. k-1).inject(0.0) {|sum, j| sum + l[i][j] * l[k][j]}
val = (self[k,i] - sum)/l[k][k]
l[i][k] = val
end
end
end
Matrix[*l]
end
end
end
這是Rails應用程序中的方法添加到現有類的正確方法是什麼?我應該有需要矩陣線嗎?
EDIT 1:提供
附加信息我現在已經除去需要 '矩陣' 線。
如果我輸入一個視圖頁面下面的測試代碼,刪除我的lib它只能/ matrix.rb文件:
<% require 'matrix' %>
<%
m = Matrix[
[0,0],
[1,1]
]
%>
<%= m.column(0) %>
否則,它給人的錯誤:
undefined method `[]' for Matrix:Module
當我嘗試擴展類時,我似乎消除了構建在Matrix類中的默認方法。有沒有解決這個錯誤的方法?
好,謝謝,我已經添加了對這個問題的一些附加信息我在上面 – Zakoff 2012-01-30 21:35:13