5

そのため、手動でCコードに変換するいくつかのmatlabコードを使用しています。matlab コードで見ている sind および cosd 関数に相当する ac があるかどうか疑問に思っています。これは、結果をラジアンで返すc sinおよびcos関数ではなく、度で答えを返すと思います。結果に 180/pi を掛けるだけでよいと思いますが、math.h にライブラリ関数があるかどうか疑問に思っていました。または、それを行う gsl ライブラリに何かがあるとしても。

4

5 に答える 5

10

H2CO3 の解は、 の不正確さにより、大きな引数の精度が壊滅的に失われM_PIます。任意の引数の一般的で安全なバージョンは次のとおりです。

#define sind(x) (sin(fmod((x),360) * M_PI / 180))
于 2013-03-10T16:43:50.923 に答える
3

いいえ、C標準ライブラリの三角関数はすべてラジアンで機能します。ただし、マクロまたはインライン関数を使用すると簡単に回避できます。

#define sind(x) (sin((x) * M_PI / 180))

また

inline double sind(double x)
{
    return sin(x * M_PI / 180);
}

関数(いわゆる逆関数または「arcus」関数)の戻り値を変更する場合は、変換の反対が必要であることに注意してください。

inline double asind(double x)
{
    return asin(x) / M_PI * 180;
}
于 2013-03-10T16:39:11.113 に答える
1

いいえ、Cライブラリでは使用できません。Cライブラリには、ラジアン値の引数または戻り値のみがあります。

于 2013-03-10T16:39:35.967 に答える
1

また、sind や cosd などは度数で結果を返さず、引数を度数で受け取ることに注意してください。結果を度数で返すのは asin と acosd です。

于 2013-03-10T16:44:31.600 に答える
0

Cライブラリにはありません。すべての三角関数のCライブラリ関数は、次数ではなくラジアン値として引数を取ります。あなたが言ったように、あなたは自分で変換を実行するか、専用のライブラリを使用する必要があります。

于 2013-03-10T16:38:07.963 に答える