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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
keyT
October 22, 2025
24
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
33
コード進行を再現するコード作成.pdf
keyt
0
42
QRコードでライフゲーム.pdf
keyt
0
24
SAMでなんでも切り抜けるツールを作ってみた.pdf
keyt
0
18
開平法でn乗根を求めてみるコード作ってみた.pdf
keyt
0
47
connpass最新イベント_通知用LINEBot作成.pdf
keyt
0
32
発信力_鍛えてきました.pdf
keyt
0
62
OpenCVとSciPyを活用した関数アート生成コード開発.pdf
keyt
0
32
自宅用タスク管理ツール開発.pdf
keyt
0
15
Featured
See All Featured
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.2k
Into the Great Unknown - MozCon
thekraken
41
2.7k
Writing Fast Ruby
sferik
630
63k
Abbi's Birthday
coloredviolet
3
9.3k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Faster Mobile Websites
deanohume
310
32k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
What's in a price? How to price your products and services
michaelherold
247
13k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
The Pragmatic Product Professional
lauravandoore
37
7.4k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
200
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に今回の記事を挙げてます いいね押してもらえると励みになります