私はMatrixオブジェクトとSquareMatrixオブジェクトのためのこの子を格納する2つのクラスを実装することを含むコースワークを持っています。 Ax = bという式の方程式を解くことができるメンバー関数を実装する必要があります.Aは行列、xは見つけたいベクトル、bは既知のベクトルです。子クラスのインスタンスを使用する親クラスメンバ関数C++
私はSquareMatrixの場合にこれを実装しました.Gaussianの除去ではそれほど難しくないからです。コースウェアでは、非正方行列の場合を解くために使用する必要があると言う方法は、A'Ax = A'bを「転置意味」で解くことです。 A'Aは正方行列になっているので、これはガウス消去を使っても解けます。
私が知りたかったのは、Matrixの解決関数でSquareMatrixオブジェクトを作成し、SquareMatrixメンバーの解決法を使ってシステムを解決することが有効であるかどうかということでした。だから、例えばSquareMatrixに私は私はその後Matrix.cppにだから私はその転置を乗じて、マトリックスの正方形を作り、その後SquareMatrix関数を解決呼んでいる
Matrix Matrix::solve(Matrix& b){
//make the matrix into a square
SquareMatrix AtransposeA = (this->transpose())*(*this);
//update rhs of equation accordingly
Matrix Atransposeb = (this->transpose()) * b;
//Call SquareMatrix solve to solve the problem.
Matrix x = AtransposeA.solve(Atransposeb);
return x;
}
を
Matrix SquareMatrix::solve(Matrix& b){
//stuff that solves (*this) * x = b for x and returns x
}
を持ってもらえている場合。私はC++には比較的新しいので、100%は継承の周りに頭を浮かべていないので、これが有効かどうかわからない。
私はあなたのことを知っていますが、教科書でMatrixからSquareMatrixを派生させることを明示的に求めているので、選択肢はありません。親クラスの派生クラスを使用しても有効かどうかを確認してくれてありがとう – bigbadpiano