三角関数(sin,cos,tan)を計算するには? – プログラミング – Home

三角関数(sin,cos,tan)を計...
 
通知
すべてクリア

[解決済] 三角関数(sin,cos,tan)を計算するには?

固定ページ 1 / 2

アキタ
 アキタ
(@アキタ)
ゲスト
結合: 23年前
投稿: 2
Topic starter  

すごい初心者なんですが、誰か教えてください。
最近VC++をやり始めて、本とかをいろいろ見ています。
三角関数(sin,cos,tanなど)を計算したいんですが、どうしても
わかりません。誰か教えてください。


引用未解決
トピックタグ
はまち
 はまち
(@はまち)
ゲスト
結合: 23年前
投稿: 146
 

ANSI C ライブラリ関数にあるようです。

すべて関数を使う前に

#include <math.h>

でインクルードした後、

sinは
double sin(double x);
cosは
double cos(double x);
tanは
double tan(double x);

他にも絶対値を求めたり、平方根・累乗を求めたりもできます。


返信引用
はまち
 はまち
(@はまち)
ゲスト
結合: 23年前
投稿: 146
 

使い方は、たとえば、

double a;

a = sin( 3.14 );

のようにです。


返信引用
merlo
 merlo
(@merlo)
ゲスト
結合: 23年前
投稿: 85
 

#include <math.h>を使わなくても利用する方法があります

整級数展開してください.
例)
 Sin x = Σ


返信引用
merlo
 merlo
(@merlo)
ゲスト
結合: 23年前
投稿: 85
 

#include <math.h>を使わなくても利用する方法があります

整級数展開してください.
例)
 Sin x = Σ


返信引用
merlo
 merlo
(@merlo)
ゲスト
結合: 23年前
投稿: 85
 

#include <math.h>を使わなくても利用する方法があります

整級数展開してください.

例) ∞ (-1)^n 2n+1
 Sin x = Σ ------------ x
n=0 (2n+1)!

同様に cos , ex,Sin-1,Tan-1等も求められます.
必要な精度が得られるまで繰返してください.

すみません,バグって途中送信を二回もしてしまいました・・・すみません


返信引用
merlo
 merlo
(@merlo)
ゲスト
結合: 23年前
投稿: 85
 

ゴミでした.


返信引用
はまち
 はまち
(@はまち)
ゲスト
結合: 23年前
投稿: 146
 

こんばんは、melroさん。はじめまして。
melroさんの書込みをみて、ひょっとしてmelroさんは数学が好きなんじゃないかと思いましが
どうでしょうか。実は、僕も数学が好きで、melroさんの書込みを見てうれしくなってしまいま
した。どっかでみた数式だな~って思って、かなり久しぶりに微分積分の本を調べてみたら、
melroさんの公式が書いてありました。整級数展開は別名、マクローリン級数ともいうみたい
ですね。ちなみに、cosxは

cosx = 1 - (x^2)/(2!) + (x^4)/(4!) ------ + ( (-1)^n * x^(2n) )/ ( (2n)! )

みたいですね。なぜこうなるかはナゾですが・・・。後ろの方に行けば行くほど、小さい数
で微調整してるのかな。


返信引用
くたくた
 くたくた
(@くたくた)
ゲスト
結合: 23年前
投稿: 119
 

現時点のPCでは、ライブラリの関数を使うのがベストだと思います。
自前でやる方法は短所の方が多いからです。
(遅くなりやすい、つまらないバグの為に時間を失いやすい等 )

古典的なテーブル参照の方法も、キャッシュのストールの為、
私の環境(Win2K+SP2,VC++6.0+SP5,Athron)では遅かったです。
工夫すれば速くなるかもしれませんが、努力の価値を見出せません。

展開系の勉強をしたい、収束速度を自分で調節したい等の理由が無いのなら
「ある物を使う」のが最良だと思います。


返信引用
merlo
 merlo
(@merlo)
ゲスト
結合: 23年前
投稿: 85
 

そうとうな変人でもない限り
普通#include <math.h>を使うと思います(爆


返信引用
アキタ
 アキタ
(@アキタ)
ゲスト
結合: 23年前
投稿: 2
Topic starter  

みなさん、たくさんの方法を短時間でありがとうございます。
学校でfortoranを使っていたんですが、来年から、カリキュラムが
かわり使わなくなるので、三角関数ができるものを探していました。
大きな書店で多くの参考本を見ても、書いてないので困っていたところです。
本当にありがとうございました。


返信引用
merlo
 merlo
(@merlo)
ゲスト
結合: 23年前
投稿: 85
 

ひょっとしてですが,ほんと,ひょっとしてですが,
どうせmath.hも,級数展開とかしてるんだから
不要な精度を省略するという面から考慮すれば,
前述の方法を採用することは非常に意義のあるものかも
知れません(笑


返信引用
sara
 sara
(@sara)
ゲスト
結合: 23年前
投稿: 99
 

既に解決済みですが、ちょっと気になったので。

> どうせmath.hも,級数展開とかしてるんだから
級数展開を基本にはしているでしょうが、高速化や最適化を考慮に入れたものになっているは
ずなので、公式をそのまま使っているということはないと思います。精度を厳密に考慮する必要
がないなら、mathライブラリの方があらゆる意味で効率が良いはずです。

> なぜこうなるかはナゾですが・・・。後ろの方に行けば行くほど、小さい数
> で微調整してるのかな。
元はTayler展開定理です。大学の数学科1年で必須の内容(もちろん証明込み)です。でも、
計算とかシミュレーションとか精度が問題になるプログラムを組む人にはきちんと勉強して欲し
い事柄ですね。


返信引用
merlo
 merlo
(@merlo)
ゲスト
結合: 23年前
投稿: 85
 

僕は,数学苦手です,テヘッ


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 24年前
投稿: 252
 

>級数展開を基本にはしているでしょうが、高速化や最適化を考慮に入れたものになって
いるは
>ずなので、公式をそのまま使っているということはないと思います。精度を厳密に考慮
する必要
>がないなら、mathライブラリの方があらゆる意味で効率が良いはずです。

VC++の場合,CPUのfsinなどの命令を利用しますので,
相当精度を落とさないと速度で負けます。

あと,long doubleの精度で妥協している限り,sinlと大して結果はかわらないです。
#C++だとlong double std::sin(long double);


返信引用
固定ページ 1 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました