C/C++/C#

トレースの性質 その1

トレースには次の性質がある。 \begin{align}tr (A+B) = tr A + tr B\end{align} 今回はこれをC++で計算する。 実行結果 1,2,3, 4,5,6, 7,8,9, 10,11,12, 13,14,...
C/C++/C#

C++でトレースを求める

正方行列の対角成分の和 \begin{align}tr A = \sum_{i=1}^{n} a_{ii}\end{align} をトレースという。 今回はこれをC++で計算する。 実行結果 1,2,3, 4,5,6, 7,8,9, 15 ...
代数

二次形式の定義

\(n\)個の変数による二次形式は \begin{align}f(x_1,x_2,\cdots,x_{n-1},x_n)=\sum_{i=1,j=1}^{n} c_{i,j} x_i x_j\end{align} \(n=2\)の時は定数\...
機械

通流率(デューティ比)の定義

通流率(デューティ比)はオン時間\(T_{on}\)とオフ時間\(T_{off}\)を用いて \begin{align}D=\frac{T_{on}}{T_{on}+T_{off}}\end{align}
代数

行列の特異値

行列\(A\)について、その随伴行列\(A^{*}\)との積\(AA^{*}\)を考える。この時固有値\(\lambda(AA^{*})\)の平方根を \begin{align}\sigma(A)=\sqrt{AA^{*}}\end{ali...
C/C++/C#

C++でフロベニウスノルムを計算する

フロベニウスノルムは \begin{align}\| A \|_{F}=\sqrt{\sum_{i=1}^{m} \sum_{j=1}^{n} \left |a_{ij} \right |}\end{align} で計算できる。一次元配列に...
C/C++/C#

Eigenで内積と外積を計算する

ベクトルを定義するときは #include "../Eigen/Dense" をインクルードして Eigen::Vector3d x(1, 2, 3); とすればベクトルが定義できるので、内積と外積を x.dot(y) x.cross(y)...
C/C++/C#

Eigenで行列の和・差・積を試す

Eigenで行列の和・差・積を試す。「+」、「-」、「*」が使えるので直観的。 ソースコード #include <iostream> #include "../Eigen/core" int main() { int n = 2; Eige...
C/C++/C#

Eigenをインストールして使ってみた

Eigen(は行列用の科学技術ライブラリで、ヘッダーだけ読み込めば動く。 ダウンロードしたファイルを展開するとEigenというファイルがあるのでそれを適当な場所に置き #include "../Eigen/core" としてcoreにパスを...
C/C++/C#

typedefと合わせた関数ポインタの使い方

typedefを使うと何度も宣言しなくてよく、型のように扱える。 typedef void (*ECHO)(int); ソースコード #include <iostream> typedef void (*ECHO)(int); void e...
C/C++/C#

C++の関数ポインタについて

内容はC言語。関数ポインタは void (*pecho)(int); で定義して pecho = echo; で参照設定する。関数ポインタの定義は参照元の関数の返り値と引数の型 void echo(int x) { std::cout <<...
C/C++/C#

C++で型変換をする

static_castを使えばできる y = static_cast<double>(x); 型変換した後する前と変換後で型を調べる。 実行結果 int double ソースコード #include <iostream> #include ...
C/C++/C#

C++のfindを使ってみる

findを使うと先頭から何番目にその文字があるかを探すことができる 実行結果 18446744073709551615 0 存在しません ちなみにこれらのコードはどれも同じ動作をする。autoの動作が原因。 if (str1.find("z...
C/C++/C#

C++でコンストラクタをオーバーロードする

引数に応じて動作を変えられる。コンストラクタの定義はこの部分 Student() { } Student(std::string name, int jpn, int math, int eng) { m_name = name; m_ma...
電力

ベクトルオペレータを含む行列の逆行列について

ベクトルオペレータを使った3相交流回路の電流表現を考える。いま、各層を流れる電流\(\dot{I}_{a}, \dot{I}_{b}, \dot{I}_{c}\)と零相電流\(\dot{I}_{c}\)、正相電流\(\dot{I}_{a}\...
C/C++/C#

Qiitaの質問にあったC++のクラスの使い方が変だったので直してみた

Qiitaの質問にあったC++のクラスの使い方が変だったので直してみた。 記事については自分で探してほしい。 やりたいことは生徒の成績をクラスに入れて管理すること。 実行結果 tanaka 30 40 50 satoh 20 60 64 t...
C/C++/C#

C++によるファイル書き込み

C++によるファイル書き込みはfstreamを使えばいい。 実行結果 memo.txt Teat1 Teat2 ソースコード main.cpp #include <fstream> #include <iostream> #include ...
C/C++/C#

C++でテキストファイルを読み込む

テキストファイルを読み込むには std::ifstream memo("./memo.txt"); とすればいい。fopenよりも便利。あとはstring型で定義した変数に読み込んだ文字列を放り込めばいい。 実行結果 hello world...
C/C++/C#

C++で二次方程式の判別式を計算する

二次方程式の解の公式は \begin{align}D=b^2-4ac\end{align} あとは値の範囲で条件分岐すればいい 実行結果 d -> 33 異なる2つの実数解 ソースコード #include <iostream> typede...
C/C++/C#

C++でrepを使う

repを使うと繰り返しを定義できる。 実行結果 i ->0 i ->1 i ->2 ソースコード #include <iostream> #define rep(i, n) for (int i = 0; i < (int)(n); i++...