ベクトルの加減算を行いたい


Tips

解説

行ベクトル、列ベクトルを扱います。 行ベクトルはRowVector(ComplexRowVector)クラス、 列ベクトルはColumnVector(ComplexRowVector)クラスとして定義されています。 ヘッダファイルはそれぞれ、 dRowVector.h (CRowVector.h)、 dColVector.h (CColVector.h) になります。

サンプルプログラム

filemain.cpp

#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)

コメント

ベクトル同士の掛け算 operator*について

管理人? (2005-01-15 (土) 13:35:55)

出力を見ると、ベクトルu,vの掛け算u*vは、uとvの内積を返すようです。
ただし詳細は不明です。