МИНИСТЕРСТВО СВЯЗИ РФ
СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ТЕЛЕКОММУНИКАЦИЙ И ИНФОРМАТИКИ
ХАБАРОВСКИЙ ФИЛИАЛ
К У Р С О В А Я Р А Б О Т А
ПО ИНФОРМАТИКЕ
на тему:
РЕШЕНИЕ ДИФФЕРЕНЦИАЛЬНОГО УРАВНЕНИЯ
С ПОСЛЕДУЮЩЕЙ АППРОКСИМАЦИЕЙ РЕЗУЛЬТАТОВ
Работу выполнила:
студентка I курса
специальности РРТ (ускор.)
Турчина
шифр: 011р-469
2001 г.
С О Д Е Р Ж А Н И Е
Индивидуальное задание - 3
1. Решение дифференциального уравнения методом Эйлера - Коши - 4
1.1. Теоретические сведения - 4
1.2. Ручной расчёт решаемой задачи - 6
2. Аппроксимация. Метод наименьших квадратов - 9
2.1. Теоретические сведения - 9
2.2. Ручной расчёт коэффициентов системы линейных уравнений - 10
3. Решение системы уравнений методом Гаусса - 11
4. Нахождение значений аппроксимирующей функции - 13
5. Расчёт погрешности аппроксимации - 14
6. Построение блок-схемы и разработка программы аппроксимации - 16
Литература - 21
ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ
1. Решить дифференциальное уравнение y = x + cos ( y / Ö0.3 ) с начальными условиями x0 = 0.7 y0 = 2.1 на интервале [ 0.7 ; 1.7 ] с шагом h = 0.1.
2. Оценить погрешность вычислений при решении дифференциального уравнения методом Эйлера - Коши.
3. Аппроксимировать полученное в п.1. решение параболой методом наименьших квадратов.
4. Рассчитать погрешность аппроксимации.
5. Построить графики решения дифференциального уравнения, аппроксимирующей функции и погрешности аппроксимации.
6. Составить блок-схемы алгоритмов и программы для решения дифференциального уравнения, вычисления коэффициентов аппроксимирующей параболы, расчёта погрешности аппроксимации на языке QBASIC. На печать выдать :
- значения функции y( xi ), являющейся решением дифференциального уравнения в точках xi, найденные с шагом h и с шагом h/2 ;
- значения аппроксимирующей функции F( xi ) в точках xi ;
- значение погрешности аппроксимации
i = F( xi ) - yi.- величину средне - квадратичного отклонения.
1. РЕШЕНИЕ ДИФФЕРЕНЦИАЛЬНОГО УРАВНЕНИЯ
МЕТОДОМ ЭЙЛЕРА - КОШИ
1.1. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
В соответствии с постановкой задачи нужно найти решение дифференциального уравнения первого порядка, т.е. найти такие решения y(x), которые превратили бы дифференциальное уравнение в тождество. Но так как таких решений множество, заданы начальные условия - значения функции y(x) в точке x0, т.е. y(x0) = y0, а так же интервал [ x0 - xn ].
Рис. 1. показывает, что с помощью начальных условий из множества решений можно выбрать одно.
Рис 1. Множество решений дифференциального уравнения.
Метод Эйлера - Коши - наиболее точный метод решения дифференциального уравнения (второй порядок точности). Этот метод предполагает следующий порядок вычислений:
yi+1* = yi + h f( xi ; yi ), где i = 0,1,2 ... n
yi+1 = yi + h (f( xi ; yi ) + f( xi+1 ; yi+1*)) / 2
Число значений n можно найти, разделив интервал на шаг:
n = (xn - xo) / h
Геометрически это означает, что определяется направление касательной к интегральной кривой в исходной точке хi,yi и во вспомогательной точке хi+1,yi+1*, а в качестве окончательного направления берется среднее этих направлений (показано пунктирной линией на рис. 2)
Рис.2. Графическая интерпретация метода Эйлера - Коши.
Решение yi+1, найденное методом Эйлера - Коши, намного ближе к точному решению, чем решение yi+1*, найденное методом Эйлера. Погрешность метода пропорциональна шагу h во второй степени, т.е. метод Эйлера - Коши имеет второй порядок точности.
1.2. РУЧНОЙ РАСЧЁТ РЕШАЕМОЙ ЗАДАЧИ
По условию задачи нужно решить дифференциальное уравнение y = x + cos ( y / Ö0.3 ) с начальными условиями x0 = 0.7, y0 = 2.1 на интервале [ 0.7 ; 1.7 ] с шагом h = 0.1 .
По формуле метода Эйлера -Коши
yi+1* = yi + h f( xi ; yi ),
yi+1 = yi + h (f( xi ; yi ) + f( xi+1 ; yi+1*)) / 2
Найдем y1* и y1
f( x0 ; y0 ) = 0.7 + cos (2.1 / Ö0.3 ) = - 0.069675
x1 = x0 + h = 0.7 + 0.1=0.8
y1* = y0 + h * f( x0 ; y0 ) = 2.1 + 0.1 * (- 0.069675) = 2.093032
y1 = y0 + h * (f( x0 ; y0 ) + f( x0 + h ; y1* )) / 2 = 2.1 + 0.1 * ((- 0.069675) + 0.022266)/2 =
= 2.09763
Аналогично найдём остальные значения x и y :
f( x1 ; y1 ) = 0.8 + cos (2.09763/ Ö0.3 ) = 0.02757
x2 = 0.8 + 0.1 = 0.9
y2* = 2.09763 + 0.1 * 0.02757 = 2.100387
y2 = 2.09763 + 0.1 * (0.02757 + 0.130776) / 2 = 2.105547
f( x2 ; y2 ) = 0.9 + cos (2.105547 / Ö0.3 ) = 0.136831
x3 = 0.9 + 0.1 = 1
y3* = 2.105547 + 0.1 * 0.136831 = 2.11923
y3 = 2.105547 + 0.1 * (0.136831 + 0.25321) / 2 = 2.125049
f( x3 ; y3 ) = 1 + cos (2.125049 / Ö0.3 ) = 0.260317
x4 = 1+ 0.1 = 1.1
y4* = 2.125049 + 0.1 * 0.260317 = 2.1510807
y4 = 2.125049 + 0.1 * (0.260317 + 0.393124) / 2 = 2.157721
f( x4 ; y4 ) = 1.1 + cos (2.157721 / Ö0.3 ) = 0.401751
x5 = 1.1 + 0.1 = 1.2
y5* = 2.157721+ 0.1 * 0.401751 = 2.1978961
y5 = 2.157721 + 0.1 * (0.401751 + 0.556089) / 2 = 2.205613
f( x5 ; y5 ) = 1.2 + cos (2.205613 / Ö1.3 ) = 0.566933
x6 = 1.2 + 0.1 = 1.3
y6* = 2.205613 + 0.1 * 0.566933 = 2.2623063
y6 = 2.205613 + 0.1 * (0.566933 + 0.750302) / 2 = 2.271475
f( x6 ; y6 ) = 1.3 + cos (2.271475 / Ö0.3 ) = 0.764362
x7 = 1.3 + 0.1 = 1.4
y7* = 2.271475 + 0.1 * 0.764362 = 2.347911
y7 = 2.271475 + 0.1 * (0.764362 + 0.987033) / 2 = 2.359045
f( x7 ; y7 ) = 1.4 + cos (2.359045/ Ö0.3 ) = 1.005629
x8 = 1.4 + 0.1 = 1.5
y8* = 2.359045 + 0.1 * 1.005629 = 2.4596079
y8 = 2.359045 + 0.1 * (1.005629 + 1.280033) / 2 = 2.473328
f( x8 ; y8 ) = 1.5 + cos (2.473328 / Ö0.3 ) = 1.304536
x9 = 1.5+ 0.1 = 1.6
y9* = 2.473328 + 0.1 * 1.304536 = 2.6037816
y9 = 2.473328 + 0.1 * (1.304536 + 1.6414317) / 2 = 2.620626
f( x9 ; y9 ) = 1.6 + cos (2.620626 / Ö0.3 ) = 1.6721351
x10 = 1.6 + 0.1 = 1.7
y10* = 2.620626 + 0.1 * 1.6721351 = 2.7878395
y10 = 2.620626 + 0.1 * (1.6721351 + 2.068584) / 2 = 2.807662
Для оценки погрешности вычислений найдём решение дифференциального уравнения с шагом h / 2 до третьей точки:
f( x0 ; y0 ) = 0.7 + cos (2.1 / Ö0.3 ) = - 0.069675
x1 = 0.7 + 0.05 = 0.75
y1* = 2.1 + 0.05 * (- 0.069675) = 2.096516
y1 = 2.1 + 0.05 * ((- 0.069675) + ( - 0.02372)) / 2 = 2.097665
f( x1 ; y1 ) = 0.75 + cos (2.097665 / Ö0.3 ) = - 0.022389
x2 = 0.75 + 0.05 = 0.8
y2* = 2.097665 + 0.05 * (- 0.022389) = 2.096546
y2 = 2.097665 + 0.05 * ((- 0.022389) + 0.026314) / 2 = 2.097763
f( x2 ; y2) = 0.8 + cos (2.097763 / Ö0.3 ) = 0.027724
x3 = 0.8 + 0.05 = 0.85
y3* = 2.097763 + 0.05 * 0.027724 = 2.0991492
y3 = 2.097763 + 0.05 * (0.027724 + 0.079334) / 2 = 2.10044
f( x3 ; y3) = 0.85 + cos (2.10044 / Ö0.3 ) = 0.080838
x4 = 0.85 + 0.05 = 0.9
y4* = 2.10044 + 0.05 * 0.080838 = 2.1044819
y4 = 2.10044 + 0.05 * (0.080838 + 0.135575) / 2 = 2.10585
f( x4; y4) = 0.9 + cos (2.10585 / Ö0.3 ) = 0.137188
x5 = 0.9 + 0.05 = 0.95
y5* = 2.10585 + 0.05 * 0.137188 = 2.1127094
y5 = 2.10585 + 0.05 * (0.137188 + 0.195345) / 2 = 2.114164
f( x5; y5) = 0.95 + cos (2.114164 / Ö0.3 ) = 0.19709
x6 = 0.95 + 0.05 = 1
y6* = 2.114164 + 0.05 * 0.19709 = 2.1240185
y6 = 2.114164 + 0.05 * (0.19709 + 0.259053) / 2 = 2.125567
Для оценки погрешности вычислений используется правило Рунге:
yi+1 = yih + (yih/2 - yih ) / (2p - 1) , где:
р - порядок метода, для Эйлера - Коши р = 2
Рассчитаем погрешность вычисления в точке х = 1. Найдем уточненное решение:
y(1) = 2.125049 + (2.125567 - 2.125049) / (22 - 1) = 2.1252216
e ih = 2p (yih - yih/2) / (2p - 1) = 22 (2.125567 - 2.125049) / 3 = 6.9 * 10 -4
e ih/2 = (yih - yih/2) / (2p - 1) = (2.125567 - 2.125049) / 3 = 1.73 * 10 -4
Таблица 1. Значения X и Y, полученные с помощью ручного расчёта.
I | X ( I ) | Y ( I ) |
0 | 0.7 | 2.1 |
1 | 0.8 | 2.09763 |
2 | 0.9 | 2.105547 |
3 | 1 | 2.125049 |
4 | 1.1 | 2.157721 |
5 | 1.2 | 2.205613 |
6 | 1.3 | 2.271475 |
7 | 1.4 | 2.359045 |
8 | 1.5 | 2.473328 |
9 | 1.6 | 2.620626 |
10 | 1.7 | 2.807662 |
График решения дифференциального уравнения представлен на рисунке 3.
2. АППРОКСИМАЦИЯ. МЕТОД НАИМЕНЬШИХ КВАДРАТОВ
2.1. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Исходя из постановки задачи, нужно аппроксимировать полученное в п.1. решение ( Таблица 1. ) параболой методом наименьших квадратов, т.е. нужно найти функцию, в данном случае параболу, которая в точках X ( I ) принимала бы значения, как можно более близкие к значениям Y ( I ). Парабола является функцией с тремя параметрами: F (x) = ax2 + bx + c
Сумма квадратов разностей значений функции и решений дифференциального уравнения (Таблица 1.) должна быть минимальной, т.е.:
( ax2 + bx + c - yi )2 => minФункция будет иметь минимум, когда все частные производные равны нулю.
DF / da = 0, dF / db = 0, dF / dc = 0
После преобразований получим систему уравнений:
a11a + a12b + a13c = b1