プログラミング

MATLAB/simulink

MATLABで素数の数を求める

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

MATLABで多項式を解く

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

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

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

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

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

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

ChatGPTでMATLAB用の最急降下法の学習係数最適化プログラムを生成した。合ってるかは不明。% 3変数のラインサーチのサンプルコード(gradを使用しない)% 目的関数(Rosenbrock関数)fun = @(x) 100*(x(2...
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{5mm...
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}}\end...
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);endBfunction y = getBernoulliNumber(n, ...
C/C++/C#

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

regexを使えばできる。以下コード#include <iostream>#include <string>#include <regex>int main() { std::string str = "12345あいうえお"; std::...
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を併用する