Курсовая работа: Численные методы при решении задач

f (&y0[(i+1)*n], &q0[(i+1)*n], xi); // qi = f (xi, yi);

for (j = 0; j < n; j++) q0[((i+1)*n)+j] *= h;

xi += h; // Следующий шаг }

///////////////////////////////////////////////////////////////////////

// - Метод Адамса - //

///////////////////////////////////////////////////////////////////////

// Итак, вычислены 4 первых значения. Этого достаточно для начала метода

// Адамса для шага h.

// B y0...y3 лежат 4 значения функций (_НЕ_ПРОИЗВОДНЫХ!!!).

// A в q0...q3 лежат значения _производных_ этих функций, умноженных на h

// q0..q3, а также y0..y3 представляют собой очереди с 4 элементами

again: // Вычисляем новое значение функции Yi (Это Y[i+1])

for (j = 0; j < n; j++)

{ // Все приращения

dq2 = q3[j] - q2[j]; dq1 = q2[j] - q1[j]; dq0 = q1[j] - q0[j];

d2q1 = dq2 - dq1; d2q0 = dq1 - dq0;

d3q0 = d2q1 - d2q0;

// новое значение функции (в ya пока что)

ya[j] = y3[j] + (q3[j] + (dq2 / 2.) + (5. * d2q1 / 12.) + (3. * d3q0 / 8.));

// Сдвигаем все массивы на 1 вперёд и добавляем в очередь новое

// значение функции

y0[j] = y1[j]; y1[j] = y2[j]; y2[j] = y3[j]; y3[j] = ya[j];

// Просто сдвигаем q, ничего пока что не добавляя

q0[j] = q1[j]; q1[j] = q2[j]; q2[j] = q3[j];

}

// В очередь в качестве q3 ложим новое значение

f (y3, q3, xi); // q3 = f (xi, y3);

for (j = 0; j < n; j++) q3[j] *= h; // Вычислить q3

// Очередное значение функции вычислено. Следующиий шаг

К-во Просмотров: 507
Бесплатно скачать Курсовая работа: Численные методы при решении задач