Có chức năng nào trong R tạo ra reduced row echelon form
của ma trận không ?. Tham chiếu This cho biết không có. Bạn có đồng ý không?Biểu mẫu dạng hàng giảm bớt
Trả lời
Gói pracma cũng chứa thực hiện. Xem pracma :: rref.
Không giống như có tích hợp sẵn nhưng tôi đã tìm thấy chức năng rref này trên this trang.
rref <- function(A, tol=sqrt(.Machine$double.eps),verbose=FALSE,
fractions=FALSE){
## A: coefficient matrix
## tol: tolerance for checking for 0 pivot
## verbose: if TRUE, print intermediate steps
## fractions: try to express nonintegers as rational numbers
## Written by John Fox
if (fractions) {
mass <- require(MASS)
if (!mass) stop("fractions=TRUE needs MASS package")
}
if ((!is.matrix(A)) || (!is.numeric(A)))
stop("argument must be a numeric matrix")
n <- nrow(A)
m <- ncol(A)
for (i in 1:min(c(m, n))){
col <- A[,i]
col[1:n < i] <- 0
# find maximum pivot in current column at or below current row
which <- which.max(abs(col))
pivot <- A[which, i]
if (abs(pivot) <= tol) next # check for 0 pivot
if (which > i) A[c(i, which),] <- A[c(which, i),] # exchange rows
A[i,] <- A[i,]/pivot # pivot
row <- A[i,]
A <- A - outer(A[,i], row) # sweep
A[i,] <- row # restore current row
if (verbose)
if (fractions) print(fractions(A))
else print(round(A,round(abs(log(tol,10)))))
}
for (i in 1:n)
if (max(abs(A[i,1:m])) <= tol)
A[c(i,n),] <- A[c(n,i),] # 0 rows to bottom
if (fractions) fractions (A)
else round(A, round(abs(log(tol,10))))
}
Tôi không có đủ đại diện để nhận xét, nhưng hàm được đưa ra ở trên trong câu trả lời được chấp nhận là lỗi - nó không xử lý ma trận trong đó giải pháp RREF có số 0 trên đường chéo chính. Hãy thử ví dụ:
m < -matrix (c (1,0,1,0,0,2), byrow = TRUE, nrow = 2) rref (m)
và lưu ý rằng đầu ra không có trong RREF .
Tôi nghĩ rằng tôi có nó làm việc, nhưng bạn có thể muốn kiểm tra kết quả đầu ra cho chính mình:
rref <- function(A, tol=sqrt(.Machine$double.eps),verbose=FALSE,
fractions=FALSE){
## A: coefficient matrix
## tol: tolerance for checking for 0 pivot
## verbose: if TRUE, print intermediate steps
## fractions: try to express nonintegers as rational numbers
## Written by John Fox
# Modified by Geoffrey Brent 2014-12-17 to fix a bug
if (fractions) {
mass <- require(MASS)
if (!mass) stop("fractions=TRUE needs MASS package")
}
if ((!is.matrix(A)) || (!is.numeric(A)))
stop("argument must be a numeric matrix")
n <- nrow(A)
m <- ncol(A)
x.position<-1
y.position<-1
# change loop:
while((x.position<=m) & (y.position<=n)){
col <- A[,x.position]
col[1:n < y.position] <- 0
# find maximum pivot in current column at or below current row
which <- which.max(abs(col))
pivot <- col[which]
if (abs(pivot) <= tol) x.position<-x.position+1 # check for 0 pivot
else{
if (which > y.position) { A[c(y.position,which),]<-A[c(which,y.position),] } # exchange rows
A[y.position,]<-A[y.position,]/pivot # pivot
row <-A[y.position,]
A <- A - outer(A[,x.position],row) # sweep
A[y.position,]<-row # restore current row
if (verbose)
if (fractions) print(fractions(A))
else print(round(A,round(abs(log(tol,10)))))
x.position<-x.position+1
y.position<-y.position+1
}
}
for (i in 1:n)
if (max(abs(A[i,1:m])) <= tol)
A[c(i,n),] <- A[c(n,i),] # 0 rows to bottom
if (fractions) fractions (A)
else round(A, round(abs(log(tol,10))))
}
Ngoài ra còn có một gói phần mềm gần đây phát triển cho giảng dạy Linear Algebra (matlib) mà cả hai tính hình thức bậc thang của một ma trận và hiển thị các bước được sử dụng trên đường đi.
Ví dụ từ reference docs:
library('matlib')
A <- matrix(c(2, 1, -1,-3, -1, 2,-2, 1, 2), 3, 3, byrow=TRUE)
b <- c(8, -11, -3)
echelon(A, b, verbose=TRUE, fractions=TRUE)
Initial matrix:
[,1] [,2] [,3] [,4]
[1,] 2 1 -1 8
[2,] -3 -1 2 -11
[3,] -2 1 2 -3
row: 1
exchange rows 1 and 2
[,1] [,2] [,3] [,4]
[1,] -3 -1 2 -11
[2,] 2 1 -1 8
[3,] -2 1 2 -3
multiply row 1 by -1/3
[,1] [,2] [,3] [,4]
[1,] 1 1/3 -2/3 11/3
[2,] 2 1 -1 8
[3,] -2 1 2 -3
multiply row 1 by 2 and subtract from row 2
[,1] [,2] [,3] [,4]
[1,] 1 1/3 -2/3 11/3
[2,] 0 1/3 1/3 2/3
[3,] -2 1 2 -3
multiply row 1 by 2 and add to row 3
[,1] [,2] [,3] [,4]
[1,] 1 1/3 -2/3 11/3
[2,] 0 1/3 1/3 2/3
[3,] 0 5/3 2/3 13/3
row: 2
exchange rows 2 and 3
[,1] [,2] [,3] [,4]
[1,] 1 1/3 -2/3 11/3
[2,] 0 5/3 2/3 13/3
[3,] 0 1/3 1/3 2/3
multiply row 2 by 3/5
[,1] [,2] [,3] [,4]
[1,] 1 1/3 -2/3 11/3
[2,] 0 1 2/5 13/5
[3,] 0 1/3 1/3 2/3
multiply row 2 by 1/3 and subtract from row 1
[,1] [,2] [,3] [,4]
[1,] 1 0 -4/5 14/5
[2,] 0 1 2/5 13/5
[3,] 0 1/3 1/3 2/3
multiply row 2 by 1/3 and subtract from row 3
[,1] [,2] [,3] [,4]
[1,] 1 0 -4/5 14/5
[2,] 0 1 2/5 13/5
[3,] 0 0 1/5 -1/5
row: 3
multiply row 3 by 5
[,1] [,2] [,3] [,4]
[1,] 1 0 -4/5 14/5
[2,] 0 1 2/5 13/5
[3,] 0 0 1 -1
multiply row 3 by 4/5 and add to row 1
[,1] [,2] [,3] [,4]
[1,] 1 0 0 2
[2,] 0 1 2/5 13/5
[3,] 0 0 1 -1
multiply row 3 by 2/5 and subtract from row 2
[,1] [,2] [,3] [,4]
[1,] 1 0 0 2
[2,] 0 1 0 3
[3,] 0 0 1 -1
- 1. Giảm bớt HTML/PHP
- 2. jQuery hoạt hình hàng đợi với thông thường giảm bớt
- 3. Giảm bớt/Làm xáo trộn Mã PHP
- 4. Chống spam/Giảm thiểu - Biểu mẫu liên hệ?
- 5. Giảm bớt bộ điều khiển Symfony2 và tiếp tục logic
- 6. Giảm bớt CSS, JS và HTML - cùng nhau
- 7. Làm thế nào để giảm bớt các tập tin jquery?
- 8. jquery animate hoặc giảm bớt cuộn trái increment
- 9. Giảm bớt chuỗi JSON thụt lề trong .NET
- 10. Kết quả không mong muốn từ chức năng giảm bớt
- 11. Giảm bớt đầu ra Html của Ứng dụng ASP.NET
- 12. decimal.TryParse() giảm hàng đầu "1"
- 13. Kiểu biên dạng biểu mẫu riêng
- 14. Tạo dạng xem biểu mẫu trong Zend
- 15. Khách hàng Cắt bớt QueryString, gây FormatException
- 16. Cập nhật biểu mẫu dạng bảng Apex với PLSQL
- 17. Làm cách nào để giảm "sử dụng" bản mẫu cho các biểu mẫu mới?
- 18. Tại sao biểu mẫu VB6.0 hiển thị dưới dạng biểu mẫu C#?
- 19. biểu mẫu django: Thông số truyền từ dạng xem.py đến biểu mẫu đưa ra lỗi
- 20. Chuyển đổi từ Biểu mẫu Windows sang Biểu mẫu Web
- 21. Giảm một biểu thức boolean
- 22. Giảm ngang qua biểu đồ
- 23. Tốc độ tăng/giảm động của video trong cửa sổ ứng dụng biểu mẫu
- 24. Định dạng ngày đường ray trong trường biểu mẫu
- 25. = button_to không tạo biểu mẫu nếu đã ở dạng khác
- 26. cách gửi biểu mẫu dưới dạng đối tượng JSON
- 27. autoNumeric.js xóa định dạng trước khi gửi biểu mẫu
- 28. Làm thế nào để giảm bớt thời gian dành cho thử nghiệm?
- 29. Biểu mẫu khách hàng gửi ngày giờ, ứng dụng MVC
- 30. Hình thức ngang (mỗi hàng) trong một biểu mẫu Django
này không cung cấp một câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, để lại nhận xét bên dưới bài đăng của họ - bạn luôn có thể nhận xét về bài đăng của riêng bạn và sau khi bạn có đủ [danh tiếng] (http://stackoverflow.com/help/whats-reputation), bạn sẽ có thể [nhận xét về bài đăng bất kỳ] (http://stackoverflow.com/help/privileges/comment). – lpapp
Xin lỗi, tôi mới ở đây và có thể đã bỏ lỡ điều gì đó, nhưng: "câu trả lời được chấp nhận" được cung cấp bởi soldier.moth ở trên là lỗi (vì tôi đã phát hiện ra một cách khó khăn khi tôi cố gắng sử dụng nó!) Vì vậy tôi nghĩ rằng đó là quan trọng để gắn cờ đó. Tôi không có đủ đại diện để bình luận trực tiếp câu trả lời của soldier.moth, vì vậy tôi đã tạo ra một câu trả lời mới - tôi nên làm gì ở đây? –
Có đủ danh tiếng để nhận xét trước không? – lpapp