通常のマルコフアルゴリズムを使用した平方根抽出

かつて、 通常のマルコフアルゴリズム (NAM)を使用して平方根を計算したかった。



米国について簡単に:



それで、すべてが単純なように見えますか? しかし、米国でプログラムを書く方法は?

私自身のために、私はこの計画のようなものを作りました:



したがって、平方根の計算に戻ります。 数値の二乗は1から2n-1までの奇数の合計であるという単純な事実に基づいた「子供の」方法(算術でもあります)を使用します。



このプロパティに基づいてルート抽出を実装するにはどうすればよいですか? 数値がゼロより小さくなるまで、最初に1、次に3、次に5などのように、数値から順番に減算し、同時に減算の数をカウントします。 合計、すでに2つのカウンター+結果を保存するための1つの変数



米国の小さな特徴-ここに数字はありません。 そして、変数はありません。 したがって、それらをシミュレートする必要があります。 私は長い算術を書くのが面倒だったので(そして、それが人に可能だとは思わない)、単純な原則-インクリメントとデクリメントを使用して算術演算をしました。



私の文字列が{Result}の形式で保存されていることを確認することにしました。{Number} {Next Odd Number} {End of Line Indicator}

単項計算に奇数を格納し、ユニットを「#」として指定することにしました-作業がずっと簡単になります。



さて、データを失うことなく、数値から次の奇数をどのように引きますか? 奇数と行末インジケーターの間に、マーカー「a」を追加する必要があると判断しました。マーカー「a」は、番号を移動して、それを複製しますが、異なる形式(「-」で示されます)になります。 すべての短所を数字にシフトして、それらを削除します。 すべての数値を取り除いた後、結果を1つ増やす必要があります。



私の実装には小さな機能がありました-結果は常に切り上げられます。 このアルゴリズムを1でなく(説明のように)0.5の絶対精度で動作させることにしました。 行に初期値からマイナスが半分以上ある場合、結果を取得して削減する必要があります。



結果は、与えられた数の平方根を抽出する「ピンポン」です。



置換数の数への依存性は非常に興味深いように見えます。



コードを表示: paste.org.ru/?3uweqh

実行例を表示: paste.org.ru/?34caeb

ダウンロードプログラム: sites.google.com/site/nsinreal/markovsqrt.zip



All Articles