まぃふぇいばりっと

退職D進して機械学習やってます.Julia大好きです.勉強したことの殴り書きです.

C++

Zigzag graphene nanoribbons のエネルギー分散関係

大昔に研究で使っていたCのコードが発掘された. グラフェンのジグザグナノリボンのバンド図を求めます。Nはユニットセル内の原子の数です。最近接のとびうつりのみを考えたタイトバインディングで計算しています。計算結果は/dataにdatファイルとして出力し…

C++ 行列バランシング

行列バランシングと言えば,sinkhornですが,今回はこの論文を実装しました. arxiv.org (論文では自然勾配法使ってますが,ここでは,1次までしか実装してないです) #include <iostream> #include <Eigen/Dense> #include <vector> #include <cmath> #include <time.h> #include <cstdio> #include <fstream> using names</fstream></cstdio></time.h></cmath></vector></eigen/dense></iostream>…

C++ eigenでランダム行列を作る

C++

最小値LOから最大値HIの値を一様にとる連続分布で,N×Nの行列を作る方法. #include <Eigen/Dense> #include <iostream> #include <cmath> using namespace Eigen; using namespace std; MatrixXd random_uniform_mtx(int N, double LO, double HI){ double range = HI - LO ; MatrixXd P =</cmath></iostream></eigen/dense>…

C++で行列のランクを求める

C++

あんまり良い方法が思い浮かばないので,いつもこんな風にやっているのですが,何か良いアイディアがあれば教えてください. #include <Eigen/Dense> #include <iostream> #include <cmath> using namespace Eigen; using namespace std; int matrix_rank(MatrixXd mtx){ FullPivLU<MatrixXd> lu_deco</matrixxd></cmath></iostream></eigen/dense>…

C++ SVDによる低ランク近似

O(n3)で入力行列Pのランクをrにするアルゴリズムです.eigenをつかっています. #include <iostream> #include <Eigen/Dense> #include <vector> #include <cmath> #include <time.h> #include <cstdio> #include <fstream> #include "utils.h" using namespace std; using namespace Eigen; MatrixXd SVD(MatrixXd& P, int r</fstream></cstdio></time.h></cmath></vector></eigen/dense></iostream>…