Научная Петербургская Академия

Курсовая: Решение дифференциального уравнения с последующей аппроксимацией

Курсовая: Решение дифференциального уравнения с последующей аппроксимацией

МИНИСТЕРСТВО СВЯЗИ РФ СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ И ИНФОРМАТИКИ ХАБАРОВСКИЙ ФИЛИАЛ К У Р С О В А Я Р А Б О Т А ПО ИНФОРМАТИКЕ на тему: РЕШЕНИЕ ДИФФЕРЕНЦИАЛЬНОГО УРАВНЕНИЯ С ПОСЛЕДУЮЩЕЙ АППРОКСИМАЦИЕЙ РЕЗУЛЬТАТОВ Работу выполнила: студентка 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( x 0 + 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, полученные с помощью ручного расчёта.
IX ( I )Y ( I )
00.72.1
10.82.09763
20.92.105547
312.125049
41.12.157721
51.22.205613
61.32.271475
71.42.359045
81.52.473328
91.62.620626
101.72.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 a21a + a22b + a23c = b2 a31a + a32b + a33c = b3 где a11 = Курсовая: Решение дифференциального уравнения с последующей аппроксимацией , a12 = a21 = Курсовая: Решение дифференциального уравнения с последующей аппроксимацией , a13 = a22 = a31 = Курсовая: Решение дифференциального уравнения с последующей аппроксимацией , a23 = a32 =Курсовая: Решение дифференциального уравнения с последующей аппроксимацией xi , a33 = n + 1 b1 = Курсовая: Решение дифференциального уравнения с последующей аппроксимацией yi , b2 =Курсовая: Решение дифференциального уравнения с последующей аппроксимацией xi yi , b3 =Курсовая: Решение дифференциального уравнения с последующей аппроксимацией yi . 2.2. РУЧНОЙ РАСЧЁТ КОЭФФИЦИЕНТОВ СИСТЕМЫ ЛИНЕЙНЫХ УРАВНЕНИЙ Рассчитаем коэффициенты системы трёх линейных уравнений по формулам, взятым из п.2.2.: а11 = 0.74 + 0.84 + 0.94 + 1.04 + 1.14 + 1.24 + 1.34 + 1.44 + 1.5 4 + 1.64 + 1.74 = 32.5094 а12 = а21 = 0.73 + 0.83 + 0.93 + 1.03 + 1.13 + 1.23 + 1.33 + 1.4 3 + 1.53 + 1.63 + 1.73 = 22.9680 а13 = а22 = а31 = 0.72 + 0.82 + 0.92 + 1.02 + 1.12 + 1.22 + 1.3 2 +1.42+1.52+1.62+1.72 = 16.9400 а23 = а32 = 0.7 + 0.8 + 0.9 + 1 + 1.1 + 1.2 + 1.3 + 1.4 + 1.5 + 1.6 + 1.7 = 13.2000 а33 = n + 1 = 11 b1 = 2.1 * 0.72 + 2.09763 * 0.82 + 2.105547 * 0.92 + 2.125049 * 1.02 + 2.157721 * 1.12 + 2.205613 * 1.22 + 2.271475 * 1.32 + 2.359045 * 1.42 + 2.473328 * 1.52 + 2.620626 * 1.62 + 2.807662 * 1.72 = 40.83941 b2 = 2.1 * 0.7 + 2.09763 * 0.8 + 2.105547 * 0.9 + 2.125049 * 1.0 + 2.157721 * 1.1 + 2.205613 * 1.2 + 2.271475 * 1.3 + 2.359045 * 1.4 + 2.473328 * 1.5 + 2.620626 * 1.6 + 2.807662 * 1.7 = 31.119972 b3 = 2.1 + 2.09763 + 2.105547 + 2.125049 + 2.157721 + 2.205613 + 2.271475 + 2.359045 + 2.473328 + 2.620626 + 2.807662 = 25.3237 Получим систему уравнений: 32.5094a + 22.968b + 16.94c = 40.83941 22.968a + 16.94b + 13.2c = 31.119972 16.94a + 13.2b + 11c = 25.3237 Теперь нужно решить эту систему методом Гаусса и найти коэффициенты a,b,c. 3. РЕШЕНИЕ СИСТЕМЫ УРАВНЕНИЙ МЕТОДОМ ГАУССА Суть этого метода состоит в том, что систему линейных уравнений преобразуют к системе с треугольной матрицей, а потом решают уравнения, начиная с последнего. Решим систему уравнений, полученную в п. 2.2.: Первое уравнение считается основным, его мы не изменяем. Второе уравнение нужно преобразовать так, чтобы первый его коэффициент стал равен нулю. Для этого второе уравнение нужно умножить на такой множитель, чтобы первые коэффициенты первого и второго уравнения стали равны. Найдём множитель: μ21 = а21 / а11 = 22.968 / 32.5094 = 0.7065 Умножим на него первое уравнение: 32.5094a * 0.7065 + 22.968b * 0.7065 + 16.94 * 0.7065 = 40.83941 * 0.7065 Получим: 22.968a + 16.2269b + 11.9681c = 28.853043 Теперь нужно это уравнение почленно вычесть из второго: 0a + 0.7131b + 1.2319c = 2.266929 Аналогично преобразуем третье уравнение: i31 = a31 / a11 = 16.94 / 32.5094 = 0.5211 32.5094a * 0.5211 + 22.968b * 0.5211 + 16.94c * 0.5211 = 40.83941 * 0.5211 16.94a + 11.9686b + 8.8274c = 21.281416 Вычтем это уравнение из третьего, получим: 0a +1.2314b + 2.1726c = 4.042284 Таким образом, получится система, эквивалентная исходной: 32.5094a + 22.968b + 16.94c = 40.83941 0.7131b + 1.2319c = 2.266929 1.2314b + 2.1726c = 4.042284 Третье уравнение нужно преобразовать так, чтобы второй его коэффициент стал равен нулю. Найдём множитель: μ32 = a32 / a22 = 1.2314 / 0.7131 = 1.7268 Умножим второе уравнение на него: 0.7131b * 1.7268 + 1.2319c * 1.7268 = 2.266929 * 1.7268 1.2314b + 2.1272c = 3.914533 Вычтем получившееся уравнение из третьего: 0b + 0.0454c = 0.127751 Получим треугольную матрицу, эквивалентную исходной: 32.5094a + 22.968b + 16.94c = 40.83941 0.7131b + 1.2319c = 2.266929 0.0454c = 0.127751 Теперь найдём коэффициенты: c = 0.127751 / 0.0454 = 2.813899 b = (2.266929 - 1.2319 * 2.813899) / 0.7131 = - 1.682111 a = (40.83941 - 16.94 * 2.813899 - 22.968 * (- 1.682111) ) / 32.5094 = 0.978384 Проверим результаты вычислений, подставив полученные значения корней в исходную систему: 32.5094 * 0.978384 + 22.968 * (- 1.682111) + 16.94 * 2.813899 = 40.83941 22.968 * 0.978384 + 16.94 * (- 1.682111) + 13.2 * 2.813899 = 31.119972 16.94 * 0.978384 + 13.2 * (- 1.682111) + 11 * 2.813899 = 25.3237 40.8394 » 40.83941 31.12 » 31.119972 25.3228 » 25.3237 Таким образом, уравнение аппроксимирующей параболы имеет вид: F (x) = 0.978384x2 - 1.682111x + 2.813899 4. НАХОЖДЕНИЕ ЗНАЧЕНИЙ АППРОКСИМИРУЮЩЕЙ ФУНКЦИИ Найдём значения функции F(x) = 0.978384 x2 - 1.682111 x + 2.813899 на интервале [0.7; 1.7] с шагом h=0.1 x0 = 0.7 F( x0 ) = 0.978384 * 0.72 - 1.682111 * 0.7 + 2.813899 = 2.118622 x1 = x0 + h = 0.7 + 0.1 = 0.8 F( x1 ) = 0.978384 * 0.82 - 1.682111 * 0.8 + 2.813899 = 2.095734 x2 = 0.8 + 0.1 = 0.9 F( x2 ) = 0.978384 * 0.92 - 1.682111 * 0.9 + 2.813899 = 2.092711 x3 = 0.9 + 0.1 = 1.0 F( x3 ) = 0.978384 * 1.02 - 1.682111 * 1.0 + 2.813899 = 2.109553 x4 = 1.0 + 0.1 = 1.1 F( x4 ) = 0.978384 * 1.12 - 1.682111 * 1.1 + 2.813899 = 2.14626 x5 = 1.1 + 0.1 = 1.2 F( x5 ) = 0.978384 * 1.22 - 1.682111 * 1.2 + 2.813899 = 2.202831 x6 = 1.2 + 0.1 = 1.3 F( x6 ) = 0.978384 * 1.32 -1.682111 * 1.3 + 2.813899 = 2.279266 x7 = 1.3 + 0.1 = 1.4 F( x7 ) = 0.978384 * 1.42 - 1.682111 * 1.4 + 2.813899 = 2.375567 x8 = 1.4 + 0.1 = 1.5 F( x8 ) = 0.978384 * 1.52 - 1.682111 * 1.5 + 2.813899 = 2.491732 x9 = 1.5 + 0.1 = 1.6 F( x9 ) = 0.978384 * 1.62 - 1.682111 * 1.6 + 2.813899 = 2.627762 x10 = 1.6 + 0.1 = 1.7 F( x10 ) = 0.978384 * 1.72 - 1.682111 * 1.7 + 2.813899= 2.783656 5. РАСЧЕТ ПОГРЕШНОСТИ АПРОКСИМАЦИИ. Для вычисления погрешности аппроксимации вычислим величину среднеквадратичного отклонения: Курсовая: Решение дифференциального уравнения с последующей аппроксимацией Здесь yi - значения решения дифференциального уравнения, полученные в п.1.2. (см. Таблицу 1), F(xi) - значения аппроксимирующей функции при тех же значениях xi, полученные в п. 4. Их разность показывает величину отклонения аппроксимирующей функции от аппроксимируемой в узлах x i. Рассчитаем погрешность аппроксимации: Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 0 = F( x0 ) - y0 = 2.118622 - 2.1 = 0.018622 Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 02 = 3.46779 * 10 - 4 Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 1 = F( x1 ) - y1 = 2.095734 - 2.09763 = - 0.001896 Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 12 = 3.59482 *10 - 6 Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 2 = F( x2 ) - y2 = 2.092711 - 2.105547 = - 0.012836 Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 22 = 1.64763 * 10 - 4 Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 3 = F( x3 ) - y3 = 2.109553 - 2.125049 = - 0.015496 Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 32 = 2.40126 * 10 - 4 Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 4 = F( x4 ) - y4 = 2.14626 - 2.157721 = - 0.011461 Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 42 = 1.31355 * 10 - 4 Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 5 = F( x5 ) - y5 = 2.202831 - 2.205613 = - 0.002782 Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 52 = 7.73953 * 10 - 6 Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 6 = F( x6 ) - y6 = 2.279266 - 2.271475 = 0.007791 Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 62 = 6.06997 * 10 - 5 Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 7 = F( x7 ) - y7 = 2.375567 - 2.359045 = 0.06522 Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 72 = 2.72977 * 10 - 4 Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 8 = F( x8 ) - y8 = 2.491732 - 2.473328 = 0.08404 Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 82 = 3.38707 * 10 - 4 Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 9 = F( x9 ) - y9 = 2.627762 - 2.620626 = 0.007136 Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 92 = 5.09225 * 10 - 5 Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 10 = F( x10 ) - y10 = 2.783656 - 2.807662 = - 0.024006 Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 102 = 5.76288 * 10 -4
11
d = Ö 0.0021939515 = Ö 1.9945013 * 10 - 4 = 0.014122681 Курсовая: Решение дифференциального уравнения с последующей аппроксимацией 1.412268 * 10 - 2 Данные расчётов снесены в Таблицу 2. Таблица 2. Расчёт погрешности аппроксимации.
I

xi

yi

F(xi)

Курсовая: Решение дифференциального уравнения с последующей аппроксимацией i

Курсовая: Решение дифференциального уравнения с последующей аппроксимацией i2

00.72.12.1186220.018622

3.46779 * 10 - 4

10.82.097632.095734- 0.001896

3.59482 * 10 - 6

20.92.1055472.092711- 0.012836

1.64763 * 10 - 4

31.02.1250492.109553- 0.015496

2.40126 * 10 - 4

41.12.1577212.14626- 0.011461

1.31355 * 10 - 4

51.22.2056132.202831- 0.002782

7.73953 * 10 - 6

61.32.2714752.2792660.007791

6.06997 * 10 - 5

71.42.3590452.3755670.06522

2.72977 * 10 - 4

81.52.4733282.4917320.08404

3.38707 * 10 - 4

91.62.6206262.6277620.007136

5.09225 * 10 - 5

101.72.8076622.783656- 0.024006

5.76288 * 10 - 4

График погрешности аппроксимации представлен на рисунке 4. Курсовая: Решение дифференциального уравнения с последующей аппроксимацией График аппроксимирующей функции представлен на рисунке 5. 6. ПОСТРОЕНИЕ БЛОК-СХЕМЫ И РАЗРАБОТКА ПРОГРАММЫ АППРОКСИМАЦИИ Блок-схема алгоритма решения задачи аппроксимации методом наименьших квадратов представлена на Рис. 6. Первым шагом осуществляется ввод значений X(I),Y(I),N. Далее обнуляются значения всех коэффициентов. В цикле рассчитываются коэффициенты 3-х линейных уравнений. (см. п. 2.2). После цикла приравниваем одинаковые коэффициенты в матрице. Потом выполняется подпрограмма решения линейных уравнений. Следующим шагом происходит описание функции пользователя: FNY(X) = K(1) X 2 + K(2) X + K(3) Следующий цикл находит значения аппроксимирующей функции, разность между этими значениями и корнями дифференциального уравнения Y(I), квадрат разности, а также производит их суммирование. Далее находится величина погрешности аппроксимации и все данные выводятся на экран. Общая программа решения дифференциального уравнения с последующей аппроксимацией результатов представлена на рис. 7 вместе с программой решения дифференциального уравнения, так как из нее получают значения X(I) и Y(I). Курсовая: Решение дифференциального уравнения с последующей аппроксимацией Рис. 6. Блок-схема алгоритма решения задачи аппроксимации методом наименьших квадратов. CLS PRINT " Нахождение коэффициентов по методу Эйлера - Коши" X0 = 0.7 XN = 1.7 Y0 = 2.1 H = 0.1 N = (XN - X0) / H DIM X(N) DIM Y(N) X(0) = X0 Y(0) = Y0 FOR I = 0 TO N - 1 X(I + 1) = X(I) + H Y(I + 1)* = Y(I) + H * (X(I) + COS(Y(I) / SQR(0.3))) Y(I +1) = Y(I)+H*((X(I)+COS(Y(I)/SQR(0.3)))+(X(I+1)+COS(Y(I+1)* / SQR(0.3))))/2 PRINT " X("; I; ")="; X(I), , "Y("; I; ")="; Y(I) NEXT I I = 10: PRINT " X("; I; ")="; X(I), "Y("; I; ")="; Y(I) PRINT "Нахождение коэффициентов по методу наименьших квадратов" PRINT "и погрешности аппроксимации" a11 = 0: b1 = 0: a12 = 0: b2 = 0: a13 = 0: b3 = 0: a23 = 0: a33 = N + 1 FOR I = 0 TO N a11 = a11 + X(I) ^ 4 a12 = a12 + X(I) ^ 3 a13 = a13 + X(I) ^ 2 a23 = a23 + X(I) b1 = b1 + (X(I) ^ 2) * Y(I) b2 = b2 + X(I) * Y(I) b3 = b3 + Y(I) NEXT I a21 = a12: a22 = a13: a31 = a13: a32 = a23: S = 0 REM Начало подпрограммы решения СЛУ методом Гаусса DIM К(3) m21 = a21 / a11 m31 = a31 / a11 a22 = a22 - a12 * m21 a23 = a23 - a13 * m21 b2 = b2 - b1 * m21 a32 = a32 - a12 * m31 a33 = a33 - a13 * m31 b3 = b3 - b1 * m31 m32 = a32 / a22 a33 = a33 - a23 * m32 b3 = b3 - b2 * m32 К(3) = b3 / a33 К(2) = (b2 - К(3) * a23) / a22 К(1) = (b1 - К(3) * a13 - К(2) * a12) / a11 REM Конец подпрограммы решения СЛУ методом Гаусса DIM F(N) DEF FNY(X) = K(1) * X ^ 2 + K(2) * X + K(3) PRINT "---------------------------------------------------------------------- -------------" PRINT " X(I) | y(I) | F(x(I)) | F(x(I))- y(I) | d^2 " PRINT "---------------------------------------------------------------------- -------------" FOR I = 0 TO N F(I) = FNY(X(I)) D = F(I) - Y(I) S = S + D ^ 2 PRINT X(I), Y(I), f(I), D, D^2 NEXT I E = SQR(S / (N + 1)) PRINT "Погрешность ="; E END ЛИТЕРАТУРА 1. Витенберг И.М. Программирование на языке БЕЙСИК. Москва. «Радио и связь».1991. 2. Гери М., Джонсон Д. Вычислительные машины и труднорешаемые задачи. Пер. с англ. – Москва. «МИР» 1982. 3. Горбунова Н.Г. Методические указания к лабораторным работам по курсу Информатика, ч.2 «Численные методы» - Хабаровск, 1996. 4. Спесивцев А.В. Руководство пользователя по языку Бейсик. Москва. «Радио и связь». 1992. «ВЕСТА». 5. Методические указания для оформления пояснительных записок курсовых и дипломных проектов - Хабаровск, 1997.


(C) 2009