Решение дифференциального уравнения с последующей аппроксимацией
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
941
31.12 31.119972
25.3228 25.3237
Таким образом, уравнение аппроксимирующей параболы имеет вид:
F (x) = 0.978384x2 - 1.682111x + 2.813899
- НАХОЖДЕНИЕ ЗНАЧЕНИЙ АППРОКСИМИРУЮЩЕЙ ФУНКЦИИ
Найдём значения функции 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. Их разность показывает величину отклонения аппроксимирующей функции от аппроксимируемой в узлах xi.
Рассчитаем погрешность аппроксимации:
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
= 0.0021939515 = 1.9945013 * 10 - 4 = 0.014122681 1.412268 * 10 - 2
Данные расчётов снесены в Таблицу 2.
Таблица 2. Расчёт погрешности аппроксимации.
IxiyiF(xi)ii200.72.12.1186220.0186223.46779 * 10 - 410.82.097632.095734- 0.0018963.59482 * 10 - 620.92.1055472.092711- 0.0128361.64763 * 10 - 431.02.1250492.109553- 0.0154962.40126 * 10 - 441.12.1577212.14626- 0.0114611.31355 * 10 - 451.22.2056132.202831- 0.0027827.73953 * 10 - 661.32.2714752.2792660.0077916.06997 * 10 - 571.42.3590452.3755670.065222.72977 * 10 - 481.52.4733282.4917320.084043.38707 * 10 - 491.62.6206262.6277620.0071365.09225 * 10 - 5101.72.8076622.783656- 0.0240065.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