Смекни!
smekni.com

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

График аппроксимирующей

функции представлен на рисунке 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.