Реферат по предмету "Компьютеры и цифровые устройства"


Метод покоординатного спуска (C++)

ОглаВЛЕНИЕ Задание 2 Краткое описание метода покоординатного спуска с удвоением шага 3 Текст программы 4 Результаты решения и его проверки 9 Результаты отыскания минимума квадратичной функции 9 Результаты решения системы линейных уравнений 9 Проверка вычислений при различных начальных векторах 10 Список литературы 12 Задание 1. Изложить метод покоординатного спуска

МПС для отыскания минимума квадратичной функции где симметричная положительно определенная матрица. 2. Реализовать МПС на компьютере с дроблением шага. В качестве критерия прекращения спуска предусмотреть из следующих а б . Продемонстрировать работу программы для Выходные данные программы где - номер последнего шага. Входные данные . Решить систему и сравнить с . Проверить вычисления при различных начальных векторах

и проследить за зависимостью от . Квадратичная функция в данном задании будет иметь вид Краткое описание метода покоординатного спуска с удвоением шага Каждый цикл метода характеризуется тем, что величина шага в течение всех n итераций цикла остается постоянной. Цикл состоит в вычислении точек . Предполагается, что в результате завершения предыдущего цикла получена величина шага . -я итерация цикла Если А , то полагают и переходят к следующей итерации.

Если В , то вычисляют . Если С , то полагают и переходят к следующей итерации. Если D , то полагают и переходят к следующей итерации. В случае, если неравенства В и D имеют место для всех , то уменьшают величину , как правило, полагая , и переходят к следующему циклу, т.е. повторяют все процедуры предыдущего цикла, но уже с двое меньшим шагом. Текст программы include stdio.h include conio.h include math.h include stdlib.h void

Readstrchar s, int max reads a string int c whilec getchar n ifmax 1 s c, max ifmax 0 s 0 void ReadMatrixint flag, double a, double c, int sz reads the matrix FILE f the matrix file int i, j ifflag 1 if that file exists f fopenmatrix.txt, rt opens file on reding and check its existence iff NULL if file dont exist printfNo file is found. n return int ch fori0 i sz i reads the matrix A and the free elements matrix from the file forj0 j sz1 j ifch fgetcf

EOF j sz fscanff, lf, aisz j else ifj sz fscanff, lf, ci fclosef closes the file else ifflag 2 if you enter a matrix yourself fori0 i sz i reads the matrix A forj0 j sz j printfEnter an Aii element , i, j scanflf, aisz j forj0 j sz j reads free elements printfnEnter an bi element , j scanflf, cj bool CheckIIdouble x, double prev, int sz, double acc, double q, double r, double e, double f checking roots by xk - xk-1 acc double n 0 double w int i,j forj0 j sz j iffabsxj

- prevj acc n ifn0 xk - xk-1 q fabsx0 - prev0 fori1 i sz i w fabsxi - previ ifw q q w e r - f fxk - fxk-1 ifn return false else return true double MPSdouble a, double c, double x, int sz, double acc, int p, double q, double e minimizes function f double prev,g,f,z,r double l 0.7 the first value of step int i,j,k,t,y prev new doublesz fori0 i sz i forj0 j sz j aisz j aisz j2 12A z 0 y0 fori0 i sz i f 12 Ax,x b,x g 0 forj0 j sz j g aisz jxj g gxi z g cixi do makes and count iterations yo fork0 k sz k prevk

xk saves previous iteration results t 0 fork0 k sz k xk - l fxk-1 - le f 0 fori0 i sz i g 0 forj0 j sz j g aisz jxj g gxi f g cixi iff z fxk-1 - le fxk-1 xk 2l fxk-1 le f 0 fori0 i sz i g 0 forj0 j sz j g aisz jxj g gxi f g cixi iff z fxk-1 le fxk-1 xk prevk t else fxk-1 le fxk-1 r z z f saves previous value of function f else fxk-1 - le fxk-1 r z z f saves previous value of function f iftsz l l2 the step subdivision goto yo p a number of steps whileCheckIIx,prev,sz,acc,q,r,e,f xk - xk-1 acc return

f delete prev void mainvoid double a, x, c, acc presents arrays and an accuracy double f,q,e int p, sz presents the size of your matrix and the number of iterations int h, i printfEnter the size of your matrix asks for the size of your matrix scanfi, sz printfEnter an accuracy asks for an accuracy scanflf, acc a new doubleszsz c new doublesz x new doublesz do asks your wish about the entering your matrix printfPress 1 if you want to read your matrix from the file matrix.txtn printfPress 2 if you want to

enter your matrix yourselfn scanfi,h ReadstrNULL, 0 whileh 1 h 2 fori0 i sz i the first approximation printfEnter the first approximation xi , i scanflf, xi ReadMatrixh, a, c, sz reads the matrix p0 q0 e0 f MPSa,c,x,sz,acc,p,q,e fori0 i sz i shows need roots by 10-numeral accuracy printfnxi .10lf, i, xi printfnf .10lf, f shows value of function f printfnnnThe number of steps in, p shows the number of steps we need printfnxk - xk-1 .10lfn, q shows xk - xk-1 printfnfxk

- fxk-1 .10lfn, e shows fxk - fxk-1 delete a delete c delete x Результаты решения и его проверки Результаты отыскания минимума квадратичной функции Копия с экрана Enter the size of your matrix 4 Enter an accuracy 1 Press 1 if you want to read your matrix from the file matrix.txt Press 2 if you want to enter your matrix yourself 1

Enter the first approximation x0 Enter the first approximation x0 Enter the first approximation x0 Enter the first approximation x3 0 x0 -1.0000976562 x1 0.0 x2 0.0 x3 -1.0000976562 f -2.3644999775 The number of steps 9 xk - xk-1 0.0006835938 fxk - fxk-388 Press any key to continue Результаты решения системы линейных уравнений Копия с экрана Enter the size of your matrix 4 Enter an accuracy 0.001

Press 1 if you want to read your matrix from the file matrix.txt Press 2 if you want to enter your matrix yourself 1 Enter the first approximation x0 0 Enter the first approximation x1 0 Enter the first approximation x2 0 Enter the first approximation x3 0 x0 -0.910679 x1 -0.040529 x2 0.04381 x3 -1.010247 c0 -2.43998 acc0 0.00002 c1 -0.77300 acc1 -0.0 c2 -0.632 00 acc2 0.0 c3 -2.28900 acc3 0.0

The number of iterations 7 Tell this program So Wassup Yea, alright Press any key to continue Проверка вычислений при различных начальных векторах Результаты вычислений сведены в таблицу Х1Х2Х3Х4Примечание 1. -1.00009765620.0.0-1 -2 -0.910679-0.0405290.04381-1 2.1-23- -1.00019531250.00019531250.0000488281-1 -2 -1.0543080.022497-0.08345-0 3.10-2030- -1.0003906250-0.0000976562-0.0001953125- 0 -2. -0. -1.00001134560.037423-0.042787-0 4. 100-200300- -1.00029296880.00039062500.0000976563-1 -2.

-0. -1.00001722560.042530-0.0000102787-0 5.1000-20003000- -1.0.0001464844-0.0000488280-1 -2 -1.023934-0.01994-0.035206-0 6.10000-2000030000- -0.99980469040.00009764700.0001952913-0 -2 -1.013968-0.014260-0.055218-0 7.10-2030- -0.99990208830.0002911854-0.0001000810-1 -2 -0.979412-0.038900-0.077247-0 8.10-2030- -1.00016174300.0001855390-0.0000929356-0 -2. -0. -0.9999898859-0.082574-0.092154-0 9.10-2030- -0.9997338118-0.00011256740.0000401392-0 -2. -0. -0.9999741289-0.0000152241-0.079577-0 Список литературы 1. В.Г. Карманов. Математическое программирование

М Наука, 1980. 2. Н.С.Бахвалов. Численные методы М. Физматлит, 1973. 3. Б.П.Демидович и И.А.Марон. Основы вычислительной математики М. Физматлит, 1960.



Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.