# include <iostream>
# include <math.h>
# include <stdlib.h>
#include <iostream>
const int n = 10 ;
double x[ n + 1 ] = { 0.281 , 0.449 , 0.618 , 0.787 ,0.956 ,1.124 ,1.293 ,1.462 ,1.631 , 1.799 , 1.968 } ;
double y[ n + 1 ] = { - 0.222 ,- 0.055 ,0.013 ,0.011 , - 0.032 ,- 0.088 ,- 0.129 , - 0.125 ,- 0.047 ,0.131 ,0.443 } ;
double z[ 3 ] = { 1.2510 ,1.1700 ,1.0870 } ;
double delta( int m, int k) ;
double Stir( int d, double q) ;
using namespace std;
int fact( int i) ;
int main( )
{
setlocale( 0 ,"" ) ;
int i, j, d;
double min, b, q;
for ( i = 0 ; i< 3 ; i++ )
{
b = z[ i] ;
cout << "\n \n Программа вычисляет значение в точке x[" << i + 1 << "] = " << b << " " ;
min = 10000 ;
for ( j = 1 ; j <= n; j++ )
{
if ( fabs ( x[ j] - b) < min)
{
min = fabs ( x[ j] - b) ;
d = j;
}
}
q = fabs ( b - x[ d] ) / ( x[ 1 ] - x[ 0 ] ) ;
cout << "\n Расчет ведется методом Стирлинга " << "\n Результат: " << Stir( d, q) << endl;
}
}
double delta( int m, int k)
{
double d;
if ( m == 1 ) { d = y[ k + 1 ] - y[ k] ; }
else { d = delta( m - 1 , k + 1 ) - delta( m - 1 , k) ; }
return d;
}
double Stir( int d, double q)
{
int t;
double sum, a;
sum = y[ d] ;
a = 1 ;
if ( d> ( n - d) )
{
t = n - d;
}
else
{
t = d;
}
for ( int i = 1 ; i <= t; i++ , a * = ( q* q - ( i - 1 ) * ( i - 1 ) ) )
sum + = q* a* ( delta( 2 * i - 1 , i) + delta( 2 * i, i - 1 ) ) / ( fact( 2 * i - 1 ) * 2 ) + q* q* a* delta( 2 * i, i) / fact( 2 * i) ;
return ( sum) ;
}
int fact( int i)
{
if ( i <= 1 ) return 1 ;
else return ( i* fact( i - 1 ) ) ;
}
IyBpbmNsdWRlIDxpb3N0cmVhbT4gCgojIGluY2x1ZGUgPG1hdGguaD4gCgojIGluY2x1ZGUgPHN0ZGxpYi5oPiAKCiNpbmNsdWRlIDxpb3N0cmVhbT4gCgpjb25zdCBpbnQgbiA9IDEwOyAKCmRvdWJsZSB4W24gKyAxXSA9IHswLjI4MSwgMC40NDksIDAuNjE4LCAwLjc4NywwLjk1NiwxLjEyNCAsMS4yOTMgLDEuNDYyICwxLjYzMSAsIDEuNzk5LCAxLjk2OCB9OyAKCmRvdWJsZSB5W24gKyAxXSA9IHstMC4yMjIgLC0wLjA1NSAsMC4wMTMgLDAuMDExLCAtMC4wMzIsLTAuMDg4ICwtMC4xMjkgLCAtMC4xMjUsLTAuMDQ3LDAuMTMxICwwLjQ0MyB9OyAKCmRvdWJsZSB6WzNdID0gezEuMjUxMCwxLjE3MDAsMS4wODcwIH07IAoKZG91YmxlIGRlbHRhKGludCBtLCBpbnQgayk7IAoKZG91YmxlIFN0aXIoaW50IGQsIGRvdWJsZSBxKTsgCgp1c2luZyBuYW1lc3BhY2Ugc3RkOyAKCmludCBmYWN0KGludCBpKTsgCgppbnQgbWFpbigpIAoKeyAKCnNldGxvY2FsZSgwLCIiKTsgCgppbnQgaSwgaiwgZDsgCgpkb3VibGUgbWluLCBiLCBxOyAKCmZvciAoaSA9IDA7IGk8MzsgaSsrKSAKCnsgCgpiID0geltpXTsgCgpjb3V0IDw8ICJcblxu0J/RgNC+0LPRgNCw0LzQvNCwINCy0YvRh9C40YHQu9GP0LXRgiDQt9C90LDRh9C10L3QuNC1INCyINGC0L7Rh9C60LUgeFsiIDw8IGkgKyAxIDw8Il0gPSAiIDw8IGIgPDwgIiAiOyAKCm1pbiA9IDEwMDAwOyAKCmZvciAoaiA9IDE7IGogPD0gbjsgaisrKSAKCnsgCgppZiAoZmFicyh4W2pdIC0gYik8bWluKSAKCnsgCgptaW4gPSBmYWJzKHhbal0gLSBiKTsgCgpkID0gajsgCgp9IAoKfSAKCnEgPSBmYWJzKGIgLSB4W2RdKSAvICh4WzFdIC0geFswXSk7IAoKY291dCA8PCAiXG4g0KDQsNGB0YfQtdGCINCy0LXQtNC10YLRgdGPINC80LXRgtC+0LTQvtC8INCh0YLQuNGA0LvQuNC90LPQsCAiIDw8IlxuINCg0LXQt9GD0LvRjNGC0LDRgjogIiA8PCBTdGlyKGQsIHEpPDxlbmRsOyAKCn0gCgp9IAoKZG91YmxlIGRlbHRhKGludCBtLCBpbnQgaykgCgp7IAoKZG91YmxlIGQ7IAoKaWYgKG0gPT0gMSkgeyBkID0geVtrICsgMV0gLSB5W2tdOyB9IAoKZWxzZSB7IGQgPSBkZWx0YShtIC0gMSwgayArIDEpIC0gZGVsdGEobSAtIDEsIGspOyB9IAoKcmV0dXJuIGQ7IAoKfSAKCiAKCmRvdWJsZSBTdGlyKGludCBkLCBkb3VibGUgcSkgCgp7IAoKICAgIGludCB0OyAKCmRvdWJsZSBzdW0sIGE7IAoKc3VtID0geVtkXTsgCgphID0gMTsgCgppZiAoZD4obiAtIGQpKSAKCiAgICB7IAoKICAgICAgICB0ID0gbiAtIGQ7IAoKICAgIH0gCgogICAgZWxzZSAKCiAgICB7IAoKICAgICAgICB0ID0gZDsgCgogICAgfSAKCmZvciAoaW50IGkgPSAxOyBpIDw9IHQ7IGkrKywgYSAqPSAocSpxIC0gKGkgLSAxKSooaSAtIDEpKSkgCgpzdW0gKz0gcSphKihkZWx0YSgyICogaSAtIDEsIGkpICsgZGVsdGEoMiAqIGksIGkgLSAxKSkgLyAoZmFjdCgyICogaSAtIDEpICogMikgKyBxKnEqYSpkZWx0YSgyICogaSwgaSkgLyBmYWN0KDIgKiBpKTsgCgpyZXR1cm4gKHN1bSk7IAoKfSAKCiAKCmludCBmYWN0KGludCBpKSAKCnsgCgppZiAoaSA8PSAxKSByZXR1cm4gMTsgCgplbHNlIHJldHVybiAoaSpmYWN0KGkgLSAxKSk7IAoKfSAKCiAKCiA=