C言語関係掲示板

過去ログ

No846 sin,cos,tanの値を求める。

[戻る] [ホームページ]
No.10830

sin,cos,tanの値を求める。
投稿者---masa(2003/11/30 12:20:30)


角度(10°、20°、30°・・・)を与えてsin、cos、tanの値を求める
プログラムはどのように作ればいいんでしょうか。
角度をラジアンに変換しないといけないというのはわかるのですが。

No.10831

Re:sin,cos,tanの値を求める。
投稿者---ともじ(2003/11/30 15:01:10)


>角度(10°、20°、30°・・・)を与えてsin、cos、tanの値を求める
>プログラムはどのように作ればいいんでしょうか。
>角度をラジアンに変換しないといけないというのはわかるのですが。

それぞれを求める標準関数が用意されています。
角度はラジアンで指定します。
http://www9.plala.or.jp/sgwr-t/c/sec07.html#s7-3
http://www9.plala.or.jp/sgwr-t/c/A/rei07-3.html




No.10832

Re:sin,cos,tanの値を求める。
投稿者---かずま(2003/11/30 15:10:48)


多項式で近似するのでしょう。

sin(x) = x - x3/3! + x5/5! - ...

ですから、
#include <stdio.h>
#include <math.h>

#define PI  3.141592653589793238

double Sin(double x)
{
    double s = x, d = x;  int i;

    for (i = 3; fabs(d) > 1e-15; i += 2)
        s += d *= - x * x / ((i-1) * i);
    return s;
}

int main(void)
{
    int d;

    for (d = 0; d <= 90; d += 5)
        printf("%2d: %.15f %.15f\n", d, sin(d*PI/180), Sin(d*PI/180));
    return 0;
}
詳しくは、「テイラー級数」を調べてみてください。
そして、cos や tan を求めるプログラムを書いてみてください。

No.10841

Re:sin,cos,tanの値を求める。
投稿者---ceybord(2003/12/01 22:04:37)


>角度(10°、20°、30°・・・)を与えてsin、cos、tanの値を求める
>プログラムはどのように作ればいいんでしょうか。
>角度をラジアンに変換しないといけないというのはわかるのですが。

°=π/180を使って、π=3.1415926535897932 (<math.h>の関数併用)を利用するか、
上のテーラー級数を使う方法が良いと思います。
実は、テーラー級数で計算するよりも効率のいいアルゴリズムがあるそうです。math.hの関数を使わないのであれば、是非研究してみてください。

No.10842

Re:sin,cos,tanの値を求める。
投稿者---masa(2003/12/01 23:37:57)


みなさんありがとうございました。
自分なりに考えてテーラー級数は用いないプログラムにしました。