円周率の求め方?

アバター
スライパ
記事: 9
登録日時: 14年前
住所: 北海道→東京

円周率の求め方?

投稿記事 by スライパ » 13年前

僕は、はじめて発見したのですが、

n角形の周の長さから導き出した公式で

sin(180/n) * n に、限りなく大きい数をnに代入すると円周率が出てくる。


ためしに、180角形で試すと

sin1 * 180 = 0.0174532925199433   *   180   =  3.141592653・・・
          (三角関数表から)

となったのですが、これ以上細かいsinの値を出すのには、やはり円周率が必要なんでしょうか。
最後に編集したユーザー スライパ on 2012年2月18日(土) 10:09 [ 編集 3 回目 ]

アバター
Cr
記事: 93
登録日時: 14年前

Re: 円周率の求め方?

投稿記事 by Cr » 13年前

http://ja.wikipedia.org/wiki/%E3%83%86% ... 5%E9%96%8B
↑ウィキペディアのテイラー展開の記事です。
例の下の方に三角関数の欄があって、sinの計算方法が載ってますよ

アバター
みけCAT
記事: 6734
登録日時: 14年前

Re: 円周率の求め方?

投稿記事 by みけCAT » 13年前

n→0のとき (sin(n))/n→1より

sin(180/n) * n=sin(180/n) / (1/n)=180*( sin(180/n) / (180/n) )
pi_suusiki.png
数式の画像
pi_suusiki.png (1.92 KiB) 閲覧数: 210 回
n→∞のとき 180/n→0なので
n→∞のとき 180*( sin(180/n) / (180/n) )→180*1=180
おかしいな…いくらゆとりでもπ=180はないよな…何か間違った事をしたかな?
あ、これは1=2の証明か!
π≒3.14より180-π≠0
よってπ=180の両辺からπを引いて 0=180-π
両辺を180-πで割って 0=1
両辺に1を足して 1=2

追記
C言語で計算してみました。
http://ideone.com/Sbpst
最後に編集したユーザー みけCAT on 2012年2月18日(土) 15:31 [ 編集 1 回目 ]
理由: C言語で計算してみた

Fimbul
記事: 100
登録日時: 14年前

Re: 円周率の求め方?

投稿記事 by Fimbul » 13年前

みけCATさんのジンク関数の計算はあっていますが、単位が違うのです。

>>sin(180 / n) * n
nは無次元でスライパさんはsinの中を[度]としているので、180は[度]の単位です。
また、上式は無次元になるので、スライパさんの式は
    π = 3.14・・・= lim(n→∞) sin(180 / n) * n [無次元]
となります。

所で、π = 3.14・・・[無次元] = 180[度]と定義できるのは、半径1の単位円を考えると、その円周の長さが 2πになりこの比率から
    360[度] = 2π
と定義できるからです。

よって、
    π = lim(n→∞) 180 * sinc(180 / n) = 180[度] = 3.14・・・[無次元]
となり、無事におさまります。



いやー、ややこしいですねー(笑)

アバター
みけCAT
記事: 6734
登録日時: 14年前

Re: 円周率の求め方?

投稿記事 by みけCAT » 13年前

C言語のsin関数は単位がラジアンなので、度をラジアンに換算して計算すると、きちんと円周率を出せます。
http://ideone.com/86JZx
しかし、ラジアンへの換算に円周率が必要なので、
スライパさんが言う通り、やはり円周率が必要になるでしょう。

アバター
スライパ
記事: 9
登録日時: 14年前
住所: 北海道→東京

Re: 円周率の求め方?

投稿記事 by スライパ » 13年前

コメントありがとうございます。


n の値をふやしていくと、π に近づく増加量が次第に減っていくんですよね。
n=2 → 2      n=3 → (3√3)/2=約2.59    n=4 → 2√2=約2.828 

ここを反比例とか累乗の式に出来ないのかなーと思ったのですが
その辺は完全に勉強不足でわかりません。

Fimbul
記事: 100
登録日時: 14年前

Re: 円周率の求め方?

投稿記事 by Fimbul » 13年前

私の前のコメント、πは基本無次元ですが、角度として用ている所は[rad]とするべきですね
みけCAT さんが書きました: C言語のsin関数は単位がラジアンなので、度をラジアンに換算して計算すると、きちんと円周率を出せます。
単位が度の三角関数無いんですか、不便ですねー
そういえば、大学の授業で三角関数表を出力する時もいちいちなおして計算してた気が(笑)

Fimbul
記事: 100
登録日時: 14年前

Re: 円周率の求め方?

投稿記事 by Fimbul » 13年前

私も出してみました。
といっても、面積からのアプローチですが、

n角形として n = 2n~ とすると、
π = lim(n~→∞) sin(180 / n~) * n~

微妙に違う(笑)

アバター
tk-xleader
記事: 158
登録日時: 14年前

RE: 円周率の求め方?

投稿記事 by tk-xleader » 13年前

Cの標準関数で正確な円周率を求めるだけならば、4*atan(1.0)で即決です。

で、x・sin(π/x)という関数についての考察プログラムが以下です。

CODE:

#include"Dxlib.h"
#include
#include
#include
#include
#include

static const int N = 600;
const double pai = 4 * std::atan(1.0);

int APIENTRY WinMain(HINSTANCE,HINSTANCE,LPSTR,INT){
	std::vector> result;
	result.reserve(N);
	for(int i=1; i & point){
			DrawPixel(point.first+20,240-70*point.second,white);
		});
		DrawCircle(result[count].first+20,240-70*result[count].second,3,red);
		ScreenFlip();
		(count+=1) %= N;
	}
	return DxLib_End()==-1 ? -1 : 0 ;
}
DXライブラリと、boost(バージョン1.43以降)がインストールされているVC2010でコンパイル可能です。
最後に編集したユーザー tk-xleader on 2012年2月19日(日) 02:15 [ 編集 1 回目 ]