Министерство образования и науки РФ
Государственное образовательное учреждение ВПО
Пермский национальный исследовательский политехнический университет
Кафедра «Металлорежущие станки и инструменты»
КУРСОВАЯ РАБОТА
по дисциплине «Информатика»
Тема: «Использование численных методов при решении инженерных задач»
Вариант - 23
Выполнила:
студентка гр. УК уск. – 11
Сюткина С.А.
Проверила:
старший преподаватель
Мышкина А.В.
г. Пермь, 2011 г.
I. Аппроксимация неизвестной функции методом наименьших квадратов
1. Линейная регрессия:
Даны значения:
X |
2 |
4 |
6 |
8 |
10 |
12 |
14 |
16 |
18 |
20 |
Y |
14,84 |
9,96 |
9,30 |
8,14 |
10,58 |
7,56 |
5,10 |
4,70 |
2,88 |
1,10 |
Найти коэффициенты a и b выражения .
Находим суммы:
i |
X |
Y |
X*Y |
X*X |
1 |
2 |
14,84 |
29,68 |
4 |
2 |
4 |
9,96 |
39,84 |
16 |
3 |
6 |
9,3 |
55,8 |
36 |
4 |
8 |
8,14 |
65,12 |
64 |
5 |
10 |
10,58 |
105,8 |
100 |
6 |
12 |
7,56 |
90,72 |
144 |
7 |
14 |
5,1 |
71,4 |
196 |
8 |
16 |
4,7 |
75,2 |
256 |
9 |
18 |
2,88 |
51,84 |
324 |
10 |
20 |
1,1 |
22 |
400 |
|
А = 110 |
B = 74,16 |
C = 607,4 |
D = 1540 |
Найденные коэффициенты a и b подставляем в уравнение и полученные значения заносим в таблицу
X |
2 |
4 |
6 |
8 |
10 |
12 |
14 |
16 |
18 |
20 |
Y |
13,0985 |
11,8358 |
10,5730 |
9,3102 |
8,0474 |
6,7846 |
5,5218 |
4,2590 |
2,9962 |
1,7335 |
Программа для вычислений коэффициентов a и b:
CLS
‘Y=a*X+b"
N = 10
DIM X(N), Y(N)
DATA 2, 4, 6, 8, 10, 12, 14, 16, 18, 20
FOR i = 1 TO N
READ X(i)
NEXT i
14.84,9.96,9.3,8.14,10.58,7.56,5.1,4.7,2.88,1.1
DATA 14.84, 9.96, 9.3, 8.14, 10.58, 7.56, 5.1, 4.7, 2.88, 1.1
FOR i = 1 TO N
READ Y(i)
NEXT i
FOR i = 1 TO N
PRINT i, X(i), Y(i)
NEXT i
a = 0: b = 0
FOR i = 1 TO N
a = a + X(i): a1 = X(i)
b = b + Y(i): b1 = Y(i)
c = c + X(i) * Y(i): c1 = X(i) * Y(i)
d = d + X(i) ^ 2: d1 = X(i) ^ 2
PRINT "i="; i, "a1="; a1, "b1="; b1, "c1="; c1, "d1="; d1
NEXT i
PRINT i; a; b; c; d
dd = (d * N) - (a * a)
da = (c * N) - (b * a)
db = (d * b) - (a * c)
PRINT "dd="; dd, "da="; da, "db="; db
a = da / dd
b = db / dd
PRINT "a="; a, "b="; b
FOR i = 1 TO N
Ya = a * X(i) + b
PRINT "i="; i, "Ya="; Ya
NEXT i
END
2. Степенная регрессия:
Заданы значения:
X |
2 |
4 |
6 |
8 |
10 |
12 |
14 |
16 |
18 |
20 |
Y |
0,56 |
0,21 |
0,11 |
0,07 |
0,05 |
0,04 |
0,03 |
0,02 |
0,02 |
0,02 |
Найти коэффициенты a и b выражения .
Прологарифмируем исходное уравнение:
Полученное уравнение является уравнением прямой линии:
Находим суммы:
I |
Ln(X) |
Ln(Y) |
Ln(X)*Ln(Y) |
Ln(X)*Ln(X) |
1 |
0,69315 |
-0,57982 |
-0,40190 |
0,48045 |
2 |
1,38629 |
-1,56065 |
-2,16352 |
1,92181 |
3 |
1,79176 |
-2,20727 |
-3,95491 |
3,21040 |
4 |
2,07944 |
-2,65926 |
-5,52978 |
4,32408 |
5 |
2,30259 |
-2,99573 |
-6,89793 |
5,30190 |
6 |
2,48491 |
-3,21888 |
-7,99861 |
6,17476 |
7 |
2,63906 |
-3,50656 |
-9,25401 |
6,96462 |
8 |
2,77259 |
-3,91202 |
-10,84643 |
7,68725 |
9 |
2,89037 |
-3,91202 |
-11,30720 |
8,35425 |
10 |
2,99573 |
-3,91202 |
-11,71937 |
8,97441 |
|
A=22,03588 |
B=-28,46424 |
C=-70,07365 |
D=53,39394 |
Коэффициенты a и b подставляем в уравнение и значения Y заносим в таблицу
X |
2 |
4 |
6 |
8 |
10 |
12 |
14 |
16 |
18 |
20 |
Y |
0,5766 |
0,2010 |
0,1086 |
0,0701 |
0,0499 |
0,0379 |
0,0299 |
0,0244 |
0,0244 |
0,0174 |
Результаты вычислений можно представить графически:
Программа для вычислений коэффициентов a и b:
CLS
PRINT "Y=a*X^b"
N = 10
DIM X(N), Y(N)
DATA 2,4,6,8,10,12,14,16,18,20
FOR i = 1 TO N
READ X(i)
NEXT i
DATA 0.56, 0.21, 0.11, 0.07, 0.05, 0.04, 0.03, 0.02, 0.02, 0.02
FOR i = 1 TO N
READ Y(i)
NEXT i
FOR i = 1 TO N
PRINT "X="; X(i), "Y="; Y(i)
NEXT i
FOR i = 1 TO N
a = a + LOG(X(i)): a1 = LOG(X(i))
b = b + LOG(Y(i)): b1 = LOG(Y(i))
c = c + LOG(X(i)) * LOG(Y(i)): c1 = LOG(X(i)) * LOG(Y(i))
d = d + LOG(X(i)) ^ 2: d1 = LOG(X(i)) ^ 2
PRINT "i="; i, "a="; a1, "b="; b1, "c="; c1, "d="; d1
NEXT i
PRINT "Summa", "A="; a, "B="; b, "C="; c, "D="; d
dd = (d * N) - (a * a)
da = (c * N) - (b * a)
db = (d * b) - (a * c)
PRINT "dd="; dd, "da="; da, "db="; db
a = da / dd
b2 = db / dd
PRINT "b2="; b2
b = EXP(b2)
PRINT "a="; a, "b="; b
FOR i = 1 TO N
y0 = Y(i)
y1 = b * X(i) ^ a
PRINT "X="; X(i), "Y="; Y(i), "y1="; y1
NEXT i
END