東方算程譚

Oriental Code Talk ── επιστημηが与太をこく、弾幕とは無縁のシロモノ。

目次

Blog 利用状況

ニュース

著作とお薦めの品々は

著作とお薦めの品々は
東方熱帯林へ。

あわせて読みたい

わんくま

  1. 東京勉強会#2
    C++/CLI カクテル・レシピ
  2. 東京勉強会#3
    template vs. generics
  3. 大阪勉強会#6
    C++むかしばなし
  4. 東京勉強会#7
    C++むかしばなし
  5. 東京勉強会#8
    STL/CLRによるGeneric Programming
  6. TechEd 2007 @YOKOHAMA
    C++・C++/CLI・C# 適材適所
  7. 東京勉強会#14
    Making of BOF
  8. 東京勉強会#15
    状態遷移
  9. 名古屋勉強会#2
    WinUnit - お気楽お手軽UnitTest

CodeZine

  1. Cで実現する「ぷちオブジェクト指向」
  2. CUnitによるテスト駆動開発
  3. SQLiteで組み込みDB体験(2007年版)
  4. C++/CLIによるCライブラリの.NET化
  5. C# 1.1からC# 3.0まで~言語仕様の進化
  6. BoostでC++0xのライブラリ「TR1」を先取りしよう (1)
  7. BoostでC++0xのライブラリ「TR1」を先取りしよう (2)
  8. BoostでC++0xのライブラリ「TR1」を先取りしよう (3)
  9. BoostでC++0xのライブラリ「TR1」を先取りしよう (4)
  10. BoostでC++0xのライブラリ「TR1」を先取りしよう (5)
  11. C/C++に対応した、もうひとつのUnitTestFramework ─ WinUnit
  12. SQLiteで"おこづかいちょう"
  13. STL/CLRツアーガイド
  14. マージ・ソート : 巨大データのソート法
  15. ヒープソートのアルゴリズム
  16. C++0xの新機能「ラムダ式」を次期Visual Studioでいち早く試す
  17. .NETでマンデルブロ集合を描く
  18. .NETでマンデルブロ集合を描く(後日談)
  19. C++/CLI : とある文字列の相互変換(コンバージョン)
  20. インテルTBBによる選択ソートの高速化
  21. インテルTBB3.0 によるパイプライン処理
  22. Visual C++ 2010に追加されたSTLアルゴリズム
  23. Visual C++ 2010に追加されたSTLコンテナ「forward_list」
  24. shared_ptrによるObserverパターンの実装
  25. .NETでマンデルブロ集合を描く(番外編) ── OpenCLで超並列コンピューティング
  26. StateパターンでCSVを読む
  27. 状態遷移表からStateパターンを自動生成する
  28. 「ソートも、サーチも、あるんだよ」~標準C++ライブラリにみるアルゴリズムの面白さ
  29. インテルTBBの同期メカニズム
  30. なぜsetを使っちゃいけないの?
  31. WPFアプリケーションで腕試し ~C++でもWPFアプリを
  32. C++11 : スレッド・ライブラリひとめぐり
  33. Google製のC++ Unit Test Framework「Google Test」を使ってみる
  34. メールでデータベースを更新するココロミ
  35. Visitorパターンで遊んでみたよ
  36. Collection 2題:「WPFにバインドできる辞書」と「重複を許す検索set」
  37. Visual C++ 2012:stateless-lambdaとSQLiteのぷち拡張
  38. 「Visual C++ Compiler November 2012 CTP」で追加された6つの新機能

@IT

  1. Vista時代のVisual C++の流儀(前編)Vista到来。既存C/C++資産の.NET化を始めよう!
  2. Vista時代のVisual C++の流儀(中編)MFCから.NETへの実践的移行計画
  3. Vista時代のVisual C++の流儀(後編) STL/CLRによるDocument/Viewアーキテクチャ
  4. C++開発者のための単体テスト入門 第1回 C++開発者の皆さん。テスト、ちゃんとしていますか?
  5. C++開発者のための単体テスト入門 第2回 C++アプリケーションの効率的なテスト手法(CppUnit編)
  6. C++開発者のための単体テスト入門 第3回 C++アプリケーションの効率的なテスト手法(NUnit編)

AWARDS


Microsoft MVP
for Visual Developer - Visual C++


Wankuma MVP
for いぢわる C++


Nyantora MVP
for こくまろ中国茶

Xbox

Links

記事カテゴリ

書庫

日記カテゴリ

√でしまる

ネタ元 → あれ? 

平方根: Math.Sqrt の引数は double なので decimal の平方根はどないすんの? と。
さてさてどーしましょ。ニュートン法でも使ってみましょか。

ニュートン法: f(x) = 0 の近似解を X とすると、
X - f(X)/f'(X) はより正確な近似解となる。
 …[1]

√n を求めるってことは、
f(x) = x^2 - n としたときの f(x) = 0 の解を求めるってことです。
f'(x) = 2x ですから、f(x), f'(x) を [1] にぶっこんで:

class Program {

  delegate decimal func(decimal x);
  delegate decimal dfunc(decimal x);

  static decimal newton(decimal x, func f, dfunc df) {
    return x - f(x)/df(x);
  }

  public static void Main() {
    decimal n = 2m;
    decimal result = n;
    for ( int i = 0; i < 10; ++i ) {
      result = newton(result,
                     
delegate(decimal x) { return x*x - n; },
                      delegate(decimal x) { return x+x; });
      System.Console.WriteLine(result);
    }
  }
}

実行結果:
1.5
1.4166666666666666666666666667
1.4142156862745098039215686275
1.4142135623746899106262955789
1.4142135623730950488016896235
1.4142135623730950488016887242
1.4142135623730950488016887242
1.4142135623730950488016887242
1.4142135623730950488016887242
1.4142135623730950488016887242

5,6回通せば十分な精度が得られそうね。

[追記] あそっか。
近似解の初期値として Math.Sqrt(n) を与えれば:
  public static void Main() {
    decimal n = 2m;
    decimal result = (decimal)System.Math.Sqrt((double)n);
    …以下おなじ
一回通しただけで収束しちゃいますた♪


投稿日時 : 2007年6月29日 10:51

コメントを追加

# re: √でしまる 2007/06/29 11:31 とりこびと

ちょwwはずかしwwww

# re: √でしまる 2007/06/29 11:48 Chuki

その調子で
パイでしまるのも体験させて(@^_-@)
マスのパイは21桁(どういう数え方だ!?)
Math.PI=3.14159265358979323846 'as Double

だから、28桁で計算してみるなんてのは...
#単に変わったアルゴリズムを見せていただきたかったり^^;

# re: √でしまる 2007/06/29 12:01 επιστημη

いーぢゃん定数なんだからわざわざ計算せぇへんでもぉ
π = 3.14159 26535 89793 23846 26433 83279 50288 …

# re: √でしまる 2007/06/29 12:22 片桐

ルート記号が首をきゅぅぅぅぅっと絞める様を想像しました。
誰の首かは……いえません。
でも、きっと、そのままきゅうぅぅぅぅぅぅっと絞めたら、そのまま白身と気味が分離しちゃって、サンドイッチの具になると思うの……
あ、一部の人にバレたかも(^^;

ぴんくのくまに乾杯<違っ

# ある時はだいたい3、ある時は3.14159...(以下灰になるまで) 2007/06/29 12:36 Chuki

そんなしまりの悪いのは許しません.
変わる可能性があるのにいれちゃうなんて...
ちゃんと中でグチュグチュ臨機応変に対応して気持ちよくなりましょうよ^^

#ダメだ、ぽちっとなの人のコメントに引っ張られてる^^;

# re: √でしまる 2007/06/29 12:56 επιστημη

> そのまま白身と気味が分離しちゃって、サンドイッチの具になると思うの……

マヨネーズとマスタード(適宜)を忘れてます。

# re: √でしまる 2007/06/29 13:07 とりこびと

>π = 3.14159 26535 89793 23846 26433 83279 50288 …

私のリズムはこう↓

π = 3.141592 65358979 32384626 43383279…

どーでもいいですよー。

# 解説しよう 2007/06/29 22:45 東方算程譚

解説しよう

# re: √でしまる 2007/06/29 23:12 rinda

ちなみに俺のリズムは・・・

3. 14 15 92 6535
89 79 32 38 462

て感じですっ (ブルーハーツ好きはこうでなくちゃ!

# re: √でしまる 2007/06/30 1:36 えムナウ

私のリズム(覚え方)です。
314 1592 65 35 8979 32 38 462 64 33 83279

# re: √でしまる 2007/06/30 2:40 IIJIMAS

今晩は。IIJIMASです。
私のπの覚え方は「産医師異国に向こう産後厄無く産婦宮城に虫さんざん闇に鳴く」です。ひょっとしてえムナウさんと同じ?

√nの計算法にはこういう考え方のもありますよ。
0 < x < √n とする。
両編に√n をかけて
x * √n < n
x で割って
√n < n/x
すなわち、x < √n < n/x
同様に、√n < xのときは n/x < √n < x
で結局 x と n/x で挟まれる。
x → 大(小)ならn/x → 小(大)となるので、
x → (x + n/x)/2 (平均)
という写像を繰り返せば x は √n に収束します。
実は、よくみるとεπιστημηさんの方法と同じ式なのですが。

[1/x]ボタンがある電卓で
…Windowsのアクセサリのにはありますが…
…どうやらお祭りのには無い様ですね……
[+][2][=][1/x]を繰り返すと…
… √2-1 に近づいていきますね。遅いけど…

# re: √でしまる 2007/07/01 7:37 ぽぴ王子

閉まるネタは同案多数だったようなので、放置しておくとして。

>> とりこびとさん
> π = 3.141592 65358979 32384626 43383279…
おまいわ俺か!

…単に覚え方が同じだったと言うだけですが。

むしろメトロノームのように左右に振れて
右「さんてんいちよん」
左「いちよんきゅーにー」
一休み
右「ろくごーさんごー」
左「はちきゅーななきゅー」
(以下覚えてない)

という感じで覚えてる感じです。

# 課題電卓だって?
# あんなの整数だけでいいんだよ!グリーンだよ!(違
# ふっ、浮動小数点なんて使っちゃいけないんだからねっ!(ツンデレ
# ↑使い方間違ってます
# 参考:http://blogs.wankuma.com/esten/archive/2007/06/07/79862.aspx

# re: √でしまる 2007/07/03 18:18 とりこびと

>>ぽぴ王子さん

>むしろメトロノームのように左右に振れて

おまいわ俺か!

なんか途中でおんなし数字がいい感じで入ってくるんですよねw

# re: √でしまる 2007/07/04 15:27 片桐

玉子さん&とりこさんが二人並んでお揃いに首をメトロノームするの図……(遠い目)

今日はこれ以降、仕事にならないことを宣言します(違っ

# 『 The 祭り 』電卓アプリケーションをつくろう! 記事一覧 2007/07/08 11:23 AQUA's .NET 奮闘記

『 The 祭り 』電卓アプリケーションをつくろう! 記事一覧

# I am in fact grateful to the holder of this website who has shared this impressive article at at this place. 2019/05/07 8:22 I am in fact grateful to the holder of this websit

I am in fact grateful to the holder of this website who has
shared this impressive article at at this place.

# gRTopSPmfilDfcw 2022/04/19 11:28 johnansaz

http://imrdsoacha.gov.co/silvitra-120mg-qrms

タイトル
名前
URL
コメント