- ベストアンサー
三角関数の計算がおかしい
- 三角関数の計算において角度の入力精度が重要な理由は何でしょうか?底辺の長さを求める際にも正確な角度が必要なのでしょうか?
- 三角関数の計算において、角度の小数点以下の精度が重要です。底辺の長さを求める際には正確な角度の値を使用する必要があります。
- 三角関数の計算において、角度の精度は計算結果の正確さに影響を与えます。底辺の長さを求める際には、小数点以下の桁数を増やすほど正確な値が得られます。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
(2)さんのご回答の内容が適切と思います。 その上で、理解の足しになるかもしれませんので、追加の説明を試みます。 3.15mmを基準として、底辺の長さ999.9950387を求めると言うことは、 基準の長さに対して、300倍以上の長さを求めようとすることなので、 その倍率を決めるtanの計算について、十分な精度を与える必要がある あるのです。 直角三角形の底辺と高さの関係を逆に考えて、 底辺の長さ999.9950387mmから、高さ3.15mmを求めるとすすとき、 tanに入力する角度を、0.18°と0.1804820039°との場合を比較すると 次の通りです。 999.9950387mm×tan0.18 =3.1411mm 999.9950387mm×tan0.1804820039=3.1500mm (- ---------------------------------------- Δ0.0089mm 1/100mm程度の差異の計算結果が得られます。 このように、基準の長さに対して、短い寸法を計算する場合は、角度に 対して10桁もの有効桁を必要としません。 もう少し数学的に考えてみたとき、 tan 0の値は、0なので、一定の数をtan 0で割ると、解が求まりません。 これを工学的に言い換えると、一定の数をtan で割る場合、角度が0°に近 いと誤差が大きくなると心得ることが宜しいと言うことです。 実際に角度を測定しようとする場合、有効桁数は3桁あれば上出来の部類で しょうが、その値を使って計算する場合は、「角度は小数点以下3桁までで」 では済まない場合があるということです。
その他の回答 (7)
現状の認識が間違ってる気がするので。。。 ちょっと順番に問題に応えてください 問題? 高さ3.15 角度60°の傾斜を加工しようとして 高さ3.15 角度60.2°で仕上がった 底辺(傾斜範囲)の誤差は0.015 高さ3.15 角度30°の傾斜を加工しようとして 高さ3.15 角度30.2°で仕上がった 底辺(傾斜範囲)の誤差は0.044 同じ0.2°の誤差なのに底辺の誤差は3倍も違う これは何故でしょうか? 問題? 『60°の加工したときに0.2°の誤差がでた』と 『0.18°の加工したときに0.000651°の誤差がでた』 このふたつのうち割合として誤差が大きいのはどっち? 問題? 高さ3.15、角度0.18°の加工をします。 傾斜範囲(底辺)に±0.1mmの公差があります。 0.0005度を誤差として切り捨てていいですか? 要するに、底辺の距離が必要な時には、60°も10°も0.18°も同じ認識で計算してはいけません。 角度を求める時に少数点3桁にすれば、万分代で誤差が出ます。 万分代の角度誤差を許容していいかは、加工ごとに異なるから自分で判断しなさい、ということです。 ガッテンしていただけましたでしょーか?(古い) 答えはあってます ですから、角度計算だから少数点以下3桁とか、その先の計算だから少数点10桁とかではないですよね、 加工の時や図面を見るときに、この角度はヤバイと直感して、少数点以下も切り捨てずに計算したりするのが熟練の加工者かなあと思います。 あと、これは現場ごとに認識は違うとは思いますが、0.18°の加工ではmm単位の誤差もそれほど大きい誤差ではないという考え方もあります それは周囲の先輩方に聞いてみてください
お礼
回答ありがとうございます。 >角度計算だから少数点以下3桁とか、その先の計算だから少数点10桁とかではないですよね そうです。実際自分で計算してみてよく解りました。 理屈を理解せず計算式だけ応用してもダメ、今更ですがそう感じました。 旋盤加工で使う三角関数なんて、せいぜい図面に明記してある一角と一辺から、tanでもう一辺を求めるぐらいと、大して勉強してなかったなめにこのような質問をするに至りました。不勉強を恥じています。
補足
回答ありがとうございます。問題の答えですが ?はそもそもtan60=tan30の3倍なので、同じ0,2 度の誤差でも底辺の長さの誤差が3倍になります。 ?高さを3,15とすると、 『60°の加工したときに0.2°の誤差がでた』時の底辺の長さの誤差が 0,0146...... 公差が±0,01とかじゃない限りokです。 『0.18°の加工したときに0.000651°の誤差がでた』時の底辺の長さの誤差は、3,613..... 一般公差すら大幅にオーバーし間違いなく不良です。 ?2,777...とミリ単位で誤差が出るので切り捨てることは出来ません。 もう一人の方からも解説を頂いてますが、高さと角度からtanで底辺を求める場合、角度が小さくなるほど誤差が大きくなる理屈が解った気がします。 答えは合ってますでしょうか?
辺長さの精度を求めるなら Θを使わないやり方 sinΘ=3.15/1000=0.00315 tanΘ=(+/-)sinΘ/sqrt(1-(sinΘ)^2)=0.0031500000035 (関数電卓の演算精度で計算できる)
詳しく考えるには参考に挙げたような誤差伝播の法則を理解していただく必要が有ります。 その上で大筋だけ言うと計算に必要な相対誤差(精度)≒求めたい値の相対誤差といえます。 なので約1000mmに対し100分台の精度(約5桁)を出したいなら最低5桁、余裕を見るなら7桁の精度の角度を使う必要が有ります。
>角度は小数点以下3桁まででいいや、と勝手に決めて計算したらダメですか? だめです。 小数点以下何桁ではなく有効桁数が問題。 この場合「0.」は位取りであって有効桁数は「18」の僅か2桁。 1800、18、0.0018、0.000000018 も同じく2桁。但し1800については4桁または3桁かもしれない。 有効桁数2桁で × ÷ 三角関数 など計算すると結果も同じ程度の精度しか期待できないはずが 1002,672843 と3桁以上の精度になったのは偶然です。 NC、コンピュータなどの数を扱うには「数値計算の常識」という難しい問題がありますが、本件は有効桁数の話だけで判ると思います。
実はよくは分からないのだが・・・ Excelでの三角関数では単位がラジアンと成っているのは御存知だと思う 関数電卓も恐らく同じようなシステムというか計算方法になっている気がする つまり、”tanθ”を考えた場合にθが deg ならθ→ 0 なら tanθ→ 0 だが もしもラジアンであれば θ→ 0 なら tanθ→ θ に帰結するということが 関係しているというか誤差が必然的に生じ易い真理が隠されていると思われる だからθが十分小さい場合はこのような性質を十分に理解して電卓を使う事だ 1°=PI/180=0.0174532925199433 (rad)(※測定値とそうでない値を区別する) 電卓やPCは先のπ/180を内部で計算している訳ですが計算結果の角度有効数字 を貴殿が勝手に 0.18°と有効数字2桁にまで下げてしまったことが問題でした つまり、radで考えるなら、10%も誤差を増やしてしまったことになるのですよ ↓ の有効数字同士の掛け算の部分はとても分かり易いと思うので、 今後の数値計算は、この有効数字を常に意識して計算すれば一味違うね http://www.mmlab.mech.tuat.ac.jp/mmlab/lect_murata/significant_figure.shtml 未だ迷っているのも仕方がない。皆さん言っていることは各々正しいと思う。 ozuさんの仰っていることも同じことである・・・ 「”tanθ”を考えた場合にθが deg ならθ→ 0 なら tanθ→ 0 ・・・ラジアンであれば θ→ 0 なら tanθ→ θ に帰結」 つまり、θが小さくなれば成る程、誤差比は"θ/0"で∞になるという理屈です 従って有効数字というのも大事なのだが、数学的な基本を踏まえておかないと 物事の本質を見失うことになるのです。物理でも何でもそうだと思いますけど 今になって私も数学は得意だったが、もっと勉強しておけばと後悔しています 我社もそうなのですが、司令塔となる人が何人もいるようだと組織は混乱する そう言う意味で未熟な組織だと思っていますし現に失敗も多く恥しい限りです 設計はモノ作りの旗振り役でなければならないっという信念を持っております 話は逸れましたが設計も同じで本当の数式の意味とか何故そのようにするのか という所を端折ると、その度に同じような間違いの危険は無くなりませんが、 一時は遅かろうと理屈を理解すれば忘れないし、二度と間違いも繰り返さない 例えば円周率πをゆとり教育として小学校では、3.14 にしてしまったようだが 私は少し驚きましたし、重力加速度を 9.81 に丸めて計算するのと変わらない >※測定値とそうでない値を区別する。っと有効数字を理解するのが重要です
お礼
ありがとうございます。正直、回答を沢山頂きながら、回答を理解出来る知識がなかったため、理解できませんでした。 今あちこちで資料を集めて勉強してますが、徐々にですが解ってきました。 理屈を理解した上で何でもやらないとダメ、今回の教訓です。
演算精度の問題ですね。 まず電卓では通常分数を扱えませんから近似小数で数値を入力することになります。 もうひとつは、tanθ関数の特性ですね 0度付近では傾きは1よりもかなり小さく、90度付近では非常に大きくなります。 今回は除算の除数に0度付近のtanを使っているので精度が悪く見えます。 もし精度を気にしたくなかったら、 電卓ではなく、 PCでMathematicaなどの数値演算ソフトで 任意精度数値計算ライブラリを使って計算すればいいです。 >0度付近では傾きは1よりもかなり小さく をっと、0度付近では1にちかいので有効桁数を3桁取りたければ 角度も3桁以上の精度で指定すればよいですね。 質問からすると、5桁程度に有効桁数を必要としているように見えますので 角度側にも5~6桁程度の精度の数字を入れないとダメです。
よく理解してないが 1=0.99999の循環小数 http://ja.wikipedia.org/wiki/0.999... と 桁落ち http://technologicaladvance.blog.fc2.com/blog-entry-45.html とか理解してれば こまけーことなんかいいんだよ と思うようになれるよ
お礼
丁寧な解説ありがとうございました。 今回の件で三角形の性質等、基本から勉強し直してますが少しずつ理屈が解ってきました。 中途半端な知識ほど怖いものはない、というのが今回の教訓です。解らないこと、疑問に思うことはとことん突き詰めて研究を重ねていきたいと思います。