読者です 読者をやめる 読者になる 読者になる

daniel-yangのブログ

メインブログ「受動態」(読書感想文ブログ)とは異なる内容を気まぐれで記します。

暇なのでマクローリン展開でcos30度を計算する(つづき)

暇なのでマクローリン展開でコサインを算出してみます。(つづき)
前編はこちら。

では、実際に計算してみましょう

頑張って作ったcos(x)の近似式

f:id:Daniel_Yang:20150405162544p:plain

この式のxに0~90度を代入して計算していきます。
ただし、最初から8次式全部を計算するのは骨が折れます。
少しずつ計算します。
1. 2次まで。

f:id:Daniel_Yang:20150405162646p:plain

円周率

計算結果を表に書き込んでいきます。
と、思ったけれど、先ず角度の単位を計算しなくっちゃ。
ズルですが、円周率πは、僕が記憶している3.14159263を使います。
(円周率の求め方は存じ上げませんm(v_v)m)

有効数字

あと、割り切れない数字を小数で扱うので、何桁まで計算するかを決める必要があります。
小数点以下3桁まで。
途中のかけ算は、有効数字4桁
で計算することにします。
では、先ず角度の計算から。

角度の計算

180°が円周率π=3.14159…となる角度の単位[ラジアン」を使います。
0°から90°まで、15°きざみで、それぞれ何ラジアンになるのかを計算します。

f:id:Daniel_Yang:20150405163504p:plain

1. 2次まで。
あらためて、

f:id:Daniel_Yang:20150405162646p:plain

計算結果を下に記します。
途中の自乗、かけ算、割り算は、有効数字4桁。
最後の足し算は、小数点以下4桁めを四捨五入して、小数点以下3桁で計算しています。

f:id:Daniel_Yang:20150405165327p:plain

f:id:Daniel_Yang:20150405165338p:plain

90°より先は、コピペです。
例)75°の計算値(0.144)をそのまま285°にコピペしています。
  75°の計算値(0.144)にマイナス1を掛けて-0.144として、105°、255°にコピーしています。

 

うーん。ダメですね。近似しているとは言えないですね。
しかし、90°の時に0になるのが「正解」と言えそうだ。と気が付きました。
2. 4次まで
じゃ、4次の項も計算します。

f:id:Daniel_Yang:20150405170239p:plain

計算結果を下に記します。
途中の自乗、かけ算、割り算は、有効数字4桁
最後の足し算は、小数点以下4桁めを四捨五入して、小数点以下3桁で計算しています。

f:id:Daniel_Yang:20150405170254p:plain

f:id:Daniel_Yang:20150405170309p:plain

90°より先は、コピペです。
例)75°の計算結果(0.265)をそのまま285°にコピペしています。
  75°の計算結果(0.265)にマイナス1を掛けて-0.265として、105°、255°にコピーしています。
だいぶ近づいてきました。
90°で0になるべきところが、0.020です。
3. 6次まで
6次の項も計算します。

f:id:Daniel_Yang:20150405171043p:plain

計算結果を下に記します。
途中の自乗、かけ算、割り算は、有効数字4桁
最後の足し算は、小数点以下4桁めを四捨五入して、小数点以下3桁で計算しています。

f:id:Daniel_Yang:20150405171050p:plain

f:id:Daniel_Yang:20150405171102p:plain

90°より先は、コピペです。
例)75°の計算結果(0.258)をそのまま285°にコピペしています。
  75°の計算結果(0.258)にマイナス1を掛けて-0.258として、105°、258°にコピーしています。
ほとんど一致しています。
90°で0になるべきところが、-0.001です。
計算した最後の一桁が1だけ違います。
これは、誤差と言って良いと思うのですが、(以降どんだけやっても、この誤差が残る可能性があるので、無駄な可能性があるのですが)、
続けます。
4. 8次まで
8次の項も計算します。

f:id:Daniel_Yang:20150405173216p:plain

計算結果を下に記します。
途中の自乗、かけ算、割り算は、有効数字4桁
最後の足し算は、小数点以下4桁めを四捨五入して、小数点以下3桁で計算しています。

f:id:Daniel_Yang:20150405173231p:plain

表が大きくなりましたので、0次から6次は結果だけを表示しました。

 

f:id:Daniel_Yang:20150405173304p:plain

90°より先は、コピペです。
例)75°の計算結果(0.258)をそのまま285°にコピペしています。
  75°の計算結果(0.258)にマイナス1を掛けて-0.258として、105°、258°にコピーしています。
ようやくcos90°が0.000になりました。

丸め誤差について

cos75°=0.258が、表計算ソフトが算出した0.259と異なります。
これは、丸め誤差です。小数点以下3桁に四捨五入した数字を4つ足しているので、それぞれの四捨五入が少し偏ると、最後の桁に誤差が乗るのです。
これは、あきらめます。
四捨五入する桁をもう一桁下の桁にして、計算する桁数を増やせば、この誤差は無くなりますが、その増やした一桁にも、再び丸め誤差が乗る可能性があります。
ですから、この誤差を無くすことに注力せずに、
近似値の最後の一桁には、多少の誤差がある。
と、念頭に置いて計算結果を利用するように心がけます。
よく「数学は、答えがきっちり出るから好き。」と耳にします。
そんな、クリーンなイメージとはちょっと肌色が異なりますね。
実際に実験結果や、数値を代入して近似値を求め、何かに利用する際には、
あるていどの誤差を認識して、誤差が不具合にならないように留意します。

まとめ

マクローリン展開で、コサインを数値として求めることができる。
・ 小数点以下第3位までなら、展開式は6次までで充分。
・ 暇つぶしには適度な負荷の計算作業だった。

おまけ

今回の計算は、実用を考慮して、90°以降はコピペで、8次まで計算しました。

・ 90°以上はどうなるの?

・ 8次以降も計算したらどうなるの?

と興味が残ったので、計算してみました。

f:id:Daniel_Yang:20150405173939p:plain

当たり前ですが、90°以上をそのまま近似式で計算すると、誤差がどんどん大きくなります。

でも、8次式なら、180°まではだいたい一致しますね。

10次式なら、220°まではほぼ一致した値になるようです。

 

でも、実用には、90°までの計算で充分ですから、やっぱり、6次式までで良いです。

感想

学生の時に、徹夜しても終わらなかった実験レポートを抱えて小田急線に乗ったことがありました。
「さぁ、新宿に着くまでに、計算を終わらせてレポートを提出するぞ。」
と、意気込みました。
カバンを開けて唖然としました。
関数電卓を家に忘れてきた。」
あきらめてなるものか。と、有効数字6桁の開平をメモ用紙いっぱいに数字を書き込みながら解いた小田急線車内。
その時の記憶があり、
「必要以上に大きな桁の計算をするのは無駄である。」
「誤差には留意しろ。」
が身にしみています。
と言うわけで、有効数字と計算する桁数にこだわって、コサインの値を求めてみました。
 
新しい年度を迎えて、サクラも咲き、春爛漫。
僕の暇つぶしに付き合ってくれた、皆様も愉快な春が訪れますように(ー人ー)合掌。