十進ベーシックの組み込み関数の式の計算方法を知りたいです。
よろしくお願いします。
十進ベーシックを使用しています。
まだ初心者です。
その中にcosとか、sinとかsqrなどの組み込み関数がありますが、
ベーシックの裏で、cosは足し算、引き算、掛け算、割り算のみをもちいて、
どのようにcosの計算をしているのか知りたいと思います。
他の関数を自分でつくるときの参考にしたいと考えています。
どなたか、組み込み関数は実際にどのように計算されているのかご存知であれば、教えてください。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
ここではマクローリン展開による計算方法が詳しく解説されています。
http://assam.cims.hokudai.ac.jp/~josch/workshop/ …
書籍の「C言語による最新アルゴリズム事典」では
連分数展開を使った三角関数のソースリストが紹介されています。
http://chaste.web.fc2.com/Reference.files/Algo.h …
http://oku.edu.mie-u.ac.jp/~okumura/algo/
掲載されているソースリストはここからダウンロードできます、この中の"trig.c"が三角関数のソースです。
実際の所は真面目に計算すると遅いので、内部的には1度とかもっと細かい角度で計算済の値をテーブル参照して高速化している場合が多いです。
(数値演算プロセッサやGPUでもテーブル参照はよく使われています)
お世話になります。
ダウンロードして、見せて頂きました。
私は十進ベーシックを初めてまだ一月くらいなのです。
cosの関数はおそらく、下記の抜粋した部分だと思うのですが、
正直、関数が全くわかりません。
私がしっているのは、let, for, input, print, if, then, next
くらいです。そこで、下記のプログラムが読めるように、勉強したいのですが、
関数の辞書?みたいなのはありますでしょうか?
おそらく/*というのは、メモのことですよね?
ちなみにこのプログラムの言語は、十進ベーシックでも動くのでしょうか?
それとも、C言語?なんでしょうか?その場合は、十進ベーシックのソフトでは動かないのでしょうか。
初心者でわからないことだらけですみませんが、cosがどのように計算されているのかを知りたいので、
下記のプログラムを読み解きたいと考えていますので、どうぞよろしくお願い致します。
long double lcos(long double x) /* cos(x) */
{
return lsin(PI / 2 - lfabs(x));
}
long double lcos1(long double x) /* 1 - cos(x) */
{
int k;
long double t;
t = ur_tan(lfabs(x / 2), &k); t *= t;
if (k % 2 == 0) return 2 * t / (1 + t);
/* else */ return 2 / (1 + t);
}
No.3
- 回答日時:
前の回答がちょっと投げやりだったので、もう少し調べてみました。
C言語でテーラー展開でcosを計算する関数です
double COS(double x){
double t;
double y;
int n;
y = 1.0;
t = 1.0;
n = 1;
while( 1 ){
t = - t*x*x/((2*n)*(2*n-1));
if (fabs(t) <= 0.000000001) break;
y = y + t;
n++;
}
return y;
}
これが十進ベーシックに変換した物です。
100 INPUT x
110 LET y=1.0
120 LET t=1.0
130 LET n=1
140 DO
150 LET t=-t*x*x/((2*n)*(2*n-1))
160 IF ABS(t) <= 0.000000001 THEN EXIT DO
170 LET y=y+t
180 LET n=n+1
190 LOOP
200 PRINT y
210 END
これでどうでしょうか。
No.2
- 回答日時:
どうも質問者様の聞きたい事と相違があるみたいで
「十進ベーシックで内部関数と同じ計算をしてみたい」と言う質問だったのですか?
>十進ベーシックの組み込み関数の式の計算方法を知りたい
さすがに十進ベーシックの数学関数の中身までBASICでプログラムされていないと思います。
元はMS-DOS版からあるみたいですので十進ベーシックはC言語でプログラムされていると思います。
C言語なら数学関数は用意されているので、その中身の話をしたつもりです。
紹介したソースはC言語です、ポインタなどを多用しているので、あれをBASICに変換するのは面倒ですね。
元になるのは正接(tan)の計算関数"ur_tan"です。
正接(tan)が計算できれば正弦(sin)と余弦(cos)も計算できますね。
検索していたらBASICで逆三角関数を計算しているものを見つけたので、
こちらの方が参考になるでしょう。
http://hp.vector.co.jp/authors/VA005145/944basic …
こちらも十進ベーシックではないので書き換えが必要ですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで関数の数式を入力できません。 3 2022/08/25 17:49
- その他(お金・保険・資産運用) 至急!【Wolt】各メニューの価格設定の簡単な計算方法 3 2023/03/05 11:58
- Excel(エクセル) エクセルの関数に関しての質問です。 5 2022/10/07 11:17
- Excel(エクセル) エクセルで値ではなく関数を参照する方法 6 2023/03/19 00:50
- Excel(エクセル) エクセルでSUMIFS関数で条件範囲の部分が#valueになる。 4 2023/04/28 12:42
- Excel(エクセル) エクセルでIF関数中にIFERROR関数を使いたいのですが???? 5 2022/04/08 13:24
- 投資・株式の税金 一般口座で同一銘柄の総平均法のことで 1 2023/02/27 22:08
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- Excel(エクセル) エクセルで所得税計算をする際に関数を利用したいと思っています。 3 2022/11/18 01:23
- その他(Microsoft Office) Excelで時間計算(負) 8 2023/02/26 05:47
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ANSYS (アンシス)で困ってい...
-
エクセルで計算結果より小さい...
-
エクセルの対象セルの1つしか...
-
Excelでファイル全体が読み込め...
-
EXCEL ページを指定してPDF出力...
-
R1C1参照形式変更後「名前の重...
-
Excel 「入力規則」が消えて困...
-
Excelセル番地の表示の変更の仕...
-
エクセルの列の表示が文字でな...
-
パワーポイント2007でサウンド...
-
イラストレーターの破線がエク...
-
Word 2003でラベル差込印刷の際...
-
Excel印刷プレビューが遅い件
-
エクセルにハイパーリンクで貼...
-
Accessからエクセルにエ...
-
入力規制でエラーメッセージが...
-
エクセル 銀行休業日は日付を...
-
三菱GOT画面設計ソフト GT desi...
-
エクセルにPDFファイルをリンク...
-
掛け率計算系のソフト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ANSYS (アンシス)で困ってい...
-
カッコの2番で計算をした結果74...
-
面積を計算するソフト
-
Calcの読み方
-
無限級数
-
ローン計算が合わないのですが...
-
EXCELで括約できますか?
-
294÷6.02×10の23乗の答えを教え...
-
F-BASICで計算中の実行が中途で...
-
レイトレーシングとラジオシテ...
-
3D_CADのサーフェスモデルとソ...
-
すいません、delphi初心者です。
-
エクセルで計算結果より小さい...
-
3DCG作成ソフトとGPUの関係
-
4G以上のデータをDVDに書き...
-
RGBの色を混ぜるとは計算上どう...
-
複数台のMTBFについて
-
説明がわかりずらくてすみませ...
-
映画の製作費(予算表)のテン...
-
耐震
おすすめ情報