プログラミング

MATLAB/simulink

MATLABで素数定理を確認する

primesを使えば簡単。 n_min = 2; n_max = 1000; x = n_min:1:n_max; p_count=zeros(size(x)); pi_n = x ./ log(x); for i=1:1:length(x...
C/C++/C#

C++で回転行列を計算する

angleとaxisを指定すれば計算できる。 #define _USE_MATH_DEFINES #include <iostream> #include <cmath> void getRotationMatrix(double angl...
MATLAB/simulink

MATLABでスターリングの公式を計算する

スターリングの公式は \begin{align}n! \approx \sqrt{2\pi n} \left(\frac{n}{e}\right)^n \end{align} で表される。 以下コード。 stirling(3) functi...
ChatGPT

ChatGPTでMATLAB用の最急降下法の学習係数最適化プログラムを生成した

ChatGPTでMATLAB用の最急降下法の学習係数最適化プログラムを生成した。 合ってるかは不明。 % 3変数のラインサーチのサンプルコード(gradを使用しない) % 目的関数(Rosenbrock関数) fun = @(x) 100*...
MATLAB/simulink

MATLABで楕円曲線を描く

今回描く楕円曲線は \begin{align}y^2=x^3-x\end{align} 解は複素数になるときもあるが、今回は実平面との交点のみを描く。 ルートの中身 \begin{align}x^3-x\end{align} が正になるとき...
MATLAB/simulink

MATLABでL0ノルムを求める

L0ノルムの定義 \begin{align}L_0=\sum_{i=1}^n\delta(x_i),\quad \delta(x_i)=\begin{cases}1\hspace{5mm} (x_i \neq 0)\\0\hspace{5m...
MATLAB/simulink

MATLABでディリクレ核を描画する

ディリクレ核 \begin{align}D_n(x)=1+2\sum_{k=1}^{n} \cos (kx) = \frac{\sin \left( \frac{2n+1}{2}\right )x}{\sin \frac{x}{2}}\en...
MATLAB/simulink

MATLABでベルヌーイ数を求める

これの続き。 N=10; B=zeros(1,N); B(1,1)=1; for i = 1:1:N B(1,i+1)=getBernoulliNumber(i, B); end B function y = getBernoulliNum...
C/C++/C#

C++の正規表現を使ってみる

regexを使えばできる。 以下コード #include <iostream> #include <string> #include <regex> int main() { std::string str = "12345あいうえお"; ...
C/C++/C#

C++でベルヌーイ数を求める

ベルヌーイ数を求めるには漸化式を解けばいい。 漸化式は \begin{align}B_0&=1\\B_n&=-\frac{1}{n+1} \sum_{k=0}^{n-1} {}_{n+1} C_{k} B_{k}\end{align} とな...
C/C++/C#

多倍長ライブラリのメモ

多倍長ライブラリmpirを含むデータをtupleにまとめvectorに格納するとうまくいかなくなる。
C/C++/C#

mpirを使ってウィルソンの定理を計算する

ウィルソンの定理は\(p\)が素数ならば \begin{align}(p-1)! \equiv =-1(mod p)\end{align} が成り立つ定理である。今回はwikipediaにある表をmpirを用いて計算した。
C/C++/C#

C++で素数の数を求める

素数の数は \begin{align}N(n) =\sum_{k=1}^{m} \left \lfloor \cos^2 \frac{(n-1)! + 1}{n} \pi \right \rfloor \end{align} で求められる。
C/C++/C#

C++で素数判定

その数が素数かどうかは \begin{align}isprime(n) = \left \lfloor \cos^2 \frac{(n-1)! + 1}{n} \pi \right \rfloor \end{align} で判定できる
C/C++/C#

mpirで再帰関数を定義する

mpirで再帰関数を使うにはmpz_tで定義した数値をmpz_ptrで返す必要がある。 mpz_ptrはmpz_tのポインタである。 例
C/C++/C#

mpirライブラリを使って計算した階乗の計算結果をcsvに保存する

通常の数値と同じ。
C/C++/C#

多倍長整数ライブラリを使った階乗の計算

MPIRを使った。インストールはここ。 今回は階乗を計算した。 結果はこうなる。
C/C++/C#

sortを使ったpairを併用しているときのvectorのソート

sortとbegin、endを併用する
C/C++/C#

C++でvectorを表示する

unsigned long long int 型で作られたvectorを表示する。
C/C++/C#

C++でpairで作られたlistをCSVで保存する

C++でpairで作られたlistをCSVで保存する。 読み込んで放り込めばいい。