C/C++/C# Eigenで逆行列を求める coreのほかにLUも必要。 #include "../Eigen/core" #include "../Eigen/LU" あとは A.inverse() とすればいい。 実行結果。 -0.666667 -1.33333 1 -0.666... 2022.11.16 C/C++/C#プログラミング代数数学
C/C++/C# 行列の固有値と行列式の関係 行列の固有値の積は行列式の値と等しくなる。これをEigenで試す。 実行結果 固有値 (16.7075,0) (-0.905741,0) (0.198246,0) 行列式 -3 確かめれば \begin{align}16.7075 \tim... 2022.11.14 C/C++/C#プログラミング代数数学
C/C++/C# Eigenで固有値と固有ベクトルを計算する Eigenで固有値と固有ベクトルを求めるには Eigen::EigenSolver< Eigen::MatrixXf > s(A); とした後、sに対して s.eigenvalues() とすれば固有値を、 s.eigenvectors()... 2022.11.14 C/C++/C#プログラミング代数数学
C/C++/C# トレースとフロベニウスノルムの関係 \(A\)と\(A\)の転地の積のトレースはフロベニウスノルムの二乗と等しくなる。つまり \begin{align}\mathrm{tr} (A A^{T}) = \mathrm{tr} (A^{T} A) = \sum_{i=1}^{n}... 2022.11.14 C/C++/C#プログラミング代数数学
C/C++/C# トレースの性質 トレースにはつぎのようなの性質がある。 \begin{align}\mathrm{tr} {A1} + \mathrm{tr}{A2} &= \mathrm{tr} ( A1+A2 ) \\a\ \mathrm{tr} {A1} &= \m... 2022.11.13 C/C++/C#プログラミング代数数学
C/C++/C# C++で汎用print関数を作る 何度もstd~と書くのはめんどくさいので汎用print関数を作る。詳細は記事がたくさんあるので割愛。 vectorなど工夫しないと使えないものもあるが、数値、文字関係なく使える。 template <class T> void mytpri... 2022.11.12 C/C++/C#プログラミング
C/C++/C# C++における配列の動的な宣言 CやC++では配列を動的に確保することができないのでmallocやnewを使う。 メモリ開放をしないと大変なことになるので注意。 実行結果 要素数は?->3 数を入力->2 数を入力->1 数を入力->4 2,1,4, ソースコード。 #i... 2022.11.11 C/C++/C#プログラミング
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,... 2022.11.11 C/C++/C#プログラミング代数数学
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 ... 2022.11.10 C/C++/C#プログラミング代数数学
C/C++/C# C++でフロベニウスノルムを計算する フロベニウスノルムは \begin{align}\| A \|_{F}=\sqrt{\sum_{i=1}^{m} \sum_{j=1}^{n} \left |a_{ij} \right |}\end{align} で計算できる。一次元配列に... 2022.11.06 C/C++/C#プログラミング代数数学
C/C++/C# Eigenで内積と外積を計算する ベクトルを定義するときは #include "../Eigen/Dense" をインクルードして Eigen::Vector3d x(1, 2, 3); とすればベクトルが定義できるので、内積と外積を x.dot(y) x.cross(y)... 2022.11.06 C/C++/C#プログラミング代数数学
C/C++/C# Eigenで行列の和・差・積を試す Eigenで行列の和・差・積を試す。「+」、「-」、「*」が使えるので直観的。 ソースコード #include <iostream> #include "../Eigen/core" int main() { int n = 2; Eige... 2022.11.06 C/C++/C#プログラミング代数数学
C/C++/C# Eigenをインストールして使ってみた Eigen(は行列用の科学技術ライブラリで、ヘッダーだけ読み込めば動く。 ダウンロードしたファイルを展開するとEigenというファイルがあるのでそれを適当な場所に置き #include "../Eigen/core" としてcoreにパスを... 2022.11.06 C/C++/C#プログラミング代数数学
C/C++/C# typedefと合わせた関数ポインタの使い方 typedefを使うと何度も宣言しなくてよく、型のように扱える。 typedef void (*ECHO)(int); ソースコード #include <iostream> typedef void (*ECHO)(int); void e... 2022.11.05 C/C++/C#プログラミング
C/C++/C# C++の関数ポインタについて 内容はC言語。関数ポインタは void (*pecho)(int); で定義して pecho = echo; で参照設定する。関数ポインタの定義は参照元の関数の返り値と引数の型 void echo(int x) { std::cout <<... 2022.11.05 C/C++/C#プログラミング
C/C++/C# C++で型変換をする static_castを使えばできる y = static_cast<double>(x); 型変換した後する前と変換後で型を調べる。 実行結果 int double ソースコード #include <iostream> #include ... 2022.11.05 C/C++/C#プログラミング
C/C++/C# C++のfindを使ってみる findを使うと先頭から何番目にその文字があるかを探すことができる 実行結果 18446744073709551615 0 存在しません ちなみにこれらのコードはどれも同じ動作をする。autoの動作が原因。 if (str1.find("z... 2022.11.05 C/C++/C#プログラミング
C/C++/C# C++でコンストラクタをオーバーロードする 引数に応じて動作を変えられる。コンストラクタの定義はこの部分 Student() { } Student(std::string name, int jpn, int math, int eng) { m_name = name; m_ma... 2022.11.04 C/C++/C#プログラミング
C/C++/C# Qiitaの質問にあったC++のクラスの使い方が変だったので直してみた Qiitaの質問にあったC++のクラスの使い方が変だったので直してみた。 記事については自分で探してほしい。 やりたいことは生徒の成績をクラスに入れて管理すること。 実行結果 tanaka 30 40 50 satoh 20 60 64 t... 2022.11.03 C/C++/C#プログラミング
C/C++/C# C++によるファイル書き込み C++によるファイル書き込みはfstreamを使えばいい。 実行結果 memo.txt Teat1 Teat2 ソースコード main.cpp #include <fstream> #include <iostream> #include ... 2022.11.03 C/C++/C#プログラミング