Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3-Численные методы.doc
Скачиваний:
48
Добавлен:
31.03.2015
Размер:
3.31 Mб
Скачать

Порядок выполнения лабораторной работы.

Пример 1. Найти решение задачи Коши для системы двух обыкновенных дифференциального уравнений первого порядка:

с начальными условиями y(1) = 0, z(1) = 2 на отрезке x [1; 2] на сетке с числом шагов m = 5 и m = 10, оценить по правилу Рунге точность расчетов и сравнить с точным решением .

Перед началом вычислений преобразуем систему уравнений:

Вид рабочего листа табличного процессора MS Excel приведен на рисунке. Оформление расчетов аналогично лабораторной работе "Численное интегрирование обыкновенного дифференциального уравнения первого порядка" для метода Рунге-Кутта. Отличие связано с появлением дополнительных строк для второго уравнения.

В диапазоне A5:A63 размещаем заголовки строк. Задаем узловые точки сетки: В5="1", С5="1.1", протягиваем диапазон В5:С5 до ячейки L5.

Программируем рабочий лист для вычислений с шагом h=0,2. Размещаем начальное условие y(1) = 0, z(1) = 2: ячейка В31="0", В32="2". Проводим расчет в 1-ой узловой точке. Вычисляем угловой коэффициент функции у в начальной точке : ячейкаD6 ="=-B31/B5/(B5^2+1)+B32/(B5^2)/(B5^2+1)". Вычисляем угловой коэффициент функции z в начальной точке : ячейкаD7="=-(B5^2)*B31/(B5^2+1)+(2*B5^2+1)*B32/B5/(B5^2+1)". Вычисляем коэффициент : ячейкаD8="=(D5-B5)*D6". Вычисляем коэффициент : ячейкаD9="=(D5-B5)*D7".

Вычисляем аргументы коэффициентов k2 и l2: ячейка D10="=B5+(D5-B5)/2" (), ячейкаD11="=B31+D8/2" (y0 + k1/2 ), ячейка D12=" =B32+D9/2" (z0 + l1/2 ) . Вычисляем функцию f1 от полученных аргументов: ячейка D13="=-D11/D10/(D10^2+1)+D12/D10^2 /(D10^2+1)". Вычисляем функцию f2 от полученных аргументов: ячейка D14="=-(D10^2)*D11/(D10^2+1)+(2*D10^2+1) *D12/D10/(D10^2+1)". Вычисляем коэффициент k2=hf1: ячейка D15="=(D5-B5)*D13". Вычисляем коэффициент l2=hf2: ячейка D16="=(D5-B5)*D14".

Вычисляем аргументы коэффициентов k3 и l3: ячейка D17=" =B5+(D5-B5)/2" (), ячейкаD18=" =B31+D15/2" (y0 + k2/2 ), ячейка D19= "=B32+D16/2" (z0 + l2/2) . Вычисляем функцию f1 от полученных аргументов: ячейка D20= "=-D18/D17/(D17^2+1)+D19/D17^2/ (D17^2+1)". Вычисляем функцию f2 от полученных аргументов: ячейка D21= "=-(D17^2)*D18/(D17^2+1)+(2*D17^2+1)*D19/D17/(D17^2+1)". Вычисляем коэффициент k3=hf1: ячейка D22="=(D5-B5)*D20". Вычисляем коэффициент l3=hf2: ячейка D23=" =(D5-B5)*D21".

Вычисляем аргументы коэффициентов k4 и l4: ячейка D24="=D5" (), ячейкаD25="=B31+D22" (y0 + k3 ), ячейка D26="=B32+D23" (z0 + l3). Вычисляем функцию f1 от полученных аргументов: ячейка D27= "=-D25/D24/(D24^2+1)+D26/D24^2/(D24^2+1)". Вычисляем функцию f2 от полученных аргументов: ячейка D28="=-(D24^2)*D25/(D24^2+1) +(2*D24^2+1)*D26/D24/(D24^2+1)". Вычисляем коэффициент k4=hf1: ячейка D29="=(D5-B5)*D27". Вычисляем коэффициент l4=hf2: ячейка D30="=(D5-B5)*D28". Вычисляем следующее приближенное значение функции у1 = у0 + (k1 + 2k2 + 2k3 + k4 )/6 : ячейка D31="=B31+(D8+2*D15+2*D22+D29)/6". Вычисляем следующее приближенное значение функции z1 = z0 + (l1 + 2l2 + 2l3 + l4 )/6 : ячейка D32="=B32+(D9+2*D16+2*D23+D30)/6". Протягиваем диапазон D6:E32 в диапазон D6:L32 для вычислений в остальных узловых точках.

Программируем рабочий лист для вычислений с шагом h=0,1. Размещаем начальное условие y(1) = 0, z(1) = 2: ячейка В58="0", В59="2". Проводим расчет в 1-ой узловой точке. Вычисляем угловой коэффициент функции у в начальной точке : ячейкаC33="=-B58/B5/(B5^2+1)+B59/B5^2/(B5^2+1)". Вычисляем угловой коэффициент функции z в начальной точке : ячейкаC34="=-(B5^2)*B58/(B5^2+1)+(2*B5^2+1)*B59/B5/(B5^2+1)". Вычисляем коэффициент : ячейкаC35="=(C5-B5)*C33". Вычисляем коэффициент : ячейкаC36="=(C5-B5)*C34".

Вычисляем аргументы коэффициентов k2 и l2: ячейка C37= "=B5+(C5-B5)/2" (), ячейкаC38="=B58+C35/2" (y0 + k1/2 ), ячейка C39="=B59+C36/2" (z0 + l1/2 ) . Вычисляем функцию f1 от полученных аргументов: ячейка C40="=-C38/C37/(C37^2+1)+C39/C37^2/(C37^2+1)". Вычисляем функцию f2 от полученных аргументов: ячейка C41= "=-(C37^2)*C38/(C37^2+1)+(2*C37^2+1)*C39/C37/(C37^2+1)". Вычисляем коэффициент k2=hf1: ячейка C42="=(C5-B5)*C40". Вычисляем коэффициент l2=hf2: ячейка C43="=(C5-B5)*C41".

Вычисляем аргументы коэффициентов k3 и l3: ячейка C44= "=B5+(C5-B5)/2" (), ячейкаC45="=B58+C42/2" (y0 + k2/2 ), ячейка C46="=B59+C43/2" (z0 + l2/2) . Вычисляем функцию f1 от полученных аргументов: ячейка C47="=-C45/C44/(C44^2+1)+C46/C44^2/(C44^2+1)". Вычисляем функцию f2 от полученных аргументов: ячейка C48= "=-(C44^2)*C45/(C44^2+1)+(2*C44^2+1)*C46/C44/(C44^2+1)". Вычисляем коэффициент k3=hf1: ячейка C49="=(C5-B5)*C47". Вычисляем коэффициент l3=hf2: ячейка C50="=(C5-B5)*C48".

Вычисляем аргументы коэффициентов k4 и l4: ячейка C51="=C5" (), ячейкаC52="=B58+C49" (y0 + k3 ), ячейка C53="=B59+C50" (z0 + l3). Вычисляем функцию f1 от полученных аргументов: ячейка C54= "=-C52/C51/(C51^2+1)+C53/C51^2/(C51^2+1)". Вычисляем функцию f2 от полученных аргументов: ячейка C55="=-(C51^2)*C52/(C51^2+1)+ (2*C51^2+1)*C53/C51/(C51^2+1)". Вычисляем коэффициент k4=hf1: ячейка C56="=(C5-B5)*C54". Вычисляем коэффициент l4=hf2: ячейка C57="=(C5-B5)*C55". Вычисляем следующее приближенное значение функции у1 = у0 + (k1 + 2k2 + 2k3 + k4 )/6 : ячейка C58="=B58+(C35+2*C42+2*C49+C56)/6". Вычисляем следующее приближенное значение функции z1 = z0 + (l1 + 2l2 + 2l3 + l4 )/6 : ячейка C59="=B59+(C36+2*C43+2*C50+C57)/6". Протягиваем диапазон C33:C59 в диапазон D33:L59 для вычислений в остальных узловых точках.

Вычисляем точное значение функции в узловых точках: ячейкаВ60="=1-1/B5" и протягиваем формулу в диапазон B60:L60. Вычисляем точное значение функции zт = x + x2 в узловых точках: ячейка В61="=B5+B5^2" и протягиваем формулу в диапазон B61:L61. По формуле (7) вычисляем оценку точности в узловых точках более крупной сетки: ячейка D62="=МАКС(ABS(D58-D31);ABS(D59-D32))/15" и протягиваем диапазон D62:E62 до ячейки L62. По формуле (6) вычисляем фактическое отклонение приближенного значения на сетке h/2 в узлах более крупной сетки: ячейка D63=" =МАКС(ABS(D58-D60);ABS(D59-D61))" и протягиваем диапазон D63:E63 до ячейки L63. Вычисления по классическому методу Рунге-Кутта закончены.

Пример 2. Задачу Коши для дифференциального уравнения

преобразовать к задаче Коши для системы двух дифференциальных уравнений первого порядка и решить с помощью разработанного расчетного листа, внеся в него соответствующие изменения. Точное решение .

Преобразуем уравнение к задаче Коши для системы двух дифференциальных уравнений первого порядка, используя обозначения предыдущего примера:

y(0) = 1, z(0) = 0.

По сравнению с предыдущим примером на рабочий лист внесены следующие изменения. Изменен диапазон интегрирования на отрезок [0; 1]. Изменены формулы в строках, в которых вычисляются функции f1 и f2 . Изменено точное вычисление функции у в строке 60. Точное значение функции z (строка 61) получено дифференцированием функции у: . Остальные вычисления проводятся автоматически. Вид рабочего листа табличного процессораMS Excel приведен на рисунке.