|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/i_htm_c/iah2r_c.htm
Дата изменения: Fri Dec 4 15:00:24 2015 Дата индексирования: Sun Apr 10 01:00:44 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий iah2r_c.zip , iah2d_c.zip |
Тексты тестовых примеров tiah2r_c.zip , tiah2d_c.zip |
Вычисление значения разложения функции на заданном отрезке в ряд по многочленам Чебышева в заданной точке этого отрезка.
Пусть на отрезке [A, B] задана функция f (x). Тогда подпрограмма iah2r_c вычисляет коэффициенты cj (j = 1, 2, ..., N) разложения функции f (x) на [A, B] в ряд по многочленам Чебышева и значение полученного разложения в точке x = X∈[A, B]:
N
f(x) ≈ [ ∑ cj Tj-1(y) ] - c1 / 2 ,
j=1
где y ≡ ( x - (B + A) / 2 ) / ( (B - A) / 2 ) .
Н.С.Бахвалов. Численные методы. Изд - во "Наука", 1973.
int iah2r_c (real *a, real *b, real *c, integer *n,
real *func, real *x, real *res, real *rf)
Параметры
| a, b - | нижняя и верхняя границы отрезка, на котором задана аппроксимируемая функция f (x) (тип: вещественный); |
| c - | вещественный вектор длины n, содержащий вычисляемые в подпрограмме значения коэффициентов ряда по многочленам Чебышева, аппроксимирующего функцию f (x); |
| n - | заданное количество членов ряда (тип: целый); |
| func - |
имя вещественной подпрограммы - функции, вычисляющей
значения функции f (x) в любой точке отрезка [A, B];
ее первый оператор должен иметь вид: float func(float *x), где x - значение аргумента (тип: вещественный); |
| x - | заданная точка отрезка [A, B], в которой вычисляется значение разложения функции f (x) в ряд по многочленам Чебышева; |
| res - | вещественная переменная, значение которой полагается равным вычисленному значению разложения функции f (x) в ряд по многочленам Чебышева в заданной точке x; |
| rf - | вещественный вектор длины n, используемый в подпрограмме в качестве рабочего. |
Версии
| iah2d_c - | вычисление значения разложения функции на заданном отрезке в ряд по многочленам Чебышева в заданной точке этого отрезка в режиме удвоенной точности; при этом параметры a, b, c, x и rf должны иметь тип double, а функция func должна быть описана как double. |
Вызываемые подпрограммы
|
iah1r_c - iah1d_c | вычисление коэффициентов ряда по многочленам Чебышева, аппроксимирующего заданную функцию, в режиме одинарной и удвоенной точности; используются в подпрограммах iah2r_c и iah2d_c соответственно. |
Замечания по использованию: нет
int main(void)
{
/* Local variables */
extern float func_c();
extern int iah2r_c(float *, float *, float *, int *, R_fp, float *,
float *, float *);
static float a, b, c__[10];
static int n, i;
static float x, rf[10], res;
n = 10;
a = -2.f;
b = 3.f;
x = 2.1f;
iah2r_c(&a, &b, c__, &n, (R_fp)func_c, &x, &res, rf);
for (i = 1; i <= 10; ++i) {
printf("\n %16.7e ",c__[i-1]);
}
printf("\n\n %16.7e \n",res);
return 0;
} /* main */
float func_c(float *x)
{
/* System generated locals */
float ret_val;
/* Builtin functions */
double atan(double);
ret_val = (float)atan(*x);
return ret_val;
} /* func_c */
Результаты: res=1.1253