Изложенная выше схема построения формул для приближенного вычисления интегралов применима и в многомерном случае
Формулы численного дифференцирования, в основе которых лежит интерполирование, получаются в результате дифференцирования интерполяционных многочленов. Ввиду неустойчивости задачи численнго дифференцирования относительно ошибок использования значений функций в узлах шаг интерполирования должен согласоваться с погрешносьтью значений функций. Поэтому на практике нередки случаи, когда известная на густой сетке функция используется в данной задаче не во всех точках, а на более редкой сетке.
При численном решении интегральных уравнений, известная функция [pic] заменяется в интегральном уравнении каким-либо интерполяционным приближением (интерполяционным алгебраическим многочленом, интерполяционным сплайном и т.д.) с узлами интерполирования [pic], а приближенные значения [pic] для [pic] находятся из системы, полученной после подстановке вместо независимости переменной x узлов интерполирования [pic]. В случае нелинейных интегральных уравнений приближенные значения [pic] находятся соответственно из нелинейной системы.
Интерполяционная формула- для приближенного вычисления значений функции [pic], основанного вычисления на замене приближаемой функции [pic] более простой в каком- то смысле функцией
[pic] |[pic] |[pic] |
наперед заданного класса, причем параметры [pic] выбираются так чтобы значения [pic] совпадали с известными заранее значениями [pic] для данного множества [pic]попаро различных значений аргумента: такой способ приближенного представления функций называется интерполированием, а точки [pic], для которых должны выполняться условия [pic], - узлами интерполяции.
В ряде случаев (например, при интерполировании алгебраическими многочленами) параметры [pic] могут быть явно выражены из системы [pic], и тогда [pic]непосредственно используется для приближенного вычисления значений функции [pic].
Интерполяционный процесс- процесс получения последовательности интерполирующих функций [pic] при неограниченном возрастании числа n узлов интерполирования. Если интерполирующие функции [pic] представлены в виде частных сумм некоторого функционального ряда, то последний иногда называется интерполяционным рядом. Целью построения интерполяционного полинома чаще всего является, по крайней мере в простейших первоначальных задачах интерполирования, приближение в каком- то смысле по средствам интерполирующих функций [pic], о которой или имеется неполная информация, или форма которой слишком сложна для непосредственного использования.
Интерполяционная формула Эверетта: Интерполяционные формулы Грегори- Ньютона построенные по нисходящим или восходящим разностям, наиболее целесообразно применять в начале или конце таблицы. При этом для достижения высокой степени точности иногда приходится рассматривать разности, отстоящие достаточно далеко от интересующих нас значений функции [pic] или [pic]. Поэтому на средних участках таблицы лучше результаты дают интерполяционные формулы, построенные на базе центральных разностей, то есть разностей, которые ближе всего расположены к центральной сотке, содержащей [pic].
К интерполяционным формулам с центральными разностями относятся формулы Гаусса, Стирлинга, Бесселя, Эверетта и многие другие; формула Эверетта получила наибольшее распространение, она была получена 1900 г.:
[pic] где [pic]; [pic]; [pic].
Формуле Эверетта так же можно придать форму, наиболее удобную для вычисления:
[pic] если для ее коэффициентов ввести обозначения [pic] [pic] [pic] [pic] [pic] [pic] [pic]
Коэффициенты [pic] удобнее всего вычислять по следующей рекуррентной формуле, которая непосредственно вытекает из [pic]: [pic]; [pic]; [pic]
Таблица разностей: |x |y |[pic|[pic]|[pic]|[pic]|[pic]| | | |] | | | | | |[pi|[pi|[pic|[pic]|[pic]|[pic]|[pic]| |c] |c] |] | | | | | |[pi|[pi|[pic|[pic]|[pic]|[pic]|[pic]| |c] |c] |] | | | | | |[pi|[pi|[pic|[pic]|[pic]|[pic]|[pic]| |c] |c] |] | | | | | |[pi|[pi|[pic|[pic]|[pic]|[pic]|[pic]| |c] |c] |] | | | | | |[pi|[pi|[pic|[pic]|[pic]|[pic]| | |c] |c] |] | | | | | |[pi|[pi|[pic|[pic]|[pic]| | | |c] |c] |] | | | | | |[pi|[pi|[pic|[pic]| | | | |c] |c] |] | | | | | |[pi|[pi|[pic| | | | | |c] |c] |] | | | | | |[pi|[pi| | | | | | |c] |c] | | | | | |
Таблицу можно продолжать строить, в нашем случае до последнего [pic], число разностей зависит от количества значений y. Таблица разностей высчитывается [pic], и так далее(можно заметить такую систему в приведенной выше таблице)
Тестовый пример.
П р и м е р. Функция [pic] задана таблицей на сегменте [pic]. Определим при помощи интерполяции значение [pic].
Р е ш е н и е. По данным значениям функции составляем таблицу разностей (табл. 1), из которых видно, что четвертые разности в данном примере практически равны постоянны, а пятые разности практически равны нулю, и поэтому мы их в дальнейших вычислениях не будем принимать во внимание.
Принимаем [pic]=0,85; [pic]=0,9; [pic]=0,874.
Тогда [pic]=0,8273695; [pic]=0,8075238, и, далее, так как шаг таблицы [pic]=0,05, то
[pic]
Т а б л и ц а 2 |x |[pic] |[pic] |[pic] |[pic] |[pic] |[pic] | |0.6|0.9120049|-0.014873|-0.001057|0.000029|0.000002|-0.000000| |0 | |3 |4 |5 |1 |4 | |0.6|0.8971316|-0.015930|-0.001027|0.000031|0.000001|0.0000002| |5 | |7 |9 |6 |7 | | |0.7|0.8812009|-0.016958|-0.000996|0.000033|0.000001|-0.000000| |0 | |6 |3 |3 |9 |5 | |0.7|0.8642423|-0.017954|-0.000963|0.000035|0.000001|0.0000001| |5 | |9 |0 |2 |4 | | |0.8|0.8462874|-0.018917|-0.000927|0.000036|0.000001| | |0 | |9 |8 |8 |5 |[pic] | |0.8|0.8273695|-0.019845|-0.000891|0.000038| | | |5 | |7 |0 |3 | | | |0.9|0.8075238|-0.020736|-0.000852| | | | |0 | |7 |7 | | | | |0.9|0.7867871|-0.021589| | | | | |5 | |4 | | | | | |1.0|0.7651977| | | | | | |0 | | | | | | |
Т а б л и ц а 2 |Эверетта | |[p|[pic] |[pic] | |ic| | | |] | | | |0 |0.52000|0.8227369| |1 | |5 | |2 |-0.0632|-0.000927| | |3 |8 | | |0.01179|0.0000014| |0 |0.48000|0.8075238| |1 | | | |2 |-0.0615|-0.000891| | |7 |0 | | |0.01160|0.0000015| |[pic][pic] |
Все вычисления по формуле Эверетта представлены в табл. 2.
Все необходимые значения разностей(и самой функции, которые мы в табл. 2 обозначили как разности нулевого порядка [pic]) взяты из табл. 1. Первые три строки в табл. 2 заполнены значениями [pic] для [pic] и [pic], а последующие три строки соответственно значениями [pic] для [pic] и [pic]. Перемножив (не снимая промежуточных результатов) коэффициенты [pic] на расположенные в той же строке [pic], мы и получим искомое значение функции [pic], как сумму произведений
Проверка производится непосредственно при помощи степенного ряда для рассматриваемой функции Эверетта [pic] согласно которому получим [pic]
ГЛАВА №2 MAIN[pic]
Заключение
Удалось построить интерполяционный многочлен и вычислить по нему значение функции для заданного значения аргумента. Составлена блок схема алгоритма и программа на языке С++ (Приложение) для вычисления заданного интерполяционного многочлена. В программе предусмотрена возможность ввода любого числа значений функции для чего организованно хранение ее значения при помощи линейного списка.
Список литературы
1. Архангельский Н.А. Вычислительные методы алгебры в приемах и задачах. М.: МАИ, 1976.
2. Васильев Ф.П. Численные методы решения экстремальных задачь. М.:
Наука,1988.
3. Васильков Ф.В., Василькова Н.Н. Компьютерные технологии вычислений в математическом моделировании: Учеб. Пособие. М.:
Финансы и статистика, 1999.
4. Фильчаков П.Ф., Справочник по высшей математике. Киев: Наукова думка, 1974.
5. Фильчаков П.Ф., Численные методы. Киев: Наукова думка, 1976.
6. Большая математическая энциклопедия. М.: Олма-Пресс, 2004
7. Демидович Б.П., Марон И.А. Основы вычислительной математики. М.:
Наука, 1970.
8. Тихонов А.Н., Вводные лекции по прикладной математике. М.:
Наука, 1984.
9. Калиткин Н.Н., Численные методы. М.: Наука, 1987.
10. Корн Г., Корн Т. Справочник по математике. М.: Наука, 1984.
-----------------------
Начало
l_msp=NULL;l_fll=NULL;l_f=NULL; w_u=NULL;r_u=NULL;l_u=NULL; w_v=NULL;r_v=NULL;l_v=NULL;
h=FileFunction();
w_f=l_f;
TableMin();
TableMax();
BBEDuTE X=
x
u=UX(x,h);
VX(u);
p=Summa();
«OTBET: » p
Конец
!feof(in)
l_f==NULL
l_w=w_f
R_f->radr=w_f
Нет
да
fscanf(in,"%f",&w_f->x); fscanf(in,"%f",&w_f->y);
R_f=w_f;
W_f=l_f;
W_f=l_f->radr;
H=(w_f->x)-(l_f->x)
FileFunction()
TableMin
s=w_f->y; w_f=w_f->radr; s1=w_f->y; p=s1-s;
L_msp==NULL
L_msp=w_msp;
R_msp->radr1=w_msp
нет
l_fll==NULL
w_fll->a=p;r_fll=w_fll; w_msp->z=p;r_msp=w_msp;
w_f!=r_f
w_msp=l_msp;
r_msp=w_msp; w_msp=l_msp;
w_msp!=r_msp
w_msp->z=p;
w_msp->z=p;l_msp=w_msp;
s=c; w_msp=w_msp->radr1; c=w_msp->z; s1=w_msp->z; p=s1-s; r_fll->radr2=w_fll; w_fll->a=p;r_fll=w_fll; r_msp->radr1=w_msp;
c=w_msp->z; l_msp=NULL;
i=1;iradr;i++;
I=(i/2)
w_f=l_f;i>=1;i--
w_f=w_f->radr;
u=(x-(w_f->x))/h; l_u=w_u; w_u->u=u; r_u=w_u;
i=1;iu); r_u->uadr=w_u; w_u->u=u1; r_u=w_u;
VX(float u)
v=1-u; l_v=w_v; r_v->vadr=w_v; w_v->v=v; r_v=w_v;
i=1;iv); r_v->vadr=w_v; w_v->v=v1; r_v=w_v;
Summa()
i=1; w_f=l_f; w_fll=l_fll; w_u=l_u; w_v=l_v;
w_f=w_f->radr;i++;
I=i/2
s=(w_f->y)*(w_v->v); w_f=w_f->radr; s1=(w_f->y)*(w_u->u); w_f=l_f;
i++; j=i;
;i>=1;i--
w_fll=w_fll->radr2;
i=j;
i=((i/2)-1);i>=1;i--
w_v=w_v->vadr; s=s+(w_fll->a)*(w_v->v); i=j;
i=((i/2));i>=1;i--
w_fll!=r_fll
i==0
j--;
i=j; j=i-1; i=j;
w_fll=l_fll; w_f=l_f;
p=s1+s;
w_u!=r_u
i=j*2;
i=((i/2));i>=1;i--,j++
w_u=w_u->uadr; s1=s1+(w_fll->a)*(w_u->u); i=j-1; j=0; i=i-1;
i=j-1;
j=i;
j=i; w_u=l_u;
Страницы: 1, 2