投稿

N88-BASICでn乗の展開 (2回目)

イメージ
2022/6/24(金) N88-BASICでn乗の展開 (2回目)   (a + b + c) n  = (a + b + c)(a + b + c)… 右辺のn個の(a + b + c)から aをp個、bをq個、cをr個選んだ項は a p b q c r  (p + q + r = n)となり n個のaからp個のaを選び 残りn-p個からq個のbを選ぶ組合せ になっているので a p b q c r  の係数は n C p n-p C q  となり   nCp = nPp/p! = n!/{(n-p)!p!}と p + q + r = n ⇒ n - p - q = r より n C p n-p C q  = [n!/{(n-p)!p!}][(n-p)!/{(n-p-q)!q!}] = n!/(p!q!r!) となり、これは aがp個、bがq個、cがr個の順列(並べ方の数) になります   (a + b + c) n   = ΣΣ{n!/(p!q!r!)}a p b q c r  (r = n - q - r) (q = 0~n-p内)(p = 0~n 外)   プログラムでは a,bの順で降べきになるように (a + b + c) n   = ΣΣ{n!/(p!q!r!)}a p b q c r  (r = n - q - r) (q = n-p~0内)(p = n~0 外) を使用しています (a 3 b 2 はa3b2と表示しています)   関連ブログの紹介   https://ulprojectmail.blogspot.com/2021/07/vl-basic32.html VL-BASICで3乗の展開の図 (2回目)   https://ulprojectmail.blogspot.com/2021/11/n88-basicpc.html N88-BASICで順列組合せ   VL,NL,XL-BASICとblg~.zip(exp002.bas)は このブログ(以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

N88-BASICでn乗の展開 (1回目)

イメージ
2022/6/22(水) N88-BASICでn乗の展開 (1回目)   二項定理 (a + b) n  = Σ n C i a n-i b i  (i = 0~n) を使って 2項式のn乗の展開式を表示します (a 3 b 2 はa3b2と表示しています)   関連ブログの紹介   https://ulprojectmail.blogspot.com/2021/07/vl-basic3-1.html VL-BASICで3乗の展開の図 (1回目)   https://ulprojectmail.blogspot.com/2021/11/n88-basicpc.html N88-BASICで順列組合せ   https://ulprojectmail.blogspot.com/2021/11/n88-basicbnp-1.html N88-BASICで二項分布 (1回目) (蛇足で~6回目まであります)   VL,NL,XL-BASICとblg~.zip(exp001.bas)は このブログ(以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

VL-BASICでピポッ (3回目)

イメージ
2022/6/20(月) VL-BASICでピポッ (3回目)   PC-9801のピポッを再現(PCM)   2000Hz , 100ms 1000Hz , 100ms の正弦波(Sine wave) でPC-9801の起動音 ピポッ に似た音が鳴ります   今回は、サンプリングレート8000Hz, 16bit, monoの 波形をsin関数で作成して PCM音源としてとして再生しています   VL-BASICは &H80000~&HFFFFF フリーエリア &H80000~    BASIC言語エリア なので、一応 &HA0000~    PCM波形 としています   VL-BASIC、とblg~.zip(pipo003v.bas)は このブログ(以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

VL-BASICでピポッ (2回目)

イメージ
2022/6/17(金) VL-BASICでピポッ (2回目)   VL-BASICでPC-9801のピポッを再現(MIDI) PC-9801、PC-8801のN88-BASICや PC-9801のN88-BASIC互換?の NL-BASIC、VL-BASICのMML (Music macro language)で   PLAY "t144l16@20q8v15o6bo5b" または   MPU PLAY "t144l16@1104q8v15o6bo5b" とすると、ピポッとなります (1104 = 128*8+80 = バンク8/音色80)   これを~.mid(SMF:Standard MIDI File) に変換します   VL-BASICを起動し NEW MPU MPU TRON ("pipo") MPU PLAY "t144l16@1104q8v15o6bo5b" MPU TROFF と1行ずつ入力(1行毎にEnterキー)するか pipo002 v.bas(下記リンク)をダウンロードして 実行すると (MPU PLAYの代わりに上記PLAYでも可ですが          0 ,C0,06 … デフォルトの音色 が必ず挿入されます)   pipo.txtが作られます          0 ,F0,41,10,42,12,40,00,7F,00,41,F7          0 ,B0,00,08          0 ,C0,50          0 ,90,5F,7F        104 ,80,5F,7F          0 ,90,53,7F        104 ,80,53,7F Wait(ms:ミリ秒)とMIDI送信データです   pipo.txtをVL-BASIC付属のtron2txt.exe (MIDI→SMFツールでmidフォルダ内に有ります) に重ねると pipo_txt.txtが作られます 4D, 54, 68, 64 ; "Mthd" 00, 00, 00, 06 ; 次の実データ6個で固定 00, 00         ; Format0-2 00, 01         ; トラック数 01, e0         ; 時間

VL-BASICでピポッ (1回目)

イメージ
2022/6/15(水) VL-BASICでピポッ (1回目)   MSGS(Windows標準ソフトウエアMIDI音源)の 正弦波(音色番号080 バンク[008/000] Sine wave)で ピポッを再現しました   MSGSのBank selectについては次のサイトが参考に なりましたので勝手にリンクを貼っておきます MSGSで遊ぼう! (x68uec.org)   このサイトによりますと システムエクスクルーシヴの GS Reset(F0 41 10 42 12 40 00 7F 00 41 F7)hexを 送信しておかないとバンクが切り替わらないそうです (hexは16進数の意味です)   VL-BASICでは A$ = CHR$(&HF0)+CHR$(&H41)+CHR$(&H10)+CHR$(&H42)+CHR$(&H12)+CHR$(&H40) A$ = A$        +CHR$(&H00)+CHR$(&H7F)+CHR$(&H00)+CHR$(&H41)+CHR$(&HF7) MPU MIDI(A$) で送信できます &HF0は16進数のF0と言う意味で CHR$(キャラクターコード&H00~&HFF)で文字に変換して 文字列A$を送信します   バンク切り替えは bank select MSB = 008 (B0 00 08)hex bank select LSB = 000 (B0 20 00)hex です(LSBは常に0の様です)   VL-BASICでは MPU MIDI(&H0800B0) MPU MIDI(&H0020B0)   B0 00 08 は上位と下位バイトを逆にした&H0800B0を指定 します なぜならIntel系CPUでは&H0800B0と言う数値は メモリー内ではB0,00,08の順で格納されるからです   MPU MIDI(CHR$(&HB0)+CHR$(&H00)+CHR$(8)) MPU MIDI(CHR$(&HB0)+CHR$(&H20)+CHR$(0)) (&Hを付けなければ10進数になります) や MPU PLAY

N88-BASICで結晶格子

イメージ
2022/6/12(日) N88-BASICで結晶格子   原子半径をrとし   球を内接する立方体 体心立方格子 面心立方格子 六方最密充填構造   の辺長a、高さh、体積v、充填率pを求める   rとa、hなどの関係式は https://ulprojectmail.blogspot.com/2021/08/vl-basic-1.html VL-BASICで結晶格子 (1回目) ~(3回目) を参照して下さい   半径rの球の体積u = 4πr 3 /3     球を内接する立方体 a = 2r v = a 3  = (2r) 3  = 8r 3   p = 100(u/v) = 100(4πr 3 /3)/(8r 3 ) = (50/3)π     体心立方格子 a = (4/3)(√3)r v = a 3  = {(4/3)(√3)r} 3  = (64/9)(√3)r 3   p = 100(2u/v) = 100{2(4πr 3 /3)}/{(64/9)(√3)r 3 }  = 100π/{(8/3)(√3)} = 300π/(8√3)  = (100√3)π/8 = (25/2)(√3)π     面心立方格子 a = 2(√2)r v = a 3  = {2(√2)r} 3  = 16(√2)r 3   p = 100(4u/v) = 100{4(4πr 3 /3)}/{16(√2)r 3 }  = 100(π/3)/(√2) = (50/3)(√2)π     六方最密充填構造 a = 2r h = (4/3)(√6)r v = (√3)a 2 h/2 = (√3)(2r) 2 {(4/3)(√6)r}/2  = (3√2)2(4/3)r 3  = (8√2)r 3   p = 100(2u/v) = 100{2(4πr 3 /3)}/{8(√2)r 3 }  = 100(π/3)/(√2) = (50/3)(√2)π     VL,NL,XL-BASIC、とblg~.zip(cris001.bas)は このブログ(以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

N88-BASICで8色中2色のタイリング

イメージ
2022/6/10(金) N88-BASICで8色中2色のタイリング (重複組合せ)   PC-9801 8色モード2ドットで 1点を表すと何色表現できるか   8色モードのカラーコード(以後、水は水色) 三原色B=1, R=2, G=4の和で表される 例 白 = B+R+G = 1+2+4 = 7 0:黒 1:青 2:赤 3:紫 4:緑 5:水 6:黄 7:白   解法1 8色から2色選ぶ組合せは 8 C 2  = 8・7/2 = 28 これには同じ色同士(00~77)の8組が 含まれていないので 28 + 8 = 36組   解法2 0との組は0~7の8色 1との組は上記0との組を除いた1~7の7色 2との組は上記0~1との組を除いた2~7の6色 3との組は上記0~2との組を除いた3~7の5色 ... 7との組は上記0~6との組を除いた7の1色 よって、8+7+6+5+4+3+2+1 = 8(8+1)/2 = 36組   解法3 8色から重複を許して2色選ぶ組合せは 8色を仕切る仕切り7個 (0|1|2|3|4|5|6|7)と2色をを置く 場所Xを7+2箇所用意する XXXXXXXXX この場所の7箇所に仕切りを置き 残りのXに色を置くと 重複を許して2色選んだ事になる 例1 |X|||X|||と仕切りを置き |X| | |X| | | 0|1|2|3|4|5|6|7 対応する色をXに置くと2色 選んだ事になる 例2 |||XX||||と仕切りを置き | | |XX| | | | 0|1|2|3 |4|5|6|7 対応する色をXに置くと重複して2色 選んだ事になる 仕切を置く組合せ 9 C 7   = 色を置く場所の組合せ 9 C 2  より 9 C 2  = 9・8/2 = 36組   ここで、 03 = 12 (黒紫 = 青赤) [0+(B+R)  =  B  + R  ] 05 = 14 (黒水 = 青緑) [0+(B+G)  =  B  + G  ] 06 = 24 (黒黄 = 赤緑) [0+(R+G)  =  R  + G  ]   07 = 16 (黒白 = 青黄) [0+(B+R+G) =  B  +(R+G)] 07 = 25 (黒白 = 赤水) [0+(B+R+G) =  R  +(B+G)] 07 = 34 (黒白 = 紫緑) [0+(B+R