Построение полиномов Лагранжа по равностоящим и Чебышевским узлам, страница 2

alternative();

double a,b,x;

int s;

cout<<"Input interval [a,b],number uzlov s and x"<<'\n';

cout<<"a=";

cin>>a;

cout<<"b=";

cin>>b;

cout<<"s=";

cin>>s;

cout<<"x=";

cin>>x;

cout<<"interval ["<<a<<','<<b<<']'<<'\t'<<s<<'\n';

cout<<"The significance f("<<x<<')'<<'\n';

cout<<f(x)<<'\n'<<'\n';

cout<<"Ravnomernoe razbienie: "<<'\n';

for (int i=0;i<s;i++)

{

cout<<uzly_ravnomerno(s,a,b)[i]<<'\t';

}

cout<<'\n';

cout<<"The significance of interpolar polynomial x="<<x<<"(ravnomernoe razbienie)"<<'\n';

cout<<coef_lagr_ravnomerno(x,s,a,b)<<'\n';

cout<<'\n';

cout<<"Razbienie po Chebushevu: "<<'\n';

for (int i=1;i<=s;i++)

{

cout<<uzly_po_Chebushevu(s,a,b)[i]<<'\t';

}

cout<<'\n';

cout<<"The significance of interpolar polynomial x="<<x<<"(razbienie po Chebushevu)"<<'\n';

cout<<coef_lagr_Chebushev(x,s,a,b)<<'\n'<<'\n';

cout<<"The mistake for ravnomernogo razbienia: ";

cout<<pogreshost(100,a,b,s)[0]<<'\n';

cout<<"The mistake for Chebusheva razbienia: ";

cout<<pogreshost(10,a,b,s)[1]<<'\n';

system("pause");

return 0;

}

В данной программе реализованно построение полиномов Лагранжа по равностоящим и Чебышевским узлам, а такде подсчитывается методическая погрешность этих полиномов. В программе можно задать правую и левую границу интервала непреывности-его берем на основании графиков в Мапле. Далее задаем нужное число узлов и точку в которой будут вычисленны полиномы Лагранжа(2)и функция. Погрешность высчитывается таким образом: рассматриваем abs(f(x)-L(x)). Берем достаточное число значений х- в нашем случае 100, считаем в этих точках f-L и выбираем наибольшое значение- это и будет погрешность. Основываясь на приведенных ниже результатах выполнения программы, можно сказать что для f(x) уже при 7 узлах полиномы лагранжа дают хорошее приближение порядка 10-6.В случае же |x|*f(x) при 7 узлах порядок точности намного меньше. Погрешность  порядка 10-2.

----------------------------------------------------------------------------Input number 0(f(x)) or number 1(|x|*f(x))

1

Input interval [a,b],number uzlov s and x

a=-.9

b=.9

s=3

x=.1

interval [-0.9,0.9]     3

The significance f(0.1)

-0.01041709181

Ravnomernoe razbienie:

-0.9    0       0.9

The significance of interpolar polynomial x=0.1(ravnomernoe razbienie)

-0.03456374352

Razbienie po Chebushevu:

0.7794228634    5.510910596e-017        -0.7794228634

The significance of interpolar polynomial x=0.1(razbienie po Chebushevu)

-0.0428256541

The mistake for ravnomernogo razbienia: 0.1424032786

The mistake for Chebusheva razbienia: 0.1385835743

Для продолжения нажмите любую клавишу . . .

Input number 0(f(x)) or number 1(|x|*f(x))

1

Input interval [a,b],number uzlov s and x

a=-.9

b=.9

s=4

x=.1

interval [-0.9,0.9]     4

The significance f(0.1)

-0.01041709181

Ravnomernoe razbienie:

-0.9    -0.3    0.3     0.9

The significance of interpolar polynomial x=0.1(ravnomernoe razbienie)

0.0006659537379

Razbienie po Chebushevu:

0.8314915793    0.3444150891    -0.3444150891   -0.8314915793

The significance of interpolar polynomial x=0.1(razbienie po Chebushevu)

0.0030027544

The mistake for ravnomernogo razbienia: 0.1340600918

The mistake for Chebusheva razbienia: 0.08753691413

Для продолжения нажмите любую клавишу . . .

Input number 0(f(x)) or number 1(|x|*f(x))

1

Input interval [a,b],number uzlov s and x

a=-.9

b=.9

s=7

x=.1

interval [-0.9,0.9]     7

The significance f(0.1)

-0.01041709181

Ravnomernoe razbienie:

-0.9    -0.6    -0.3    -1.110223025e-016       0.3     0.6     0.9

The significance of interpolar polynomial x=0.1(ravnomernoe razbienie)

-0.02134968408

Razbienie po Chebushevu:

0.877435121     0.7036483342    0.3904953652    5.510910596e-017        -0.39049

53652   -0.7036483342   -0.877435121

The significance of interpolar polynomial x=0.1(razbienie po Chebushevu)

-0.02584145428

The mistake for ravnomernogo razbienia: 0.02192056398

The mistake for Chebusheva razbienia: 0.01542436247

Для продолжения нажмите любую клавишу . . .

Input number 0(f(x)) or number 1(|x|*f(x))

0

Input interval [a,b],number uzlov s and x

a=-.9

b=.9

s=3

x=.1

interval [-0.9,0.9]     3

The significance f(0.1)

-0.1041709181

Ravnomernoe razbienie:

-0.9    0       0.9

The significance of interpolar polynomial x=0.1(ravnomernoe razbienie)

-0.03840415947

Razbienie po Chebushevu:

0.7794228634    5.510910596e-017        -0.7794228634

The significance of interpolar polynomial x=0.1(razbienie po Chebushevu)

-0.05494533983

The mistake for ravnomernogo razbienia: 0.2375285165

The mistake for Chebusheva razbienia: 0.1568301094

Для продолжения нажмите любую клавишу . . .

Input number 0(f(x)) or number 1(|x|*f(x))

0

Input interval [a,b],number uzlov s and x

a=-.9

b=.9

s=7

x=.1

interval [-0.9,0.9]     7

The significance f(0.1)

-0.1041709181

Ravnomernoe razbienie:

-0.9    -0.6    -0.3    -1.110223025e-016       0.3     0.6     0.9

The significance of interpolar polynomial x=0.1(ravnomernoe razbienie)

-0.1041713761

Razbienie po Chebushevu:

0.877435121     0.7036483342    0.3904953652    5.510910596e-017        -0.39049

53652   -0.7036483342   -0.877435121

The significance of interpolar polynomial x=0.1(razbienie po Chebushevu)

-0.1041719944

The mistake for ravnomernogo razbienia: 4.689598729e-006

The mistake for Chebusheva razbienia: 1.700292333e-006

Для продолжения нажмите любую клавишу . . .

--------------------------------------------------------------------------------