人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

sinθの数値とcosθの数値が分かっているが、数値誤差のためsin2θ+cos2θ≠1である。
このときなるべく誤差が少なくなるようにθを求めたい。

θの求め方を教えてください。


●質問者: gontaro-kamura
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:cos sin
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● たかたか
●0ポイント

>sinθの数値とcosθの数値が分かっているが

いくつなんですか?w

http://q.hatena.ne.jp/answer

◎質問者からの返答

毎回異なります。


2 ● ita
●100ポイント ベストアンサー

数値をそれぞれsとcとおきます。

結論から言うとθ=atan2(s,c)という式を使って計算します。

atan2はC言語でもEXELでも入っている基本的な関数です。

誤差がなければ点(C,S)は半径1の円周上にありますが、誤差で外側or内側、

また回転する方向へも動きます。回転する方向への誤差はどうしようも

ありません。しかし外や内へ動く場合はCとSの比は変わりません。

atan2はこの比だけを使って計算するのでそういう外や内へ動く誤差には

影響されません。

http://maglog.jp/excel/Article265803.html

C言語ではatan2(S,C)

EXCELではATAN2(C,S)

と順番が逆になります

◎質問者からの返答

なるほど、sinとcosの値の比で割り出せばよかったんですね。ありがとうございます。


3 ● oich
●30ポイント

0≦真のθ≦π/2 と想定して答えます。

sin,cosの逆関数としてarcsin,arccos(アークサイン、アークコサインと読みます)という関数があります。エクセルでの関数名はasin(x),acos(x)となります。


誤差を最小に、といったときの誤差を何を定義するかにもよりますが、まずは

(arcsin(サインの数値)+arccos(コサインの数値))/2

で求める値が得られることと思います。


http://www.google.co.jp/search?q=arcsin

◎質問者からの返答

ありがとうございます。

arcsinとarccosを使用する方法は最初に試して見ました。

その方法だと、0、π/2の近くで誤差が大きくなるようです。

itaさんの方法を試してみます。


4 ● rsc
●30ポイント

Cならば、sinθ=s, cosθ=c とすれば、

#define SGN2(x) ((x)<0 ? (-1) : (1)) /* x≧0のとき、+1、x<0のとき、-1 */

と定義して、

θ=SGN2(s)*acos(c)

http://q.hatena.ne.jp/ (ダミー)

◎質問者からの返答

同方法ではSの数値は反映されないため、誤差が大きくなります。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ