SQRT(平方根) RTM版
作成者 劉徹 改造・アップロード者 天樹
本日は、SQRT(平方根)コモンをDLしていただき、誠にありがとうございます。
この中では、諸注意と、説明書きを行いたいと思います。
このコモンファイルはコモンイベント集の基本ルールに則って利用してOKです。
また、計算に必要な“固定小数点演算コモン”が未だβ版なので、計算が狂う場合がありますので、必ず確認をしてください。おかしい計算が出た場合は、コメント欄に代入式を記入してバグが出たと書いてくだされば、確認し次第対応させていただきます。
この説明書きが分かりづらい場合もコメントしてください。
このコモンファイルは、劉徹さん(天樹の同級生です)が作ってくれました。この場を借りて感謝申し上げます。
改造&アップロードに関しては本人の許可を受けております。どうぞご安心ください。
と言っても、改造点は10万以上の根号に対応させたくらいですが(正確さが最大10倍劣るので、ご注意ください)
さて、これくらいで注意喚起とお願いを終わりにして、説明書きに移行します。
1.必須のコモンファイル
このコモンが演算する環境として、“固定小数点演算コモン”が必要です。別途ダウンロードしてください。小数の表記法に関して詳しいことは“固定小数点演算コモン”のReadMe.htmlをご確認ください。
2.変数の呼び出し法
ウディタでは、コモンイベントの変数入力では、変数を呼び出せるようになっていますが、このコモンにとっては迷惑なことです(泣)
ですので、変数入力に入れる変数に、固定小数点変数の呼び出し値を代入します。
さて、このコモンイベントでは、入力変数が4つ定められています。
入力1 入力2 は、平方根を求めたい値の整数値と小数値(4桁)を入力してください。
入力3 は代入先として整数値を格納する変数の呼び出し値 を格納した変数。
入力4 は代入先として小数値を格納する変数の呼び出し値 を格納した変数を入力してください。
なので、通常変数0に整数値を、通常変数1に小数値を代入するために、「このイベントのセルフ変数0と1」を用いると、
セルフ変数0 | セルフ変数1 |
2000000 | 2000001 |
そして、このセルフ変数を入力変数に入れればOKです。
入力値(整数) | 入力値(小数) | 返値整数保存 | 返値変数保存 |
根号内の整数 | 根号内の小数 | 1100000 | 1100001 |
3.初期値の変更
このコモンファイルの中で、21行と22行のAとaの変数に代入する値は、正の値であれば何でも構いません。但し、この値によっては演算時間に影響が出ますので、注意して設定してください。なお、一般的使用であれば、初期設定で大丈夫です。
最後に
この平方根計算コモンはニュートン法を用いて行っています。
a(n+1)=(1/2)(a(n)+p/a(n)) p=求めたい根号の中身 という漸化式を解く(というより代入し続ける)ことで算出します。
そして、“固定小数点演算”の演算限界の為、10万以上の根号の中身に関しては、演算精度が落ちるので、ご了承ください。
また、マイナスの値を入力すると、永久ループにはまって身動きが取れなくなりますので、絶対にしないでください。
このコモンで10万未満の数の平方根は誤差±0.0001で、10万以上の誤差は±0.0010に収まっています。
(ちなみに、10万以上の平方根に関しては、 √100x=10√x を元に最適化を行っています。これによって、“固定小数点演算”の制限内に収めています。そのため、10万から1000万の間では、小数点以下3桁まで、1000万から10億までは小数点以下2桁の精度に下がります)
最後に、このコモンを作ってくださった劉徹さんに再度感謝いたします。