2

私は現在、三角法を含む何かを実行しようとしていますが、math.asin 関数を含むヒッチに出くわしました (acos と atan にも適用されますが、これらの場合、私がやろうとしていることへの影響は少なくなります)。この問題は、別の場所で見つけたヘルプ スレッドからの 2 つの投稿によって最もよく要約されています。

申し訳ありませんが、もう一度試してみたところ、

a = sin(2)
b = asin(a)
b dont = 2

しかし

a = cos(2)
b = acos(a)
b DOES= 2

y = sin(x) は反復関数であるため、y の値ごとに複数の x の値が存在します。つまり、sin(2) = sin(1.14) = 0.909

したがって、x = asin(y) を実行すると、-PI/2 <= x <= PI/2 の間の値しか得られません。

これがなぜなのか数学的に理解していますが、自動的に与えられるものだけでなく、範囲内のすべての解を見つけるのに誰かが手を差し伸べてくれるのではないかと思っていました. ありがとう=]

4

3 に答える 3

5

[0, 2π) の範囲を考えてみましょう。

の場合acos、各値 x には 2π - x で別の可能な値もあります。(余弦グラフを想像してみてください。)

の場合asin、各正の値 x は π - x で別の可能な値を持ちます。各負の値は、3π - x で可能な値を持ちます。

より広い範囲に一般化するために、自由にさらにグラフを描いてください。:-)

于 2009-04-23T16:15:26.700 に答える
2

acrsin(a) のすべての解は次のようになります。

b、pi - b、2pi + b、2pi + (pi - b) など。

于 2009-04-23T16:15:42.393 に答える
1

他の人がすでに詳細に説明しているように、三角関数の (反復的な) 性質のために asin() の結果が不定になる aの値を選択しました。

それにもかかわらず、浮動小数点を使用した逆演算でまったく同じ結果が得られると期待することは、より一般的な浮動小数点の精度の問題によりおそらく失敗することを指摘したかっただけです。

浮動小数点では、それを保証することはできません

a == asin(sin(a))

また

a == (a / b) * b

そのことについては。ただ気をつけてください。

于 2009-04-23T16:18:20.577 に答える