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