N88-BASICで開平方

2022/7/11(月)
N88-BASICで開平方
 
開平方(平方根を筆算で求める方法)で
平方根を求めます
 
開平方の手順を2の平方根を例に解説します
 
2を小数点を基準に2桁ずつ区切ります
 
 × ≦2(初めの2桁の数字)
を満たす最大の整数( =1)を見つけ
縦にならべ、足した値を下に書き、
掛けた値を2から引き、
次の2桁を下ろしてくる
 
      1
 1  √02.00 00 00 00 …
+1  - 1 ←(1×1)
 2    1 00
 
2 × ≦100(引いた値と次の2桁の数字)
を満たす最大の整数( =4)を見つけ
答えに追加し
足した値を下に書き、
掛けた値を100から引き、
次の2桁を下ろしてくる
 
       1. 4
 1   √02.00 00 00 00 …
+1    -1
 24    1 00
+ 4   -  96 ←(24×4)
 28       4 00
 
以下繰り返し


        1. 4  1
  1   √02.00 00 00 00 …
+ 1    -1
  24    1 00
+  4   -  96
 2 81      4 00
+   1     -2 81 ←(2 81×1)
 2 82      1 19 00
 
 
        1. 4  1  4
  1   √02.00 00 00 00 …
+ 1    -1
  24    1 00
+  4   -  96
 2 81      4 00
+   1     -2 81
 28 24     1 19 00
+    4    -1 12 96 ←(28 24×4)
 28 28        6 04 00
 
 
         1. 4  1  4  2
   1   √02.00 00 00 00 00 …
+  1    -1
   24    1 00
  4   -  96
  2 81      4 00
   1     -2 81
  28 24     1 19 00
+     4    -1 12 96
 2 82 82       6 04 00
+      2      -5 65 64 ←(2 82 82×2)
 2 82 84         39 36 00
 
 
([a]はガウス記号でaを超えない最大の整数)
 
2□×□ ≦100を見つけるのは(□=0,1,2,…,9)
a = 20、b = 100として
c = [b / (a+9)] = [100 / 29] = 3)

d = [b / (a+c)] = [100 / 23] = 4
if c=d then □ = d else c = dとして①へ
 
c = 4、d = [b / (a+c)] = [100 / 24] = 4)
となり、□ = 4
になります
 
取り敢えず上記動作をするプログラムをつくり大変
分かりにくくなってしまいましたがご了承して下さい
 
結局計算に倍精度を使用しているため約16桁の
数値しか扱えず途中で誤差が出ます
誤差覚悟で1D+36以上になるまでは
計算を続けています
 
√x、(x=2,3,5)は比較の為Windows付属の関数電卓の
値を表示しています
また他xの値の比較の為BASICのSQR(X)の値も
表示しています
 
結果は16桁の精度の計算で16桁以上の√の値を
計算できているようです
 
VL,NL,XL-BASICとblg~.zip(sqr001.bas)は
以下のリンクからダウンロードできます

https://ulprojectmail.blogspot.com
Readme.txtを読んで遊んで下さい

















 

このブログの人気の投稿

NEWS

N88-BASICでゲーム (1回目)