Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
あえて開平法で求めてみる.pdf
Search
keyT
October 22, 2025
16
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
あえて開平法で求めてみる.pdf
keyT
October 22, 2025
More Decks by keyT
See All by keyT
色を音にする.pdf
keyt
0
28
コード進行を再現するコード作成.pdf
keyt
0
28
QRコードでライフゲーム.pdf
keyt
0
21
SAMでなんでも切り抜けるツールを作ってみた.pdf
keyt
0
15
開平法でn乗根を求めてみるコード作ってみた.pdf
keyt
0
43
connpass最新イベント_通知用LINEBot作成.pdf
keyt
0
27
発信力_鍛えてきました.pdf
keyt
0
57
OpenCVとSciPyを活用した関数アート生成コード開発.pdf
keyt
0
27
自宅用タスク管理ツール開発.pdf
keyt
0
12
Featured
See All Featured
The Curse of the Amulet
leimatthew05
2
13k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
Navigating Team Friction
lara
192
16k
A Modern Web Designer's Workflow
chriscoyier
698
190k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
340
Building Applications with DynamoDB
mza
96
7.1k
Technical Leadership for Architectural Decision Making
baasie
3
430
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Skip the Path - Find Your Career Trail
mkilby
1
160
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
310
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
Transcript
あえて開平法で平方根を 求めるコードを作ってみた 久島慶大
自己紹介 名前:久島慶大 職業:AIエンジニア 最近の案件:画像認識 最近の出来事:イベントに出典するため、別のAIを開発することに。正直プレッ シャー
開平法とは? ひっ算を用いて整数の平方根を求めるアルゴリズム 一言でいうと、手計算でルートを求める手法 手順 1.小数点を基準に二けたずつ区切る 2.二乗して最も左のブロック以下となる最大の整数を 求める。その数を右側に1つ、左側に2つ書く 3.左側は足して、右側は引く 4.(左側の数の末尾にNをつなげたもの*N)が右の次のブロックまで取った もの以下になる最大の整数を求める
5. 3~4を繰り返す 出展元:開平法のやり方と原理 | 高校数学の美しい物語
実装 前ページの手順を次のように読み替えて、Pythonで実装。 1. 桁数が奇数の時、先頭に0を加える。その後、計算したい桁数’00’を末尾に加える 2.二けたずつ区切って、リストに格納 3.左側の数、右側の数をそれぞれ0で初期化 4.右側の数字を更新 (右側の数字 ← 100*右側の数字+リストのi番目の要素
) 5. (10*左側の数字 + n) * n<= 右側の数字となる最大の整数nを求める 6.右側、左側の数字をそれぞれ更新 (右側の数字 ← 右側の数字 - (10*左側の数字 + n)*n 左側の数字 ← 10*左側の数字 + 2*n) 7. 4~6をリストの要素分繰り返す
今回作成したコード 詳しくはQiitaに挙げているので、確認してください (開平法で平方根を任意桁まで求める【 Python実装付き】 #数学 - Qiita)
ニュートン法と比較してみた x y= a ニュートン法とは?ー数値解を求めるアルゴリズムの一種 一言でいうと、xの値を決める→(x,f(x))をから接線を引く を繰り返してf(a)=0となるaを求める方法 方法 1.初期値x_0を求める 2.f(x_0)とf’(x_0)を求める
3.x_0- f(x_0)/f’(x_0) を計算する。これが次の xになる 4.2~3を繰り返す
方法 1~100万までの整数を10万個出力してみて、誤差が 10^-8以下になるまで計算を行い すべて計算し終わるまでの時間を計測 誤差(err)は以下の式で求めている ※今回はニュートン法の初期値は 1.0で固定している a:ルートの中身 n:数値解
結果 開平法 ニュートン法 1回目 12.03186 8.02147 2回目 11.48783 8.58757 3回目
11.53064 8.82972 平均 11.68344 8.47959 ニュートン法の方が早く収束
まとめ ニュートン法の方が、精度、計算時間が優れていた。 もっと言うと、コードサイズもニュートン法の方が短かった ー使われているものには使われるだけの理由があるんだなと感じた 双方のアルゴリズムをスライドにまとめているときに、ニュートン法の方が説明が書きやすかった ーシンプルであることも良いアルゴリズムであることの指針の一つかなと感じた
最後に Qiitaに今回の記事を挙げてます いいね押してもらえると励みになります