solve
位於 base
包(package)。 說明
此通用函數可求解方程 a %*% x = b
得到 x
,其中 b
可以是向量或矩陣。
用法
solve(a, b, ...)
## Default S3 method:
solve(a, b, tol, LINPACK = FALSE, ...)
參數
a |
包含線性係統係數的方數值或複矩陣。邏輯矩陣被強製轉換為數字。 |
b |
給出線性係統右側的數值或複數向量或矩陣。如果丟失, |
tol |
檢測 |
LINPACK |
合乎邏輯的。失效並出現錯誤。 |
... |
傳遞給其他方法或從其他方法傳遞的進一步參數 |
細節
a
或 b
可能很複雜,但這使用雙複數算術,可能並非在所有平台上都可用。
結果的行名稱和列名稱分別取自a
和b
的列名稱。如果 b
丟失,則結果的列名稱是 a
的行名稱。不檢查 a
的列名稱是否與 b
的行名稱匹配。
為了向後兼容,a
可以是(真正的)QR 分解,盡管在這種情況下應該調用 qr.solve
。 qr.solve
可以處理非方形係統。
底層 LAPACK 代碼的不成功結果將導致錯誤,並給出正錯誤代碼:這些隻能通過詳細研究 FORTRAN 代碼來解釋。
如果 a
和/或 b
包含缺失、NaN
或無限值,會發生什麽情況取決於平台,包括正在使用的 LAPACK 版本。
tol
是(估計的 1-範數)‘倒數條件數’的容差:如果 tol <= 0
則跳過檢查。
由於曆史原因,默認方法接受 a
作為類 "qr"
的對象(帶有警告)並將其傳遞給 solve.qr
。
例子
hilbert <- function(n) { i <- 1:n; 1 / outer(i - 1, i, `+`) }
h8 <- hilbert(8); h8
sh8 <- solve(h8)
round(sh8 %*% h8, 3)
A <- hilbert(4)
A[] <- as.complex(A)
## might not be supported on all platforms
try(solve(A))
來源
默認方法是 LAPACK 例程 DGESV
和 ZGESV
的接口。
LAPACK 來自https://netlib.org/lapack/。
參考
Anderson. E. and ten others (1999)
LAPACK Users' Guide. Third Edition. SIAM.
Available on-line at
https://netlib.org/lapack/lug/lapack_lug.html.
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
也可以看看
solve.qr
用於 qr
方法,chol2inv
用於從 Cholesky 因子反轉 backsolve
、 qr.solve
。
相關用法
- R source 從文件、連接或表達式中讀取 R 代碼
- R sort 對向量進行排序或排序
- R socketSelect 等待套接字連接
- R strsplit 分割字符向量的元素
- R seq.Date 生成規則的日期序列
- R search 給出 R 對象的搜索路徑
- R scan 讀取數據值
- R sprintf 使用 C 風格字符串格式化命令
- R stop 停止函數執行
- R sign 標誌函數
- R svd 矩陣的奇異值分解
- R strtoi 將字符串轉換為整數
- R sQuote 引用文字
- R switch 選擇替代方案列表之一
- R substitute 替換和引用表達式
- R strrep 重複字符向量的元素
- R split 分組並重新集合
- R slice.index 數組中的切片索引
- R standardGeneric 形式化方法係統 – 調度 S4 方法
- R sequence 創建序列向量
- R startsWith 字符串是否以另一個字符串開頭或結尾?
- R system.file 查找 R 係統文件的名稱
- R sample 隨機樣本和排列
- R strwrap 將字符串換行以設置段落格式
- R seek 重新定位連接的函數
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Solve a System of Equations。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。