40 lines
1,019 B
Text
40 lines
1,019 B
Text
func eval a b c x .
|
|
return a + (b + c * x) * x
|
|
.
|
|
proc regression xa[] ya[] . .
|
|
n = len xa[]
|
|
for i = 1 to n
|
|
xm = xm + xa[i]
|
|
ym = ym + ya[i]
|
|
x2m = x2m + xa[i] * xa[i]
|
|
x3m = x3m + xa[i] * xa[i] * xa[i]
|
|
x4m = x4m + xa[i] * xa[i] * xa[i] * xa[i]
|
|
xym = xym + xa[i] * ya[i]
|
|
x2ym = x2ym + xa[i] * xa[i] * ya[i]
|
|
.
|
|
xm = xm / n
|
|
ym = ym / n
|
|
x2m = x2m / n
|
|
x3m = x3m / n
|
|
x4m = x4m / n
|
|
xym = xym / n
|
|
x2ym = x2ym / n
|
|
#
|
|
sxx = x2m - xm * xm
|
|
sxy = xym - xm * ym
|
|
sxx2 = x3m - xm * x2m
|
|
sx2x2 = x4m - x2m * x2m
|
|
sx2y = x2ym - x2m * ym
|
|
#
|
|
b = (sxy * sx2x2 - sx2y * sxx2) / (sxx * sx2x2 - sxx2 * sxx2)
|
|
c = (sx2y * sxx - sxy * sxx2) / (sxx * sx2x2 - sxx2 * sxx2)
|
|
a = ym - b * xm - c * x2m
|
|
print "y = " & a & " + " & b & "x + " & c & "x^2"
|
|
numfmt 0 3
|
|
for i = 1 to n
|
|
print xa[i] & " " & ya[i] & " " & eval a b c xa[i]
|
|
.
|
|
.
|
|
xa[] = [ 0 1 2 3 4 5 6 7 8 9 10 ]
|
|
ya[] = [ 1 6 17 34 57 86 121 162 209 262 321 ]
|
|
regression xa[] ya[]
|