Глава 3. ЧИСЛЕННОЕ ДИФФЕРЕНЦИРОВАНИЕ И ИНТЕГРИРОВАНИЕ

Существует много машинных методов инте­гри­ро­вания и дифференцирования. Метод, более все­го под­хо­дя­­щий для данной задачи, в зна­чи­тель­ной сте­пе­ни за­ви­сит от информации о со­от­ветст­вующей фун­к­ции. Осо­бый интерес с точки зре­ния вы­чис­ли­тель­ной ма­те­ма­ти­ки при этом вы­зы­вают за­да­чи для од­ной функции f(x) од­­но­го дейст­­ви­тель­ного пе­ре­мен­ного х Î [a, b], кото­рые ус­ловно под­раз­де­ля­ют на че­ты­ре категории.

  1. Значения функции f(x) заданы только на фик­­си­ро­ван­ном конечном множестве точек хi ин­тер­ва­ла [a, b].

  2. Функция f(x) определена и может быть вы­чис­ле­­на для лю­бого действительного х из ин­тер­ва­ла [a, b], однако пер­во­образной для нее не существует.

  3. Определение функции может быть ана­ли­ти­чес­ки про­дол­жено на комплексные значения х.

  4. Имеется явная формула, пригодная для сим­во­ли­чес­ко­го манипулирования.

Функции, входящие в первую категорию, чаще все­го по­яв­ля­ются в результате некоторого экс­пе­ри­мента для за­дан­ных хi, ко­торые, как пра­ви­ло, рас­пределены не­рав­но­мер­но или рас­по­ло­жены в виде та­б­ли­­цы.

Поэтому ясно, что для функций первых двух ка­­­те­го­рий чис­ленное дифференцирование яв­ля­ет­ся бо­лее труд­ной вы­чис­­­лительной задачей, чем чис­­­лен­ное ин­те­гри­ро­вание. Оче­­­видно причина в том, что ма­те­­ма­­ти­ч­ес­кая опе­рация чис­­ленного диф­фе­рен­ци­ро­ва­ния увеличивает лю­бую ошиб­­ку, при­сутствующую в данных, в то время как чис­­лен­­ное ин­те­грирование обычно сгла­жи­ва­ет и умень­ша­ет та­кие ошибки. Если значения функции из­вест­­ны или могут быть вычислены с большой точ­ностью и если требуются про­­из­вод­ные от­но­си­тель­но не­вы­соких порядков, то часто ме­то­ды, ос­но­­ванные на ин­тер­по­ляции сплайнами или по­ли­но­ма­ми, дают вполне удов­ле­т­во­ри­тель­ные ре­зуль­та­­ты. Однако ес­ли нужны про­из­вод­ные вы­со­кого по­ряд­­ка или если значения функ­­ции за­шум­­лены, то ре­­зультаты мо­гут быть, мягко го­во­ря, не­­­точ­ны­­ми.

Примером функций, входящих в третью ка­те­го­­рию, мог­ли бы служить сложные выражения, со­с­тавленные из три­гонометрических или других эле­­ментарных функ­ций. Для задач этого типа сле­дует извлекать выгоду из ком­­плек­сного рас­ши­ре­ния, ес­ли оно доступно. Тогда про­­из­вод­ные функ­ции f(x) мож­но выразить через ком­плек­сные кон­­турные ин­те­гралы и сглаживающий эф­фект чис­лен­но­го ин­те­гри­рования можно использо­вать для получения хо­ро­­ших приближений к про­из­вод­ным вы­­сокого по­ряд­ка [Ли­нес, Моулер, 1967; Ли­нес, Санде, 1971].

В основном настоящая глава посвящена мето­дам ра­бо­ты с функциями 1, 2 и 3-й категории.

Задачи 4-й категории в данной работе не рас­смат­­ри­ва­­ют­ся, но сведения о дан­­ных такого типа мож­но най­ти в работах Мо­зе­са (1972).

Для то­го что­бы избежать путаницы с численным ин­те­­гри­­ро­ва­ни­ем обыкновенных диф­фер­ен­ци­аль­ных урав­­­нений, для численного приближения опре­де­лен­ных ин­те­гралов ис­пользуется понятие квадратура.

§ 1. ЧИСЛЕННОЕ ДИФФЕРЕНЦИРОВАНИЕ С ПОМО­ЩЬЮ ИНТЕРПОЛЯЦИОННЫХ ФОРМУЛ НЬЮТОНА И ЛАГРАНЖА

Пусть некоторая функция F(х) задана таблично в n+1 точке, расположенной на ин­тер­вале [а, b]. Тре­бу­ет­ся вы­чис­лить первую и вторую производные дан­ной функции в за­ранее определенных точках.

В качестве аппроксимирующей функции вы­бе­рем ин­тер­по­ляционный многочлен. Если узлы ин­теp­по­ля­ции рас­по­ло­же­ны не равномерно, то таким мно­­гочленом мо­гут быть по­ли­но­мы Лагранжа или Ле­­жандра, а если равномерно, то луч­ше ис­­поль­зо­вать полином Ньютона, так как он дает мень­шую вы­­­­чис­лительную по­греш­ность по срав­не­нию с дру­ги­­ми.

Пусть узлы хi, в которых известны значения функ­ции F(хi), расположены равномерно на ин­тер­ва­ле [а, b], т.е. хi+1i = h, где i = 0, 1, ..., n. Тог­да в ка­честве ин­тер­по­ли­ру­ю­щей функции Рn(х) вы­бе­рем по­лином Ньютона

,

где q = (х - х0) / h; h = хi+1 - хi.. Здесь использована за­пись первой интерполяционной формулы Нью­то­на (см. § 2, гл. 2). Раскроем скобки, приведем по­доб­ные, по­лучим

(3.1)

Заметим, что .

Про­­диф­ференцируем f(х) из выражения (3.1) и с уче­том по­след­него замечания получим выражение для пер­вой про­изводной

(3.2)

Продифференцируем последнее выражение еще раз:

. (3.3)

Здесь учитывалось, что

.

Аналогично можно определить и следующие про­­из­вод­ные функции f(х). Но при вычислении про­­из­вод­ных бо­лее вы­соких порядков следует учи­­ты­вать боль­шее ко­ли­чес­тво чле­нов ряда Ньютона для обеспечения точ­ности ре­зуль­та­та.

Если производные функции f(х) надо опре­де­лить в уз­лах интерполяции, т.е. в х = хi , то тогда фор­мулы (3.2), (3.3) для первой и второй производных заметно упро­ща­ют­ся, так как в этом случае q º 0:

f ’(x) = (D1 - D2/2 + D3/3 - D4 /4 + ... ) / h ; (3.4)

f ’’(x) = (D2 - D3 +11 D4 /12 -5 D5 / 6 + ... ) / h2 . (3.5)

Погрешность в определении производных мож­но при­ближенно оценить как [Плис, Сливина, 1983]

.

Для того чтобы получить значения про­из­вод­ных функ­ции f(х) в точках, расположенных в кон­це таб­ли­цы, сле­ду­ет, как и в § 2, гл. 2, вос­поль­зо­вать­ся вто­рой ин­тер­по­ля­ци­он­ной формулой Нью­то­на. Пов­то­рив ак­ку­ратно и по­сле­до­ва­­тель­но все рассуждения, получим для пер­вой про­из­вод­ной следующее вы­ра­же­ние:

(3.6)

Если же для равноотстоящей системы узлов хi по­строить полином Лагранжа, то, записав его в ви­де

,

где q = (х - х0)/h - шаг интерполяции; h = хi+1 - хi - рас­сто­­я­ние между узлами интерполяции; yi = f(хi)- зна­­че­ния функ­ции f(х) в заданных узлах хi, и c учетом, что /dq = h, по­лучим выражение для пер­вой про­­изводной:

.

Для оценки погрешности последнего выражения мож­но воспользоваться формулой, приведенной в ра­бо­те Плис и Сливиной (1983)

.

В заключение отметим, что рассматриваемые здесь фор­­мулы численного дифференцирования яв­ля­ются ме­нее точ­ными по сравнению с ин­тер­по­ля­ционными (см. § 1 и 2 в гл. 2). Однако их при­ме­ня­ют в прак­ти­ческих рас­че­тах до­ста­­точ­но час­то, так как они удобны, прос­ты, не требуют спе­­­ци­аль­­ных про­грамм. И, что осо­бен­но важ­но, позволяют бы­стро сделать пред­ва­ри­тель­ные (при­­­­ки­доч­­ные) расчеты.

Процедуры new1, new2, newton из § 1 и 2 (гл.2) впол­­не пригодны для вычисления про­из­вод­ных. Но с уче­том ре­шаемой задачи они должны быть не­сколь­ко мо­­ди­фи­­ци­­ро­ва­ны, хотя формальные па­ра­мет­ры ос­та­ют­ся у про­­це­дур без изменений.

{***Первая интерполяционная формула Ньютона**}

function new1 (key:integer;x,y,r1,r2,r3,r4: mas;

x1:real):real;

label 30;

var i,j,k : integer; q : real;

begin

i := 1;

j := 14;

if x1 < x[i] then

goto 30;

{ ****Метод двоичного поиска интервала****}

repeat

k := (i+j) div 2;

if x1< x[k] then

j := k;

if x1>=x[k] then

i := k;

until j <= i+1;

30:

q := (x1 - x[i]) / (x[2]-x[1]);

{ ****Выбор типа работы процедуры****}

case key of

0:new1:=y[i]+q*(r1[i]+(q-1)*(r2[i]/2.0+

(q-2)*r3[i]/6.0));

1: new1 := r1[i] + 0.5*(2*q-1)*r2[i] +

((3*q-6)*q+2)*r3[i]/6+

69

Соседние файлы в папке glava3