■実験室

■プロフィール

Sligh'Hand

Author:Sligh'Hand

所属ギルド
Open Travelers
称号
ぐったりたぬぬ
特徴
公園内でマジシャンを目指す新米教師。桜の下で「たぬき寝入り」するのがマイブーム。

■最近の記事
■最近のコメント
■ブログ内検索

■リンク
■RSSリンク
■カテゴリー
■月別アーカイブ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


スポンサー広告 | --:--:--

【C++】ベクトル計算ライブラリ

 ヘンなもの作っちゃいました。 ぐったりたぬぬです。

 n 次元実数ベクトルの加減算、実数倍、内積、外積、テンソル積、ノルム計算なんかができる C++ のライブラリとか作ってみました。 うん、使い道はとくにないです。 ノリと勢いだけで作ったので、何に使えるのかも不明です。





 とりあえず、簡単に使い方だけ紹介。 というか、自分が忘れないためのメモ。 使うことはないでしょうけど。

#include "guttaryVector.h"

int main()
{
	// a, b: 3 次元ベクトル
	// c: 4 次元ベクトル
	Vector a(3), b(3), c(4);

	// ベクトル a の成分を設定
	a.Set(0, 1.0);
	a.Set(1, 2.0);
	a.Set(2, 4.0);

	// ベクトル b の成分を設定
	// 配列から代入することもできます
	// 第 2 引数は配列の要素数です
	double vb[] = {1.0, 2.0, 3.0};
	b.Set(vb, sizeof(vb)/sizeof(vb[0]));

	// ベクトル c の成分を設定
	// 普通の配列のようにアクセスすることもできます
	double vc = 1.0;
	for (int i = 0; i < 4; i++) {
		c[i] = vc;
		vc += 1.0;
	}

	Vector v(3);

	// 加減算・実数倍
	v = a + b;
	v = a - b;

	v = b * 2.0;
	v = 2.0 * b;

	v = a / 2.0;
	// c = a + b とか v = a + c とか次元が違うベクトルが入ると
	// 例外 invalid_argument を throw します

	// 内積計算
	double ip;
	ip = Vector::InnerProduct(a, b);
	// InnerProduct(a, c) とか次元が違うベクトルが入ると
	// 例外 invalid_argument を throw します

	return 0;
}

 演算時に次元の違うベクトルが入っているときは C++ 標準例外の invalid_argument を投げるようにしてるんですけど、コレでいいのかなぁ? それとも domain_error を継承した別の例外を throw するのが妥当なのかなぁ? 詳しい方教えてくださいっ><;

 っと、日付変わりそうなので、今日のところはとりあえずこの辺で。

テーマ:プログラミング - ジャンル:コンピュータ

たぬぬのねごと | 23:58:42 | Trackback(0) | Comments(0)
コメントの投稿

管理者にだけ表示を許可する

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。