プログラミング

MATLAB/simulink

三角関数の近似式

十分小さい正の角度\(\theta\)について、\(\tan \theta\)は\(\cos \theta \)を用いて \begin{align}\tan \theta \approx \sqrt{2(1- \cos\theta)} \e...
MATLAB/simulink

MATLABで分散を逐次計算しようとしてうまくいかなかった話

MATLABで分散を逐次計算しようとしてうまくいかなかった。 分散の逐次計算は \begin{align}\sigma_{n+1}^2=\dfrac{n(\sigma_n^2+\mu_n^2)+x_{n+1}^2}{n+1}-\mu_{n+...
MATLAB/simulink

MATLABで平均を逐次計算する

平均は \begin{align}\mu_{n+1} = \frac{1}{n+1} (n \mu_n + x_{n+1})\end{align} で逐次計算できる。 以下コード N=10; x=1:1:N; mu=zeros(1,N); ...
MATLAB/simulink

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

これの続き N=6; B=zeros(1,N); B(1,1) = 1; disp(B(1,1)); for i = 2:1:N B(1,i) = getBernoulliNumber(i, B); disp(B(1,i)); end fu...
MATLAB/simulink

MATLABで素数の逆数和を計算する

素数の逆数和は \begin{align}P=\frac{1}{2} + \frac{1}{3}+ \cdots = \infty\end{align} となる。これを計算する。 以下コード N=100; P=zeros(1,N); for...
MATLAB/simulink

MATLABで素因数分解をする

これの続き num = input('数字を入力してください: '); fprintf('入力された数字 -> %d\n', num); PrimeFactorization(num); function PrimeFactorizatio...
MATLAB/simulink

MATLABのisprimeの速度を比較してみた

以下のソースコードで速度を比較。 n=15のとき 自作関数:0.0025 isprime:0.0016 n=150のとき 自作関数:0.0049 isprime:0.0064 なお自作のmyisprimeで計算できるのはn=170程度まで ...
MATLAB/simulink

MATLABで素数の数を求める

これのMATLAB版 n = 15; count = 0; for i = 1:n disp(); count = count + isprime(i); end disp(); function p = isprime(n) k = fa...
MATLAB/simulink

MATLABで多項式を解く

polynomialに生成した多項式を放り込んでsolveで解を求める。coefficientsには高い順に係数を入れればいい。今の例だと\(x^2+5x+6=0\)を解く。 coefficients = ; syms x; polynom...
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に格納するとうまくいかなくなる。