Числено интегриране на функция със стойности, известни в даден набор от точки (крайни и дискретни) върху област, ограничена от дискретни точки?

Нека D е областта, ограничена от поредица от точки {x_i,y_i} (1‹=i‹=N). (Не е необходимо областта да е изпъкнала и се предполага, че точките минават по граничната крива.)

Нека f е функция, дефинирана върху D, но ние знаем само нейните стойности върху даден набор от точки (крайни и дискретни), да речем {x'_i,y'_i,f(x'_i,y'_i)} (1‹= i‹=N').(Даденият набор от данни не трябва да бъде „плътен“ в D.)

Как мога да направя числено интегриране на f върху D?

Ето какво мисля аз:
1) Първо трябва да апроксимираме границата на D чрез сегменти между тези серии от точки.
2) След това трябва да направим някаква интерполация върху дадения набор от данни. Интерполацията в две измерения обаче не винаги е възможна. Тогава се забивам.

Можете ли да помогнете? Благодаря ти.


person Roun    schedule 17.05.2011    source източник


Отговори (2)


Ако сте успели да триангулирате точките си, работата е свършена: във всеки триъгълник знаете стойностите на функциите в ъгловите точки и ги интегрирайте чрез

triangle_area * (val1 + val2 + val3) / 3.0

Докато изпъкналата триангулация е решен проблем с много налични инструменти (вижте например qhull), неизпъкналата триангулация е много по-трудно. Както и да е, ровенето в тази посока може би ще доведе до някъде.

person Nico Schlömer    schedule 21.03.2017

Бих написал решението като контурен интеграл и бих използвал сумата от гаусова или логаритмична квадратурна 1D числена интеграция върху всеки частичен сегмент на границата. Логарифмическата квадратура е полезна, ако функцията е сингулярна в дадена точка от кривата.

Трябва да знаете стойностите на функцията в крайните точки на всяка частична крива. Вие приемате конкретна функция на интерполация (линейна за начало, по-висок порядък, ако желаете) и извършвате численото интегриране чрез интерполиране между стойностите на крайната точка.

Ако стигнете дотам, бих препоръчал да проверите конвергенцията чрез удвояване на броя на кривите по контура и повторно интегриране. Ако интегралната стойност не се промени след една или две итерации, можете да се считате за конвергирани.

Ако казвате, че не знаете стойностите на функцията навсякъде по кривата, тогава не можете да направите интегрирането.

person duffymo    schedule 17.05.2011
comment
Е, стойностите на функцията на граничната крива не са известни. Може ли да се направи контурен интеграл? - person Roun; 17.05.2011
comment
Интегрирането е върху площ, която не е контурен интеграл. И стойностите на функцията са известни в някои вътрешни точки на областта (не на границата). - person Roun; 18.05.2011