投稿

12月, 2022の投稿を表示しています

N88-BASICで円周率 (3回目)

イメージ
2022/12/27(火) N88-BASICで円周率 (3回目)   レオンハルト・オイラー ( Leonhard Euler ) の展開式 Tan -1 (x) = x/(1+x 2 )Σ[n=0~∞]Π[k=1~n] {(2kx 2 )/(2k+1)(1+x 2 )} (n = 0の項は1とする) より   π = 4Tan -1 (1) = 2Σ[n=0~∞]Π[k=1~n]{k/(2k+1)} (n = 0の項は1) = 2(1 + 1/3 + 1・2/(3・5) + 1・2・3/(3・5・7) + …) = 2(1 + 1/3(1 + 2/5(1 + k/(2k+1)(1 + … )))) = 2 + 1/3(2 + 2/5(2 + k/(2k+1)(2 + … ))))   π = 2 + 1/3(2 + 2/5(2 + k/(2k+1)(2 + … )))) これを基数倍して整数部分を取出していく   以後、基数を10として解説します (2桁ずつ取出す時は基数100になる)   [/]:商、%:余、[]:ガウス記号として k/b { a } = k[a / b] + k/b { (a % b) } を利用して帯分数に変換 (1/3{20} → 1・6+1/3{2}) 以下、これの繰返し   d + k/(2k+1)(a + … ) のk/(2k+1) × aを1未満に変換して dに加えていく   つまり 10πを d k-1  + k/(2k+1)(d k  + … ) = 10d k-1  + k[10a/(2k+1)] + k/(2k+1)(10d k  % 10 + … ) {k = n~1} に変換していく d 0  = 31となるので 3を表示してd 0  = 1 としてさらに10(10π)して を繰返す 10倍する毎に{k = n~1}の nを減らすことができる     桁数hと項数nの関係   nと桁数hとの関係 3.1のときh = 2桁 10 -x  = 10 -2  = 0.01の桁まで求めておくとすると x = hとなる   k/(2k+1) < 1/2 (k≧1)を示す 2k / (2k+1) < 1 2k < 2k+1 (k≧1)   2Π[k=1~n]{k/(2k+1)} < 2・(1/2) n  < (1/10) x  

N88-BASICで回転力

イメージ
2022/12/21(水) N88-BASICで回転力   回転力(力のモーメント)(Moment of force)   ヨーヨーの紐を下から出し、十分にあらい地面に 置き 水平(0°方向)に紐を引くと、どちら向きに転がるか?   初見で答えると、半々位に意見が分かれると感じるのですが 実際は   引いた方向に(転がって)近づいてきます     垂直(90°方向)に紐を引くと水平の時と逆に転がる その間に回転しなくなる角度が存在する   今回は その角度を求めます    F  :引く力(N) F’:引く力の水平成分(N) (F’= Fcosθ) R  :外円の半径(m) r  :内円の半径(m) N R  :右向きの回転力(N・m) (N R  = RF’= RFcosθ) N r  :左向きの回転力(N・m) (N r  = rF)   図中の摩擦力がF'になるような 十分にあらい地面とする (動摩擦力共にF'になる条件では 回転が静止した角度のまま引きずる ことができる)   1. 水平に引くとき  θ= 0°より、N R  = RFcos0°= RF               N r  =           rF  R > r より、N R  > N r 、なので右に回転する。   2. 真上に引くとき  θ= 90°より、N R  = RFcos90°= 0                N r  =            rF  N R  < N r 、なので左に回転する。   3. 回転しないときの引く角度  N R  = N r 、なので、RFcosθ=rF    cosθ = r/R、θ = Cos -1 (r/R)     4. 外円が内円の2倍 ( R = 2r ) のとき    θ = Cos -1 (r/R) = Cos -1 (1/2) = 60°     5. Tan -1 を使用するための変換    sin 2 θ + cos 2 θ = 1  sin 2 θ/cos 2 θ + cos 2 θ/cos 2 θ = 1/cos 2 θ  tan 2 θ + 1 = 1/cos 2 θ  tanθ = √(1/cos 2 θ - 1)  より    θ = Cos -1 (r/R) = Tan -1

N88-BASICでガチャ (2回目)

イメージ
2022/12/15(木) N88-BASICでガチャ (2回目)   当る確率1/nのゲームをn回行った時 1回も当たらない確率pは p = (1-1/n) n   となる n = 1の時(当り1  ) → p = 0 n = 2の時(当り1/2) → p = 1/4 = 0.25 n = 3の時(当り1/3) → p = 8/27 = 0.296 とnを大きくするとpも大きくなる   nを大きくしていくと、確率pはどうなるか 計算して見ます   x = -1/nと置き、e = lim[x→0](1 + x) 1/x  より p = lim[n→∞](1-1/n) n   = lim[x→0](1+x) -1/x   = lim[x→0]{(1+x) 1/x } -1   = 1/e   ネイピア数e(Napier's constant)の 逆数に収束しました     e = lim[x→0](1 + x) 1/x  は https://ulprojectmail.blogspot.com/2022/09/n88-basicnapier-1.html N88-BASICでネイピア数 (1回目) より x = 1/nと置くと e = lim[n→∞](1 + 1/n) n   = lim[x→0](1 + x) 1/x   となる     N88-BASICでは e x  は exp(x)と書きますので 1/e = e -1  = exp(-1) で表示しています     VL,NL,XL-BASICとblg~.zip(gach002.bas)は 以下のリンク)からダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい  

エンディアン(個人的感想)

2022/12/12(月) エンディアン(個人的感想)   ビッグエンディアンとリトルエンディアン (Big endian,Little endian)   ビッグエンディアン(MC68000系)と リトルエンディアン(i8086系)は バイトオーダー(バイト順)で使われている用語です   コンピュータの場合の例 メモリー1000(h)からC言語の文字列"AB"が 入っているとすると        +0 +1 +2 1000:41 42 00   となっています   これを16bitのレジスタで1000(h)の内容を読み取ると ビッグエンディアン(68000系)では4142(h) ("AB"の順) リトルエンディアン( 8086系)では4241(h) ("BA"の順) となります   個人的には このリトルエンディアン( 8086系)では逆になる という感覚で混乱する事が多いので ビッグエンディアン(68000系)に統一してほしい と思っています     日常でもこのオーダー順が存在します   ビッグエンディアン(大きい順)(68000系)の例   算用数字(桁の大きい順) 日本などの住所(広さの大きい順) 日本などの日付(期間の大きい順)   リトルエンディアン(小さい順)(8086系)の例   欧米などの海外の住所、日付     ここで A市のC町とD町、B市のC町とD町 2021年の11月と12月、2022年の11月と12月 を並び替え(Sort)すると   ビッグエンディアン(大きい順)(68000系)では A市C町 A市D町 B市C町 B市D町 (同じ市が集まる) 2021/11 2021/12 2022/11 2022/12 (古い順に並ぶ)   リトルエンディアン(小さい順)(8086系)では C町A市 C町B市 D町A市 D町B市 (同じ市が集まらない) 11/2021 11/2022 12/2021 12/2022 (古い順にならない) 海外では、こちらが主流なので リトルエンディアンが優勢になり易かったのかも と思っています   個人的には もちろん慣れているというのもありますが 日常でも ビッグエンディアン(大きい順)(68000系) の方が便利な気がしますし N88-BASIC(PC

二次曲面とトーラス(torus) (2回目)

2022/12/5(月) 二次曲面とトーラス (2回目)   トーラス(torus)は四次方程式なので 4次方程式の解(フェラーリの公式) の求め方の解説です   Quartic equation ax 4  + bx 3  + cx 2  + dx 2  + e = 0を解く   変形 B = b/a, C = c/a, D = d/a, E = e/aと置くと x 4  + Bx 3  + Cx 2  + Dx + E = 0   ここで x = X - B/4と置くと(X 3 の項を消すため) x 4  + Bx 3  + Cx 2  + Dx + E = (X-B/4) 4 +B(X-B/4) 3 +C(X-B/4) 2 +D(X-B/4)+E = X 4  - 4X 3 (B/4) + 6X 2 (B/4) 2  - 4X(B/4) 3  + (B/4) 4   + BX 3  - 3BX 2 (B/4) + 3BX(B/4) 2  - B(B/4) 3   + CX 2  - 2CX(B/4) + C(B/4) 2   + DX - DB/4 + E = X 4  + (-B + B)X 3  + {6(B/4) 2  - 3B(B/4) + C}X 2   + {-4(B/4) 3  + 3B(B/4) 2  - 2C(B/4) + D}X + {(B/4) 4   - B(B/4) 3  - D(B/4) + E} = X 4  + {6(B/4) 2  - 12(B/4) 2  + C}X 2   + {-4(B/4) 3  + 12(B/4) 3  - 2C(B/4) + D}X + {(B/4) 4  - 4(B/4) 4  - D(B/4) + E} = X 4  + {-6(B/4) 2  + C}X 2   + {8(B/4) 3  - 2C(B/4) + D}X + {-3(B/4) 4  - D(B/4) + E}   s = B/4 p = -6s 2  + C q = 8s 3  - 2Cs + D r = -3s 4  - Ds + E と置くと X 4  + pX 2  + qX + r = 0   q = 0の時、(X 4  + pX 2  + r = 0) X 2  = {-p±√(p 2 -4r)}/2 X = ±√[{

N88-BASICで連立方程式

イメージ
2022/11/3(土) N88-BASICで連立方程式   例えば 次の連立3元1次方程式   a 1 x + b 1 y + c 1 z = d 1   a 2 x + b 2 y + c 2 z = d 2   a 3 x + b 3 y + c 3 z = d 3     は、行列で |a 1  b 1  c 1 ||x| = |d 1 | |a 2  b 2  c 2 ||y| = |d 2 | |a 3  b 3  c 3 ||z| = |d 3 | と書け 対角成分を1、それ以外を0にすると |1  0  0||x| = |d 1 '| |0  1  0||y| = |d 2 '| |0  0  1||z| = |d 3 '| つまり |x| = |d 1 '| |y| = |d 2 '| |z| = |d 3 '| となり、解くことが出来る   プログラムでは |a 1  b 1  c 1  d 1 | |a 2  b 2  c 2  d 2 | |a 3  b 3  c 3  d 3 | の 1行目をa 1 で割りa 1 =1とし 1行目をa 2 倍し2行目から引きa 2 =0とし 1行目をa 3 倍し3行目から引きa 3 =0とする これを、b 2 ,c 3 についても行うことで 対角成分を1、それ以外を0にしています   この方法には 対角成分に0がある式は解けないという 欠点がありますので 対角成分に0が来ない様に式の順番を 手動で変えてから実行して下さい     N88-BASIC互換?VL,NL,XL-BASICと blg~.zip(simu001.bas)は 以下のリンクからダウンロードできます https://ulprojectmail.blogspot.com Readme.txtを読んで遊んで下さい