Keyword: エアリー関数, 導関数, 複素数
概要
本サンプルはエアリー関数 Ai(z)あるいはその導関数 Ai'(z)を求めるC言語によるサンプルプログラムです。 本サンプルは複素数の引数zを読み込み、zの各値についてエアリー関数 Ai(z)あるいはその導関数 Ai'(z)を求めて出力します。
※本サンプルはnAG Cライブラリに含まれる関数 nag_complex_airy_ai() のExampleコードです。本サンプル及び関数の詳細情報は nag_complex_airy_ai のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで
入力データ
(本関数の詳細はnag_complex_airy_ai のマニュアルページを参照)| このデータをダウンロード |
nag_complex_airy_ai (s17dgc) Example Program Data Nag_Function ( 0.3, 0.4) Nag_UnscaleRes Nag_Function ( 0.2, 0.0) Nag_UnscaleRes Nag_Function ( 1.1, -6.6) Nag_UnscaleRes Nag_Function ( 1.1, -6.6) Nag_ScaleRes Nag_Deriv (-1.0, 0.0) Nag_UnscaleRes - Values of deriv, z and scal
- 1行目はタイトル行で読み飛ばされます。
- 2〜6行目に求めるのは関数か導関数かを示すフラグ(deriv)、複素数の引数zの値(z.re,z.im)、スケーリングオプション(scal)を指定しています。"Nag_Function"はエアリー関数Ai(z)、"Nag_Deriv"はエアリー関数の導関数Ai'(z)を意味します。また、 "Nag_UnscaleRes"はスケーリングをしないことを意味し、 "Nag_ScaleRes"はスケーリングすることを意味します。
出力結果
(本関数の詳細はnag_complex_airy_ai のマニュアルページを参照)| この出力例をダウンロード |
nag_complex_airy_ai (s17dgc) Example Program Results
deriv z scal ai nz
Nag_Function ( 0.300, 0.400) Nag_UnscaleRes ( 0.272, -0.100) 0
Nag_Function ( 0.200, 0.000) Nag_UnscaleRes ( 0.304, 0.000) 0
Nag_Function ( 1.100, -6.600) Nag_UnscaleRes (-43.663,-47.903) 0
Nag_Function ( 1.100, -6.600) Nag_ScaleRes ( 0.165, 0.060) 0
Nag_Deriv ( -1.000, 0.000) Nag_UnscaleRes ( -0.010, 0.000) 0
- 3〜7行目には求めるのは関数か導関数かを示すフラグ、引数zの値、スケーリングオプション、エアリー関数または導関数の値、エアリー関数または導関数の値がアンダーフローによりゼロにセットされたかどうかを示すフラグが出力されています。"0"はゼロにセットされていないことを意味します。
ソースコード
(本関数の詳細はnag_complex_airy_ai のマニュアルページを参照)
※本サンプルソースコードはnAG数値計算ライブラリ(Windows, Linux, MAC等に対応)の関数を呼び出します。
サンプルのコンパイル及び実行方法
| このソースコードをダウンロード |
/* nag_complex_airy_ai (s17dgc) Example Program.
*
* CLL6I261D/CLL6I261DL Version.
*
* Copyright 2017 Numerical Algorithms Group.
*
* Mark 26.1, 2017.
*/
#include <nag.h>
#include <stdio.h>
#include <nag_stdlib.h>
#include <nags.h>
int main(void)
{
Integer exit_status = 0;
Complex z, ai;
Integer nz;
char nag_enum_deriv[40], nag_enum_scal[40];
Nag_ScaleResType scal;
Nag_FunType deriv;
NagError fail;
INIT_FAIL(fail);
/* Skip heading in data file */
scanf("%*[^\n]");
printf("nag_complex_airy_ai (s17dgc) Example Program Results\n");
printf(" deriv z scal "
"ai nz\n");
while (scanf(" %39s (%lf,%lf) %39s%*[^\n] ",
nag_enum_deriv, &z.re, &z.im, nag_enum_scal) != EOF) {
/* nag_enum_name_to_value (x04nac).
* Converts nAG enum member name to value
*/
deriv = (Nag_FunType) nag_enum_name_to_value(nag_enum_deriv);
scal = (Nag_ScaleResType) nag_enum_name_to_value(nag_enum_scal);
/* nag_complex_airy_ai (s17dgc).
* Airy functions Ai(z), complex z
*/
nag_complex_airy_ai(deriv, z, scal, &ai, &nz, &fail);
if (fail.code != NE_NOERROR) {
printf("Error from nag_complex_airy_ai (s17dgc).\n%s\n", fail.message);
exit_status = 1;
goto END;
}
printf(" %-12s (%7.3f,%7.3f) %-14s (%7.3f,%7.3f) %ld\n",
nag_enum_deriv, z.re, z.im, nag_enum_scal, ai.re, ai.im, nz);
}
END:
return exit_status;
}
