行ベクトル、列ベクトルを扱います。 行ベクトルはRowVector(ComplexRowVector)クラス、 列ベクトルはColumnVector(ComplexRowVector)クラスとして定義されています。 ヘッダファイルはそれぞれ、 dRowVector.h (CRowVector.h)、 dColVector.h (CColVector.h) になります。
#include <iostream> #include <octave/config.h> #include <octave/CColVector.h> #include <octave/CRowVector.h> using namespace std; int main() { cout.precision(3); cout.setf(ios::fixed); int const N = 3; Complex const IU(0.0, 1.0); ComplexColumnVector u(N); ComplexColumnVector v(N); u(0) = 1.0; v(0) = 4.0*IU; u(1) = 2.0; v(1) = 5.0*IU; u(2) = 3.0; v(2) = 6.0*IU; cout << "u = " << endl << u << endl; cout << "u.rows() = " << u.rows() << endl << endl; cout << "v = " << endl << v << endl; cout << "2*u+v = " << endl << 2.0*u+v << endl; cout << "u * v = " << u * v << endl << endl; ComplexRowVector w = u.transpose(); cout << "w = u^(t) = " << endl << w << endl; cout << "w.rows() = " << w.rows() << endl; // w.cols() error cout << "w * v = " << w * v << endl; cout << "v * w = " << v * w << endl; }
u = (1.000,0.000) (2.000,0.000) (3.000,0.000) u.rows() = 3 v = (0.000,4.000) (0.000,5.000) (0.000,6.000) 2*u+v = (2.000,4.000) (4.000,5.000) (6.000,6.000) u * v = (0.000,32.000) w = u^(t) = (1.000,0.000) (2.000,0.000) (3.000,0.000) w.rows() = 3 w * v = (0.000,32.000) v * w = (0.000,32.000)
管理人? (2005-01-15 (土) 13:35:55)
出力を見ると、ベクトルu,vの掛け算u*vは、uとvの内積を返すようです。
ただし詳細は不明です。
&ref(): File not found: "wikilogo1.png" at page "ベクトルの加減算を行いたい"; |