僕は、はじめて発見したのですが、
n角形の周の長さから導き出した公式で
sin(180/n) * n に、限りなく大きい数をnに代入すると円周率が出てくる。
ためしに、180角形で試すと
sin1 * 180 = 0.0174532925199433 * 180 = 3.141592653・・・
(三角関数表から)
となったのですが、これ以上細かいsinの値を出すのには、やはり円周率が必要なんでしょうか。
円周率の求め方?
Re: 円周率の求め方?
http://ja.wikipedia.org/wiki/%E3%83%86% ... 5%E9%96%8B
↑ウィキペディアのテイラー展開の記事です。
例の下の方に三角関数の欄があって、sinの計算方法が載ってますよ
↑ウィキペディアのテイラー展開の記事です。
例の下の方に三角関数の欄があって、sinの計算方法が載ってますよ
Re: 円周率の求め方?
n→0のとき (sin(n))/n→1より
sin(180/n) * n=sin(180/n) / (1/n)=180*( sin(180/n) / (180/n) ) 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
sin(180/n) * n=sin(180/n) / (1/n)=180*( sin(180/n) / (180/n) ) 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言語で計算してみた
理由: C言語で計算してみた
Re: 円周率の求め方?
みけ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・・・[無次元]
となり、無事におさまります。
いやー、ややこしいですねー(笑)
>>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・・・[無次元]
となり、無事におさまります。
いやー、ややこしいですねー(笑)
Re: 円周率の求め方?
C言語のsin関数は単位がラジアンなので、度をラジアンに換算して計算すると、きちんと円周率を出せます。
http://ideone.com/86JZx
しかし、ラジアンへの換算に円周率が必要なので、
スライパさんが言う通り、やはり円周率が必要になるでしょう。
http://ideone.com/86JZx
しかし、ラジアンへの換算に円周率が必要なので、
スライパさんが言う通り、やはり円周率が必要になるでしょう。
Re: 円周率の求め方?
コメントありがとうございます。
n の値をふやしていくと、π に近づく増加量が次第に減っていくんですよね。
n=2 → 2 n=3 → (3√3)/2=約2.59 n=4 → 2√2=約2.828
ここを反比例とか累乗の式に出来ないのかなーと思ったのですが
その辺は完全に勉強不足でわかりません。
n の値をふやしていくと、π に近づく増加量が次第に減っていくんですよね。
n=2 → 2 n=3 → (3√3)/2=約2.59 n=4 → 2√2=約2.828
ここを反比例とか累乗の式に出来ないのかなーと思ったのですが
その辺は完全に勉強不足でわかりません。
Re: 円周率の求め方?
私の前のコメント、πは基本無次元ですが、角度として用ている所は[rad]とするべきですね
そういえば、大学の授業で三角関数表を出力する時もいちいちなおして計算してた気が(笑)
単位が度の三角関数無いんですか、不便ですねーみけCAT さんが書きました: C言語のsin関数は単位がラジアンなので、度をラジアンに換算して計算すると、きちんと円周率を出せます。
そういえば、大学の授業で三角関数表を出力する時もいちいちなおして計算してた気が(笑)
Re: 円周率の求め方?
私も出してみました。
といっても、面積からのアプローチですが、
n角形として n = 2n~ とすると、
π = lim(n~→∞) sin(180 / n~) * n~
微妙に違う(笑)
といっても、面積からのアプローチですが、
n角形として n = 2n~ とすると、
π = lim(n~→∞) sin(180 / n~) * n~
微妙に違う(笑)
- tk-xleader
- 記事: 158
- 登録日時: 14年前
RE: 円周率の求め方?
Cの標準関数で正確な円周率を求めるだけならば、4*atan(1.0)で即決です。
で、x・sin(π/x)という関数についての考察プログラムが以下です。
DXライブラリと、boost(バージョン1.43以降)がインストールされているVC2010でコンパイル可能です。
で、x・sin(π/x)という関数についての考察プログラムが以下です。
#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 ;
}
最後に編集したユーザー tk-xleader on 2012年2月19日(日) 02:15 [ 編集 1 回目 ]