реклама на сайте
подробности

 
 
> Интеграл, непонятен один момент
Zelepuk
сообщение Dec 14 2012, 08:53
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Хочу найти функцию вычисления определённого интеграла для произвольного массива чисел.
В сети полно примеров взятия интеграла, например:

CODE
double integral(a, b, f, eps)
double a, b; /* концы отрезка */
double eps; /* требуемая точность */
double (*f)(); /* подынтегральная функция */
{
register long i;
double fab = (*f)(a) + (*f)(cool.gif; /* сумма на краях */
double h, h2; /* шаг и удвоенный шаг */
long n, n2; /* число точек разбиения и оно же удвоенное */
double Sodd, Seven; /* сумма значений f в нечетных и в
четных точках */
double S, Sprev;/* значение интеграла на данной
и на предыдущей итерациях */
double x; /* текущая абсцисса */

niter = 0;
n = 10L; /* четное число */
n2 = n * 2;

h = fabs(b - a) / n2; h2 = h * 2.0;

/* Вычисляем первое приближение */
/* Сумма по нечетным точкам: */
for( Sodd = 0.0, x = a+h, i = 0;
i < n;
i++, x += h2 )
Sodd += (*f)(x);

/* Сумма по четным точкам: */
for( Seven = 0.0, x = a+h2, i = 0;
i < n-1;
i++, x += h2 )
Seven += f(x);

/* Предварительное значение интеграла: */
S = h / 3.0 * (fab + 4.0 * Sodd + 2.0 * Seven );
do{
niter++;
Sprev = S;

/* Вычисляем интеграл с половинным шагом */
h2 = h; h /= 2.0;
if( h == 0.0 ) break; /* потеря значимости */
n = n2; n2 *= 2;

Seven = Seven + Sodd;
/* Вычисляем сумму по новым точкам: */
for( Sodd = 0.0, x = a+h, i = 0;
i < n;
i++, x += h2 )
Sodd += (*f)(x);

/* Значение интеграла */
S = h / 3.0 * (fab + 4.0 * Sodd + 2.0 * Seven );

} while( niter < 31 && fabs(S - Sprev) / 15.0 >= eps );
/* Используем условие Рунге для окончания итераций */

return ( 16.0 * S - Sprev ) / 15.0 ;
/* Возвращаем уточненное по Ричардсону значение */
}


Непонятно следущее: f - указывает на подынтегральную функцию. Математически это понятно. Но в Си же это подпрограмма! Я наверное принципиально ен понимаю чего-то но как можно интеграл от подпрограммы взять? или программа должна возвращать указатель на массив?
я же надеялся найти реализацию где в качестве указателя будет указатель на массив, поскольку функция представлена в виде набора отсчётов (массива) от a до b.

Заранее спасибо за разъяснения.

Сообщение отредактировал Zelepuk - Dec 14 2012, 09:38
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Zelepuk   Интеграл   Dec 14 2012, 08:53
- - MrYuran   double f() - это функция, возвращающая значение в ...   Dec 14 2012, 09:44
|- - Zelepuk   Цитата(MrYuran @ Dec 14 2012, 13:44) doub...   Dec 14 2012, 09:52
|- - xemul   Цитата(Zelepuk @ Dec 14 2012, 13:52) непо...   Dec 14 2012, 10:20
|- - DRUID3   Цитата(Zelepuk @ Dec 14 2012, 11:52) Я по...   Dec 14 2012, 10:21
|- - Палыч   Цитата(Zelepuk @ Dec 14 2012, 13:52) непо...   Dec 14 2012, 10:22
- - demiurg_spb   Цитата(Zelepuk @ Dec 14 2012, 12:53) Хочу...   Dec 14 2012, 11:24
|- - DRUID3   Цитата(demiurg_spb @ Dec 14 2012, 13:24) ...   Dec 14 2012, 11:35
||- - demiurg_spb   Цитата(DRUID3 @ Dec 14 2012, 15:35) Точно...   Dec 14 2012, 11:42
|- - Xenia   Цитата(demiurg_spb @ Dec 14 2012, 15:24) ...   Dec 14 2012, 11:51
|- - demiurg_spb   Цитата(Xenia @ Dec 14 2012, 15:51) Так я ...   Dec 14 2012, 11:58
- - _Ivana   Не, ну можно поискать приключений, вылить воду и с...   Dec 14 2012, 12:10
|- - Xenia   Цитата(_Ivana @ Dec 14 2012, 16:10) Не, н...   Dec 14 2012, 12:38
- - _Ivana   А кто его знает, с какой частотой у автора идут от...   Dec 14 2012, 12:56
- - Xenia   А кстати, а чего это народ функцию от указателя та...   Dec 14 2012, 13:13
- - demiurg_spb   Цитата(Xenia @ Dec 14 2012, 17:13) Или я ...   Dec 14 2012, 13:39
- - Xenia   Цитата(demiurg_spb @ Dec 14 2012, 17:39) ...   Dec 14 2012, 13:45
- - ReAl   Цитата(Xenia @ Dec 14 2012, 15:45) А имен...   Dec 14 2012, 17:09


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 03:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.0152 секунд с 7
ELECTRONIX ©2004-2016