Численные методы и оптимизация
Вычисление значения аппроксимирующих функций в узлах аппроксимации. Проверка (аналитически) условий сходимости применяемых методов решения уравнений. Условие унимодальности и выбор начального отрезка оптимизации. Определение параметров многочлена.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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
Подобные документы
Численные методы решения нелинейных уравнений, систем линейных и нелинейных алгебраических уравнений, дифференциальных уравнений, определенных интегралов. Методы аппроксимации дискретных функций и методы решения задач линейного программирования.
методичка [185,7 K], добавлен 18.12.2014Метод половинного деления как один из методов решения нелинейных уравнений, его основа на последовательном сужении интервала, содержащего единственный корень уравнения. Алгоритм решения задачи. Описание программы, структура входных и выходных данных.
лабораторная работа [454,1 K], добавлен 09.11.2012Изучение численных методов решения нелинейных уравнений. Построение годографа АФЧХ, графиков АЧХ и ФЧХ с указанием частот. Практическое изучение численных методов интегрирования дифференциальных уравнений высокого порядка, метод Рунге-Кутта 5-го порядка.
курсовая работа [398,3 K], добавлен 16.06.2009Решения алгебраических уравнений методом выделения корней. Аппроксимация функций методом наименьших квадратов; дихотомия, бисекция. Одномерная оптимизация многоэкстремальных функций; метод золотого сечения. Многомерная оптимизация градиентным методом.
курсовая работа [956,7 K], добавлен 04.03.2013Особенности точных и итерационных методов решения нелинейных уравнений. Последовательность процесса нахождения корня уравнения. Разработка программы для проверки решения нелинейных функций с помощью метода дихотомии (половинного деления) и метода хорд.
курсовая работа [539,2 K], добавлен 15.06.2013Описание мониторинга выбросов случайных процессов контролируемых параметров. Основные принципы обработки статистических данных в базисе аддитивной аппроксимации стандартными распределениями. Разработка методов аппроксимирующих вкладов значений выборки.
контрольная работа [308,2 K], добавлен 19.08.2015Постановка задачи и ее формализация. Поиск значений интерполяционного многочлена в точках x1 и x2. Поиск минимума функции F(x) на отрезке [a;b]. Проверка условий сходимости методов. Тестирование программных модулей. Детализированная схема алгоритма.
курсовая работа [893,0 K], добавлен 04.02.2011Численные методы решения задач. Решение алгебраических и трансцендентных уравнений. Уточнение корня по методу половинного деления. Решение систем линейных уравнений методом итераций. Методы решения дифференциальных уравнений. Решение транспортной задачи.
курсовая работа [149,7 K], добавлен 16.11.2008Обзор существующих методов по решению нелинейных уравнений. Решение нелинейных уравнений комбинированным методом и методом хорд на конкретных примерах. Разработка программы для решения нелинейных уравнений, блок-схемы алгоритма и листинг программы.
курсовая работа [435,8 K], добавлен 15.06.2013Численные методы решения задачи Коши для обыкновенных дифференциальных уравнений: Эйлера, Рунге-Кутта, Адамса и Рунге. Техники приближенного решения данных уравнений: метод конечных разностей, разностной прогонки, коллокаций; анализ результатов.
курсовая работа [532,9 K], добавлен 14.01.2014