Численные методы и оптимизация

Вычисление значения аппроксимирующих функций в узлах аппроксимации. Проверка (аналитически) условий сходимости применяемых методов решения уравнений. Условие унимодальности и выбор начального отрезка оптимизации. Определение параметров многочлена.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 13.10.2017
Размер файла 48,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Курсовая работа по предмету:

Информатика

Численные методы и оптимизация

Н. Новгород 2004 год

Задание

Для заданной функции y(x) методом наименьших квадратов для степенного базиса получить линейную

F1(x) = a0 + a1x и квадратичную

F2(x) = a0 + a1x + a2x2

аппроксимирующие функции:

составить и решить систему нормальных уравнений;

определить параметры аппроксимирующих функций;

вычислить значения аппроксимирующих функций в узлах аппроксимации;

построить график заданной функции (множество точек) и графики функций линейной и квадратичной аппроксимации;

оценить качество аппроксимации.

Найти два корня уравнения F2(x) = 0 с заданной точностью Е:

отделить корни;

проверить (аналитически) условия сходимости применяемых методов решения уравнений. В случае необходимости привести уравнение к виду, обеспечивающему сходимость процесса приближения к корню;

выбрать начальное приближение;

записать рекуррентную формулу для уточнения корня;

оценить погрешность.

Вычислит dx при разбиении отрезка интегрирования на n1 = 10 и n2 = 20 подынтервалов, x1, x2 - корни уравнения:

оценить погрешность.

Определить точку экстремума функции F2(x) методами одномерной оптимизации (с точностью Е):

проверить условие унимодальности и выбрать начальный отрезок оптимизации;

записать условие окончания поиска минимума (максимума) функции.

Задание 1.

Функция y = y(x) задана таблицей.

Таблица 1

I

0

1

2

3

4

5

xi

0

2

4

6

8

10

y(x)

1

1.386

0.406

-0.939

-1.286

-0.266

Запишем параметры линейной аппроксимации:

x = = 4.285 y = = 0.043

a0 = y - a1x = 1.170952

a1 = = -0.2241571

Искомая линейная аппроксимирующая функция:

F1(x) =-0.2241571х+1.170952

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

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

а 2 = 2.545535Е-02 а 1 = -0.4787107 а 0 = 1.510357

Искомая аппроксимирующая функция:

F2(x) = 2.545535E-02 x2 - 0.4787107 x 1.510357

Значения аппроксимирующих функций F1{x} и F2{x} в узлах аппроксимации приведены в таблице 3:

X

0

2

4

6

8

10

F1{x}

1.170952

0.722638

0.274323

-0.1739

- 0.6223

-1.0706

F2{x}

1.51035

0.65475

2.799E-03

-0.4455

-0.6901

-0.7312

Таблица 3

Графики функций линейной и квадратичной аппроксимации показаны на рисунке аппроксимирующий оптимизация унимодальность

Оценим качество аппроксимации:

с = sqr(1/(n+1)* ? (Fm(xi) - y(xi))2)

Для линейной функции: р 1=0.5999658

Для квадратичной функции: р 2=0.5435526

p2<p1, значит аппроксимация квадратичной функции более качественная.

Задание 2.

Решение уравнения F2(x) с точностью Е = 10-4 . Для отделения корней уравнения F2(x) составим таблицу знаков функции F2(x).

Таблица 4

X

-1

1

3

5

7

9

11

13

15

Sign F2(x)

+

+

+

-

-

-

-

-

+

На отрезках [3 5] и [12 15] функция F2(x) меняет знаки, т.е. существует, по крайней мере, по одному корню.

Производная F2'(x) = 0.051x-0.4787107,

F2"(x) = 0.051 > 0, следовательно, производная F2'(x) - монотонно возрастающая функция.

Составим таблицу знаков функции Аэ(ч) на выбранных отрезках:

X

3

5

13

15

Sign F2'(x)

-0.32571

-0.2237

0.18423

0.2863

На отрезке [3;5] функция F2(x) монотонно убывает, причем F2'(x) сохраняет знак, отрезок [3;5] содержит корень.

На отрезке [13;15] функция F2(x) монотонно возрастает, причем F2'(x) сохраняет знак, отрезок [13;15] содержит корень.

Уточним корни методом Итераций. Воспользуемся предложенной методикой получения функции.

F2(x) - дифференцируемая и имеет разные знаки на отрезках [3;5] и [13;15].

F2'(3)<0, F2'(5)<0, F2'(x)=0

F2'(13)>0, F2'(15)>0, F2'(x)=0

Интегрирующая функция (x) = *F2(x) + x обеспечивает выполнение условий сходимости | (x)|<1

Правила выбора параметра:

-1/r < <0, если F2'(x) > 0

0 < <1/r, если F2'(x), 0,

r = max (|F2'(a)|,|F2'(b)|).

На отрезке [3;5] r = max (0.32;0.22), следовательно, r = 0.32.

Т.к. F2' < 0, 0 < <1/0.32, пусть = - 2/

На отрезке [13; 15] r = max (0.18;0.28), следовательно, r = 0.28

Т.к. F2'(x)>0, -1/0.28 < < 0, пусть = - 2

На отрезке [3;5] =2 x0=4

На отрезке [13;15] =-2 x0=15

Условия окончания поиска корня:

|Xn - Xn+1| < E

F2'(Xm) - F2(Xm+1) < E

Оценка погрешности корня:

|x*-xn| <= m*q/(1-q); q=max | `(x)|; m= |x0 - (x0)|.

На отрезке [3;5]:q=1.5963,

(x)=x; (4) = 3.98624

M=0.01376.

На отрезке [13;15]: `(x)=0.106349x, q=1.5952,

(14) = 13.5772; m=0.4227.

Результаты решения уравнений F2(x):

На отрезке [3;5] x = 4.0101372

На отрезке [13;15] x = 14.795575

Задание 3. Интеграл F2(x)dx вычислить, полагая n = 10 и n = 20 методами Симпсона, трапеций и средних прямоугольников.

Формула метода средних прямоугольников:

? F2(x)dx = h У F2(б + kh),

k-степень используемого полинома, k=2

где б = а + , h = xi+1 - xi =

Формула метода трапеций:

? F2(x)dx = (F2(a) + F2(b) + 2 У F2 (б + ih),

где h = xi+1 - xi = ,

Формула метода Симпсона:

? F2(x)dx = [(F2(a) + F2(b) + 4 (F2(x1) + F2(x3) + … + F2(x2n-1)) + 2(F2(x2) + F2(x4) + … + F2(x2n-2)) ],

где h = xi+1 - xi = ,

Результаты занесем в таблицу.

n

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

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

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

10

I = -5.349468

I = -5.269625

I = -5.322854

20

I = -5.329504

I = -5.309546

I = -5.322853

Оценка погрешности по правилу Рунге:

R =|Ih-Ih/2|/(2^k-1)

Для методов средних прямоугольников и трапеций k = 2,

Rср.пр. = 6.6546E-03 Rтрап. = 1.3307E-02

Для метода Симпсона k = 4, Rс = 1E-09

Задание 4. Для нахождения точки экстремума применим методы дихотомии и золотого сечения. Проверка унимодальности необходима для использования указанных методов оптимизации.

f(x) = F2(x)

F2(x) = 2.545536E-02*x^2 - 0.474787107*x*1.510357

F''(x) = 0.509, f''(x) > 0, следовательно,

F2(x) - унимодальная схема и имеет локальный минимум. "Золотое сечение осуществляется двумя точками:

X1 = a+(3- 5)/2*(b - a) = a+k1(b-a),

X2 = a+(- 1)/2*(b-a)=a+k2(b-a),

Где x1 - вторая точка золотого сечения отрезка [a;x2],

X2 - первая точка золотого сечения отрезка [x1;b].

X*=(an + bn)/2.

Взяв в качестве натурального отрезка [0 ; 2] и точность =0.0001, получим:

Xm = 1.999959, f(xm) = fm = 0.6547724

Текст программы:

DECLARE SUB GOLD (N!, AI!, BI!, DE!, A!(), XM!, FXM!)

DECLARE SUB DIHOTOM (N!, AI!, BI!, DE!, A!(), XM!, FXM!)

DECLARE SUB SIMP (N!, X1!, X2!, A!(), I!)

DECLARE SUB TRAP (N!, X1!, X2!, A!(), I!)

DECLARE SUB PRJAM (N!, X1!, X2!, A!(), I!)

DECLARE SUB NJUTON (DE!, X!, A!(), N!)

DECLARE SUB GAUSS (K!, G!(), B!(), A!())

DECLARE SUB GRAM (I!, K!, G!(), X!(), Y!(), B!())

DECLARE SUB ITER (DE!, L!, X!, A!(), N!)

CLS

DATA 5

READ I

DATA 2

READ K

DIM X(I), Y(I), B(K), A(K)

DIM G(K, K)

DATA 0,2,4,6,8,10

FOR N = 0 TO I

READ X(N)

NEXT N

DATA 1,1.386,.406,-.939,-1.286,-.266

CLS

FOR N = 0 TO I

READ Y(N)

NEXT N

PRINT "Матрица Граммма"

CALL GRAM(I, K, G(), X(), Y(), B())

FOR L = 0 TO K

FOR M = 0 TO K

PRINT "G"; L; ","; M; "="; G(L, M); " ";

NEXT M

PRINT "B"; L; "="; B(L)

NEXT L

PRINT "Решение системы уравнений"

CALL GAUSS(K, G(), B(), A())

FOR N = 0 TO K

PRINT "A"; N; "="; A(N)

NEXT N

PRINT "Значение апроксимирующей функции"

DIM YA(I)

FOR N = 0 TO I

FOR L = 0 TO K

YA(N) = YA(N) + A(L) * X(N) ^ L

NEXT L

PRINT "YA("; X(N); ")="; YA(N)

R = R + ((YA(N) - Y(N)) ^ 2)

NEXT N

RO = SQR(((1 / (I + 1)) * R))

PRINT "Погрешность апроксимации"

PRINT RO

PRINT "Значения F(X) F'(X)"

FOR N = -10 TO 10 STEP 2

FF = A(2) * N * N + A(1) * N + A(0)

FFF = A(2) * 2 * N + A(1)

PRINT N; " "; FF; " "; FFF

NEXT

X = 4

DE = .015

CALL NJUTON(DE, X, A(), N)

PRINT "Корни методом Ньютона"

PRINT "N="; N; " X="; X;

X1 = X

X = 14

DE = .02

CALL NJUTON(DE, X, A(), N)

PRINT " N="; N; " X="; X

X2 = X

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

X = 4

L = .5

DE = .0001

CALL ITER(DE, L, X, A(), N)

PRINT "N="; N; " X="; X;

X = 14

L = -.5

CALL ITER(DE, L, X, A(), N)

PRINT " N="; N; " X="; X

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

N = 10

CALL PRJAM(N, X1, X2, A(), I)

PRINT "N="; N; " I="; I;

I1 = I

N = 20

CALL PRJAM(N, X1, X2, A(), I)

R = ABS(I1 - I) / 3

PRINT " N="; N; " I="; I; " R="; R

PRINT "Интеграл методом трапеций"

N = 10

CALL TRAP(N, X1, X2, A(), I)

I1 = I

PRINT "N="; N; " I="; I;

N = 20

CALL TRAP(N, X1, X2, A(), I)

R = ABS(I1 - I) / 3

PRINT " N="; N; " I="; I; " R="; R

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

N = 10

CALL SIMP(N, X1, X2, A(), I)

I1 = I

PRINT "N="; N; " I="; I;

N = 20

CALL SIMP(N, X1, X2, A(), I)

R = ABS(I1 - I) / 15

PRINT " N="; N; " I="; I; " R="; R

PRINT "Экстремум методом дитохомии"

AI = -10

BI = 10

CALL DIHOTOM(N, AI, BI, DE, A(), XM, FXM)

PRINT "N="; N; "XM="; XM; "FXM="; FXM

PRINT "Экстремум методом золотого сечения"

AI = -10

BI = 10

CALL GOLD(N, AI, BI, DE, A(), XM, FXM)

PRINT "N="; N; "XM="; XM; "FXM="; FXM

Тексты подпрограмм:

SUB DIHOTOM (N, AI, BI, DE, A(), XM, FXM)

H = DE / 2

N = 0

DO

X1 = (AI + BI - H) / 2

X2 = (AI + BI + H) / 2

FX1 = A(2) * X1 * X1 + A(1) * X1 + A(0)

FX2 = A(2) * X2 * X2 + A(1) * X2 + A(0)

IF FX1 > FX2 THEN AI = X1

IF FX1 <= FX2 THEN BI = X2

N = N + 1

D = ABS(BI - AI)

LOOP UNTIL D < DE

XM = (AI + BI) / 2

FXM = A(2) * XM * XM + A(1) * XM + A(0)

END SUB

SUB GAUSS (K, G(), B(), A())

REM Вспомогательная матрица

DIM S(K, (K + 1))

FOR L = 0 TO K

FOR M = 0 TO K

S(L, M) = G(L, M)

NEXT M

S(L, (K + 1)) = B(L)

NEXT L

REM Прямой ход

FOR L = 0 TO K - 1

FOR M = L + 1 TO K

FOR J = L + 1 TO K + 1

S(M, J) = S(M, J) - S(L, J) * (S(M, L) / S(L, L))

NEXT J

NEXT M

NEXT L

A(K) = S(K, K + 1) / S(K, K)

REM Обратный ход

FOR M = K - 1 TO 0 STEP -1

A(M) = S(M, K + 1)

FOR J = K TO M + 1 STEP -1

A(M) = A(M) - S(M, J) * A(J)

NEXT J

A(M) = A(M) / S(M, M)

NEXT M

END SUB

SUB GOLD (N, AI, BI, DE, A(), XM, FXM)

N = 0

DO

X1 = (BI - AI) * .382 + AI

X2 = (BI - AI) * .618 + AI

FX1 = A(2) * X1 * X1 + A(1) * X1 + A(0)

FX2 = A(2) * X2 * X2 + A(1) * X2 + A(0)

IF FX1 > FX2 THEN AI = X1

IF FX1 <= FX2 THEN BI = X2

N = N + 1

D = ABS(BI - AI)

LOOP UNTIL D < DE

XM = (AI + BI) / 2

FXM = A(2) * XM * XM + A(1) * XM + A(0)

END SUB

SUB GRAM (I, K, G(), X(), Y(), B())

REM MATRIX

FOR L = 0 TO K

FOR M = 0 TO K

FOR N = 0 TO I

G(L, M) = G(L, M) + (X(N) ^ (L + M))

NEXT N

G(0, 0) = I + 1

NEXT M

FOR N = 0 TO I

B(L) = B(L) + Y(N) * X(N) ^ L

NEXT N

NEXT L

END SUB

SUB ITER (DE, L, X, A(), N)

N = 0

DO

XN = X + L * (A(2) * X * X + A(1) * X + A(0))

D = ABS(X - XN)

FX0 = A(2) * X * X + A(1) * X + A(0)

FXN = A(2) * XN * XN + A(1) * XN + A(0)

DF = ABS(FX0 - FXN)

IF DF > D THEN D = DF

X = XN

N = N + 1

LOOP UNTIL D < DE

END SUB

SUB NJUTON (DE, X, A(), N)

N = 0

DO

XN = X - (A(2) * X * X + A(1) * X + A(0)) / (A(2) * 2 * X + A(1))

REM PRINT XN

D = ABS(X - XN)

X = XN

N = N + 1

LOOP UNTIL D < DE

END SUB

SUB PRJAM (N, X1, X2, A(), I)

H = ABS(X2 - X1) / N

I = 0

FOR K = 0 TO (N - 1)

X = X1 + K * H + H / 2

I = I + (A(2) * (X) * (X) + A(1) * (X) + A(0)) * H

NEXT

END SUB

SUB SIMP (N, X1, X2, A(), I)

I = 0

H = (X2 - X1) / (2 * N)

I = A(2) * X1 * X1 + A(1) * X1 + A(0)

I = I + A(2) * X2 * X2 + A(1) * X2 + A(0)

C = 4

X = X1

FOR K = 1 TO (2 * N - 1)

X = X + H

I = I + (A(2) * X * X + A(1) * X + A(0)) * C

C = 6 - C

NEXT

I = I * H / 3

END SUB

SUB TRAP (N, X1, X2, A(), I)

I = 0

H = ABS(X2 - X1) / N

FOR K = 1 TO (N - 1)

X = X1 + K * H

I = I + A(2) * X * X + A(1) * X + A(0)

NEXT

FA = A(2) * X1 * X1 + A(1) * X1 + A(0)

FB = A(2) * X2 * X2 + A(1) * X2 + A(0)

I = (I * 2 + FA + FB) / 2 * H

END SUB

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.