投稿

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

N88-BASICでフーリエ変換 (2回目)

イメージ
2025/3/24(月) N88-BASICで フーリエ変換 ( 2 回目 ) (fourier)   ■ 離散フーリエ変換(DFT)( Discrete Fourier Transform ) ▼ 前提 https://ulprojectmail.blogspot.com/2025/03/fourier-6.html フーリエ変換 (6回目) より   T:サンプル計測時間 N:サンプル総数 t k :サンプルの計測時刻( k   = 0, 1, 2, …, N-1) , t k   =   k( T/N ) y k :各サンプルの計測値( k   = 0, 1, 2, …, N-1)   周波数 f n   = n /T ( n   = 1 , …, N) y(t k ) = 2 Σ n = 0 N {A ( f n )exp(i 2πf n t k ) } A(f n ) = (2 /N ) Σ k = 0 N-1 { y k e xp(-i 2πf n t k ) } A = |A(f n )|  … |exp(-ix)| =  √{cos 2 x + sin 2 x)}   ▼ 動作 y(t)をcos,sinの合成波として定義し A = |A(f k )|   を求めて 周波数 f n   と、振幅 A を表示しています   VL,NL,XL-BASICとdlg~.zip( fou 00 2 .bas)は このブログ (以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

N88-BASICでフーリエ変換 (1回目)

イメージ
2025/2/25(火) N88-BASICで フーリエ変換 ( 1 回目 ) (fourier)   ■ 周期Tのフーリエ級数 ▼ 前提 https://ulprojectmail.blogspot.com/2025/02/fourier-3.html フーリエ変換 (3回目) より   ▼ 結果 T:サンプル計測時間 (周期) N:サンプル総数 t k :サンプルの計測時刻( k   = 0, 1, 2, …, N-1) , t k   =   k( T/N ) y k :各サンプルの計測値( k   = 0, 1, 2, …, N-1)   周波数 f n   = n /T ( n   = 1 , …, N) y(t) = (a 0 /2) + Σ n=1 N {a n cos(2π f n t ) + b n sin(2π f n t )} a n   ≒ (2/ N ) Σ k=0 N-1 [ y k cos(2π f n t k )] b n   ≒ (2/ N ) Σ k=0 N-1 [ y k sin (2π f n t k )] を計算する   ▼ 動作 y(t)をcos,sinの合成波として定義し a n   , b n   を求めて cosの係数 a n   , sinの係数 b n   周波数 f n   と合成振幅 A = √( a n 2   + b n 2 ) を表示しています   VL,NL,XL-BASICとdlg~.zip( fou 00 1 .bas)は このブログ (以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

N88-BASICで素数 (3回目)

イメージ
2025/1/26(日) N88-BASICで素数 (3回目)   素因数分解   数値や式を因数の積の形にする事を 因数分解といいます 素数のみの因数の積で表す事を 素因数分解と言います   数値 n(2以上の整数)を素因数分解するには   i = 2~[√n]で割れば良く ([a]はガウス記号でaを超えない最大の整数 a>0なら切り捨て、a<0なら切り上げ)   n = 18なら 2 ) 18 3 )  9    3 18 = 2・3・3 = 2・3 2   となります   アルゴリズム (解法?) ① m = [√n] ② i = 2 ③ i > m なら⑥へ ④ q = n / iが   割り切れれば iが素因数, n←q, m = [√n]   割り切れなければ i←i+1 ⑤ ③へ ⑥ nが素因数   単純だが遅い方法がその 1です   2で割り切れなくなれば あとは偶数では割り切れないので 偶数で割ることを省略して処理速度を 上げたのがその 2です   ここまでが前回です   更に 3で割り切れなくなれば3の倍数で割ることを 省略して処理速度を上げたのがその 3   更にその 3と同じ事を効率よくしたのがその4です   今回は 前回と同じ素因数分解を各 2回ずつ実行し その 3と4の処理時間を比較してみました   今回 TIME$を使って時間を表示しています NL-BASIC,VL-BASIC,XL-BASICの 時刻 (DATE$, TIME$)は DATE$ Enter TIME$ Enter システム時刻に戻ります   Enterのみ入力した場合 127 * 524287 * 6700417 を計算するようにしています   VL,NL,XL-BASICとblg~.zip(prime003.bas)は このブログ (以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい

N88-BASIC,Cでハノイの塔 (3回目)

イメージ
2024/ 12 /29 (日 ) N88-BASIC ,C で ハノイの塔  ( 3 回目 )   途中経過表示を省略 (hanoi)   ■ 前提 ▼ 参照 https://ulprojectmail.blogspot.com/2024/12/n88-basicchanoi-2.html N88-BASIC ,C で ハノイの塔  ( 2 回目 ) (前回)   h以上の円盤の移動のみ表示するよう追加変更しました   ■   動作 変数名など内部では A,B,Cを(pole)1,2,3または0,1,2と表現しています   n,hを入力し 1:A->Cの様に円盤の番号1~n(小~大)と棒A,B,C間の移動を表示する 今回の手順は再帰を使用していません h以上の円盤の移動のみ表示     VL,NL,XL-BASICとdlg~.zip( han 00 3 .bas)は このブログ (以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい

N88-BASIC,Cでハノイの塔 (2回目)

イメージ
2024/ 12 / 27 (金 ) N88-BASIC ,C で ハノイの塔  ( 2 回目 )   再帰を使用しない手順 (hanoi)   ■ 前提 ▼ 参照 https://ulprojectmail.blogspot.com/2024/12/hanoi-3.html ハノイの塔   ( 3 回目 ) より   ▼   前提 3本(A,B,C)の棒とn枚の円盤(小さい順に1~nとする)がある Aに1~nの円盤が上から順に積まれている   ▼   目標 1~nの円盤全てをCに移動させる   ▼   ルール 小さい円盤の上に大きい円盤は置けない 1度に動かせる円盤は1枚のみ   ▼   定義 A,B,Cの一番上の円盤をpA, pB, pCとし、円盤が無い時は最大値とする 円盤を AからCに移動する事をA->Cと書くことにする   ▼   nの場合 nが奇数の時   A = Aのtop, pB = Bのtop, pC = Cのtop   pAB = A->B, pBC = B->C, pCA = C->A   pBA = B->A, pCB = C->B, pAC = A->C nが偶数の時(A⇔B)   pA = Bのtop, pB = Bのtop, pC = Cのtop   pAB = B->A, pBC = A->C, pCA = C->B   pBA = A->B, pCB = C->A, pAC = B->C と定義する つまり以下偶数の時は (A⇔B)と読み替える   nが偶数の時のみ以下の2行を追加   pBA   pB < pC なら pBC 違うなら pCB   pAC pA ≠ pBの間以下を繰り返す   pA < pB なら pAB 違うなら pBA   pCB   pC < pA なら pCA 違うなら pAC   pBA   pB < pC なら pBC 違うなら pCB   pAC   ▼   移動回数 N(n) N(n) = 2 n  - 1 回 ...

N88-BASIC,Cでハノイの塔 (1回目)

イメージ
2024/ 8 / 10 ( 火 ) N88-BASIC ,C で ハノイの塔  ( 1 回目 )   再帰を使用した手順 (hanoi)   ■ 前提 ▼ 参照 https://ulprojectmail.blogspot.com/2024/12/hanoi-1.html ハノイの塔   ( 1 回目 ) より   ▼   ルール 3本(A,B,C)の棒とn枚の円盤(小さい順に1~nとする)がある Aに1~nの円盤が上から順に積まれている 小さい円盤の上に大きい円盤は置けない 1度に動かせる円盤は1枚のみ   ▼   目標 1~nの円盤全てをCに移動させる   ▼   nの時の手順 1~n-1の円盤をA->B nの円盤をA->C 1~n-1の円盤をB->C   以上の手順で完成する   ▼   移動回数 N(n) N(n) = 2 n  - 1 回   ▼  n = 64の移動時間T(64) N(64) = 2 64  - 1 = 18,446,744,073,709,551,615回   グレゴリオ暦 (現在の使用されている暦)の1年は365.2425日 3600×24×365.2425 = 31,556,952秒/年(グレゴリオ暦)   α = 18,446,744,073,709,551,615回 / 31,556,952秒/年 = 18,446,744,073,709,551,615 / 31,556,952 年 /(秒/回) = 584,554,049,253.855429859005… 年/(秒/回)   n移動する時間をT(n)とすると T(64) = T(n)/N(n) (秒/回) × α 年 /(秒/回) = αT(n)/N(n) (年)     ■ 動作 変数名などは A,B,Cを(pole)1,2,3と表現しています   nを入力し 1:A->Cの様に円盤の番号1~n(小~大)と棒A,B,C間の移動を表示する 今回の手順は再帰を使用しています     VL,NL,XL-BAS...

N88-BASICで特殊相対性理論(relativity) (2回目)

イメージ
2024/ 11 / 24 ( 日 ) N88-BASICで 特殊相対性理論 ( 2 回目 )   ( special relativity )   https://ulprojectmail.blogspot.com/2024/11/relativity-2.html 特殊相対性理論 ( 2 回目 ) より   合成速度 v' = (v A  + v B ) / {1 + (v A v B /c 2 )}   v A   =  v B  = vに対する合成速度 v' をグラフ表示します     VL,NL,XL-BASICとdlg~.zip(sprela00 2 .bas)は このブログ (以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい

N88-BASICで特殊相対性理論 (1回目)

イメージ
2024/ 11 / 20 ( 水 ) N88-BASICで 特殊相対性理論 ( 1 回目 )   ( special relativity )   https://ulprojectmail.blogspot.com/2024/11/relativity-2.html 特殊相対性理論 ( 2 回目 ) より   合成速度 v' = (v A  + v B ) / {1 + (v A v B /c 2 )}   v A   =  v B  = vを入力し合成速度 v' を表示します   VL,NL,XL-BASICとdlg~.zip(sprela001.bas)は このブログ (以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい

N88-BASICで終端速度2 (6回目)

イメージ
2024/ 11/8 ( 金 ) N88-BASICで 終端速度 2  ( 6 回目 )   (Terminal velocity)   速度 の 2乗 に比例する空気抵抗のある 自由落下 (数値計算)   ■ 数値計算の式 ▼ 初期値 v ← 0 初速 a ← -g - k 2 v 0 /m y ← 0 初期位置   ▼ 増分 v ← v + a⊿t a ← -g - k 2 v/m y ← y + v⊿t aが一定ではない為y ← y + v⊿t + (1/2)a⊿t 2   は 使用せず ⊿tを小さくすることで精度を出す事にしました   ■ 解説 1回目と同じく 加速度 a、速度v、位置yの時間t変化を 今回は上記式にて数値計算をし描画しました ⊿tは描画時間の1/10にして少し精度を上げていますが 描画時間の 1/1程度でも見た目はあまり変わらないようです     VL,NL,XL-BASICとdlg~.zip(term206.bas)は このブログ (以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

N88-BASICで終端速度2 (5回目)

イメージ
2024/ 11 / 4 ( 月 ) N88-BASICで 終端速度 2  ( 5 回目 )   (Terminal velocity)   速度 の 2乗 に比例する空気抵抗のある投げ 下げ (数値計算)   ■ 数値計算の式 ▼ 初期値 v ← v 0   初速 (v 0  < 0) a ← -g - k 2 v 0 /m y ← 0 初期位置   ▼ 増分 v ← v + a⊿t a ← -g - k 2 v/m y ← y + v⊿t aが一定ではない為y ← y + v⊿t + (1/2)a⊿t 2   は 使用せず ⊿tを小さくすることで精度を出す事にしました   ■ 解説 1回目と同じく 加速度 a、速度v、位置yの時間t変化を 今回は上記式にて数値計算をし描画しました ⊿tは描画時間の1/10にして少し精度を上げていますが 描画時間の 1/1程度でも見た目はあまり変わらないようです     VL,NL,XL-BASICとdlg~.zip(term205.bas)は このブログ (以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

N88-BASICで終端速度2 (4回目)

イメージ
2024/ 11 / 1 ( 金 ) N88-BASICで 終端速度 2  ( 4 回目 )   (Terminal velocity)   速度 の 2乗 に比例する空気抵抗のある投げ上げ (数値計算)   ■ 数値計算の式 ▼ 初期値 v ← v 0   初速 a ← -g - k 2 v 0 /m y ← y 0   初期位置   ▼ 増分 v ← v + a⊿t a ← -g - k 2 v/m y ← y + v⊿t aが一定ではない為y ← y + v⊿t + (1/2)a⊿t 2   は 使用せず ⊿tを小さくすることで精度を出す事にしました   ■ 解説 1回目と同じく 加速度 a、速度v、位置yの時間t変化を 今回は上記式にて数値計算をし描画しました ⊿tは描画時間の1/10にして少し精度を上げていますが 描画時間の 1/1程度でも見た目はあまり変わらないようです     VL,NL,XL-BASICとdlg~.zip(term204.bas)は このブログ (以下のリンク)から ダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい