誰かマクローリン展開、教えて!

このエントリーをはてなブックマークに追加
(直感的に)と言えば、sin()などの関数が a + bx^2 + cx^3 ・・・・
などの多項式に展開できることを図でイメージできないよ、俺。
そもそも、中心からずれれば、誤差が出るんだよね?10のもなーが
言ってるみたいに。まぁ、sin()だとかcos()は幸いにして周期関数
だから、0 から 2πの間に丸め込めるから深刻な問題ではないけど。
(CPUも、内部ではマクローリン展開ではじき出してるので、cos(x) と
cos(x+n*π)とでは、誤差があると明記されてるしね。)
2120:01/12/31 02:37
訂正 -> cos(x+2*n*π) とcos(x) の間に誤差がある。

     曰
     | |   ∧_∧     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ノ__丶(〃´Д`)_ < fmodすらしないで露骨に展開してるんですか?
     ||十||/    .| ¢、 \_____________
  _ ||四||| |  .    ̄丶.)
  \ ||代||L二⊃ . ̄ ̄\
  ||\`~~´  プログレ♪ \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
   .  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||

     曰
     | |   ∧_∧     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ノ__丶(〃´Д`)_ <  よく読んだら周期の境界のお話でした
     ||十||/    .| ¢、 \_____________
  _ ||四||| |  .    ̄丶.)
  \ ||代||L二⊃ . ̄ ̄\
  ||\`~~´  プログレ♪ \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
   .  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
24げーむ屋:01/12/31 03:11
最近のIntel系のCPUは、チップ内にfmodをハードでかけてるので
VC++付属の(というか多くの標準数学ライブラリ)の△関数関連内部
に存在するfmodは無意味であるばかりか、足かせとなります。

いっぽう、某PS2の実行部隊1のチップ内にある△関数命令は
fmodかまさないばかりか、2*π の付近の時点で精度がかなりくたばってます。

X箱万歳。

     曰
     | |   ∧_∧     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ノ__丶(〃´Д`)_ <  >>24 CAD屋ですが、勉強になります
     ||十||/    .| ¢、 \_____________
  _ ||四||| |  .    ̄丶.)
  \ ||代||L二⊃ . ̄ ̄\
  ||\`~~´  プログレ♪ \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
   .  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
マクローリン展開のイメージって何だろう?
実際にグラフにして、イメージ掴むしかないか・・・
でも、分母が階乗だから、すぐに小さくなっちゃうんだよね−?
     曰
     | |   ∧_∧     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ノ__丶(〃´Д`)_ <  x^nの係数はf^(n)(0)/n!だから1/(1-x)とかはそうでもないよ
     ||十||/    .| ¢、 \_____________
  _ ||四||| |  .    ̄丶.)
  \ ||代||L二⊃ . ̄ ̄\
  ||\`~~´  プログレ♪ \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
   .  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
28デフォルトの名無しさん:01/12/31 15:56
>>1
「解析概論」,高木貞治著,岩波出版,ISBN4-00-005171-7,\2600
をお勧めする。
それのP.213によれば、

1)「解析函数は、それが正則なる領域内の任意の点において
Taylor級数に展開される。」

なお、「複素平面上の或る領域Kの各点において微分可能な函数を
Kにおいて正則な解析函数という。あるいは略して単に正則ともいう。」
らしいです。つまり、一回微分可能であればよい。
また、1の証明は、収束円とCauchyの積分公式を用いてされるが
詳細は上記の本みれ。のってるから。上手く説明できましぇん。

おおざっぱなイメージ的には連続で滑らかな一本線になっている関数なら
OKそうって感じかな。
気がつくと犬井の特殊関数が絶版になっている哀愁
30 :01/12/31 16:22
何気に高等良スレだな。
(複素)関数論、解析などの授業を忘れちまったおいらは
本とかみながらなじゃないとついてけんわい。
「解析概論」この本は私は父から譲り受けました。一体何年前の本なんですか。
まっくろおあうr9え0r9039うりいりいいいいいいいいいいいいん
>>20
sin(x)などの関数のある特定区間(sin(a)の近く,aは定数)で
近似曲線ってかけるよね。例えば 0付近では
一次: f(x) = x
三次: f3(x) = x^3 + 0*x^2 + (-0.917)*x + 0
五次: f5(x) = x^5 + 0*x^4 + (-0.975)*x^3 + 0*x^2 + 0.821*x + 0
みたいに。実際に書いてくらべてみよう。項が多くなればなるほど、
値が近い区間も広くなっていってだんだん sin(x)のグラフに
似てくるのがわかるはずだ。
>>33
しまった。上記のサンプルだと、
f(x) = xが一番綺麗にみえるかもしれない。
まぁ、いいか。いわんとすることはわかってもらえると思うし。
35デフォルトの名無しさん:02/01/05 03:42
>>1
というよりも、宇治社中って、数学覚えたて学生の陶酔記事にしか見えんよ。
知識欲旺盛な半端学生に多い傾向なんだけどさ。
論理展開飛躍はないんだけど、肝心なとこの説明を省いてる。
そして、おそらく本人も、省いた意識すらないと思われ。
36トの名無しさ:02/01/05 06:21
> 数学覚えたて学生の陶酔記事にしか見えんよ。
志井マガってそんなんばっかり。
37デフォルトの名無しさん:02/01/05 06:43
厳密な数学的証明が求められているの?
数学板に行って「高校生でも分かるように説明して欲しい」
といえば、懇切丁寧に説明してくれるかもしれない・・・
1なんてそっちのけで、議論が進む可能性も高いが。

そういう私はちゃんと理解してないです。
f(x+h)の近似式 → テーラー展開 → マクローリン展開
という、カンの流れだけで。
数学科じゃなきゃ、こんなもんでしょ。
お役に立てずごめんなさい。
     曰
     | |   ∧_∧     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ノ__丶(〃´Д`)_ <  数学の出来ないプログラマは逝ってよしですか?
     ||十||/    .| ¢、 \_____________________
  _ ||四||| |  .    ̄丶.)
  \ ||才||L二⊃ . ̄ ̄\ オメーラガ ナニ ハナシテルノカ サッパリダ ヨ
  ||\`~~´  プログレ♪ \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
   .  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
>厳密な数学的証明が求められているの?
いや、Cマガ読むと分かるんだけど、
「みんなが疑問に思っている証明すべき肝心な証明」が抜けてるんだよ。
いや、証明でなくてもいい。曖昧で直感的な説明でもいいから、ちゃっかり抜け
はしてほしくなかった。
誰も厳密な数学的証明を求めるなんて揚げ足とること要求してないの。

まぁ、Cマガのあの記事だけじゃないんだけどね。
大抵の数学教師も、あそこはすっ飛ばす。
「順次、微分していくと・・・」なんて感じで。
違うよ、疑問なのは、三角関数が多項式に近似できてしまう根拠を知りたいよー!
って感じで。教科書にも載ってないんだよね。
40デフォルトの名無しさん:02/01/06 05:13
>>39
うーむ。あくまでも、「カン」で言えば…

平面上の2点を決めれば、それらを通る直線が1つ定まる。
3点を決めれば、それらを通る2次関数が1つ定まる。
4点を決めれば、それら全部を通る3次関数が1つ定まる…
というわけで、
なんでもいいから近似したい曲線の上に、n個の点を取れば、
そのn個の点を全部通る、n-1次関数が求まるはずなわけだ。
で、
点の間隔をどんどん細かくして、nを無限まで続ければ、
どんな関数(連続な曲線)でも、
多項式で近似できるということが、直感的に分かる。
そうすると、
あとは、どうやって各項の係数を求めるのか?と言う話になる…

これじゃダメ?
まあ、プログラム書くのに証明はいらんからねぇ。
厳密な証明はCマガみたいなプログラミング雑誌に書くべきものでもないと思うんだけど。
大学初等レベルの教科書見ればちゃんと書いてあるわけだし。
図書館行きゃいくらでも調べれるし、2chで聞きたかったら数学板に行くのが一番いい。
>40
おー素晴らしい説明。
いや、実は、僕の場合、就職後に知ってしまったので、
その直感的説明も聞いてしまったんだけどね。

でも本来、その手の説明をCマガの時点でしてほしかったと。
(あるいは大学の講習の時点で)

>あとは、どうやって各項の係数を求めるのか?と言う話になる…
>これじゃダメ?
あとは、微分して各項の係数を求めていく機械的作業が残ってるのに
学校じゃ、ここばかりスポットライトを当ててると。

それを言いたかっただけ・・・
>>41
書いてるの? 厳密な証明じゃないよ。
44デフォルトの名無しさん:02/01/06 13:43
>>40
これってスプライン曲線とかの、
データを曲線に当てはめる方法と同じなのかな?
>世の中凄いことを考える人がいるもので、ありとあらゆる関数が
>この形で展開できるというのです。

これは大嘘。展開できるものについては展開できます。
> 展開できるものについては展開できます。

当たり前じゃん。いたるところ微分可能なものなら、とか具体的なこと
書かないと何も言ってないのと同じ
47デフォルトの名無しさん:02/01/06 14:57
コンパクト集合上で連続関数が多項式で近似できるっつー
ワイヤシュトラウスの近似定理は結構すごいこと言ってるのね
48826:02/01/06 17:03
>>40くらいのまともな説明を教授の口から聞きたかった。
ってか教授は分かっているのか?
49デフォルトの名無しさん:02/01/06 17:12
>>40
その説明だとラグランジュ補間になってるような。
マクローリンだと1点なんじゃないの?
このスレみるまで忘れてたから間違ってるかも。
5040:02/01/06 17:28
>>49
そう。あれは補完なんだけど、質問のポイントが、
「連続関数を多項式で表すことができる理由」
だったから、まー、その説明としてはいいんじゃないかと。

1点から行くとなると、イメージ的に難しいんだよなー。
1点を決めて接線を引けば、近傍では近似できる
っていうのはいいだろうけど、その先が…
なぜ、f''/2なのか?
教授と同じで、「順次微分すると…」って説明になる?
5140:02/01/06 18:24
じゃあ、こういう説明?

ある連続関数f(x)を、多項式で近似したい。
(多項式で近似できるってことは分かってるとして)

x=0から始めることして、まずは、
直線(1次関数)で近似することにする。
すると、直感的にこれは、(0, f(0))でf(x)に接する
接線になるってことは、分かってくれますよね?
というわけで、xが0に近いときには、
f(x) ≒ f'(0)x + f(0) と近似できる。 … (1)

さらに、導関数f'(x)も近似したいということになると、
上でやったf(x)の例を、f'(x)に当てはめて、
f'(x) ≒ f''(0)x + f'(0) となり、 … (2)
(1)と(2)の結果を総合して、
f(x) ≒ (f''(0)/2) x^2 + f'(0) x + f(0) となる。

同様に、f''(x)も近似したいとすれば、
f''(x) ≒ f'''(0) x + f''(0) … (3)
(1)〜(3)より、
f(x) ≒ (f'''(0)/6) x^3 + (f''(0)/2) x^2 + f'(0) x + f(0)

で、これをずっと続けて、
f(x) ≒ f(0) + f'(0) x + … + (f^(n)(0)/n!) x^n + …

これだと、高次の導関数を順次等しくしていくと、
元の関数もそれに応じて、近似がよくなっていく
ということを説明し切れていないような…
>高次の導関数を順次等しくしていくと、 元の関数もそれに応じて、近似がよくなっていく

ってのが正しくないからでしょう
53デフォルトの名無しさん:02/01/06 18:48
>1
物語などの話の展開の仕方です。小説家がよく使います。
54デフォルトの名無しさん:02/01/06 19:19
単純に微分値が等しい多項式を求めてるってだけでいいような。
マクローリンならx=0におけるn階までの微分値が等しいn次多項式を
求めてるだけ。微分値が等しいんだから似たような関数になるだろうと。
nが増えていけばより近くなるってのは直感的に分かるし。
x=0から離れるほどずれは大きくなるっていうのも直感的に分かるよね。
55デフォルトの名無しさん:02/01/06 19:32
>>51 >>54
そこんところは、分かるって書いてあります >>1
> 微分値が等しいんだから似たような関数になるだろうと。
これがなぜってことなんだろうなぁ。
57マクローリンの公式の形の意味:02/01/20 15:38
f = a + bx + cxx + dxxx + ,,,

とゆう形に展開できたとすると、

f' = b + 2cx + 3dxx + 4exxx + ...

f'' = 2c + 3*2dx + 4*3exx + 5*4fxxx + ,,

f''' = 3*2*d + 4*3*2ex + 5*4*3fxx + ,,

みたいになるから、上の式に x=0 を代入すると

f(0) = a

f'(0) = 1*b

f''(0) = 2*1*c

f'''(0) = 3*2*1*d

みたいになる。だから

a = f(0)

b =f'(0)

c = f''(0) /2!

d = f'''(0) / 3!

となり、以下同様。これらを一番上の式に代入すると
マクローリンの公式になる。

こっちのほうが見やすいかなぁとおもって、
たとえば x^3 を xxx という風に書いてみた。
5857:02/01/20 15:54
ゴメソ、>1 を見たら、これはすでに1の知っていることだったな。
無限級数の収束性については、ちゃんとした解析学の
教科書を参考にすればよいと思われ。
◆ わからない問題はここに書いてね 20 ◆
http://cheese.2ch.net/test/read.cgi/math/1010708150/l50

くだらねぇ問題はここへ書け ver.3.14159265
http://cheese.2ch.net/test/read.cgi/math/1010722815/l50
40の説明間違ってるの?あってるように思うけど。
>>60
突っ込みどころがいくつかあったりするYO!

>>40
>平面上の2点を決めれば、それらを通る直線が1つ定まる。
>3点を決めれば、それらを通る2次関数が1つ定まる。
>4点を決めれば、それら全部を通る3次関数が1つ定まる…
>というわけで、
細かいけど、定点のx座標は異なるのでしょう。
数学屋としてはともかく(?)、プログラマとしてはアウト。

>点の間隔をどんどん細かくして、nを無限まで続ければ、
>どんな関数(連続な曲線)でも、
>多項式で近似できるということが、直感的に分かる。
直観的にも論理的にも情緒的にもわかりません。
詳しく教えてください(w
実解析的 = 連続、ですか???

>そうすると、
>あとは、どうやって各項の係数を求めるのか?と言う話になる…
そうすると、ならね。
>>61
あんたのように数学的に厳密な証明のほうがわかりやすいと
思ってるヤシにはこんな説明はそもそも必要ないの
おいおい、厳密な証明じゃなくて厳密な(?)主張(ステートメント)なんだけどな。
こんな場で証明をする気もスペースもないし。
っていうか、>>40の主張はウソ。

安易な言葉使いが問題になるのはプログラムも同じだろ?
それだけのこと、別に数学が特別なわけでもない。
数学コンプなプログラマー見苦しい。
数学コンプリート!
…いや、なんとなく
65デフォルトの名無しさん:02/03/20 22:56
遅レスすまん。

>>24
fdlibm の e_rem_pio2.c みたいなのは、引数がゼロからかなり離れたとこでも
結果の精度を保証する為には、やむを得ないと思う(確か Intel 系の CPU は、
1584bits も持ってない筈)。
もちろん、そんなにゼロから離れた引数では使わない事が事前に分かっている
場合は、そこをパスするのもアリだと思う。

あと、PS2 は… 0〜2π ではなく、-π〜π で使えって事なんでしょう。
大学行け。以上。
ようするにあれだな、
>>1が疑問を持ったように「ありとあらゆる関数」に関して
マクローリン展開ができるとは限らんわけだ。
展開可能であるためにはΣ(fn(0)/n!)が収束しなきゃいけない、と。
fn(0)はf(x)のn次導関数に0を代入したものね。

証明は・・・忘れたなぁ。
骨組み的には、収束してほしい式を上から押さえて、
押さえた式が目的の値に収束すればよい、
という感じだったように思うのだが。
記憶だけで書いてるので間違いあるかも。
68デフォルトの名無しさん:02/03/21 08:53
実際に近似計算に使う級数って
級数展開して打ち切ったのと少し係数が違うよね?

あれはどういうふうにやってるの?
もしかしてひたすら差が小さくなるように繰返して求める?
6965
>>68
実際には(マクローリンではなく)チェビシェフ展開したやつをベースに、
使う区間等に合わせて係数を補正したのを使ってると思う。