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

Информация - Компьютеры, программирование

Другие материалы по предмету Компьютеры, программирование

941

31.12 31.119972

25.3228 25.3237

 

Таким образом, уравнение аппроксимирующей параболы имеет вид:

F (x) = 0.978384x2 - 1.682111x + 2.813899

 

  1. НАХОЖДЕНИЕ ЗНАЧЕНИЙ АППРОКСИМИРУЮЩЕЙ ФУНКЦИИ

 

Найдём значения функции 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