Excel VBAで複素数演算(一次方程式・FFT他, Numerical Recipes移植)、フィッティング(非線形含む)、ルンゲクッタ8次(DOP853)などが使えるライブラリ その1:複素数演算の基礎
会社では、まあ開発部門は何のプログラム言語を使ってもいいのだけれど
工場ではそういうわけにもいかない。そもそも外部のネットワークに接続できなかったりする。
ちょっとした設計や計測に使うソフトウェアを作って配りたい、
というときに非常に困る。
ソフトウェアを買え、という話もあるが、損益が厳しい工場が買うはずがないのだ。(これを導入したらいくらの売り上げUPか利益率いくらUPが定量的に示せないと何も買わないのだ)
MicrosoftのOfficeくらいならどの工場のPCでも入っている、ということで
フルスクラッチでExcelのマクロ(VBA)で計算・計測プログラムを作って配っていたりする。
DLLですらダウンロードできないので、全部ソースに書いているという。
※ちなみに仕事でやっているわけでなくて、単なるサービスというか、趣味。
私はもはやエンジニアでもないのだったりする。
ということで、今回はそのライブラリを紹介します。まあそれなりにみんなに使ってもらっているので致命的なバグはないと思いますが、細かいミスはご勘弁を、、、(責任は全くとらない方向で)
まずライブラリ本体:
またルンゲクッタ8次のDOP853ルーチンとそのドライバ。
メルセンヌツイスタ用
――
今回は第一回ということで複素数演算などの使い方。
Numerical Recipesについてはこちらから本が丸ごと読めます。
まずはVBAの編集画面から、ファイルのExportを行い、
ComplexMath.bas
を読み込みます。これで複素数演算(FFT,連立一次方程式,逆行列)、フィッティング(線形・非線形)などが
使える状態になります。
複素数は構造体で定義されています。
Public Type Complex
x As Double
y As Double
End Type
この変数を作るときは、
Dim x As Complex
のように宣言します。
もちろん、配列も宣言できます。行列を作るには
Dim A() as Complex
Redim A(3,3)
とすれば可変長の行列ができます。
※Numerical Recipesの表現に合わせたので、0からではなくて1からです。
明示的に最初に Option BASE 1 としておくと便利
値を代入するには、
z = ToComplex(1.2, 3.5)
のように実部と虚部に分けて設定することができます。
この場合 z=1.2+3.5i と入力したことに相当します。
また
z = x
のように別の複素数は直接代入できます。
四則演算については +,-,×,÷はそれぞれ
z = Cadd(x, y)
z = Csub(x, y)
z = Cmul(x, y)
z = Cdiv(x, y)
Cdiv(x,y)のみ順番に注意が必要で、x/yの意味です。
複素共役,絶対値、偏角はそれぞれ、
z=Conj(z), a=Cabs(z), p=CPhase(z)
実数部分、虚数部分を取り出すにはそれぞれ
a=Rez(z), b=Imz(z)
などとします。
※ついでに角度が±πに対応したatan2(x,y)という関数も使えます。x/y=tanθの逆関数。
複素数の指数、対数関数、べき乗関数はそれぞれ(多価関数は±πのみを取る)
z=Cexp(x), z=Clog(x), z=Cpow(x,y)となる。ただしべきはz=x^yの意味。
--
では次回はFFTを。
--
こちらも参照:
« #NHKスペシャル 2/4は”シリーズ 人体 神秘の巨大ネットワーク 第5集 “脳” すごいぞ! ひらめきと記憶の正体”でした。速記メモ。 | トップページ | #深イイ話 徳井さんが一番会いたいダンサーとして東京ゲゲゲイが登場。あ、ゲゲゲイの鬼太郎のダンサーか! »
「パソコン・インターネット」カテゴリの記事
- Wordleを100回やってみて正解率の分布を見た。1回目で当たる確率をpとして、2回目からはk倍ずつ確率が上がっていく(kp,k²p,k³p…)とすると、私の結果はp=0.0089, k=2.4になった。(2022.05.27)
- 高周波回路シミュレータQucsStudioを使ってみる(その5)マルチポート(4ポートだとs4pみたいな)のSパラメータデータをTouchstoneファイルに出力しようとするとExport to SnPでは2ポートになってしまう。Project→Import Dataからポート数を手で入れないと。(2022.05.24)
- LTspiceで高周波解析(2)伝送線路のマイクロストリップライン素子を作ったのでそれをスタブとして使ってスタブBPF(バンドパスフィルタ)のSパラメータを計算してみる。QucsStudioのツールを使ってフィルタ合成したもの。(2022.05.09)
- LTspiceで高周波解析(1)伝送線路のマイクロストリップライン素子(Microstrip LineのWheelerやHammaerstadモデル)をサブサーキットとして作ってみて、かつSパラメータ解析まで.net文をつけてやってみる。線幅、基板厚、比誘電率などをパラメータで計算できる。(2022.05.06)
- ExcelでLAMBDA関数が使えるようになった(17) Sパラメータの標準フォーマットTouchstoneが3ポート以上で並びが変なので、LAMBDA,LET,SEQUENCE,IFS,INDEXなどを組み合わせてフラットにするTouchstoneFlatten(s,n)を作った。ただし今はs3p, s4p(3ポート,4ポート)のみ。(2022.04.22)
「学問・資格」カテゴリの記事
- Wordleを100回やってみて正解率の分布を見た。1回目で当たる確率をpとして、2回目からはk倍ずつ確率が上がっていく(kp,k²p,k³p…)とすると、私の結果はp=0.0089, k=2.4になった。(2022.05.27)
- 高周波回路シミュレータQucsStudioを使ってみる(その5)マルチポート(4ポートだとs4pみたいな)のSパラメータデータをTouchstoneファイルに出力しようとするとExport to SnPでは2ポートになってしまう。Project→Import Dataからポート数を手で入れないと。(2022.05.24)
- 高周波(RF・マイクロ波・ミリ波・5G)関連ニュース2022年5月19日 IEEE Microwave Magazineで磁性体を使わない非可逆デバイス、Microwave Journalは5Gスモールセル、THz、Movanoがミリ波血圧&血糖値計発表、三菱の3Dプリンタ衛星アンテナ、など。(2022.05.19)
- シン・ウルトラマンをIMAXで観てきた。面白かった!物理学者の有岡君がラグランジアン,AdS,プランクブレーンとかしゃべってる!Randall–Sundrumも。マグカップは標準理論+重力で、物理監修は予想通り橋本幸士さんでした!ブラックホールの構造もタイムリー!(2022.05.14)
- 個人の正解確率pとして多数決をとったときの正解確率が、pが0.5に近づくとどのくらいの人数で0.9を超えるか計算してみた。p=0.50005だと日本の人口くらいの多数決。(神とさざなみの密室読んで正当性確率が気になったので)(2022.05.10)
「日記・コラム・つぶやき」カテゴリの記事
- 京都府では免許の更新時、優良運転者講習がオンラインでできるようになった!早速やってみたが、PCでやろうとするとマイナンバーカードをNFCリーダで読まないとだめで断念、iPhoneはChromeはだめでSafariじゃないと駄目とかいろいろ罠が…でも最終的にはよかった。(2022.05.28)
- Wordleを100回やってみて正解率の分布を見た。1回目で当たる確率をpとして、2回目からはk倍ずつ確率が上がっていく(kp,k²p,k³p…)とすると、私の結果はp=0.0089, k=2.4になった。(2022.05.27)
- 高周波回路シミュレータQucsStudioを使ってみる(その5)マルチポート(4ポートだとs4pみたいな)のSパラメータデータをTouchstoneファイルに出力しようとするとExport to SnPでは2ポートになってしまう。Project→Import Dataからポート数を手で入れないと。(2022.05.24)
- 新型コロナウイルス、日本の陽性者数&ワクチン接種者数総計をプロット&中国、韓国、アメリカ、ドイツ、フランス、イギリスの陽性者数もプロット(5/22更新)どの国もじわじわと増加は続いている。マスクをしなくなったり油断してるからかな…(2022.05.22)
- 高周波(RF・マイクロ波・ミリ波・5G)関連ニュース2022年5月19日 IEEE Microwave Magazineで磁性体を使わない非可逆デバイス、Microwave Journalは5Gスモールセル、THz、Movanoがミリ波血圧&血糖値計発表、三菱の3Dプリンタ衛星アンテナ、など。(2022.05.19)
トラックバック
この記事へのトラックバック一覧です: Excel VBAで複素数演算(一次方程式・FFT他, Numerical Recipes移植)、フィッティング(非線形含む)、ルンゲクッタ8次(DOP853)などが使えるライブラリ その1:複素数演算の基礎:
« #NHKスペシャル 2/4は”シリーズ 人体 神秘の巨大ネットワーク 第5集 “脳” すごいぞ! ひらめきと記憶の正体”でした。速記メモ。 | トップページ | #深イイ話 徳井さんが一番会いたいダンサーとして東京ゲゲゲイが登場。あ、ゲゲゲイの鬼太郎のダンサーか! »
コメント