Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная.doc
Скачиваний:
3
Добавлен:
17.07.2019
Размер:
296.96 Кб
Скачать

3. Параболическая регрессия:

Заданы значения:

X

1

2

3

4

5

6

7

8

9

10

Y

-8,5

-3,5

-1,9

-0,7

0,0

-0,3

-1,5

-2,7

-5,2

-11,7

Найти коэффициенты a, b и с выражения .

Коэффициенты данной аппроксимирующей функции a, b, c находят из условия минимума функции:

Условия минимума функции сводятся к системе уравнений:

После преобразований получаем систему трёх линейных уравнений с тремя неизвестными:

При решении системы находим коэффициенты a, b, c.

Находим суммы:

I

X

Y

X^2

X^3

X^4

X*Y

X^2*Y

1

1

-8,5

1

1

1

-8,5

-8,5

2

2

-3,5

4

8

16

-7

-14

3

3

-1,9

9

27

81

-5,7

-17,1

4

4

-0,7

16

64

256

-2,8

-11,2

5

5

0

25

125

625

0

0

6

6

-0,3

36

216

1296

-1,8

-10,8

7

7

-1,5

49

343

2401

-10,5

-73,5

8

8

-2,7

64

512

4096

-21,6

-172,8

9

9

-5,2

81

729

6561

-46,8

-421,2

10

10

-11,7

100

1000

10000

-117

-1170

55

-36

385

3025

25333

-221,7

-1899,1

a

b

c

d

e

f

G

dd = (e ∙ c ∙ n + d ∙ a ∙ c + d ∙ a ∙ c) - (c ∙ c ∙ c + d ∙ d ∙ n + a ∙ a ∙ e) = 435600

da = (g ∙ c ∙ n + d ∙ a ∙ b + f ∙ a ∙ c) - (b ∙ c ∙ c + f ∙ d ∙ n + a ∙ a ∙ g) = -208230

db = (e ∙ f ∙ n + g ∙ a ∙ c + d ∙ b ∙ c) - (c ∙ f ∙ c + d ∙ g ∙ n + b ∙ a ∙ e) = 2165394

dc = (e ∙ c ∙ b + d ∙ a ∙ g + d ∙ f ∙ c) - (c ∙ c ∙ g + d ∙ d ∙ b + a ∙ f ∙ e) = -5460973

Найденные коэффициенты a, b, c подставляем в уравнение и полученные значения заносим в таблицу

X

1

2

3

4

5

6

7

8

9

10

Y

-8,0436

-4,5067

-1,9258

-0,3009

0,3679

0,0806

-1,1627

-3,3621

-6,5176

-10,6291

Результаты вычислений можно представить графически:

Программа для вычислений коэффициентов a, b, с:

PRINT "Y=a*X^2+b*X+c"

CLS

n = 10

DIM x(n), y(n)

DATA 1,2,3,4,5,6,7,8,9,10

FOR i = 1 TO n

READ x(i)

NEXT i

DATA -8.5, -3.5, -1.9, -0.7, 0.0, -0.3, -1.5, -2.7, -5.2, -11.7

FOR i = 1 TO n

READ y(i)

NEXT i

FOR i = 1 TO n

PRINT "X="; x(i); "Y="; y(i)

NEXT i

PRINT

FOR i = 1 TO n

a = a + x(i): a1 = x(i)

b = b + y(i): b1 = y(i)

c = c + x(i) ^ 2: c1 = x(i) ^ 2

d = d + x(i) ^ 3: d1 = x(i) ^ 3

e = e + x(i) ^ 4: e1 = x(i) ^ 4

f = f + x(i) * y(i): f1 = x(i) * y(i)

g = g + x(i) ^ 2 * y(i): g1 = x(i) ^ 2 * y(i)

PRINT "i="; i, "a="; a1; "b="; b1; "c="; c1; "d="; d1; "e="; e1; "f="; f1; "g="; g1

NEXT i

PRINT

dd = (e * c * n + d * a * c + d * a * c) - (c * c * c + d * d * n + a * a * e)

da = (g * c * n + d * a * b + f * a * c) - (b * c * c + f * d * n + a * a * g)

db = (e * f * n + g * a * c + d * b * c) - (c * f * c + d * g * n + b * a * e)

dc = (e * c * b + d * a * g + d * f * c) - (c * c * g + d * d * b + a * f * e)

PRINT "dd="; dd, "da="; da, "db="; db, "dc="; dc

PRINT

a = da / dd

b = db / dd

c = dc / dd

PRINT "a="; a, "b="; b, "c="; c

PRINT

FOR i = 1 TO n

y1 = a * x(i) ^ 2 + b * x(i) + c

PRINT "i="; i, "y1="; y1

NEXT i

END

Решение линейных уравнений методом дихотомии

Дано уравнение:

Отделение корней уравнения

Составляем приблизительную схему:

x

-∞

-3

-1

0

1

3

знак f(x)

+

+

+

+

+

-

+

Следовательно, уравнение имеет два действительных корня, лежащих в интервалах:

[1, 3] и [3, ].

Уточнение приближенных корней

Уточнение приближенных корней выполним с помощью метода половинного деления (метода дихотомии)

В результате вычислений с помощью программы, приведенной ниже, получили следующие значения корней:

на отрезке [1, 3] : х1 = 2,848

на отрезке [3, ] : х2 = 25,494

Программа вычисления корней с помощью метода дихотомии

CLS

10

PRINT "Введите границы интервала в определении корня"

INPUT "(A, B)="; A, B

PRINT "погрешность в определении корня"

E1 = .001

x = B: GOSUB 40: F1 = F: IF F = 0 THEN 50

x = A: GOSUB 40: IF F = 0 THEN 50

IF SGN(F1) = SGN(F) THEN PRINT "Требуется изменить интервал (A,B)": GOTO 10

20

x = (A + B) / 2: GOSUB 40

IF SGN(F1) = SGN(F) THEN B = x: F1 = F: GOTO 30

A = x

30

IF ABS(A - B) > E1 THEN 20

x = (A + B) / 2: GOSUB 40: GOTO 50

40

F = x ^ 4 - 28 * x ^ 3 + 64 * x ^ 2 - 6 * x + 79: RETURN

50

PRINT "Корень x ="; x: PRINT "Функция F = "; F

END

Определенный интеграл

Вычислить интеграл с тремя десятичными знаками по формулам левых и правых прямоугольников, трапеций и Симпсона при n = 10, оценивая точность с помощью сравнения полученных результатов.

Заданы значения:

b0

b1

b2

b3

x1

x2

n

9

-18

16

15

0,4

1,9

10

Метод прямоугольников

Приведем обобщенные формулы:

по левой стороне

по правой стороне

Программа для вычислений интегралов

CLS

PRINT " Вычисление определенного интеграла "

PRINT " методом прямоугольников "

PRINT "F = b0 + b1 * x + b2 * x ^ 2 + b3 * x ^ 3"

INPUT "Введите левую границу LG"; LG

INPUT "Введите правую границу PG"; PG

INPUT "Введите число интервалов N"; N

INPUT "Введите точность вычислений Toch"; Toch

H = (PG - LG) / N

PRINT

PRINT "Расчет по левой стороне"

FOR j = 0 TO N - 1

x = LG + H * j

GOSUB 50

I = I + F

NEXT j

I = H * I

I1 = FIX(I) + CINT((I - FIX(I)) / Toch) * Toch

PRINT "Значение интеграла, вычисленного по левой стороне I="; I

PRINT "Округленное значение интеграла, Iокр="; I1

I = 0

PRINT

PRINT "Расчет по правой стороне"

FOR j = 1 TO N

x = LG + H * j

GOSUB 50

I = I + F

NEXT j

I = H * I

I2 = FIX(I) + CINT((I - FIX(I)) / Toch) * Toch

PRINT

PRINT "Значение интеграла, вычисленного по правой стороне I="; I

PRINT "Округленное значение интеграла, Iокр="; I2

END

50

'Подынтегральная функция

b0 = 9: b1 = -18: b2 = 16: b3 = 15

F = b0 + b1 * x + b2 * x ^ 2 + b3 * x ^ 3

RETURN

Метод трапеций

Программа для вычисления интеграла

CLS

PRINT " Вычисление определенного интеграла"

PRINT " методом трапеций"

PRINT "F = b0 + b1 * x + b2 * x ^ 2 + b3 * x ^ 3"

INPUT "Введите левую границу LG"; LG

INPUT "Введите правую границу PG"; PG

INPUT "Введите число интервалов N"; N

INPUT "Введите точность вычислений Toch"; Toch

H = (PG - LG) / N

x = LG

GOSUB 50

I = F / 2

x = PG

GOSUB 50

I = I + F / 2

FOR j = 0 TO N - 1

x = LG + H * j

GOSUB 50

I = I + F

NEXT j

I = H * I

I = FIX(I) + CINT((I - FIX(I)) / Toch) * Toch

PRINT "Значение интеграла I="; I

END

50

'Подынтегральная функция

b0 = 9: b1 = -18: b2 = 16: b3 = 15

F = b0 + b1 * x + b2 * x ^ 2 + b3 * x ^ 3

RETURN

Метод Симпсона

где

Программа для вычисления интеграла

CLS

PRINT " Вычисление определенного интеграла"

PRINT " методом Симпсона"

PRINT "F = b0 + b1 * x + b2 * x ^ 2 + b3 * x ^ 3"

INPUT "Введите левую границу LG"; LG

INPUT "Введите правую границу PG"; PG

INPUT "Введите число интервалов N"; N

INPUT "Введите точность вычислений Toch"; Toch

H = (PG - LG) / (2 * N)

x = LG

GOSUB 50

I = F

x = PG

GOSUB 50

I = I + F

FOR j = 1 TO 2 * N - 1 STEP 2

x = LG + H * j

GOSUB 50

I = I + 4 * F

NEXT j

FOR j = 2 TO 2 * N - 2 STEP 2

x = LG + H * j

GOSUB 50

I = I + 2 * F

NEXT j

I = H / 3 * I

I = FIX(I) + CINT((I - FIX(I)) / Toch) * Toch

PRINT "Значение интеграла I="; I

END

50

'Подынтегральная функция

b0 = 9: b1 = -18: b2 = 16: b3 = 15

F = b0 + b1 * x + b2 * x ^ 2 + b3 * x ^ 3

RETURN

Таблица полученных результатов.

Число интервалов

прямоугольников

трапеций

Симпсона

по левой стороне

по правой стороне

10

58,086

77,605

68,643

67,464

100

66,492

68,444

67,548

67,464

Наиболее точные значения вычисления определенного интегралов, будут при большем числе разбиений отрезка интегрирования. При разбиении на N = 10 более точные результаты дает метод Симпсона.

Интерполирование

Дана таблица значений

X

Y

-3

-5

-1

-10

2

2

3

-10

Определить значения функции для х = -2, 0, 1 с точностью 0,01.

Таблица результатов:

X

Y

ф. Ньютона

ф. Лагранжа

-2

-12,33

-12,33

0

-3,30

-3,30

1

2,47

2,47

График функции:

Программа интерполяции по формуле Ньютона

CLS

PRINT "Интерполяционная формула Ньютона"

INPUT "Введите количество точек N="; N

INPUT "Аргумент X = "; X

NPUT "Точность Toch = "; Toch

FOR I = 0 TO N

PRINT "X ("; I; "), Y ("; I; : INPUT ") ="; X(I), Y(I)

NEXT I

L = Y(0): S = 1

FOR I = N TO 1 STEP -1

I1 = N - I

FOR K = 0 TO I - 1

Y(K) = (Y(K + 1) - Y(K)) / (X(K + 1 + I1) - X(K))

NEXT K

S = S * (X - X(I1)): L1 = L

L = L + Y(0) * S

NEXT I

L = FIX(L) + CINT((L - FIX(L)) / Toch) * Toch

PRINT "L ("; X; ") ="; L

END

Программа интерполяции по формуле Лагранжа

CLS

PRINT "Интерполяционная формула Лагранжа"

INPUT "Введите число точек N="; N

DIM X(N), F(N)

FOR I = 0 TO N

PRINT "[X("; I; "), F ("; I; : INPUT ")]="; X(I), F(I)

NEXT I

SCREEN 9

'границы экрана

LG = -20 'левая

PG = 20 'правая

NG = -20 'нижняя

VG = 20 'веохняя

WINDOW (LG, NG)-(PG, VG)

FOR I = 0 TO N

PSET (X(I), F(I))

CIRCLE (X(I), F(I)), .1, 12

NEXT I

‘оси координат

LINE (0, -10)-(0, 10)

LINE (-10, 0)-(10, 0)

INPUT "вычислить значение функции для X = "; X

INPUT "с точностью Toch = "; Toch

FOR J = 0 TO N - 1

FOR I = J + 1 TO N

F(I) = ((X - X(J)) * F(I) - (X - X(I)) * F(J)) / (X(I) - X(J))

NEXT I

NEXT J

PSET (X, F(N - 1))

CIRCLE (X, F(N - 1)), .1

F1 = F(N)

F1 = FIX(F1) + CINT((F1 - FIX(F1)) / Toch) * Toch

IF F1 > VG THEN LOCATE 3, 5: PRINT "Выход за верхнюю границу": GOTO 50

IF F1 < NG THEN LOCATE 3, 5: PRINT "Выход за нижнюю границу"

50

LOCATE 4, 5: PRINT "F"; "("; X; ") ="; F1

END

Решение систем линейных уравнений

Метод Гаусса.

Это метод решения системы линейных уравнений, состоящий в том, что последовательным исключением неизвестных систему

приводят к эквивалентной системе с треугольной матрицей:

Решение матрицы находят по рекуррентным формулам:

Дана система:

Построим определители

Результаты вычислений:

x 1 = 25,515 x 2 = 31,070 x 3 = 38,665 x 4 = -5,160

Программа решения системы линейных уравнений по методу Гаусса

CLS

PRINT "Решение системы линейных уравнений по методу Гаусса"

INPUT "Количество уравнений N = "; N

DIM A(N, N + 1), X(N)

PRINT "Ввод коэффициентов уравнений:"

FOR I = 1 TO N

FOR K = 1 TO N + 1

IF K = N + 1 THEN PRINT "правая часть:"

PRINT "A ("; I; ","; K; : INPUT ")="; A(I, K)

NEXT K

NEXT I

INPUT "точность Toch = "; Toch

FOR I = 1 TO N

FOR K = 1 TO N + 1

IF K = N + 1 THEN PRINT "правая часть:"

PRINT "A ("; I; ","; K; ")="; A(I, K)

NEXT K

PRINT

NEXT I

U = 0

10

U = U + 1: K = U

20

IF A(K, U) <> 0 THEN 30

K = K + 1: IF K <= N THEN 20

PRINT "система не определена"

END

30

IF K = U THEN 40

FOR M = U TO N + l

T = A(U, M)

A(U, M) = A(K, M)

A(K, M) = T

NEXT M

40

FOR J = N + 1 TO U STEP -1

A(U, J) = A(U, J) / A(U, U)

NEXT J

M = N + 1

IF K + 1 > N THEN 50

FOR I = K + 1 TO N

FOR J = U + 1 TO M

A(I, J) = A(I, J) - A(I, U) * A(U, J)

NEXT J

NEXT I

50

IF U <> N THEN 10

FOR I = N TO 1 STEP -1

X(I) = A(I, M)

IF I = 1 THEN 60

FOR K = I - 1 TO 1 STEP -1

A(K, M) = A(K, M) - A(K, I) * X(I)

NEXT K

60

NEXT I

PRINT "Решение системы равно:"

FOR I = 1 TO N

X(I) = FIX(X(I)) + CINT((X(I) - FIX(X(I))) / Toch) * Toch

PRINT "X ("; I; ")="; X(I)

NEXT I

Оптимизация. Методы поиска для функции одной переменной

Дана целевая функция:

Вычислим функцию следующими методами:

Метод деления пополам

Ответ:

Х = 9,682417Е-02

F = 2,351603Е-05

CLS

10 PRINT "ВВЕДИТЕ ИНТЕРВАЛ"

'NPUT "(A, B)="; A, B

‘A = 0: B = 1

E1 = .00001

X = B: GOSUB 40: F1 = F: IF F = 0 THEN 50

X = A: GOSUB 40: IF F = 0 THEN 50

IF SGN(F1) = SGN(F) THEN GOTO 10

20 X = (A + B) / 2: GOSUB 40

IF SGN(F1) = SGN(F) THEN B = X: F1 = F: GOTO 30

A = X

30 IF ABS(A - B) > E1 THEN 20

X = (A + B) / 2: GOSUB 40: GOTO 50

40 F = -6 + 61 * X + 10 * X ^ 2: RETURN

50 PRINT "X ="; X: PRINT "F = "; F

END

Метод простой итерации

CLS

'INPUT "X ="; X

‘X = -1

E1 = .0000000001#

N = 100

FOR i = 1 TO N

GOSUB 500

IF (F - X) < X * E1 THEN 1000

X = F

NEXT i

PRINT " нет точности"

STOP

500

F = -6 + 61 * X + 10 * X ^ 2

RETURN

1000 PRINT " X ="; X: END

Х = 9,682421Е-02

Метод хорд

INPUT "НАЧАЛЬНОЕ ПРИБЛИЖЕНИЕ X1=";X1

Е1=1Е—8

Н=1E—4

100

Х = Х1: GOSUB 500: Y = F

Х = Х1+Н: GOSUB 500

Y = Y * Н / (F —Y)

Х1 =Х1 — Y

IF ABS (Y)>E1 THEN 100

Х = Х1: GOSUB 500

GOTO 1000

F = -6 + 61 * X + 10 * X ^ 2

RETURN

1000

PRINT "КОРЕНЬ. X="; X1

END

Х = 9,682424Е-02

19