雑感等

音楽,数学,語学,その他に関するメモを記す.

プログラミング

物理モデルで自励振動させようとした

いろいろ調整してみたら自励振動させられてないっぽい。管体部分でループ(ハウリングみたいな状態)していただけだった。 物理モデリング音源の特許(だいたい権利失効してる)の実施例にある、励振部をpythonで実装した。 一応音は出るが、パラメータの調整…

Rustで配列(Vec)の要素数を変数で指定:vec!マクロ

出典 https://users.rust-lang.org/t/attempt-to-use-a-non-constant-value-in-a-constant/32112#:~:text=Sep%20%2719-,Use%20vec!%5BDefault%3A%3Adefault()%3B%20n%5D%20or%20Vec%3A%3Awith_capacity(n)%20and%20push%20to%20it.,-Solution # 配列の要素数…

波動方程式の有限差分法を半自動で導出(sympy)

sympyで差分化した2次元の波動方程式を定義して、式の整理を自動で実行する。 jupyterで実行時、最終的な実行結果は下記。 uの添え字は、1番目が時間、2番目と3番目がxとy。 左辺がu_{1,0,0}なので、次の時間ステップにおける波の振幅を表す。 右辺は、u{0,?…

波動方程式を有限差分法の陰解法で解く(Julia)

波動方程式を↓の文献にある式で数値計算する。 https://www.uni-muenster.de/imperia/md/content/physik_tp/lectures/ws2016-2017/num_methods_i/wave.pdf https://www.uni-muenster.de/Physik.TP/archive/fileadmin/lehre/part2_hypebolic/node20.html 記号…

Karpus-Strong AlgorithmをJuliaで実装

Karpus-Strongアルゴリズム(K-Sアルゴリズム)を↓ページのブロック線図に基づきJuliaで実装した. https://ccrma.stanford.edu/~jos/pasp/Karplus_Strong_Algorithm.html 実行すると生成波形のグラフが表示され音が再生される. ↓生成波形例 K-Sアルゴリズ…

Python+PyQt5で4次元図形の描画

HSP(Hot Soup Processor)で4次元図形を回転させて描画 - 雑感等 これの二番煎じだけどクラスの設計はMVCを意識したつもり. 4次元図形の回転は上の記事と同様 https://ch.nicovideo.jp/4dimensions/blomaga/ar969330 https://www.researchgate.net/publicati…

pythonでmidiメッセージ送信

pythonのライブラリmidoを使用してリアルタイムにmidiメッセージを送信する. 以下のプログラムでは,ランダムな音高・音価・サステインペダルの踏み度合いを送信する. pianoteqのstandaloneとloopMIDIも合わせて使っている. import mido import time impo…

プログラムが終了したらメールを送信するpythonプログラム

windows 7や10で動作するはず. 使い方 "監視する実行ファイル名.exe"がすでに実行されているときに, 以下のプログラムを開始する. time.sleep(10)のとおり,10秒おきにプログラムが終了したか確認する. プログラムが起動していなければ(終了していれば…

格子ボルツマン法の局所平衡分布関数を自動で展開するプログラム

格子ボルツマン法(Lattice Boltzmann Method, LBM)の局所平衡分布関数(local equilibrium distribution)を自動で展開するプログラム. 数値計算のループを実行する際に,展開された(ベクトル,行列を使わない)式を使うことで計算の高速化が期待できるかも…

JupyterLabでコード整形(フォーマッタはautopep8)を導入

下記のサイトのコードだと"black"とかいうフォーマッタを使った例になってるらしい(一般名詞で大変紛らわしい) https://jupyterlab-code-formatter.readthedocs.io/en/latest/how-to-use.html { "shortcuts": [ { "command": "jupyterlab_code_formatter:b…

scipyのsolve_ivpでローレンツ方程式を解く

以下のページを参考にした. https://org-technology.com/posts/ordinary-differential-equations.html https://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.solve_ivp.html from scipy.integrate import solve_ivp import matplotlib.py…

フィボナッチ数列の兎の個体数増加をグラフで

フィボナッチ数列的な個体数の変化を,下記リンクの図のように表したかった. https://commons.wikimedia.org/wiki/File:FibonacciRabbit.svg 生成される図は下記のようになる. 上記の図は以下のプログラムで生成した. import matplotlib.pyplot as plt fr…

pythonで並列(joblib)使った際のパーミッションエラー

https://github.com/joblib/joblib/issues/806 albertcthomas commented on 3 Dec 2018 @robintwhite for now, if this is possible in your case, you can disable memmaping by setting max_nbytes=None in Parallel Parallel(n_jobs=-1, max_nbytes=None)…

ウルフラムの2状態3シンボルチューリングマシンをpythonで実装

Wolfram's 2-state 3-symbol Turing machine - Wikipedia Wolfram 2,3 Turing Machine Research Prize # Wolframの2状態3シンボルユニバーサルチューリングマシン class wolfram23tm: def __init__(self): init_len = 30 # テープの初期長 self.tape = [0] *…

pythonで多次元データの度数分布表を作成(マルチフラクタル次元計算の準備)+joblibで並列化

pythonで多次元データの度数分布表を作成(マルチフラクタル次元計算の準備) - 雑感等与えるwavファイルは同じだが処理時間は940秒ほどになった. import numpy as np import wave from scipy import fromstring, int16, int64 import itertools import sea…

pythonでマルチスレッド・マルチプロセス

pythonでjoblibをインポートして,マルチスレッド・マルチプロセスが使える.並列化するためには,関数型っぽく書くことを強要されるが,逆に見通しが良くなる場合があっていいかもしれない.

HSP(Hot Soup Processor)で4次元図形を回転させて描画

4次元図形の描画方法として以下のページで述べられていた方法を実装した. 【ゆっくり解説】四次元空間の描き方の基本 - ニコニコ動画 動画「四次元空間の描き方の基本」投稿:本当は怖くない四次元空間 - ブロマガ以下に作成したプログラムの動作画面を示す…

pythonで多次元データの度数分布表を作成(マルチフラクタル次元計算の準備)

マルチフラクタル次元を計算するため,多次元データの度数分布表を作成するプログラム.マルチフラクタル次元は,一般化次元(北海道大学の井上 純一先生作成の資料「2009年度 カオス・フラクタル 講義ノート」の第8回や第12回に示される)とも言われる.以…

pythonでwaveファイルの波形表示と音声再生

waveファイルの波形表示: 【Python】音声ファイル(Wave)の波形表示 | アルゴリズム雑記音声再生: PyAudio Documentation — PyAudio 0.2.11 documentation

pythonでレスラー方程式の解軌道を描画(ルンゲクッタ法)

pythonでルンゲクッタ法を実装した. レスラー方程式を与えて描画する.プログラム内関数のdxdt, dydt, dzdtを書き換えれば別の微分方程式も解ける. 下記プログラムはローレンツ方程式を解くようにも書き換えられる. import numpy as np def dxdt(a, b, c,…

pythonで自己MIC(相互情報量)関数を計算

自己相関関数では,ある信号sig(t)とその信号を時間kだけ遅延させた信号sig(t+k)との相関係数を計算するが, ここでは相関係数の代わりに相互情報量(MIC)を求める関数automicを示す. MIC自体はminepyで計算する.下記プログラムを実行すると,グラフが2つ表…

matlabで振幅スペクトルの表示(fft)

matlabで高速フーリエ変換し,振幅スペクトルを表示する. function showfft(sig,fs) %sig:信号.1次元配列 %fs:信号のサンプリング周波数 N=length(sig); % 信号のサンプル数 plot(fs*(0:N-1)/N,abs(fft(sig)/N)) %振幅スペクトルの描画:縦軸が振幅,横軸が…

haskellで逆引き辞書ソート

単語を羅列したファイルから『逆引き広辞苑』みたいにソートする. import System.IO main :: IO () main = do hin <- openFile "test_words.txt" ReadMode -- 読みこむファイル:単語リスト hout <- openFile "reverse_idx.txt" WriteMode -- 書き込むファ…

フラクショナルブラウン運動の生成するmatlabプログラム(Vossのアルゴリズムによる)

function sig=voss(hurst,len) %Vossのアルゴリズムによってフラクショナルブラウン運動を生成する. %husrt:Hurst指数 %len:出力するデータ長 %2^n+1>=lenとなる最小のnを求め,その長さでfBmを生成する lenFbm=2^ceil(log(len-1)/log(2))+1; %初期化 fBm=z…

フラクショナルブラウン運動の分散特性のプロット

matlabプログラムで分散特性に対する時間間隔を両対数グラフにプロットする.Hurst指数がHのフラクショナルブラウン運動(fBm)の信号に対して分散-時間間隔をプロットすると, 両対数グラフ上で傾きが2Hの線形となる範囲が現れる.フラクショナルブラウン運動…

フラクショナルブラウン運動の生成プログラム

正規分布に従う乱数を分数階積分してフラクショナルブラウン運動を生成し,csv形式に出力するプログラム. 下記のC++11のコンパイラで動作を確認 Embarcadero Technologies Inc. bcc32c version 3.3.1 Microsoft Visual Studio Community 2015 Version 14.0.…

minicondaで環境作成とパッケージインストールに失敗する場合(Windows 10)

OS: Windows 10 プロキシサーバ経由でネット接続 minicondaで環境作成に失敗した. cmdから"conda create -n py36 python=3.6"を実行した結果urlopen error [WinError 10060]が出る. 対処:proxy設定(.condarcファイルを作成)して,proxy設定が有効なpyth…

jupyter実行時のエラー:markupsafeの入れ直しで解消

下記ページと同様の対処をしてjupyterが実行できるようになった. oboe2uran.hatenablog.com表示されたエラー: C:\WINDOWS\system32>jupyter notebook Traceback (most recent call last): File "c:\python\lib\runpy.py", line 193, in _run_module_as_mai…

haskellでテトレーションを計算

を求める関数. tetration x y= foldr1 (^) $ take y $ repeat x

常微分方程式の数値解法:ルンゲ=クッタ法,クッタ=シンプソンの方法(1/3法則)

文献が示すルンゲ=クッタの公式を整理する. 文献の"表 8.3 ルンゲ-クッタの公式"と"表 8.4 ルンゲ-クッタの公式(連立方程式)"をもとにする. 文献 藪忠司, 伊藤惇. “8.2 ルンゲ-クッタ法”. 数値計算法. コロナ社, 2002, p.100-101, (機械系教科書シリーズ…