投稿

ラベル(N88-BASIC)が付いた投稿を表示しています

N88-BASICでサイコロの出目の和 (3回目)

イメージ
2024/3/1(金) N88-BASICでサイコロの出目の和 (3回目)   n個のサイコロ(d面)の出目の和がkとなる場合の数 (diceの理論値)   ■ 解説 https://ulprojectmail.blogspot.com/2021/11/n88-basicpc.html N88-BASICで順列組合せ   https://ulprojectmail.blogspot.com/2024/02/dice-3.html サイコロの出目の和 (3回目) https://ulprojectmail.blogspot.com/2024/02/dice-4.html サイコロの出目の和 (4回目)   より 理論値 [(k-n)/d] Σ(-1) r ( k-rd-1 P n-1 )n/{(n-r)!r!} r=0 を Over flowを避けるため (積…)/(積…)とならない様に 積除を交互に行うなどの工夫をしています     ■ 動作 dice003.basを走らせ 出目の数1~dのdと サイコロの数nを入力すると 各出目の和(n~nd)となる場合の数を 表示します OVやError表示が出る時は Over flowにより計算不能という事になりますので 値を小さくして下さい     VL,NL,XL-BASICとdlg~.zip(dice003.bas)は このブログ(以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい    

N88-BASICでサイコロの出目の和 (2回目)

イメージ
2024/2/24(土) N88-BASICでサイコロの出目の和 (2回目)   n個のサイコロの出目の和がkとなる場合の数 (diceの理論値とシミュレーション)   ■ 解説 https://ulprojectmail.blogspot.com/2021/11/n88-basicpc.html N88-BASICで順列組合せ   https://ulprojectmail.blogspot.com/2024/02/dice-3.html サイコロの出目の和 (3回目) https://ulprojectmail.blogspot.com/2024/02/dice-4.html サイコロの出目の和 (4回目)   より 理論値 d = 6 [(k-n)/d] Σ(-1) r ( k-rd-1 P n-1 )n/{(n-r)!r!} r=0 とシミュレーションです     ■ 動作 VL,NL,XL-BASICはAlt+6を押して高速化して下さい   dice002.basを走らせると n=1~4を入力します(n=0の時n=3になります) (画面の関係上n=1~4となります)   理論値とシミュレーションを表示します   n個のサイコロの出目の和がkとなる確率を 出た回数/試行回数で求め 確率を全場合の数6 n 倍して それぞれの場合の数(case数)を求めています       Vl,NL,XL-BASICとdlg~.zip(dice002.bas)は このブログ(以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい

N88-BASICでデジタル回路 (3回目)

イメージ
2024/2/6(火) N88-BASICでデジタル回路 (3回目)   OFFスイッチ/ONスイッチでON/OFF制御する デジタル回路   ■ 解説 1=true(真)、0=false(偽) a:OFFスイッチ b:ONスイッチ c:出力   以下 NOT, AND, ORは1bit論理演算子とする   c = 0 x =   NOT a z = c AND x c = z OR  b   初め c = 0, a = 0, b = 0 x =   NOT a =   NOT 0 = 1 z = c AND x = 0 AND 1 = 0 c = z OR  b = 0 OR  0 = 0 出力c = 0   bを押す c = 0, a = 0, b = 1 x =   NOT a =   NOT 0 = 1 z = c AND x = 0 AND 1 = 0 c = z OR  b = 0 OR  1 = 1 出力c = 1   bを離す c = 1, a = 0, b = 0 x =   NOT a =   NOT 0 = 1 z = c AND x = 1 AND 1 = 1 c = z OR  b = 1 OR  0 = 1 出力c = 1   aを押す c = 1, a = 1, b = 0 x =   NOT a =   NOT 1 = 0 z = c AND x = 1 AND 0 = 0 c = z OR  b = 0 OR  0 = 0 出力c = 0   aを離す c = 0, a = 0, b = 0 x =   NOT a =   NOT 0 = 1 z = c AND x = 0 AND 1 = 0 c = z OR  b = 0 OR  0 = 0 出力c = 0   以上により b=1でc=1の後b=0でもc=1 a=1でc=0の後a=0でもc=0 となり bでON、aでOFFにするスイッチの回路になる   ■ おまけ ? = 1 or 0   a,bを同時に押す c = ?, a = 1, b = 1 x =   NOT a =   NOT 1 = 0 z = c AND x = ? AND 0 = 0 c = z OR  b = 0 OR  1 = 1 出力c = 1   a,bを同時に離す c = ?, a = 0, b = 0

N88-BASICで剛体力学 (2回目)

イメージ
2024/1/31(水) N88-BASICで剛体力学 (2回目)   剛体力学 (Rigid body mechanics)   斜面の転がりと滑り(回転)   ■ 定義 https://ulprojectmail.blogspot.com/2024/01/rigid-2.html 剛体力学 (2回目) より   ▼ 座標 θ:回転角(rad) ω:回転角速度(rad/s) α:回転角加速度(rad/s 2 ) φ:傾斜角(rad) m :剛体の質量(kg) r :球(円柱)の半径(m) h :円柱の高さ(m) g :重力加速度(m/s 2 ) a :剛体回転軸位置の加速度(m/s 2 ) v :剛体回転軸位置の速度(m/s) x :剛体回転軸位置(m) I :慣性モーメント(kg・m 2 ) F :静止摩擦力(N)   I = (2/5)mr 2   … 球 I = (1/2)mr 2   … 円柱   ▼ 運動方程式 ma = mgsinφ – F a = (mgsinφ)/(m + I/r 2 )   I = 0      if F = 0 a = gsinφ if F = 0   a = (5/7)gsinφ  … 球 a = (2/3)gsinφ  … 円柱   a = const.(一定) v = v 0  + at x = x 0  + v 0 t + (1/2)at 2     a = rα v = rω x = rθ   回転加速度は α/(2π) (回転/s 2 )   回転速度(1秒毎の回転数)は ω/(2π) (回転/s)     ■ 動作 斜面の傾斜角と初めの位置の高さを入力し 高さ0m地点までの移動距離、経過時間 加速度 高さ0m地点での速度 回転加速度 高さ0m地点での回転速度を   円柱、球、滑る(摩擦なし) について それぞれ表示します   VL,NL,XL-BASICとd lg~.zip (r igi d001.bas)は 以下のリンクからダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

N88-BASICで剛体力学 (1回目)

イメージ
2024/1/28(日) N88-BASICで剛体力学 (1回目)   剛体力学 (Rigid body mechanics)   斜面の転がりと滑り(移動)   ■ 定義 https://ulprojectmail.blogspot.com/2024/01/rigid-2.html 剛体力学 (2回目) より   ▼ 座標 θ:回転角(rad) ω:回転角速度(rad/s) α:回転角加速度(rad/s 2 ) φ:傾斜角(rad) m :剛体の質量(kg) r :球(円柱)の半径(m) h :円柱の高さ(m) g :重力加速度(m/s 2 ) a :剛体回転軸位置の加速度(m/s 2 ) v :剛体回転軸位置の速度(m/s) x :剛体回転軸位置(m) I :慣性モーメント(kg・m 2 ) F :静止摩擦力(N)   I = (2/5)mr 2   … 球 I = (1/2)mr 2   … 円柱   ▼ 運動方程式 ma = mgsinφ – F a = (mgsinφ)/(m + I/r 2 )   I = 0      if F = 0 a = gsinφ if F = 0   a = (5/7)gsinφ  … 球 a = (2/3)gsinφ  … 円柱   a = const.(一定) v = v 0  + at x = x 0  + v 0 t + (1/2)at 2     ■ 動作 斜面の傾斜角と初めの位置の高さを入力し 高さ0m地点までの移動距離、経過時間 加速度 高さ0m地点での速度を   円柱、球、滑る(摩擦なし) について それぞれ表示します   VL,NL,XL-BASICと d lg~.zip (r igi d001.bas)は 以下のリンクからダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

N88-BASICでBMP (2回目)

イメージ
2024/1/15(月) N88-BASICでBMP (2回目)   256色(8bits)bmpファイルの読込み   ■ BMPファイルフォーマット https://ulprojectmail.blogspot.com/2024/01/n88-basicbmp-1.html N88-BASICでBMP (1回目) 参照     ■ 動作環境 PC-9821(256色対応)のN88-BASIC(86) NL-BASIC(Alt+6を押して高速化しておいて下さい) bmp002.bas 1090 N88 = 1 '--- 0:VL-BASIC / 1:N88-BASIC(PC-9821),NL-BASIC   VL-BASIC(Alt+6を押して高速化しておいて下さい) bmp002v.bas 1090 N88 = 0 '--- 0:VL-BASIC / 1:N88-BASIC(PC-9821),NL-BASIC     ■ 動作 ファイル名(.bmpは省略)を入力すると 256色(8bits)bmpファイルを読込み表示します   ■ Alt+6のメッセージを消す 1090 N88 = 2 '--- … PC-9821の場合 N88 = 1とするとAlt+6が非表示になります   ■ おまけ(bits8.bmp) NLBasic/NLbasic01prn.bmp(フルカラー)を256色にした bits8.bmp (8bits 256色) を添付 (詳しくは、前回のbits4.bmpに関する説明参照)     VL,NL-BASICと d lg~.zip ( bmp002? .bas , bits8.bmp )は 以下のリンクからダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

N88-BASICでBMP (1回目)

イメージ
2024/1/12(金) N88-BASICでBMP (1回目)   16色(4bits)bmpファイルの読込み   ■ BMPファイルフォーマット ▼ ファイルヘッダ (14bytes) 00h (2bytes) ファイルタイプ "BM" 02h (4bytes) ファイルサイズ(bytes) 06h (2bytes×2) 予約領域(常に0) 0Ah (4bytes) (ファイル+情報)ヘッダサイズ(bytes) ▼ 情報ヘッダ (40bytes) 0Eh (4bytes) 情報ヘッダサイズ(bytes) 12h (4bytes) 画像の幅 (pixels) 16h (4bytes) 画像の高さ(pixels)(正:下から上,負:上から下) 1Ah (2bytes) プレーン数(常に1) 1Ch (2bytes) 1画素のビット数(bits) 1Eh (4bytes) 圧縮形式(0:非圧縮、その他:圧縮形式) 22h (4bytes) 画像サイズ(bytes) 26h (4bytes) 横画素数(pixels/m)(通常0) 2Ah (4bytes) 縦画素数(pixels/m)(通常0) 2Eh (4bytes) パレット数(個) 32h (4bytes) 重要パレットインデックス(番)(通常0) ▼ パレットBGRX 36h ~ (4bytes×パレット数) ▼ 画像 36h + 4bytes×パレット数 ~ 画像の幅        = W(pixels) 画像の高さ       = H(pixels) 1画素のビット数 = B(bits)として X = W × B / 8 1行(bytes) = INT((X + 3) / 4) (4bytes単位となる) 画像データ(bytes) = 1行のbytes × |H|     ■ 動作環境 PC-9801(16色対応)のN88-BASIC(86) VL,NL-BASIC(Alt+6を押して高速化しておいて下さい)     ■ 動作 ファイル名(.bmpは省略)を入力すると 16色(4bits)bmpファイルを読込み表示します     ■ Alt+6のメッセージを消す 1090 N88 = 2 '--- 1:メッセージ無 2:メッセージ有 PC-9801の場合 N88 = 1とするとA

N88-BASICで振り子 (3回目)

イメージ
2024/1/9(火) N88-BASICで振り子 (3回目)   二重振り子(Double pendulum)   ■ 前提 https://ulprojectmail.blogspot.com/2024/01/pendulum-5.html 振り子 (5回目) より   ▼ 定義 ℓ i  :紐の長さ(m) m i  :質点の質量(kg) θ i :鉛直下方向からの角度(rad) g    :重力加速度 x i  :支点からの右方向の変位(m) y i  :支点からの下方向の変位(m)   ▼ 微分方程式 {m 1  + m 2  - m 2 cos 2 (θ 1  - θ 2 )}ℓ  1 θ ( ・・ ) 1   = {ℓ 1 θ ( ・ ) 1 2 cos(θ 1  - θ 2 ) - ℓ 2 θ ( ・ ) 2 2 }m 2 sin(θ 1  - θ 2 ) + {m 2 sinθ 2 cos(θ 1  - θ 2 ) - (m 1  + m 2 )sinθ 1 }g   {m 1  + m 2  - m 2 cos 2 (θ 1  - θ 2 )}ℓ 2 θ ( ・・ ) 2   = {m 2 ℓ 2 θ ( ・ ) 2 2 cos(θ 1  - θ 2 ) + (m 1  + m 2 )ℓ 1 θ ( ・ ) 1 2 }sin(θ 1  - θ 2 ) + {sinθ 1 cos(θ 1  - θ 2 ) - sinθ 2 }(m 1  + m 2 )g   ■ 動作 数値計算の2重振り子を表示します (積分 θ ( ・ ) =∫ θ ( ・・ ) dt等は長方形近似で計算しています)   ■ PC-8801 1070 VSYNC = &HA0 '--- &HA0:PC-98 , &H40:PC-88 を 1070 VSYNC = &H40 '--- &HA0:PC-98 , &H40:PC-88 に変更するとPC-8801用になります     VL,NL,XL-BASICと blg~.zip (pend00 3 .bas)は 以下のリンクからダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい

N88-BASICで振り子 (2回目)

イメージ
2023/12/26(火) N88-BASICで振り子 (2回目)   単振り子 (Simple pendulum)   ■ 前提 https://ulprojectmail.blogspot.com/2023/12/pendulum-2.html 振り子 (2回目) より   ▼ 定義 ℓ :紐の長さ(m) m :質点の質量(kg) θ:鉛直下方向からの角度(rad) g :重力加速度 ω:角速度(rad/s) f :振動数(Hz) A :振幅(m) B :位相(rad)   ▼ 微分方程式 θ ( ・・ )  = -(g/ℓ)sinθ   ▼ 近似式 sinθ≒θ (|θ| << 1)の時 2πf = ω = √(g/ℓ) θ = Acos(ωt+B)   ▼ 近似式(初期角度が最大角の時) θ 0 :初期角度(最大角とする) 2πf = ω = √(g/ℓ) θ = θ 0 cos(ωt) θ ( ・ )  = -θ 0 ωsin(ωt) θ ( ・・ )  = θ 0 ω 2 cos(ωt)   ■ 動作 離す角度を入力し 数値計算の振り子(黄色) (積分 θ ( ・ ) =∫ θ ( ・・ ) dt等は長方形近似で計算しています) と 近似式の振り子(水色)  … (高校物理) を表示します   ■ PC-8801 1070 VSYNC = &HA0 '--- &HA0:PC-98 , &H40:PC-88 を 1070 VSYNC = &H40 '--- &HA0:PC-98 , &H40:PC-88 に変更するとPC-8801用になります     VL,NL,XL-BASICと blg~.zip (pend00 2 .bas)は 以下のリンクからダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい    

N88-BASICで振り子 (1回目)

イメージ
2023/12/17(日) N88-BASICで振り子 (1回目)   無重力 (等速円運動)(Uniform circular motion)   ■ 前提 ▼ 定義 r :動径(m) θ:角度(rad) ω:角速度(rad/s)   ▼ 式1 θ = 0の時をx軸の正の方向、半時計回りを正とした場合 x = rcosθ y = rsinθ   ■ 動作 2種類の回転数(回転/s)を入力し 2種類の等速円運動を表示します   ■ PC-8801 170 VSYNC = &HA0 '--- &HA0:PC-98 , &H40:PC-88 を 170 VSYNC = &H40 '--- &HA0:PC-98 , &H40:PC-88 に変更するとPC-88用になります     VL,NL,XL-BASICと blg~.zip ( pend 001.bas)は 以下のリンクからダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

N88-BASICで衝突 (4回目)

イメージ
2023/11/21(火) N88-BASICで衝突 (4回目)   (collision)   跳ね返りの動作(詳しくは前回参照) ■ 動作 Δt = 1/60 s としています   N88-BASIC(86)(PC-98)用(coll004.bas ) N88-BASIC(88)(PC-88)用(coll004x.bas)   coll004?.basは 1050 VSYNC = &HA0 '--- PC-98:&HA0 , PC-88:&H40 が&HA0 or &H40の違いだけです   ■ 注意点 球同士と壁の衝突と反発を表示 壁と球の間に挟まった時など 球がめり込む現象が起き 反発が無限に繰り返される事を 防ぐため重なり中は反発しない 処理を追加しました   挙動がおかしい所がまだまだありますが ご了承下さい   VL,NL ,XL -BASICと blg~.zip ( coll 00 4? .bas)は 以下のリンクからダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

N88-BASICで衝突 (3回目)

イメージ
2023/11/18(土) N88-BASICで衝突 (3回目)   (collision) 球と壁の衝突と跳ね返り   ■ 前提 https://ulprojectmail.blogspot.com/2023/11/restitution.html 反発係数 より   ▼ 定義 大文字(太字)はベクトル 右下添字は球番号   e   :反発係数(衝突面に垂直) u   :減衰割合(衝突面に水平) P i :球の位置 m i :球の質量 V i :球の速度 N   :衝突面の法線 T i :衝突面の接線 v i :衝突面に垂直方向の速度 u i :衝突面に水平方向の速度 '   :衝突後   uは回転や摩擦力などを無視した挙動の近似   ▼ ベクトル表記( V  → V ') N  = ( P 1  - P 2 )/| P 1  - P 2 | v 1  = N ・ V 1   v 2  = N ・ V 2   v 1 '= {m 1 v 1  + m 2 v 2  + em 2 (v 2  - v 1 )}/(m 1  + m 2 ) v 2 '= {m 1 v 1  + m 2 v 2  - em 1 (v 2  - v 1 )}/(m 1  + m 2 )   T 1  = ( V 1  - v 1 N )/| V 1  - v 1 N | or   ( V 2  - v 2 N )/| V 2  - v 2 N | or 0   T 2  =   N  × T 1   u 1k  = T k ・ V 1   u 2k  = T k ・ V 2   u 1k '= {m 1 u 1k  + m 2 u 2k  - um 2 (u 2k  - u 1k )}/(m 1  + m 2 ) u 2k '= {m 1 u 1k  + m 2 u 2k  + um 1 (u 2k  - u 1k )}/(m 1  + m 2 )   衝突後の速度ベクトルは V 1 '= u 11 ' T 1  + u 12 ' T 2  + v 1 ' N   V 2 '= u 21 ' T 1  + u 22 ' T 2  + v 2 ' N     ▼ 外積 T 2  =