簡體   English   中英

使用C ++ Boost進行矩陣除法

[英]Matrix division using C++ Boost

現在,我想使用C ++ Boost求解矩陣函數:A * P = X,P = A \\ X。 我有矩陣A和矩陣X,所以我需要做P = A \\ X才能得到矩陣P。這是矩陣除法的問題,對嗎?

我的C ++代碼是

#include "stdafx.h" 
#include <boost\mat2cpp-20130725/mat2cpp.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/matrix_proxy.hpp>
#include <boost/numeric/ublas/io.hpp>
using namespace boost::numeric::ublas;
using namespace std;

int main() {
    using namespace mat2cpp;
    matrix<double> x(2,2); // initialize a matrix
    x(0, 0) = 1;  // assign value
    x(1, 1) = 1;
    matrix<double> y(2, 1);
    y(0, 0) = 1;
    y(1, 0) = 1;

    size_t rank;
    matrix<double> z = matrix_div(x, y, rank);
}

但是它有錯誤錯誤圖 ,請幫助我! 謝謝!

首先,沒有矩陣除法。 如果您有此等式A * P = X並且想找到P,則解為:inv(A)* A * P = inv(A)* X,其中inv(A)是A矩陣的逆矩陣。 因為我們知道inv(A)* A等於單位矩陣,所以我們可以得出P = inv(A)* X的結論。

現在您的問題是計算A矩陣的逆。 有幾種方法可以做到這一點,我的建議是使用LU分解。

老實說,我不知道boost庫是否有mat2cpp之類的東西。 如果要使用boost,我建議使用boost/numeric/ublas/matrix.hpp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM