Keyword: チェビシェフ級数, 2変数多項式
概要
本サンプルはチェビシェフ級数形式の2変数多項式を求めるC言語によるサンプルプログラムです。 本サンプルは以下に示されるデータを含む引数を読み込み、チェビシェフ級数形式の2変数多項式を計算し出力します。
※本サンプルはnAG Cライブラリに含まれる関数 nag_2d_cheb_eval() のExampleコードです。本サンプル及び関数の詳細情報は nag_2d_cheb_eval のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで
入力データ
(本関数の詳細はnag_2d_cheb_eval のマニュアルページを参照)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
このデータをダウンロード |
nag_2d_cheb_eval (e02cbc) Example Program Data 3 3 2 15.34820 5.15073 0.10140 1.14719 0.14419 -0.10464 0.04901 -0.00314 -0.00699 0.00153 -0.00033 -0.00022 0.0 4.0 1.0 9 0.1 4.5 0.5 4.5 1.5 8 0.225 4.25 0.5 4.0 2.0 8 0.4 4.0 0.5 4.0
- 1行目はタイトル行で読み飛ばされます。
- 2行目に多項式の計算回数(n)、変数xの次元(k)、変数yの次元(l)を指定しています。
- 3~14行目に多項式のチェビシェフ係数(a)を指定しています。
- 15行目に変数yの下限(ymin)と上限'ymax)を指定しています。
- 16~18行目にy座標、等間隔点の数(m)、変数xの下限(xmin)、上限(xmax)、多項式を計算する区間の下限(x1)、上限(xm)を指定しています。
出力結果
(本関数の詳細はnag_2d_cheb_eval のマニュアルページを参照)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
この出力例をダウンロード |
nag_2d_cheb_eval (e02cbc) Example Program Results y = 1.0000e+00 i x(i) Poly(x(i),y) 0 5.0000e-01 2.0812e+00 1 1.0000e+00 2.1888e+00 2 1.5000e+00 2.3018e+00 3 2.0000e+00 2.4204e+00 4 2.5000e+00 2.5450e+00 5 3.0000e+00 2.6758e+00 6 3.5000e+00 2.8131e+00 7 4.0000e+00 2.9572e+00 8 4.5000e+00 3.1084e+00 y = 1.5000e+00 i x(i) Poly(x(i),y) 0 5.0000e-01 2.6211e+00 1 1.0000e+00 2.7553e+00 2 1.5000e+00 2.8963e+00 3 2.0000e+00 3.0444e+00 4 2.5000e+00 3.2002e+00 5 3.0000e+00 3.3639e+00 6 3.5000e+00 3.5359e+00 7 4.0000e+00 3.7166e+00 y = 2.0000e+00 i x(i) Poly(x(i),y) 0 5.0000e-01 3.1700e+00 1 1.0000e+00 3.3315e+00 2 1.5000e+00 3.5015e+00 3 2.0000e+00 3.6806e+00 4 2.5000e+00 3.8692e+00 5 3.0000e+00 4.0678e+00 6 3.5000e+00 4.2769e+00 7 4.0000e+00 4.4971e+00
- 3行目にy座標の値が出力されています。
- 5~14行目にインデックス、xの値、多項式の値が出力されています。
- 16行目にy座標の値が出力されています。
- 18~26行目にインデックス、xの値、多項式の値が出力されています。
- 28行目にy座標の値が出力されています。
- 30~38行目にインデックス、xの値、多項式の値が出力されています。
ソースコード
(本関数の詳細はnag_2d_cheb_eval のマニュアルページを参照)
※本サンプルソースコードはnAG数値計算ライブラリ(Windows, Linux, MAC等に対応)の関数を呼び出します。
サンプルのコンパイル及び実行方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
このソースコードをダウンロード |
/* nag_2d_cheb_eval (e02cbc) Example Program. * * CLL6I261D/CLL6I261DL Version. * * Copyright 2017 Numerical Algorithms Group. * * Mark 26.1, 2017. */ #include <stdio.h> #include <nag.h> #include <nag_stdlib.h> #include <nage02.h> int main(void) { /* Scalars */ double x1, xm, xmax, xmin, y, ymax, ymin; Integer exit_status, i, j, k, l, m, n, ncoef, one; NagError fail; /* Arrays */ double *a = 0, *ff = 0, *x = 0; INIT_FAIL(fail); exit_status = 0; printf("nag_2d_cheb_eval (e02cbc) Example Program Results\n"); /* Skip heading in data file */ scanf("%*[^\n] "); while (scanf("%ld%ld%ld%*[^\n] ", &n, &k, &l) != EOF) { /* Allocate array a */ ncoef = (k + 1) * (l + 1); if (!(a = nAG_ALLOC(ncoef, double))) { printf("Allocation failure\n"); exit_status = -1; goto END; } for (i = 0; i < ncoef; ++i) scanf("%lf", &a[i]); scanf("%*[^\n] "); scanf("%lf%lf%*[^\n] ", &ymin, &ymax); for (i = 0; i < n; ++i) { scanf("%lf%ld%lf%lf%lf%lf%*[^\n] ", &y, &m, &xmin, &xmax, &x1, &xm); /* Allocate arrays x and ff */ if (!(x = nAG_ALLOC(m, double)) || !(ff = nAG_ALLOC(m, double))) { printf("Allocation failure\n"); exit_status = -1; goto END; } for (j = 0; j < m; ++j) x[j] = x1 + (xm - x1) * (double) j / (double) (m - 1); one = 1; /* nag_2d_cheb_eval (e02cbc). * Evaluation of fitted polynomial in two variables */ nag_2d_cheb_eval(one, m, k, l, x, xmin, xmax, y, ymin, ymax, ff, a, &fail); if (fail.code != NE_NOERROR) { printf("Error from nag_2d_cheb_eval (e02cbc).\n%s\n", fail.message); exit_status = 1; goto END; } printf("\n"); printf("y = %13.4e\n", y); printf("\n"); printf(" i x(i) Poly(x(i),y)\n"); for (j = 0; j < m; ++j) printf("%3ld%13.4e%13.4e\n", j, x[j], ff[j]); nAG_FREE(ff); nAG_FREE(x); } nAG_FREE(a); } END: nAG_FREE(a); nAG_FREE(ff); nAG_FREE(x); return exit_status; }