Текст
                    В.И.Ракитин, В.Е.Первушин
ПРАКТИЧЕСКОЕ
РУКОВОДСТВО
ПО МЕТОДАМ
ВЫЧИСЛЕНИЙ
с приложением
программ
для
персональных
компьютеров
(Й)
Москва «Высшая школа» 1998


Уда 519.6 ББК 22.19 Р19 Рецензенты: кафедра вычислительной математики и программирования Московского государственного авиационного института (технического университета) (зав. кафедрой чл.-кор. РАН, проф. У.Г. Пирумов); д-р физ.-мат. наук, проф. Э.М. Карташов Рекомендовано Министеротвом общего и профессионального образования Роооийокой Федерации для использования в учебном процеоое • отудентами высших технических учебных заведений Ракитин В.И., Первушин В.Б. Р19 Практическое руководство по методам вычислений с приложе- приложением программ для персональных компьютеров: Учеб. пособие. - М.: Высш. шк., 1998. - 383 с: ил. ISBN 5-06-003342-2 Пособие содержит материал, предусмотренный программой по дисциплине "Вычислительная математика и программирование для ЭВМ". В каждой главе даютоя необходимые теоретические оведе- ния, примеры, иллюстрирующие применение различных численных методов, и упражнения для самостоятельного решения. В прило- приложениях приводятоя блок-схемы и тексты программ на языках BASIC, PASCAL, FORTRAN . Для студентов втузов. Может быть также полезно преподава- преподавателям, инженерам и научным работникам. ISBN 5-06-003342-2 (С) Издательство «Высшая школа», 1998
11МКДЙ! 1ЛОИИИ Данное пособие написано в соответствии с прог- программой по дисциплине "Вычислительная математика и программирование для ЭВМ", изучаемой студентами технических вузов. Значительная часть материала пособия была использована авторами при чтении кур- курса по численным методам в Московском государствен- государственном университете инженерной экологии и факуль- факультативного курса "Компьютерное моделирование в выс- высшей математике" в московской государственной гео- геологоразведочной академии. Книга состоит из девяти глав и приложений. Эти главы охватывают следующие разделы программы: по- понятие линейного нормированного пространства; мето- методы численного решения систем линейных уравнений; методы численного решения нелинейных уравнений ш систем; среднеквадратичное приближение функций; интерполирование функций; численное дифференциро- дифференцирование и интегрирование; численное решение обыкно- обыкновенных дифференциальных уравнений; численные мето- методы поиска экстремума функций одной и нескольких переменных. В каждой главе приводятся необходимые теорети- теоретические сведения (основные теоремы, определения, формулы, различные вычислительные методы и т.д.), а также примеры, иллюстрирующие применение описан- описанных методов. Кроме того, имеются упражнения для самостоятельного решения и ответы к ним. Приложения содержат блок-схемы вычислительных алгоритмов и тексты программ для рассмотренных численных методов на елгоритмических языках BASIC, PASCAL, FORTRAN и С. Тексты трех программ написаны на языке QUICKBASIC. Основная цель пособия — помочь развитию прак- практических навыков у читателя в применении численных методов. По мнению авторов, достижению этой цели прежде всего способствует единообразный подход к
Предиоло: изложению материала книги. Каадая тема содержит: вычислительный алгоритм; теоретические обоснования его применения; условия окончания вычислительного процесса; примери, полностью или частично выпол- выполненные "вручную"; упражнения и ответы к ним; при- приложение, в котором рассматриваемый вычислительный алгоритм представлен в виде блок-схемы и текстов программ на четырех (иногда — на пяти) алгоритми- алгоритмических языках. Авторы надеются, что овладению численными мето- методами будет способствовать и большое количество подробно решенных примеров, а также упражнений для самостоятельной работы. Следует отметить, что час- часто различные вычислительные алгоритмы иллюстриру- иллюстрируются одними и теми же примерами, кроме того, для многих рассмотренных в книге примеров известны аналитические решения, с которыми можно сравнивать найденные численные решения. Совпадение результа- результатов, полученных разными способами, является допол- дополнительным, наглядным аргументом применимости того или иного численного метода. Наконец, помощь в практическом применении чис- численных методов окажут приложения к данной книге. В них приведены блок-схемы и тексты 95 программ (с комментариями) на используемых в учебной практике алгоритмических языках. Изложенный в приложениях материал можно применять не только при изучении численных методов, но и в качестве готовых прик- прикладных программ, работа которых проверена в прог- программных средах фирм BORLAND и MICROSOFT для пер- персональных компьютеров (в программах на языке FORTRAN используется транслятор Microsoft Fortran 5.0). Настоящее пособие предназначено для студентов высших технических учебных заведений. Оно может также оказаться полезным преподавателям, инженерам и научным работникам, использующим в своей дея- деятельности вычислительные методы. Авторы
ГЛАВА 1 ПОНЯТИЕ ЛИНЕЙНОГО НОРМИРОВАННОГО ПРОСТРАНСТВА §1. ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ. ПРИМЕРЫ ЛИНЕЙНЫХ НОРМИРОВАННЫХ ПРОСТРАНСТВ Определение. Множество L, состоящее из элементов х, у. г называется лиюйиш пространством, если на этом множестве опре- определены две операции - сложение оломоптов и умножение элемента на число, удовлетворяющие следувдим условиям (аксиомам): 1) х + у = у + х V х, у е L; 2) х + (у + z) = (х + у) + z V х, у, z « Ь;. 3) существует "нулевой элемент" 0 € L такой, что х + 0 = х V х е L; 4) V х € L существует "противоположный элемент" -х такой, что х + (-х) = 0; 5) М\&) = (А+1)г V х € L, А., ц € R; 6) 1 -х ¦ х V х с L; 7) (\ + \l) х = кх + цх V х е L, \, ц, « R; 8) А.(Х + у) = Ах + А|/ V X, у € L, А, € R. Развость влвментов х - у определяется соотношением х - у = х + (-у). ОпреОелекие. линейное пространство L называется нормировавинм, если каждому элементу х е L поставлено в соответствие действи- действительное число, называемое нормой элемента и обозначаемое |х|, причем удовлетворены следующие условия (аксаонн норм): 1) |х| > 0; условие |х| » 0 эквивалентно условию х = 0; 2) |ХЛ1 = |Х||Х|, А. € R; з) |х + у| < |х| + |у| v I, у а. Расстоааю ct(x,y) между шюментами х и у линей- линейного нормированного пространства определяется как норма разности этих элементов, т.е.
6 Глава 1. Линейное нормированное пространство ПРИМЕРЫ ЛИНЕЙНЫХ НОРМИРОВАННЫХ ПРОСТРАНСТВ 1. Множество действительных чисел R является линейным норми- нормированным пространством, где норма - это абсолютная величина чис- числа, а расстояние й(х,у) = %х-у% = \х-у\ (х, у € RJ. 2. Нормированные пространства n-мерных векторов Упорядоченная совокупность п действительных чисел хЛ,х2,...,хп называется п-мервым вектором х е Rn. а числа х^,х2,...,хп - его координатами. Суммой двух п-мерннх векторов х и у называется п-мерный век- вектор, координаты которого равны суммам соответствующих координат Хк+Уъ (й=1, 2,...,п) векторов х и у. Произведением n-мерного вектора х ва число \ называется n-мерный вектор Ах, координаты которого получаются из координат вектора х умножением их на число К. Будем записывать вектор х в виде "¦ l На векторах линейного пространства Rn можно, в частности, определить следующие три нормы (и соответственно три линейных нормированных пространства): |х|т= тах{ |л?11, \х2\ \хп\) (т-норма или кувическая норма); (l-норма или октавдрнческая норма); fft-норма или сферическая норма). Пример 1. Вычислить ра с стояние между векторами х и у для каждой из трех введенных норм, если
§1. Примеры линейных нормированных пространств Решение. Найдем вектор разности х - у = Согласно определению расстояния между векторами как норме их разности, получим d(x,y)j « |x-ylt = РЗ+4 -7; d(X,y)A = |Х-У1Ь = JoW+4* = 5. я Пример 2. На плоскости R2 найти множества точек, удовлетворяю- удовлетворяющих условию ЦхЦ = 1. Решение получить в проотранстве R2 для трех норм: а) m-нормы; б) I-нормы; в) fc-нормы. Решение. По определению, сфера (в частности, окружность) - это множество точек, находящихся на заданном расстоянии от некото- некоторой точки, называемой центром сферы. Условие |х|=1 определяет сферу единичного радиуса с центром в начале координат. Геометри- Геометрический образ сферы зависит от рассматриваемого линейного норми- нормированного пространства. В данном примере получим три различных геометрических образа формально определенной сферы (рис. 1-3). На плоскости 0х^х„ "точке (х^Хр) соответствует вектор 2 B) а) В пространстве R2 с m-нормой условие |х| = 1 эквивалент- эквивалентно соотношению max (Ix^^Xgl) = 1 ' или объединению двух множе'ств точек на плоскости 0х^х2: ((х^,хг): \х^ |=1,|х2|<1; и {(x1fx2): |х11<1,|х2|=1>. Это множество является границей квад- квадрата (рис.1 -1 х2 0 Рис. ). 1 ¦¦1 -1 1 / > 1 \ 0 у f -1 Рис.2 \ 1 / / хл -Д Рис 1 ^ 1 0 I X -1 3
8 Глава 1. Линейное нормированное пространство б) В пространстве R2 с 1-нормой равенство |х|г=|х1 определяет множество точек, образующих границу, квадрата (рис.2). Действительно, условие |x1j+Ja^|=i эквивалентно соотношения! ж,+а^-1 при =\ при 0, о, -Х|+;г2=1 при л?1 < 0, хг 0; 0; 0; ^-12=1 при хл < 0, лг2 < О, которые позволяют выполнить чертеж последовательно в каждой четверти плоскости Ох^х^. в) По й-норме условие 1х1л= \^ + з| =1 определяет удаленные на единицу от начала координат точки, лежащие на окружности (рис.3). ш Можно убедиться, что в пространстве R3 с т-, I-, ^-нормами .условие 6zlm=lx|^=lzlfe=i определяет множества точек, лежащих соответственно на гранях куба, октаэдра и на поверхности сферы. Последнее мотивирует названия введенных норм. 3. Нормированные пространства матриц размера п на m Определение. Прямоугольная таблица чисел из п строк и т столб- столбцов называется матрицей размера п на яг. Будем обозначать матрицу так: А = (а IJ) а12 ап1 Числа а ((=1,2 п; J=1,2,...,т) называются элементами мат- рицы. Нижние индексы t и J элемента а( указывают номера строки и столбца, на пересечении которых находится этот элемент в таб- таблице. Матрица А называется квадратной порядка п, если п=т. Матрицы одинакового размера образуют линейное пространство, если для любой пары матриц A=(at.) и B=(bt.) определена матрица
§1. Примеры линейных нормированных пространств 9 суммы MB, составленная из элементов (а{. + b{,)> a умножение матрицы на число определено как умножение каждого элемента мат- на это число (t=1,2,...,n; /=1,2,...,m). Для матриц 4=(at,)nKm определим следущие три нормы: 1-41= max С 2 \а,А > (и-норма); ,= max { 2 \ai A } (I-норма); 1?j^m (=1 J ДД^, (&-норма). Ори m=1 матрица ii представляет собой п-мерный вектор. Ранее введенные нормы для векторов совпадают с нормами, определенными в частном случае для матриц размера п«1. Пример 3. Вычислить нормы матрицы А = Г 1 -1 2 1 1 3 -1 2 0-1 1 1 -1 Решение. Используя определения норм, получим *» ¦ Щп= max A*1+2, 1+3+1, 2+0+1, 1+1+1) = шах D, 5, 3, 3) = 5; ||Л1г= max {1+1+2+1, 1+3+0+1, 2+1+1+1) = max <5, 5, 5} = 5; Щк= 4A2+1г+22)+A2+32+12)+B2+02+12)+A2+12+12) = 5. я В кавдой точке некоторой области пространства Rn могут быть определены п функций, непрерывных вместе со своими частными производными. Тогда в каждой точке можно определить функциональ- функциональную матрицу порядка п. Определение. Матрицей Якоби системы функций {/., Щ,х2,...,хп), f2(Lx1,x2,...,xn),...,fn{x^fx2,...,xn)} называется функциональная квадратная матрица порядка п следующего вида:
10 Глава 1. Линейное нормированное пространство ax2 .2fc ax. Нормы матрицы Якоби в точке х вычисляются по формулам |j(x)|m= max I 2 |^«l } (m-норма); |J(x)|t» max B. |S?* ) (Z-норма); (fc-норма). ( 1 p 1 g -4 Прямер 4. Дана система функций \ - (х, + х| ); - х^ + 1 >. Найти множество IcR2, на котором выполняется неравенство 1 Р 1 - ^(х,,^)» - (х1 + х* ); /2A^X2)= - х^ + 1 Решение. Здесь Из определений матрицы Якоби и m-нормы матрицы следует ах, ах2 ах, ах2 2 о f l2l max I - + -2 ; « ^ 4 2 ,1 Заданное неравенство выполняется в точкак открытого прямоуголь- прямоугольника {(х,,х2): |х,| < 1, |х2| < 3/2) (рис.4). т
Примеры линейных нормированных пространств -1 PUC.4 4. Норшроваввые пространства на множестве функций, непрерывных на отрезке [а,Ь] Можно показать, что множество непрерывных функций на от- отрезке 1а,Ъ] относительно операций сложения x(t)+y(?) и умножения на число Xx(t) образует линейное пространство Cta bJ (t € ta.ol; X e R; x(t), y(t) e c[a(b]). Норма ||x||G называется равномерной на С[а fc] или С-норыой, если Норма №i 2 называется квадратичнов на С[а ь], если Расстояния между функциями x(t), y(t) € C[a b] no равномер- равномерной и квадратичной нормам вычисляются соответственно по формулам )с= В^-У!с = пах 2= J J
12 Глава 1. Линейное нормированное пространство Пршер 5. Вычислить равномерную и квадратичную нормы функций x(t) и y(t) я определить расстояния й(х,у)с и й{х,у) 2, если X(t) - Bin t\ y(t) ш COS t (t € [0.1C]). ' L Решение. Используя приведенные определения, получим lain t|L» max lain t\ = 1, Icos «„= max I cos t\ = 1, c CKtec c 0<t<ic 0<t<ic d(8ln t, cos t),, = lain t - coa ti_ = max I sin t - coa tl ic ic ic = max lain t - sln( — t)| =2 cos - max lain (t —)| = CXt^ic 2 4 CKt«c 4 ГГ ? I ? i-coa2t 1 Г5 Г5 |aln t|| P= I aln2tdt= I dt = — I \dt - - Г ^J *• J 2 f?J 2 J coa2tdBt)= 2 J О i I % i ; ПГ = — J t - - 3ln2t = J - , i? 0 2 0 2 Г5 з I %r 1+CO32t ПГ J Jcoa2tdt = J I dt = J - . Цсов t| 2 о о d(sin t, coa t) , = Jain t - coa tl , =¦ it ir = J J(slnt - coatJdt = J JA -; 2slntcost)dt = о ic % | ic = t 0 - 2 Г alnt d(slnt) = J ic - sln2t 0 Заметим, что для заданной функции x(t) и заданного числа б > 0 неравенство d(x,y)c < е означает, в частности, что график функции y(t) расположен в полосе между графиками функций x(t)-e и i(t)+s (рис.5). Это вытекает из равносильности неравенств
81. Примеры линейных нормированных пространств 13 x(t).y(t) x(t)+e x(t) x(t)-e d(x,yH < ~» \x(t) «- X(t)- i i a s - у 6 < Rtc. 5 (t)| < e V y(t) < x(t)+e УНиожпсЛшЯ ! i I b R*-y| < t € ta, V t € t e «-» Ы — f5l Г21 f el Г о] 1. Даны векторы а=| , b=j I, c=I ?q I, d=| у I. Вычислить их n-, l- и й-нормы и найти расстояния d(a,b) и d(c,d) для каждой из этих норм. Z. Даны два вектора а =| I и Ь=| I. На координатной плоскос- плоскости 0х1х2 указать множество точек (х^,хг), для которых: а) |х-а|т ^ 2; б) Цх-ЬЦ^ > 1; в) Цх+ЬЦг= 2; Г) |х-(а-2Ь)|т ^ 3; д) Цх-аЦ^+^-ЬЦ^ = 4. 3. На плоскости R2 указать множество точек X, для которых выпол- выполняется неравенство Ц^(х)|т < 1, где J(x) - матрица Якоби следующих систем функций: о 1 а) ^(x^Xg) = x^ + - x2, б) /1(x1,x2) = In x2, / p ч v***!» > о ' — p о 9 - - /2(х1 1 Р 1 - з* - - хг = - сое 2
Глада 1. Линейное нормированное пространство Д) 1 <? 1 COS Xr>, eln 4. Вычислить равномерные и квадратичные нормы функций x(t) i и и определить расстояния й(х,у)с, d(x,y) 2, если: х a) x(t) = I - t, y(t) = t* - t, t e CO, 1]; 0) x(t) = e*, y(t) = 1 - t, t e CO, II; в) x{t) = In t, r) x(t) = sin t, y(t) = t, t € CI, 1 - - t, t € [0, 1С]. 1С §S СХОДИМОСТЬ ПОСЛЕДОВАТЕЛЬНОСТЕЙ В ЛИНЕЙНЫХ НОРМИРОВАННЫХ ПРОСТРАНСТВАХ Определение. Последовательность элементов (х^*Ь (й=1,2,...) линейного нормированного пространства называется сходящейся к элементу а этого пространства, если расстояние d(x^*^,a) - О при к - ». При этом элемент а называют пределом последователь- последовательности {х^*Ь (ft=i ,2,...) и пишут a ^*^ 1°. Сходимость последовательностей п-мерных векторов и матриц Пусть в пространстве Rn дана последовательность векторов 1х (»b ,2....): r(D = <2У| хB) Х A) и "некоторый вектор« теорема. а =  °2 тогда справедлива следущая
82. Сходимость пооледователъноотей 15 1. Последовательность векторов A) сходится (по я-, I-, к- нормам) при ft - да к вектору а тогда и только тогда, когда существуют пределы числовых последовательностей координат век- векcl = llm 1 llm 5,.... а = llm n торов xv т.е. сходимость последовательности векторов A) равносильна покоординатной сходимости этих векторов. Припер 1. Показать, что последовательность векторов Г 1 - A/й) 1 Л*) 1 + A/й) -2/Ji I з + A/й) J сходится к вектору а = Для любого е > 0 найти номер, начиная с которого для всех чле- членов последовательности векторов х^ выполняется неравенство d(x^*',a) = |х^*) - аЦ < е. Решение. На основании теоремы 1 сходимость последовательности ве- векторов х^*' к вектору а следует из того, что существуют пределы а„ = llm хг>= llm |1 — 1= т, cu= llm гД*;= llm [ 1 + - = 1, I»-» cu= llm ^*}= llm 3 JHoo J fc-ко Кроме того, I1 1 U' й1 Г 1 =0, а.= llm xi*J= llm Г 3 + - I 3. )- a = и r(*> _ max Г-1/й ¦ 1/й -2/Jfe . 1/й. 2 — < e; тогда для любого е > О рас- стояние d(xv ;,a) < e, начиная с номера й > -*• (в частности, если б = 10~2, то й > 40000). в ' В линейном нормированном пространстве матриц размера п*т справедлива теорема, аналогичная теореме 1.
16 Глава 1. Линейное нормированное пространство Теорема 2. Пусть в пространстве матриц тельность матриц (Л**Ъ: задана последова- r°11 °12 Л*)_ > • • • 1" — ч !?' Последовательность B) сходится (по п-, I- или й-норме) к мат- a , a ^ ... a n" n2 - ran - тогда и только тогда, когда последовательности элементов affl матриц 4(l8' сходятся к соответствующим элементам а матрицы А: *-мо 2й. Сходимость последовательностей непрерывных функций Пусть на отрезке 1а,Ы определена последовательность непре- непрерывных функций: *A)(t), x{2){t) x(>)(t), ... C)" Определение. Говорят, что последовательность функций' ix^ht)) (fe=1,2,...) сходится в точке tQ € [а,о], если существует пре- предел числовой последовательности {x^*'(tQ)}. Определение. Последовательность C) сходится поточечно к функ- функции x{t) на отрезке 1а,Ъ], если она сходится в каждой точке этого отрезка к значению функции x(t). Иначе, если для V е > О 3 K{e,t) такое, что V й > K(e,t) выполняется неравенство \x(-kUt)-x\t)\ < e (t € 1а,Ы).
$8. Сходимость последовательностей 17 ХНУ 1 +e -E . ¦ ' (t) 1 Рис.6 Puc.7 Припер 2. Последовательность степенных функций t, t?...,t*... сходится поточечно на отрезке [0,11 к разрывной функции (рис.6) {О при 0 ? t < 1; 1 при t = 1. x(t) при t Определение. Говорят, что последовательность функций (x^k4,t)} сходится равномерно к функции x(t) на отрезке [а,Ы, если рас- расстояние между общим членом последовательности x^(t) и функцией x(t) стремится к нулю при й - со по равномерной норме, т.е. llm (Цх^Кх)^ = llm жх^\х^М)-х{г)\ = 0. Иначе говоря, для V е > 0 3 Я(8) такое, что для V й > Я(е) и для V t € [a.bl выполняется неравенство \x^(t)-x(t)\ < е шли, начиная с некоторого числа К(в), выполняются соотношения X(t) - Е < X^Ut) < X(t) + 6. Геометрически это означает, что графики функций x^k\t) на отрезке [а,о] находятся внутри полосы шириной 2е, центром кото- которой является график функции x(t) (рис.7). Припер 3. Последовательность функций x***( 1+ft+t определена на отрезке [0,1]. Она сходится поточечно к функции x(t)=? на отрезке [0,11, так как kt t llm x(fe)(t) = llm fc-к» 1 + fe + t = lim t. - т 1 + ? й т й Эта последовательность сходится равномерно к той же функции
18 Глава 1. Лшювнов вормроватю* пространство x<*>x 1 0 / '/У A x(t)+e x(t)-e _* (t)- t э :. kt Puc.8 x{t) - t на отрезке [0,1]. Действительно, = max | t\ - max <Kt?1 1+A+t 0^t^1 1+fcft 2 = max < -* 0 при t - oo. 1 + к +t 1 + A На рис.8 показано взаимное расположение предельной функции x(t)=t и некоторых членов последовательности x^(t) на [0,1]. в Определение. Говорят, что последовательность функций {?^(Ш (й=0,1,..) сходится в средней квадратичном к функции x(t) на отрезке [а,Ь], если расстояние между общим членом последова- последовательности x^ht) и функцией x(t) стремится к нулю при к - » по квадратичной норме, т.е. Р lim d(x(fe),x) Р= llm J f (x(*)(t)-x(f)Jdt = 0. Заметим, что из равномерной сходимости последовательности функций tx^ht)} к функции x(t) на отрезке Са.о] следует ее сходимость в среднем квадратичном к функции x(t) на 1а,Ъ1: из неравенства max J(b-a) видно, что если d(x(j8*,x)c - 0, то и d(x(*^,x) 2 -> 0. Обратное утверждение неверно.
68. Сходимость последовательностей 19 Щашр 4. Показать, что последовательность kt 1+ftt (Й-1,2,...) СХОДИТСЯ К ФУНКЦИИ X(t)a1 HB ОТрвЗКв [0,1] в среднем квадратичном, во не сходится к ней равномерно. Решение. Вычислим расстояния между x^{t) и x(t) по квадратич- квадратичной и равномерной нормам: .„ rr JL 1+ftt . г A+ftt)' ft 11 1 I- = -» * Lfcd+ft) й J ^ 0 при й -* со (сходится в среднем); max fet 1+ftt - I 1 = max = 1/0 при ft - » 11+ftt | (последовательность не сходится равномерно к функции На рис. 9 изображены графики функций x(t)=i и :r^(t)=ftt/(i+ftt). Очевидно, что в окрестности точки t=0 для любого номера й функ- функции-члены последовательности не приближаютоя к предельной функ- функции на [0,1] (не входят в s-окрестность по равномерной норме). я Рис.9
20 Глава 1. Линейное нормированное пространство 1. Найти пределы последовательностей векторов ж матриц при а) г ьи 1 ft (й-1 Г ; о) 101П ft 1 ~"ft 3й+1 ; в) -2+1 Jft-1 2. Исследовать на равномерную сходимость последовательности функций x**'(t): a) sin ftt ; й=1,2,...); 6) ftt 1 ¦ IT+ftt д) - @<t<1; й=1,2,...); ft в) i+ft2t 3. Найти пределы последовательностей в среднем квадратичном: 1 a) t lust 4. Показать, что последовательность функций x^Ut) сходится в среднем квадратичном к предельной функции x(t): а) 1-t (>) t2* б) i(>)(t) = 1-t2* (-ut<1; fc-1,2,...), i(t) = 1 (-1<t«i); в) x(>)(t) f-1. -1 « t <1/й; м ч <t <0; J ftt, -i/ft < t < 1/fc; x(t) = < 1 1, 1/ft<t<i; It. 0< t <1; (ft-1,2,...).
ГЛАВА Я §1. МЕТОД ГАУССА Метод Гаусса (метод исключения неизвестных) сначала поясним на примере. Пусть требуется решить систему уравнений бх, - ж2 = 8, = -4, = 4. A) Исключим сначала неизвестное х1 иа второго и третьего уравнений системы A), используя первое уравнение. Уравнение, , с помощью которого преобразуют остальные 'уравнения, иногда называют разрешающем уравнением, а коэффициент этого уравнения при неизвестном, исключаемом из остальных уравнений, - разрешщкм (или главам) элементом. В данном при- примере первое уравнение (или первая строка) - разрешающее, а коэф- коэффициент 5 при х^ в этом уравнении - разрешающий элемент. Разделим первое (разрешающее) уравнение на Б и вычтем преоб- преобразованное первое уравнение из второго и третьего уравнений сис- системы A). В результате получим систему, в которой неизвестное ж, исключено из второго и третьего уравнений: х. - 21 1ь- 5 хг 8 28, 12 Теперь второе уравнение будет разрешающим с разрешающим элемен- элементом |^. Разделим второе уравнение на |i и вычтем преобразован- преобразованное второе уравнение, умноженное на |, из третьего уравнения, исключая тем самым неизвестное хг в последнем уравнении. чим систему Полу-
Полу22 Глава 2. Численное решение оиотем линейных уравнений 1 _ . 2 _ 8 5 *2 + 5 Х3 * 5' -.1 4 *2 3 3 * 3» х, =• 1. Проведенную последовательность преобразований данной системы называют прямым ходом в методе Гаусса. Обратный ход - это после- последовательное исключение неизвестных Xj и х2 из второго я первого уравнений. Умножим третье уравнение на (- g ) и вычтем его из второго, затем умножим это же третье уравнение на | и вычтем его из пер- первого. Получим Ч ~ 5 *г -Б- хг = - 1, Xj = 1. Далее умножим второе уравнение на (- ^ ) и, используя это уравнение, исключим неизвестное х2 из первого уравнения. Окончзтельно имеем = 1, = -1, = 1. B) Решение последней системы очевидно. Пусть дана система из п линейных алгебраических уравнений с п неизвестными: C) Решвшюм системы C) называется упорядоченное множество чисел
A. методГауооа 23 Le. .., ?яв?я превращает уравнения если подстановка ?.,=?,, C) в равенства. Решение системы представляет собой п-мерный вектор, который обозначим через ?. Рассмотрим теперь более общую схему метода Гаусса для сиотем, имеющих единственное решение. Предположим, что a,., t 0. В противном случае можно поменять местами первое уравнение с уравнением, в котором коэффициент при неизвестном хл стличен от нуля. Разделим первое уравнение системы C) на о,.,. Оно примет вид D) где -KS - "V '1» wi - ¦ Умножим разрешающее уравнение D) на а21 и вычтем полученное уравнение из второго уравнения системы C). Аналогично преобра- преобразуем остальные уравнения. В результате этих операций система за- запишется так: 4^2 + «&' гп п ~ °г (б) i1 гле где Естественно, что если какой-либо из коэффициентов а,1 окажется равным нулю, то J-e уравнение системы C) войдет в систему E) без изменений, т.е. а^= а^, bj1 *= Ь. (й=2,3,...,п). Теперь, оставив беа изменения первое уравнение системы E),
24 Глава 2. Численное решение систем линейных уравнений можно сделать второе уравнение разрешающим я применять описанную процедуру к системе из п-1 уравнении, исключив неизвестное xz из третьего и последующи уравнений. Получим систему вида аB) °33 + ... + + ... + пЗ 3 где где i2)- ai1)- - a3 B) A)_ a<2) A) 0<2)_ йA)_ йB)аA) ,.2. , Продолжая аналогичные вычисления, приведем систему C) к эквива- эквивалентной системе а13 3 1п и2 , hC) (G) в которой матрица из коэффициентов имеет треугольный вид. На этом заканчивается прямой ход решения системы линейных уравнений методом Гаусса. При обратном ходе происходит последовательное исключение не- неизвестного хп, начиная с (п-1 )-го уравнения и заканчивая пер- первым. Получаем G)
81. Метод Гаусса 25 Затем исключаем неизвестное хп_2 из уравнений с номером J U ~ л-2,..,,1) и т. д. Приходим к системе, аналогичной B). Вычисления заканчиваются решением системы, имеющим вид Xn-j - ° n-j х х - b(n-2,2). b п-г ~ ° п-2 Для уменьшения погрешности вычислений существуют различные модификации метода Гаусса. Одна из модификаций метода Гаусса с выбором максимального элемента по столбцу состоит в следующем. В начале первого шага прямого хода среди коэффициентов аA A=1,2,...,п) при неизвестном х1 находят наибольший по модулю. Предположим, что это а .,. После этого в исходной системе C) можно произвести перестановку: первое уравнение можно поставить на место 7-го, а J-в на место первого. Далее вычисления прово- проводят в описанной ранее последовательности. В начале второго шага прямого хода максимальный по модулю элемент выбирают среди коэффициентов о{„ (f = 2,3,...,п) при неизвестном х„, снова возможна соответствующая перестановка и исключение неизвестного х2, начиная с третьего уравнения, и т. д., вплоть до последнего шага прямого хода в методе Гаусса. Заметим, что процедура прямого хода в методе Гаусса может привести не к треугольной матрице типа F), а к двум другим случаям: 1) число преобразованных уравнений системы меньше числа неиз- неизвестных (это происходит, если в процессе преобразований получа- получаются тождества 0 = 0)- тогда система имеет бесконечное мно- множество решений; 2) все коэффициенты при неизвестных в каком-либо уравнении равны нулю, в то время как свободный член уравнения отличен от нуля - тогда система не имеет решения.
26 Глава 2. Численное решение ояотем лшеаных уравнена! Методом Гаусса ревить системы линейных алгебраических уравнений Ах = Ь. сравнить с точным решением ?. 5= •• '¦ '*
81. Метод Гауооа 27 10. А = 11. A 12. 13. A = 2 -5 1 , Ь = 14. A = 2 -5 1 , b = -2 , ? = 15. А = 3 5 1 , Ь = Г -4 2 1 I f -5 I fl 16. A = -1 5 1 , b - -5 . E = -1 I 2 0 3 J I 5 J I 1 1T-'¦[¦;"? \\ b=[:;K c = fi Г 4 2 П r 31 П 18. A = 3 5 -1 , b - 4 , S = 0 I 2 1 -4 J 1 6 J [-1 f 4 t 2 1 f-6 1 M 19. 4 = 0 3 I , b = -1 . 1=0 I 1 2 4 J I -5 J 1-1
Гмзва 2. Численное решение оиотвм линейных уравнении 20. А = 21. А 22. А = 23. А = 24. А 25. 26. А 27. 28. 4 29. 3 1 1 О -2 1 2-14 2-10 2 5 1 2 1 -4 1 -3 3 -1 5 -1 1 -3 0 1 5 -1 -2 5 3 -1 3 -1 -1 3 1 -1 1 1 5 3 1 2 1 1 5 5 1 -1 -1 3 1 -10 2 1 1 3 Г 1 3 2-1 5 1-10 2 5 11 0 1-12 Г 3 0 -1 2 2 1-1 2-510 .1 1-1 1 ' 2 3-4 1 1-2-5 1 5 Т3 1-4 .10 2-12 Ь = ь = ь = ь = ¦]• 111 3 . 11 J ti- till. о J л- II- -3 4 -2 1 4 1 -1 6 1 J 3 1 -1 -16 -4 J е = е = г =
Метод нтершщй 29 30. A = 31. А 32. А = 33. 2 5 -2 1 -1 4 1 1 1 -1 1 -2 0 -1 1 1 1 -1 2 -1 5 О 1 -1 2 -5 -2 1 1 1 -1 1 -2 Г 1 0-1 34. 4 = -1 -1 1 14 11 Ь = О -5 1 -2 2 -5 4 11 2 3 -9 -2 0 1 4 О Г: ¦Н -н §2. МЕТОД ИТЕРАЦИИ Рассмотрим систему линейных алгебраических уравнений Ьг, п1 1 п2 2 а х = Ъ . nn n n (8) Бели все диагональные коэффициенты ait* о (Ы ,.2,...,п), то систему (8) можно представить в так называемом приведенном виде:
30 Глава 2. Численное решение сжотеы линейных уравнений гда г о. t=j; Введем обозначения а = «1 «11 2 «21 «22 ¦¦¦ «гп « п2 а п ¦Р. и перепишем систему (9) в виде одного матричного уравнения х = ах + р. (Ю) Здесь ах - произведение матрицы а на вектор х. Последовательные приближения (итерации) найдем следующим об- образом. Возьмем в качестве начального приближения х^0' вектор C и подставим его в правую часть уравнения A0); получим х (D Продолжая аналогичные вычисления, придем к векторной последова- последовательности приближений: х<1>= ох<°> + х<2>= ох<1> + первое приближение, второе приближение, A1) (й+1 )-е приближение, ^*' Если существует предел ? последовательности векторов х^*', то, переходя к пределу в равенстве х^+1)= ох^ + 0 при к ¦* оо, убеждаемся, что 5 является решением уравнения A0), т.е. 5= а? + р. Достаточные условия сходимости итераций к решению содержит следующая теорема. Теорема. Если какая-либо норма матрицы меньше единицы: |а| < 1, то уравнение A0) имеет единственное решение ?, к которому стремится последовательность итераций A1) при лрбом выборе начального приближения х (О).
98. Метод вторацвй 31 В расчетах полагают х*0)= р. Погрешность приближенного реше- решения уравнения A0) на k-ы шаге оценивают неравенством Из неравенства A2) можно получить оценку числа итераций к, не- необходимых для обеспечения заданной точности в. Отклонение приближения х*** от решения ? по норме не будет превышать в, если fc+1 . це-х<*>и < J?L цх<*>- х<*-1>и < i^!L црм в. аз) <-И 1-|а| Неравенство A3) дает обычно завышенную оценку числа итераций к. В оценках A2), A3) одновременно используется согласованные нормы для матриц и векторов (т- и 1-нормы). Из неравенств A3) видно, что условие, позволяющее принять приближение х^ в качестве решения с точностью в, можно пред- представлять в следующей удобной для вычислительного процесса форме: Пример 1. Найти решение системы уравнений Eа:1 - хг + 2х3 - 8, ж, + 4х2 - Xj = -4,- Z1 + Z2 + 4Xj = 4 методом итераций с точностью 1СГ2. Решение. Приведем данную систему к виду (9): 1хл = 0*^ + 0,2х2 - 0,4а1 + 1,6, 02^ 0 05 2 х, - 1, - 0,25х2 + 0«х3 + 1. Теперь запишем последовательность итераций (ft = 0,1,2,...):
32 Глава 2. Численное решение сиотем линейных уравнении - 0.4х<*>+ 1,6, -0,25r1(*)+ O.xJ*> + О.гйЦ**- 1, A5) Для приведенной матрицы г 0 0,2 -0,4 ] а = -0,25 О 0,25 [-0,25 -0,2Ъ О J достаточное условие сходимости процесса итераций выполняется по m-норме, поскольку 3 1а| = max { У |а.,| } = max СО,6; 0,5; 0,5) = 0,6 < 1. m к«з j-1 iJ В качестве начального приближения возьмем вектор-столбец сво- свободных членов приведенной системы: : Число итераций для достижения заданной точности е=1СГ2 определим из неравенства Ш < е, которое перепишем так: чкч , -2 + lg 0,25 Ь % 1 % 11. lgO,6 Здесь учтено, что |а|т= 0,6; |р|т = |х@)|т= 1.6. Вычислим теперь три последовательных приближения по формулам A5) и оценим погрешность каждого результата, используя неравен- неравенство A3) в виде
§?. Цетод итераций 33 Навдаы первое приб, :1)» O-x^0^ 0,2xJ0)- O,4x?o)+1,6= + O,2(-1)-O,4. + 1,6= 1, x|1)= -Q,Z5x\°K O«x^o)+ O,25arjO)-1 =-0,25«1,6 + 0,25 -1—1,15, j1)= -О.гбх^-О.гбг^0^ 0-x^°'+1 =-0,25-1,6-0,25 (-1)+1= 0,85; jx(D_ x@)|m= max {0,6; 0,15; 0,15} = 0,6. Следовательно,x^1'= 1-1,15 дает значение корня ? с погреш- l Ojey ностью, не превышающей величины |х^1'-х^°'| 0,6 ,6 =0,9. Далее последовательно находим \2)= х\2)= 0,2(-1,15)-0,4«0,85 + 1,6 = 1,03, Х^2)= -0,25-1 + 0,25-0,85 - 1 =-1,0375, xj2)=-0,25-1 - 0,25(-1,15)+ 1 = 1,0375; |ХB)_ xA)|m= max @,03; 0,1125; 0,1875) = 0,1875, 1,03 1,037 1,0375 0>6 хB)= -1,0375 , -?-^2 |хB)- хA)| = —'— 0,1875=0,28125; i-ML m t-o.6 x{3)= 0,2(-1,0375)-0,4-1,0375 +1,6= 0,9775, X^3)= -O,25'1,O3 + 0,25-1,0375 - 1 = -0,998125, X^3)= -0,25-1,03 - 0,25(-1,0375)+ 1 = 1,001875; B) {0,0525; 0,039375; 0,035625}=0,0525 • 0,05, , 0,9775 n -0,998125 I, ——2 |xC)- xB)l = 0,05=0,075. 1-lal.,, m 1-0,6 1 1,001875-' m Заметим, что точное решение есть 2-469 х2=-1, х3=1 3=1.
34 Глава 2. Чиоленное решение систем линейных уравнений Решение етого примера по программе, приведенное в Прил (см. с. 204-219), показывает, что заданная точность достигается за 5 шагов. в Пример 2. Показать, что для системы ' 100г1 + 30Г2 - ЧОХ- « 1, 15Х., - 50х2 - 5х3 = 1, 6T.J + 2х2 + 2Ог3 = 1 процесс итераций сходится. Сколько итераций следует выполнить, чтобы найти решение системы с точностью КГ^1 Решение. Представим систему в приведенном для итераций виде: !хл = 0-Х, - 0,ЗХ2 + О,Тх3 + 0,01, Х? = О,ЗХ1 + 0>Х2 - О,1Х3 - 0,02, Xj = -О,3х1 - 0,1х2 + 0-х3 + 0,05. Матрица приведенной системы |0 -0,3 0,7 I 0,3 0-0,1 . -0,3 -0,1 О J Для проверки достаточного условия сходимости вычислим нормы матрицы а: 3 fl max i ? |а, .| ) = maid; 0,4; 0,4} = i, i<<3 1 J 3 Иа||7= max ( Y la..I } = max{0,6; 0,4; 0,8} = 0,8, ' 1^JC3 t=i iJ ва1ь= /E S а?л = -lo.32+0,72+0,32+0,12+0,32+0,12 = Jo,78 «0,88. Достаточное условие сходимости процесса итераций выполнено, так как, в частности, |аЦг= 0,8 < 1. Чтобы найти решение системы с точностью е=1О, будем вычислять число итераций-с помощью нера- неравенства A3) в пространстве с Z-нормой. Тогда получим IPli- 2 IP,I = 0,01+0,02+0,05 = 0,08;
§3. Метод итераций 35 lalf 0.8 1-1Ь- ЦРЦ, < 6 » 0,08 < Ю 1-WU 0,2 WU . 0,2 -3 -lg 0,4 • (ft+1) lg 0,8+lg 0,4 < -3 » ft > 1 ~ 25. lg 0,8 Фактическое число итераций для достижения заданной точности в пространстве с m-нормой равно 10 (расчет по программе, приве- приведенной в Приложении). т Замечание. Достаточное условие сходимости процесса итераций для неприведенной системы (8) по m-норме можно представить в виде |a I > J |atJ A=1.2 п). A6) Здесь модули диагональных коэффициентов для каждого уравне- уравнения системы (8) больше суммы модулей всех остальных коэффици- коэффициентов. Естественно, что если условия A6) не выполнены, то следует применять условия сходимости по 1-й й-нормам после приведения системы к виду (9) или непосредственно к неприве- неприведенной системе (8). Достаточное условие сходимости процесса итераций для неприведенной системы (8) по Z-норме можно пред- представить в виде \a.jj\ > 2 |a{J| (J=1.2,...,n). Упражнения Найти решения систем линейных алгебраических уравнений Ах.=Ъ ме- методом итераций с точностью 6=10~2 (см. упражнения к §1). Сравнить их с точными решениями ?. Для систем 1-26 выполнить вручную первые две итерации. Убедиться, что для систем 27-34 достаточные условия сходимости метода итераций не выполнены.
ГЛАВА 3 МЕТОДЫ ЧМГЛНМОГО ЕЯВП i акт нвлгаигад урдшешш §1. ОТДЕЛЕНИЕ КОРНЕЙ Пусть fix) - 0 - некоторое уравнение. Число % называвтоя кор- яен или решением данного уравнения, если оно, будучи подставлено в уравнение, обращает его в равенство, т.е. /(?)=0. Число ? на- называют нулем функции у=/(х). Нахождение действительных корней с определенной точностью можно равОить на два этапа: 1) отделение корней, т.е. установление промежутков, в кото- которых содержится один корень уравнения; 2) вычисление корня, принадлежащего выбранному промежутку, с заданной точностью. Известно, что если функция fix) непрерывна и принимает на концах отрезка ?а,о] значения разных знаков, т.е. f{a)f{b)<0, то внутри этого промежутка найдется нуль функции. Отделение корней уравнения /(х)=0 для непрерывной в области определения функции fix) можно осуществить различными способами. 1) Составляют таблицу значений функции y=f{x) на определен- определенном, промежутке изменения аргумента х, и если окажется, что для соседних значений аргументов значения функции имеют разные зна- знаки, то нуль функции находится между ними. 2) Уравнение /(х)=0 заменяют равносильным (fix) = <|>(х). Стро- Строят графики функций у=Ф(х) и у=ф(х); искомый корень является абсциссой точки пересечения этих графиков. 3) Строят график функции y=f(x) на промежутке изменения х; тогда абсцисса 5 точки пересечения графика с осью От - нуль функции, т.е. /(?) = О. Пример. Выяснить, сколько корней имеет уравнение 4-ея-2хг=О, и найти промежутки, в которых находятся эти корни. Решение. Рассмотрим три функции: /(х) = 4 - е* - 2J2; <р(х) - 4 - 2Я2; ф(ж) = е*. Уравнение fix) =0 эквивалентно уравнению <р(х) = ф(х). Отделим его корни двумя способами.
§?. метод половинного деление 37 У-4-2Х2/ У 4 /^ 1 ' V Л Рис.10 Из таблицы значений функции /(х) на про- промежутке (-3,0; 1,0] с шагом изменения х, равным 1, видно, что существуют корни уравнения на отрезках [-2,-1] и [0,1], так как значения функции на концах отрезка имеют разные знаки. Графики функций г/<»ф(х) и у=ф(г) пересекаются в двух точках, абсциссы которых С, и ?2 являются решениями уравнения Ф(х)=ф(г), заключенными в указанных промежутках (рис.10). ш X -3,0 -2,0 -1,0 0,0 1,0 fix) -14,05 -4,14 1,63 3,00 -0,72 ' <р(х) -14,00 -4,00 2,00 4,00 2,00 ф(х) 0,05 0,14 0,37 1,00 2,72 §2. МЕТОД ПОЛОВИННОГО ДЕЛЕНИЯ ДЛЯ УРАВНЕНИЯ f(X)=Q Пусть дано уравнение /(х) =0, A) причем функция f(x) непрерывна на отрезке 1а,Ъ) и /(а)/(о)<0 (рис.11). Для вычисления корня уравнения A), принадлежащего он-о —. Если 2 /(х1) /0, то для продолжения вычислений выберем ту из частей данного отрезка [а,х,] или [х1>о], на концах которой функция /(х) имеет противоположные знаки. Концы нового отрезка обозна- обозначим через о, и о., (рис.11). отрезку [а,о], найдем середину этого отрезка х, = 1
38 Глава 3. Решение нелинейных уравнений и систем /(о, )/<&., )<0; ) >°: сн-о Рис.11 Новый суженный промежуток [о, ,Ъ^ ] снова делим пополам и про- проводим вычисления по разобранной схеме и т. д. В результате по- получаем либо точный корень уравнения A) на каком-то этапе, ли- либо последовательность вложенных отрезков (а,Ы, la^.b^],..., [а„,?М,... таких, что (п = 1,2,...), B) 1 C) /(ая)/(Ья) < О Число | - общий предел последовательностей {an> и {Ь } - являет- является корнем уравнения /(#)=0. Оценку погрешности решения на n-м шаге вычислений можно полу- получить из соотношения C) в виде 0 D) 1 Здесь ап « 5 с точностью е, не превышающей — (^а). Пример. Методом половинного деления с точностью е = 10~2 найти корень уравнения 4 - ет - 2з? = 0 ( х > 0). jo Решение. В примере из §1 при отделении корней уравнения было ус- установлено, что искомый корень С принадлежит отрезку СО,П. На каждом шаге вычислений значение корня принимаем равным х =(а +о )/2 с погрешностью d =b -a . Будем производить вычис- ления и выбирать последовательность вложенных отрезков [an,on], используя условие /(а )/(о )<0. Имеем ft ft а+о [а,Ь]= [0,П, X = =0,5. 1 2 Так как /(а) = 3, /(я.,) = 1,8513 и f{a)f(x^) > О, то полагаем = Ь^^ = 0,5. Тогда О, = х1 = 0,5, ^=6=1;
§?. Метод половинного деления 39 О.+0, 0,5+1 Co.,о, ]=[0,5;П, ж, =-2—1 = = 0,75. 11 " 2 2 Здесь/(а, )=1,8513, /<х2)=0,Т58, /(а, )/(Sg)>0; следовательно, Og ¦ х2 = 0,75, о2 = ьп = 1; dg = Ьг^ = °»25- = 0,875; d3 = 0,125. Производя вычисления далее или воспользовавшись программой При- Приложения (см. с. 220-225), можно убедиться, что заданная точность достигается на 7-м шаге: х^ = 0,8828125 с погрешностью <Xj = 0,0078125 < 6 = 0,01. ш Упражнения Методом половинного деления найти решения следующих уравнений с точностью s = 10~2. 1 X4 - Зх - 20 = О (х>0). 2. X3 -2х -5 = 0 (х>0). 3. х3 + Зх + 5 = О. 4. X4 + 5Х - 7 = О (Х>0). 5. Х3-12х -5 = 0 (х>0). 6. х3-2хг-4х+5 = О 7. х + е* = 0. 8. х5 - X - 2 = О. 9. х3 - 10х + 5 = О (х<0). 10. 2 - lnx - х = 0. 11. х3 + 2х - Т = О. 12. х3 + X2 - 11 = О (х>0). 13. х4 - 2х - 4 = О (х>0). 14. 2е* + х - 1 = 0. 15. X4 - 2х - 4 = 0 (х<0). 16. 2Х3 + X2 - 4 17.; е* -х - 2 = 0. 19. х2 - созх = О (х>0). 21. 1пх.+ 0,5х -1=0. 23. 1+х2 X 25. lnx = 0. 2+х . 18. 20. 22. 24. - е 2 X2 lnx 1 1+х ~ - х - + lnx = - 0,5х е* 2 2 = 1 = 0. + 1 ¦ 0 о (х>0). = 0 (х>1). (х>0).
40 ГлОба 3. Решение нелинейных уравнений и систем N S3. МЕТОД ИТЕРАЦИЯ ДЛЯ ОДНОГО УРАВНЕНИЯ С ОДНИМ НЕИЗВЕСТНЫ! Пусть требуется решить уравнение, представленное в виде х ~ g(x), E) где правая часть уравнения - непрерывная на отрезке Са.Ь] функ- функция g(x). Суть метода итераций (метода последовательных прибли- приближений) состоит в следующем. Начиная с произвольной точки х^°\ принадлежащей отрезку [а,о], последовательно получаем х*1 *= g{x^°h (первое приближение), х^= g(x^h (второе приближение), х(*и)_ 8{Х(ъ)} (й+1 _ Последовательность называется последовательностью итераций для уравнения E) с начальной точкой х^°К Бели все точки F) принадлежат отрезку [а,о) и существует предел ? = 11л х^к\ то, перейдя к пределу в равенстве *"* X(fe+1'= g{X{k)) (ft = 0,1,2,..-), G) получим llm ;r(fe+1)= 11л g(x(*b, т.е. ? ~ g(E). i-ч» Js-mo Следовательно, если существует предел последовательности итераций F), то он является корнем уравнения E). Достаточные условия сходимости последовательности итераций содержатся в сле- следующей теореме. Теорема. Пусть функция g(x) имеет на отрезке 1а,Ы непрерывную производную и выполнены два условия: 1) \g' <х)| < q <1 .при к ta.ol; 2) значения функции y=g(x) принадлежат отрезку Ca.ol для любого х « Ca.b). Тогда при любом выборе начального приближения х^ ? ta.o] процесс итераций сходится к единственному корню ? уравнения E) на отрезке (а,о). Оценка погрешности й-го приближения х^*' к корню % такова:
Метод итераций для неливежного уравнения 41 ,?-*<*>,<-*-,*<*>_ ^D,, (8) 1q где q * max | «Kb Укажем теперь один нз способов преобразования уравнения /<Я)=0 (9) к виду х = g(x), допускающему применение метода итераций, схо- сходящихся к решению % уравнения (9). Для любого числа А.#0 уравнение (9) равносильно уравнению E), где g(x) = х + Xf{x). Предположим, что производная /•' (х) > О и непрерывна на Са,о]. Пусть Jf = max /' (х), m = mln /' {х); 1 т положим X = — , Ч = 1 — и рассмотрим функцию 1 g(x) = х - - /(х). A0) Для функции, определенной формулой A0), выполняются доста- достаточные условия сходимости метода итераций решения уравнения (9). В частности, условие 1 теоремы следует из неравенств О < я < /' (х) < *, 1 т О $ g' (х) = 1 — f'(x) <? — = а < 1 Vie [a.bl. м м Замечание 1. Бели окажется, что производная /' (х) отрицательна на отрезке 1а,Ы, то уравнение E) можно заменить на равно- равносильное уравнение -/(х)=0 и использовать указанное преобра- преобразование. Замечание 2. Бели вычисление точного значения числа М = max \f (x)| затруднительно, то можно заменить его произ- т вольным числом if1 > If. Однако при большом *., число q = 1 — ближе к единице и процесс итераций сходится медленнее. 1 3. При нахождении корня уравнения E) с заданной точ- точностью е > 0 или при оценке погрешности 6-го приближения мож- можно, не вычисляя точного значения числа q= max \gf (х) |, огра- а&ф ничиться следующей практической рекомендацией:
42 Глава 3. Решение нелинейных уравнений я систем 1 , |x**'- x^*~1'| $ s при 0 < q $ -; lg_x(b)i ^ I • t 2 1 10|x(Js)- x(j8~1)| $ s при - < q < 1. Промер 1. Решить с точностью б = 10~2 уравнение 2х - cosx = 0. A1а) A10) A2) Решение. Для отделения корней представим уравнение A2) в виде 1 х = - соаг. 2 1 Построив графики функций у=х и у = - cosx (рис. 12), видим, что 2 корень уравнения A2) содержится внутри отрезка Го, - 1. Здесь /(х) = 2X-C0SX; f (х) = 2 - slnx > 0; М = max /' (х)=2, о«г^ 1 и g(x) = х +\f(x)= x - -{2x - cosx) = - cosx. 2 2 2 Положим х(°'= 0,5. Последовательные приближения найдем по форму- лам xv"T''= - cosx 2 xA) = 1 cosx(o)= 1 cos 0,5 = 22 0,43879128; хB) = 1 cosxA)= I cos 0,43879128 = 0,45263292; 2 2 x(^) = 1 cosxB)= 1 COS 0,45263292 = 0,44964938; 2 2
$3. Метод итераций для нелинейного уравнения 43 я:D) = i совхC)= i сов 0,44964938 = 0,45029978. 2 2 Для оценки погрешности четвертого приближения воспользуемся не- неравенством A1а). Так как q h ^ шах 2 = I, то 2 0,0006504 < S = 10~Э. Следовательно, 0,450 с точностью 10 ,-э Пример 2. Решить с точностью е=10 уравнение х + lnr = 0. A3) Решение. Представим уравнение A3) в виде -х = lnx. Построив графики функций у = -х и х = 1пх (рис.13), заключаем, что уравнение A3) имеет единственный корень на отрезке [0,5; 12. Иначе говоря, для непрерывной и монотонно возрастающей функции f{x) = х + In x, имеющей на концах отрезка значения разных зна- знаков: /@,5) = -0,193, /A)=1, существует единственный корень уравнения A3) на этом отрезке (функция монотонно возрастает, так как производная /'(х)=1 + - положительна в области определе- х ния). Вычислим с 1 л т = mln /' (от) = mln I 1 + - I =2; m 1 q = 1 * 3 f ' •» Ш = max f'{x) = max I 1 + - I = 3; y=lnr Рис.13
44 ГлОВа 3. Решение нелинейных уравнений и систем Преобразуем исходное уравнение A3) к виду, удобному для итера- 1 1 1 X ¦= g(X)i g(X) » X f(X) » X (X + lBE) = - BХ - 1Ш). Jf 3 3 Таким образом, сходящаяся к решению уравнения A3) последова- последовательность итераций определяется из соотношений д.(*+1)=_ Bх(*)_ 1ш;(*)) (й-0,1,2,...)- 3 Пусть х^= 0,75 - начальная точка в итерационном процессе. Оценку погрешности каждого приближения будем определять расстоя- расстоянием dh = Ix^! Производя вычисления, последовательно находим )= - Bх@)- 1ПХ(О)) = - B.0,75- In 0,75) = 0,59589402, 3 3 1 о о B •0, 59589402- ln 0, 59589402) = о, а,- о, 56982683, dU= 0, 1541106; 0260672; )= g(X{2)) = 0,56735881, d3= 0,00246805; )) = 0,56716032. Оценку погрешности четвертого приближения получим из неравенства |?-хD)| ^ d4 = |тD)-хC)| = 0,00019848 < е = 10. Следовательно, ? « х^= 0,567. ш Пример 3. Решить методом итераций с точностью е=10~2 уравнение 4 - вх - 23? =0 (X > 0). A4) Решение. Уравнение A4) было решено в §2 методом половинного де- деления. Корень уравнения ? принадлежит отрезку @,13. Здесь производная /' (х) = - ех- 4х < 0 при х € С0.1 ] и является мо- монотонной функцией, модуль которой достигает максимального и ми- минимального значений на концах отрезка: М = max |/'(х)| * max ti; е+4} = е+4 « 7; 01
54- Метод втврацнй для свртвмы нелинейных уравнений 45 1 б in » mln \f (х) I = 1; а т 1 — = - . СХК1 7 7 Так как в этом примере производная /' (х) отрицательна на отрез- отрезке, то, преобразуя уравнение A4) к виду удобному для итераций, необходимо воспользоваться замечанием 1 (см. с. 41) следущим образом: 1 -/(х)= -4 + е*+ 2т2; g(x) = х - - (-/(х)); g(x) = х - - (-4 + е*+ 2т2) = х + - D - е* - 2Х2). т т Последовательность вычислений определяется формулами х(»)+ 1 f 4 - е» Для оценки погрешности й-го приближения здесь используем нера- венство A10) в виде ix^^-i^* ^| < — (й=1,2,...). Непос- 10 редственно можно убедиться, что если положить х^°*= 0,5, то пос- последнее неравенство будет выполняться , начиная с 5-й итерации. Следовательно, ? « х^5) = 0,887 (е=10~2). я Topi Методом итераций с точностью е =10~2 решить уравнения 1-25 (см. упражнения к §2). §4. МЕТОД ИТЕРАЦИЯ ДЛЯ СИСТЕМЫ ДВУХ НЕЛИНЕЙНЫХ УРАВНЕНИИ Систему двух уравнений с двумя неизвестными /2(х1,х2) = 0 будем представлять в виде f хл = вл (хп ,х?), I ^2 = Й^Ц»3^)- A6) Используя векторные обозначения
46 Глава 3. Решение нелинейных уравнений и сиотем 1 1 ^ A7) перепишем систему A6) в компактно! форме: A8) Решением системы уравнений A5) или A6) или A8) называют вектор ? = 1 , координаты которого, будучи подставлены в "уравнения A5) или A6), обращают их в равенства. Пусть предварительно установлено, что уравнение A8) имеет единственный корень I, принадлежащий замкнутому прямоугольнику D = <(х^,х^): ^^^5 c^^Tg^Og). A9) f *i0)l U0)r Возьмем произвольную точку xvu'= | (с^\, х* '€ D и, используя формулы / 1- 1 Л \ I -L. \ ,2,...), B0) 1(i) т.е. получим последовательность векторов () =1,2,...). B2) Последовательность B2) сходится к решению уравнения A8), если выполняются условия следующей теоремы. Теорема. Пусть функции g1<.xi,x2) и gz(x^,x2) - правые части уравнений A6) - непрерывны вместе со своими частными произ- производными первого порядка в замкнутом прямоугольнике A9) и вы- выполнены два условия: 1) норма матрицы ЯкоОи функций g1 {x1 ,хг) и g2 (x1 ,х2) не превосходит единицы для любого вектора х е D; 2) значения вектор-функции g(x) принадлежат прямоуголь- прямоугольнику D для любого вектора х е D.
§4. Метод итераций для сяготем! нелинейных уравнений Тогда при любом выборе начального приближения х*°* с D про- процесс итерация сходится к единственному корню Е уравнения A8) в прямогольнике D. Оценка погрешности ft-го приближения х( к корню С такова: B3) где q = max X€D Замечание 1. Для определенности в качестве нормы вектора х и со- ¦ ответствующей нормы матрицы Якоби J(x) функций g^(x , т.е. для J(x) = возьмем т-нормы: й<7(х)| = = max B4) Замечание 2. При решении методом итераций системы нелинейных уравнений A5) областью D (в условиях теоремы) можно считать множество точек вблизи точки пересечения кривых, определяемых уравнениями ^(^.Xg) =0 и. fz(x^,xz) = 0. Замечание 3. Для практической оценки погрешности fe-ro приближе- приближения можно пользоваться неравенствами, аналогичными |х(*)_ х(*-1), $g 1 0 < q < -; B5а) 1 2 s при - < q < 1. B56) Укажем способ преобразования системы A5) к системе A6), допускающий применение метода итераций. Преобразуем систему A5) так, чтобы в окрестности начальной точки х^°) близкой к искомому решению, выполнялось условие 1 теоремы о достаточных условиях сходимости итераций к решению, т.е. IJWI < 1. ¦ B6)
48 Глава 3. Решение нелинейных .уравнений я систем Представим правые части уравнений A6) в виде B7) Здесь f^(x^,xz), fz(x^,x2) " пРавые ?асти уравнений системы A5), по предположению, непрерывно дифференцируемые функции в прямоу- прямоугольнике D. Система уравнений A5) равносильна системе A6) с правыми частями B7) при условии, что определитель, составленный из постоянных A, (l,J =1,2), отличен от нуля, т.е. - А. .12 0. Для вычисления постоянных \{, предположим, что норма матрицы Якоби равна нулю в точке х^0*; тогда, в силу непрерывности ком- компонент матрицы, найдется окрестность точки х^, где |J(x)|<1, и условие 1 теоремы будет удовлетворено. Равенство |«7(х*°Ъ| = 0 в соответствии с формулой B4) озна- означает, что матрица J4X Ь - нулевая, т.е. (О) г@) @) г@) = 0. B8) Используя формулы B7), перепишем соотношения B8) в виде 1 + дх. I дх. @) (о) Х(О) г@) 1 + Ж(О) = 0, ) = о; о, 0. B9) В результате получим систему из четырех линейных уравнений отно-
§4. Метод ятерацнй для енстеш нелинейных уравнений 49 сительно неизвестных Х{. (l,J «1,2), которая эквивалентна двум независимо решаемым системам с одной и той же матрицей ах, (о) дх2 х@) и разными правыми частями. Пример. Дана система уравнений Г 12(х1 - 1) -i 1 = О, 1 х? - & - 1 = О. C0) Найти с точностью е=10 ее решение, расположенное в первой чет- четверти плоскости Ох^Хр. Решение. Кривые, определяемые уравнениями C0), изображены на рис.14. Эти кривые пересекаются в двух точках ^ и L- Приведем систему C0) к виду, удобному для итераций B7), и найдем реше- решение I.J с заданной точностью. Возьмем в качестве начального значения (графическое решение) (О) Р'61 х^'= и для определения коайициентов к будем решать \ Х2 ~ х~~Ц ~ кРивая Ai)~ гипербола 1 (две ветви) = 1 - кривая A2) -гипербола (две ветви)
50 Глава 3. Решение нелинейных уравнений и оиотем систему уравнений B9). Вычислим частные производные функций - х\ - в точке х (О). ДО) г@) Решив систему г@) л- 1) 1.5; = 2Х, г@) 3; ДО) = 0,5; -2х2 ДО) = -3. найдем я.11 » СЛОВИв А, л л "»лл имеет следующий [{ — — вид: г + 1 + 1 — , 2 2^2^ 1.5 0,5 1.5 0,5 Si Х21 *21 = 0 + 3 - 3 + 3 - 3 1 12 \12 = А.12 = А.22 = *22 = * Лр выполнено о, 0; 0, 0, — - ~2{А -4 - О- C1) [ J72= g2(J71fX2) = J72 - -[.TgU., - 1) - i] + - Используя полученные представления C1) для функций g1(x^,x2) и g2 (х1 ,хг), найдем векторы последовательных приближений по форму- формулам B1). Оценку погрепшости каждого приближения будем опреде- определять расстоянием между векторами.двух последовательных итераций по т-норме dk = |i<*>- х<*-1 >Ц = max <|*(*> - Тогда получим A) Т1<1I Г g1(x1@),x^0))-| _ f «1 A.5; 1.5I f 1,708331 1>J" l%(«|0).^0))J = lg2d.5; 1.5)J = I 1.37500 J' ^=0,20833;
94. Метод итераций для системы нелинейных уравнений 51 X12)]_f g1 <*11 ^^г1 bl Г ?, И ,Т0833;1,37500П_р ,719041 42)jl %(x11 )>л;21 ' »"l «2<1 .70833;1.37500)J"li ,39497j ' (^=0,01997; C) I 1 I Г *t 1 2 '] Г e-j \'»nyu*« • .Jy*=»'Л П,ПогЬ C)_ p,716761 ;1,39497)J" =0,00281; D)jf X13))J ei(^i3).a23))"|_f e1d.71676;1,39574П p,7166?j [хрЦ [gnlzPKxphi [ god,71676;1,39574)J [i, 4 214^:1,39574)Jb.39533j' d4=0,00041; xE)_f X14)]_f «1(jri4)'X24))]_f ^d.71662,'1,39533I p ,716671 "I 44)J~l «2^1D)'44))-1- «2d »T1662;1,39533)J~Li ,39533j* имеем |xE)-i<4)| = 0,00005. Так как по условию 6 = 10, то согласно оценке B56) можно можно взять в качестве решения 5-е ,,-, Г1,71671 приближение % = х^'= I I. 11.3953J Упражнения Методом итераций решить системы уравнений с точностью е = Ю~2. (х1 > 0). 2. I 1 2 Ц < 0). - 2л;2 = О . 2. I 1 2 Ц [ з% - гхг = О f J71COSX1- Хо= О, . 4. I 1 1 2 (х, > О). 1 л*1 + i| -1 =0 (гэ - /.Г..+1 =0, 21 (Я, > 0) а*- + i| - 2т2=0 (я.соаг.,- Х5= О, 2г? | 1, 1 1 2 (ж. < 0). 6. I 1 2 (ж^ > 0). ОО 1 О/Т *- f я| 1, f x2 - sin ft.» 0, 7. I 1 ^ (х2 < 0). 8. I 2 1 (ftj > 0). [ 2/3 0 | х2 +*zf -1=0
52 Глава 3. Решение нелинейных уравнений и оиотеы (Хр - Bin х,» 0, f xf + xf - 2Хр«0, 2 1 (х1 < 0). 10. I 1 ^ 2 (х, < 0). х2 + х| - 1 = о 1 ^ ~ е~*1 ж ° 11. I 12. I I хг - е~я1 =0 (х, > 0). | х2 -/x^i =0 (х, > 0). (х2 + 2х1 + г| + 2х2 + 1=0, / 13. 15. 17. z2 + я| - 2^=0, - 1П Х.,= О (хР > 0). > 0). 16. < О). С^ + х| - 2Х.,=0 Z.jSlnX,| - Xg = О, х2 + х| - 1 = о (х1 18. f XiSlnXi ~ X2 = °» :, > 0). | х^ + х| - 1 = 0 (х^ < 0). 19. I 1+х^ 1х? + = о, (х1 > 0). 20. л т х| - 1 = О - хг = о, 21. - ^ + х| - 2х2=0, (х1 > 0). 22. Н)= О =0. 1+х2 X2 + X2 - 1 = О х2 + х| - 2хг=0, х2 - 21п(х1+1 )= о 23. I ^ ' (хл > 0). 24. | х2 + х| -1 =0 х2 - =0, х2 + х| -1 =0 0). > 0). < О). 25. 26. ' (х^ + х|)г = 2(х^ - х§), + Xg - 1 = О (х1 > о, х2 > о). (Х1 < 0, Xg > 0). х2 + хг - 1 =0 Примечание. Для изображения кривой (х2 + х|J = 2(хг - х|) (лемнискаты БернуЛш) воспользоваться полярными координатами.
ГЛАВА 4 СРЕДНЕКВАДРАТИЧНО! ППЕД $1. ИНТЕГРАЛЬНОЕ СРВДНЕКВАДРАТИЧНОЕ ПРИБЛИЖЕНИЕ ФУНКЦИИ ОРТОГОНАЛЬНЫМИ МНОГОЧЛЕНАМИ Пусть на отрезке 1а,Ь] задана функция fix) и определена сис- система функций ig^ix)) (й=0,1,2,...). Обобщенный многочленом (полиномом) порядка п (степени п) от- относительно системы функций (g.(?)> называют функцию вида * п где Со, С.,, ... ,Сп - некоторые постоянные. *=0 Обобщенный многочлен Q (х) называют многочленом наилучшего среднвквадратачного приближения функции fix) на отрезке (а,о], если расстояние от многочлена до функции f(x) по среднеквадра- среднеквадратичной норме (среднеквадратичное отклонение) наименьшее, т.е. о а? .1/2 {/(х) - ^(г))'1 dr J - наименьшее. A) а Задачу о нахождении такого многочлена Qn(x) называют зада- задаче^ об интегральном среднеквадратичном приближении (аппроксима- (аппроксимации) функции fix) на отрезке 1а,Ы обобщенным многочленом. Эта задача сводится к нахождению коэффициентов 00, С,,..., 0п из условия A). Если функция fix) и система функций (gk(x)) определены на множестве точек ix^ ,...,?m}, то приближение функции f(x) многочленом Qn(z) называют точечным среднеквадратичным приближе- приближением на множестве точек.(х^ хш). При этом для обобщенного многочлена наилучшего приближения Qn(?) среднеквадратичное отклонение d(/,Qn) = Г 2 ifixt) - <3n(?t)J 1 на системе точек будет наименьшим. t=1 Задача нахождения многочлена наилучшего приближения Qnix) функции fix) на [а.Ы упрощается, если система функций (gk(x))
54 Глава 4. Среднеквадратичное приближение функций обладает свойством ортогональности на отрезке 1а,Ы. Предвари- Предварительно рассмотрим некоторые определения» Скалярным произведением функций gt(x) и g,(x) на отрезке 1а,Ы называется интеграл от их произведения на этом отрезке. Обозначим скалярное произведение как (g.,g.) и запишем о г J (8r8j)= ^ giix)gJ(x) <&• а b I : ' f Г 2 11/2 Число |gt| = l(gi,gi) = [I gi (x) dr J является нормой а функции gt(x) на отрезке 1а,Ъ], а функвдя /(г), для которой существует интеграл Г/2(г) йг, называется интегрируемой с а квадратом на отрезке la,b]. Функции gt{z) и ёЛХ) называются ортогональныыи на отрезке Ш,Ь], если их скалярное произведение на этом отрезке равно нулю, т.е. если b <.?,)= J 8tWgj бх = О а * Система функций (.gh(x)) (й=0,1,2,...) называется ортогональ- ортогональной на отрезке [а,Ь], если все функции этой системы попарно ор- ортогональны на этом отрезке. Коэффициенты Со, С, Сп обобщенного многочлена qn(;r) = C^Qta;) + С^(х) + ... + Cngn(ar) ' B) называются коэффициентами Фурье функции f(x) относительно орто- ортогональной системы функций, если они определяются по формулам b Г f(x)gh(x) их </.«„> а с& = г ='-б (fe=o,i,2 п). о) J y dx
§1. Интегральное приближение ортогональными многочленами 55 Теорема 1 (об интегральном среднеквадратичном приближении функ- функции ортогональными многочленами). Для любой функции fix), ин- интегрируемой с квадратом на отрезке ta.bJ, обобщенный многочлен п-го порядка Qn(x) с коэффициентами Фурье функции fix) отно- относительно ортогональной на отрезке (а,Ы системы функций lgkixI является многочленом наилучшего среднеквадратичного приближе- приближения этой функции, причем квадрат наименьшего среднеквадратич- среднеквадратичного отклонения определяется соотношением tfV.Qn) = А/А2 -JQ^ 18ЬГ, D) где Cfe - коэффициенты Фурье, определяемые по формулам C). Иэ формулы D) видно, что с увеличением порядка обобщенного многочлена среднеквадратичное отклонение не увеличивается. Замечание. Дадим геометрическую интерпретацию предыдущей теоремы и соотношения D). Можно показать, что квадрат нормы обобщен- обобщенного многочлена AQnH относительно ортогональной системы функ- функций igh{x)) вычисляется по формуле HQJ2= " Запишем соотношение D) в виде О О Н/Н2 = HQJ2 + Тогда это соотношение будем интерпретировать как формулировку теоремы Пифагора для прямоугольного треугольника с катетами, равными норме обобщенного многочлена наилучшего среднеквадра- среднеквадратичного приближения |<ЭПА и величине отклонения d(f,Qn), и с гипотенузой, длина которой равна норме функции |/( (рис.15). 1Л Рис.15
56 Глава 4. Среднеквадратичное прибзппюние функции 92. СРЗДНЕКВАДРАТИЧНОЕ ПРИБЛШЕНИВ ФУНКЦИЯ ТРИГОНОМЕТРИЧЕСКИМИ МШГОЧЛВШШ Пусть задана система тригонометрических функций кс icr 2icr Ziee Шаг 1, cos —, sin —, сов —, sin —,... ,сов —, sin —,... E) L L L L Ь Ь на отрезке [-Z,U. Тригонометрическим многочленом n-й степени называют обобщен- обобщенный многочлен по системе тригонометрических функций, имещий вид Сп п , ккх Ъкх ¦. Qn(x) = -2 + 2 [Ckoos — + Dhsin — ], F) где Co, G1 Cn, Z),, Z>2 Dn - некоторые числа. Можно показать, что система тригонометрических функций E) ортогональна на отрезке [-1,1]. На основании теоремы 1 для функции fix), интегрируемой с квадратом на отрезке 1-1,1], тригонометрическим многочленом наи- наилучшего среднеквадратичного приближения является тригонометри- тригонометрический многочлен a, n f ккх feitx ^ Qn(x) = -f + 2 Кс03 + b*sln 1' <Г) 2 ft=1 l 1 где коэфйвдиенты Фурье по тригонометрической системе функций для функции f(x) определяются формулами C) и имеют вид г г i 1 г 1 г ЙКГ 1 г кКХ а0 * - f{x) бх, а^= - /(x)cos— dr, bft = - f(x)sln— <Ьг C-l -I -Ik (й = 1,2. ...). (8) Среднеквадратичное отклонение аппроксимирующего многочлена от функции fix), вычисляемое по формуле D), в данном случае вы- выражается равенством (/№) - Qnix) fa] -z
$2. Приближение тригонометрическими многочленами 57 [J dx- z(^ + 2 (о* + bj)) ). (9) Среднеквадратичное отклонение, отнесенное к норме аппрокси- аппроксимируемой функции |/|, характеризует точность приближения и обо- обозначается U(f,Qn) = d(/,<3n)/|/| (величина sin а на рис.15). В частном случав, когда f{x) - четная функция на отрезке [-1,1], тригонометрический многочлен наилучшего среднеквадра- среднеквадратичного приближения записывается в виде an n ккх Qn(x) = f + 4=1 где коэффициенты Фурье г г 2 f 2 г ккх а0 = - j /(г) <Lr, afc = - j f{x)oo8— 6x (й=1,2 n). 0 0 Для нечетной функции /(г) формулы G) и (8) примут вид п /ист Qn(x) = s b ь=1 Z 2 г йиг оь = - f(x)Bln О Замечание. Тригонометрический многочлен G) с коэффициентами фурье (8) представляет собой n-ю частичную сумму ряда Фурье функции/(г): т ап Ькх к/кх /(X) « -У + 2 (О.С08 + O.Sln ). A0) Можно показать, что ряд Фурье сходится к функции /(х) в сред- среднеквадратичном. Точнее, для всякой функции f(x), интегриру- интегрируемой с квадратом на отрезке [-1,1], имеет место предельное соотношение llm d(f,Q ) = 0, определяющее сходимость пос- ледовательности частичных сумм Qn(x) к функции f(x) по сред- среднеквадратичной норме. Важно отметить случай поточечной сходимости ряда Фурье к ку- кусочно-гладкой функции, его порождакцей.
58 Глава 4. Среднеквадратичное приближение функции Определения, функция f(x) называется гладкой на отрезке [а,Ы, если на этом отрезке она непрерывна вместе со своей первой про- производной. функция f(x) называется кусочно-гладкой на отрезке [-1,1], если этот отрезок можно разбить на конечное число отрезков, в каж- каждом из которых fix) - гладкая функция. Кусочно-гладкая функция может иметь конечное число разрывов первого рода. Предположим, что xQ € (-1,1) и является точкой разрыва. Обозначим левосторонний и правосторонний пределы функ- функции f{x) в точке xQ следующим образом: f(xn - 0) = llm fix), f(xa + 0) = llm f(x). x-*x0 ° x-*xQ (X < XQ) (X > Xo) Естественно, что если функция непрерывна в точке xQ, то fixQ - 0) = f(x0 + 0) = f(xQ). Теорема 2. Тригонометрический ряд Фурье кусочно-гладкой функции fix) на отрезке 1-1,11 сходится к значению f{xQ - 0) + fixQ + 0) _ в точке xQ (сходится к /(?<-,) в точках непрерывности функции). В обеих граничных точках сумма ряда равна среднему арифмети- арифметическому ее предельных значений в этих точках, т.е. fi-l + 0) + fil - 0) 2 Припер 1. Найти ряд Фурье для функции 1, -1 ^ х < 0; I х, Я*) , 0 < х $ 1. Представить графически приближение этой функции с помощью триго- тригонометрических многочленов степеней п1 = 1, п2 = 3. Оценить пог- погрешность среднеквадратичного приближения 3(/,Q.j). Решение. Определяем коэффициенты Фурье: 1 0 1 Oq = Г fix) dx= fclx+ f -1 U -
§2. Приближение тригонометрическими многочленами 59 аь = I /(a)E0S1*:r ^ = Г cosufer dr + Г х соанЗег dr -1 1 = — simcfcr -1 О 1 -1 + — х slnnfer %к 1 1 %к J siimfer dr = 1 1 о k=2m, - 1) = I -^(гт-П2 1 0 1 = Г /(z:)sinicfcr dr = Г slnicfer dr + Г xslmcfer dr = -1 -1 1 = cosicftr %k 0 1 x cosufer -1 1 1 %k J 0 cosTcfer dr 1 1 ' 1 = A - oosicfe) cos%k + o sinister %k . icfe ^ Таким образом, ряд Фурье имеет вид 1 1 О * 3 2 ^~" cos icBm-l )x 1 V~" sin icter fix) = - --Л g \ _ 4 •nf/^ Bm-i )^ тс / . ft m=i ft=i 3 2 f cos таг созЗтаг созбтсг I2 32 52 1 f sin таг sln2rar sln3icar 1 + ~2 + 3 A1)
60 Глава 4. Среднеквадратичное приближение функций Многочлены наилучшего среднеквадратичного приближения подучим как частичные сумм ряда (И): 3 3 2 sin %х ¦ - , Q1 (х) - — -j сов и: , 4 4 1г % 3 2 If Sln2itx I = , cos таг — I sin icr + , 4 1С2 1С I 2 J 3 2 , | COS 1CX 4 ИГ совЗчсг"! 1 r + — Isln icr + 9 J 1С I 2 stn2icr Погрешность среднеквадратичного приближения находим по форму- формуле (9): ~" 1Л 1 1 *< 0,1699. Так как I j*{x)ux = 1 + Г х*6х= -, то 3(/,Q,)=0,147. J J з •> -1 0 Графики функций f(x), Q1{x) и <33(х) изображены на рис.16. я У fix) С' ;чЧ./Л \ / \ -1 о Рис.16 // 1 X
52. Щмблияан— тркгономвтркчвокшш ыногочле: 61 /(X) {X, 0 < X < 2-х, 1 < х < 2. функцию О <х< 1; 2 разложить в ряд Фурье то синусам. Представить графически приб- приближения этой функции с помощью тригонометрических многочленов степеней я.,=1, д2=5. Оценить погрешности среднеквадратичного приближения d(/,Qc) и Решение. Функцию /(х) доопределим нечетным образом на промежутке [-2,01. Полученную функцию /*(х) разложим в ряд Фурье (график функции /*(х) изображен на рис.17). Имеем п ккх /*(х) = Б йьа1п —; z ИТОГ г ИТОГ г /ИСТ с /ИСТ &>. = I /(х)зШ — бх = I xeln — dx + B-x)sln — dx * J 2 J 2 J 2 - — XCOS —— тсй 2 1 2 г Kftx 2 xfer + — I cos — dr B-х)сов — n xfe J 2 icfe 2 COS 2 icfer 2 icft 4 dx = —- cos — + %k (icftL sin %kx Puc.17 1 2 1СЙ + — COB -2 Ч N N ч ч Ч N -1 • и 1 ¦ 0 -1 ' ¦ уч X
62 Глава 4. Среднеквадратичное приближение функции sin 8 Г О, sin — ft=a»; 8 тсBт-1 J Ряд Фурье функции f*(x) имеет вид (-1 )m itBm-1 )x sin . ш=1 Этот ряд сходится поточечно к функции f(x) на отрезке [0,2]. Частичные суммы ряда A2) являются многочленами наилучшего среднеквадратичного приближения функции f{x) на отрезке [0,2]: 8 хг 1 ir. 2 8 тег 1 Зкг Q-(i) = -jr (sin sin ), J ИГ 2 9 2 8 icr 1 3ici: 1 5icr Qc(^) = -5 (sin sin— + — sin— ), 5 t2 2 9 2 25 2 it2 25 Найдем погрешность среднеквадратичного приближения многочле- многочленом Q5 (x): 2 64 1/2 -0.0219. 2 1 2 Далее, учитывая, что Г f-(x)<&x = Г д^сЬг + f B-xJdr = -, по- 0 0 1 лучим 3(/,<35)= 0,0269. Графики функций /(х), Q1(х) и Q5(x) изобравены на рис.18. в
§2. Приближение трягонометрячеокими многочлен: 63 У 1 ¦ / 0 / / <у у '/ / 1 (X) ч > Q^ix) \ ч 2 х Рис.18 Упражнения Найти ряд Фурье для функции fix), представить графически прибли- приближения этой функции с помощью тригонометрических многочленов степеней пл, п2, Пу Оценить погрешность среднеквадратичного приближения clif.Q ). 1. fix) г U -1 < х < О; ~ I 2, О < X < 1 <711=3, П2=5, П3=7). ( х 0<лг<1' 3. /(х) = ] ?_т 1 < т <: ? 5. 7. (разложить (п.,=1, п2 f-2x, fix) = 1 Зг, (п1=1, п fix) = W-2X, (разложить по G1,, =1, П^ по =3, -1С 0 ?=3 0 косинусам) п3=5). < х « 0; $ X « 1С , п3=5). <Я < 1С косинусам) =3, п3=5). 2. /(х) = 1-х, х € [0,1] (разложить по косинусам) G1,, =1, п2=3, п3=5). г-х, -1С $ х < 0; 4. /(я) = \ [0, 0 $ х < 1С G1^1, П2=3, П3=5). б- -2, -1С $ х < 0; f-2, -1С $ х = ] .12, 0 < I 9. /(I) = 1C+X, -1С < X < 1С (^=3, п2=5, п3=7). G1^, ^2=5, Пд-7). 8. /(а:) = ic-2r, 0 < а: $ г (разложить по синусам) fix) г 2, -х $ г < 0; 1-2, 0 < г < %
64 Глава 4. Среднеквадратичное приближение функций {1, не < х < О; гнс, не < х < О; 12. /(х) = ^ -2, 0 < х < х I хне, 0 < х < * 13. /(X) = ( ' * * ' и' № -**• О < X < 1 I 2х О < х < 1С (разложить по косинусам) (П,,=1, fl2=3, fl3=5). (^=1, П2=3, П3=5). 15. /(X) = 2+|х|, -2 < X < 2 16. /(X) = 2-|х|, -2 < X < 2 г 2х, не < х < 0; ГО, -2 < х < О; 17. /(х) = \ 18. /(х) = -^ (^=1, ng=3, ^=5). (^=1, ng=3, ^=5). f x, -4 < х < 0; f-x, -2 < x < 0; 19. /(x) = ] 20. /(x) = j I 2x, 0 < x < 4 l0, 0<x<2 (^=1, П2=3, 1^=5). (^=2, «2=3, rtj=4). r-1, -1 < x < 0; r 0, -2 < x < 0; 21. /(X) = j 22. /(X) = \ 13, 0 < x < 1 1-2, 0 < x < 2 (fl.,=3, П2=5, ^=7). (^=3, 7^=5, 7^=7). fi, -1 < x < 0; f 1+x, -1<x<0; 23. fix) = \ 24. fix) = J I 1+x, 0<x<1 11, 0<x<1 =2, n2=3, f 0, -2 < x < 0; I 2-х, D < X < 25. /(X) I 2-х, D < X < 2 (n.,=3, $3. СРЕДНЕКВАДРАТИЧНОЕ ПРИБЛИЖЕНИЕ ФУНКЦИИ АЛГЕБРАИЧЕСКИЙ МНОГОЧЛЕНАМИ ЛЕЖАВДРА Нвогочлевамв Аапцжра назнваются алгебраические многочлены, определяемые следующими формулами: ,2,...). A3)
§3. Приближение функций многочленами Лежандра 65 Выполнив дифференцирование, найдем несколько первых многоч- многочленов: Р1 (х) = х, Р2(х) = - (Зх2 - 1), Р3(х) * - (бх3 - Зх), 2 2 A4) РЛх) = - C5х4 - ЗОг2 + 3), Рк(х) = - F325 - 70т3 + 1&г), 4 8 ° 8 Обобщенный многочлен степени я относительно системы алгеб- алгебраических многочленов Лежандра <Рп(х)> имеет вид Рп( (х) = CqP0(x) + ^Р^х) + ... + СпРп{х) = S САРь(х), A5) где CQI Cj, ... ,Сп - некоторые постоянные. Система многочленов Лежандра A3) ортогональна на отрезке [-1,1], т.е. 1 Г Pn(x)Pm(x) dx = 0 (п#п. п=0,1,..., яг=0,1,...). -1 Среднеквадратичную норму многочлена Р (х) можно определить по формуле 1 Ц/2 I 2 A6) 2Ш-1 -1 На основании теоремы 1 для функции /(х), интегрируемой с квадратом на отрезке [-1,1], обобщенным многочленом наилучшего среднеквадратичного приближения по системе многочленов Лежандра является многочлен A5) с коэффициентами Фурье 1 [ f{x)Pk[x) dx Сь = ^ = = Г/(х)Р (X)dr лг 2 J к Среднеквадратичное отклонение аппроксимирующего многочлена 3-469
66 Глава 4. Среднеквадратичное приближение функций от функции /(х), вычисляемое по формуле D), в данном случае оп- определяется равенством 1/2 . A8) Из формул A4) видно, что многочлены Рк(х) четны при четном значении к и нечетны при нечетном к. Для четной на отрезке [-1,11 функции f(x) коэффициенты Фурье таковы: 1 C2k = Dft + 1) |/(я)Р2к(я) dr. C2fe+1 = 0 (fc=0,1,2,...). A9) о Аналогично, для нечетной функции fix) получаем 1 С2к = 0> С2*+1 = Dft + 3J Г/(^)^'гл.+1 (^)<1Г (Й=0,1,2,...). B0) . О Замечание. Обобщенный многочлен A5) относительно многочленов Лежандра с коэффициентами Фурье A7) представляет собой п-ю частичную сумму ряда, называемого рядом Фурье - Лежандра: со fix) ~ 2 <WX)- B1) Ряд Фурье - Лежандра сходится к функции f{x) в среднеквадра- среднеквадратичном на отрезке [-1,1]. Поточечная сходимость ряда Фурье - Лежандра к кусочно-гладкой функции, его порождающей, опреде- определяется следующей теоремой. Теорема 3. Ряд Фурье - Лежандра кусочно-гладкой функции f(x) на отрезке [-1,1] сходится к значению /(д0 - 0) + f(xQ + Q) 2 в точке х0 (сходится к f(xQ) в точках непрерывности функции). Замечание. Вели функция fix) определена на отрееке [а,Ъ1, то с помощью линейного преобразования
§3. Приближение функций многочленами Лежандра 67 Ь-а Ъ+а Хш t + , t € C-1,1], 2 2 B2) можно получить многочлены Лекандра, ортогональные на отрезке 1а,Ы: Рк(х) B3) Доказать ортогональность многочленов Лежандра Pfe(z") на от- отрезке 1а,Ы и найти норму этих многочленов можно с помощью ааме- ны переменной под знаком интеграла. Действительно, { a При т = n находим \P\ 1 -1 а 11/2 ь~а J " J — Ь-а 2п+1 Выражение для коэффициентов Фурье в обобщенном многочлене по многочленам Лежандра Рк(х) для функции f(x), определенной на от- отрезке [а,Ь], примет вид f P f f(x)PAx) dr J Jft - ¦**¦ 2 o-a Произведя замену переменной по формуле B2), получим 2ft+1 1 dt B4) -1 где f Ьнз b+a I /(t) = / — t + — . 12 2 J
ч 68 Глава 4. Среднеквадратично* врябяшеию функций Щштр 1. Найти алгебраический многочлен степени п=2 наилучшего среднеквадратичного приближения для функции /(х)*|1-х| (СХК2). Оценить погрешность Решение. Имеем /(х) •< Q2(x) = CqF0(x) + G,P.,(x) + С^^{х). Используя формулы A4), B2) и B3) и учитывая, что о=0 и о=2, находим о+а f х —у- 1 Р0(Х) = 1 , Р1 (X) = PJ fr,^ = Р1 (Х-1 ) = X - 1 , 1 1 B5> РР(Х) = Р9(х-1) = - C(х-1J - 1) = - (Зх2 - 6х +2). * ^ 2 2 Производя замену переменной по формуле B2), получим }(t) = /(x(t)) = \t\ (-1 < t « 1), где коэффициенты Фурье вычисляются по формулам B4): 1 °к = | |t| PA(t) dt (fcO.1.2,...). -1 Так как функция f(t) - \t\ - четная, то можно воспользоваться формулами A9): , С&к = Dft + 1) ||t|P2i(t) dt, C2i+1 = О (й=0,1,2,...). Следовательно, ° 1 1 00 ш jtP0{t) dt = Jt dt = - , " Сл = О, о , о 1 1 5 JtP2(t) dt = 5 Ft - , 5 Cta - 1) dt = - , 2 a о о 1 ~ 5 ~ 15 1 9 откуда Q0{x) = - Pn(x) + - Po(x) = - + -•- (Зх* - 6x + 2)= г 2° a 2 г в г з = — (Sx2 - 10x + 6). 16
S3. Приближение функций многочленами Лежандра 69 По формуле A8) находим погрешность среднеквадратичного прибли- приближения: 2 2 p 25 гт/2 [- 2 + -.gjj f = т.е. <3(/,Q2")=Q,102, S(/,Q2)=O,125. Графики функций у=|1-х| и Q2(x) @ $ х $ 2) изображены на рис.19. в Пример 2. Найти алгебраический многочлен степени п=2 наилучшего среднеквадратичного приближения для функции 1, о < i « 1; 2-д:, 1 « х $ 2. Оценить погрешность a(/,Q2). Решение. Имеем /d) « Q2(i) = CQP0(i) + Po(^). P^i), Рг(х) определены соотношениями B3). Производя замену переменной по формуле B2), получим для дальнейших расче- расчетов функцию /(t), определенную на отрезке [-1,1]. Так как а=о, о=2, х = t+1, то 1, -1 < t < 0; О $ t + G2P2(x), где Г 1, [ 1-t Коэффициенты Фурье найдем по формулам A7): 1 о 1 Рис.19
70 Глава 4. Среднеквадратичное приближение функций 1 О 1 3 г - 3fr г I1 О, = - I f{t)?,{t) dt = - I Jtdt + J(i-t)tdt -i" -1 0 1 0 G2° ~\ ht)P2{t) dt = - [ J - Ct2 - 1 )dt + -1 -1 1 г 1 ? I 5 A-t)- Ct2 - 1)dt = . J 2 J 16 0 0 Таким образом, u 4 ° 2 1 16 2 3 1 5 1 j, 1 • = (.r-1) Car - &r +2) = — (-15af + 14г + 30). 4 2 16 2 32 По формуле A8) находим погрешность среднеквадратичного прибли- приближения: 2 ^ ^2 <2(/.<22>=(ИЛ12- 2 1 1 0Л12 = J /(z) cLr = J /2(t) dt - i + J(i-tJdt = -, 0-1 0 2 2 о 5 Г 4 f 9 1 5 111/2 d(/.Q?)= ---+¦-+ « 0,051, 3(/,Qp) « 0,0442. dt3L86 128jJ 2 Графики функций f{x) и Q2(x) @ ^ x $ 2) изображены на рис.20.
§3. Приближение функций мкогочленшш Лежандра 71 У 1 fix) 1 Рис.20 Упражнения Найти алгебраический многочлен наилучшего среднеквадратичного приближения Qn(x) для функции /(х) на отрезке Ca.ol. Предста- Представить графически приближение функции /(х) многочленом Q (х). Оценить погрешность среднеквадратичного приближения 3(/,Qn), 1. 3. -2, (n = -x, x-2 (n = -2 s , 0 i 2). , 1 * 2). s X s X < 0; $ 2 ^ 2 f 2X, 2. fix) = J L -Зя. (n = in = -2 < 0 ^ 2). -2 Q cvl ; x $ ; x < o; 2 ? 0; ; 2 5. /(x) 7. fix) X, -2x, (n = X, 2x, (n = -2 s 0 s 2). -2 s 0 « 2). ? X « * X « ? X « ? X « ? u; » 2 ; o; ; 2 f -X, -2 < x $ 0; 6. /(x) = \ I 2x, 0 < x ? 2 (п = 3). 8. X, 0, (n = 0 $ CVl X i x i JO; » 3
72 Глава 4. Среднеквадратичное приблавешю функций f 1, 0 < x < 1; f 0, -1 < x < О; 9. fix) = \ 10. fix) = | I i, 1 < x < 2 I x, 0 < x < 1 = 2). (л = 4). f 1, -1 < x < 0; 11. /(x) = | 12. I 1-х, 0 $ x $ 1 13. (n = 2). 2, -2 < x 2-х, 0 < x ;n - 2). О; 2 х < 0; f 0, -1 < x < С 15. /(x) = | 1-х, 0 $ x < 1 (п = 4). 14. 16. { 1 -2x, 3x, (л = -X, 2 (n = 0, 1, (n = -2 0 2). -2 , о 2). -1 0 5). < X з < X s < X « < X « < X < < X * / t 0; J 0; s 2 : 0; j 1 17. /<х) = 2-|х|, -2 < х < 2 18. /(х) = 4|Х-1|, О < X < 2 (п = 4). (П = 4). 19. /(х) = 1-|х|, -1 < х (П = 4). 21. /(х) =-1+|х|, -1 < х (П = 4). 23. /(х) = 1 + |х1„ -1 < х (п = 4). 25. /(х) = |х|, -1.< х < (П = 4). 20. /(х) = 2|х|, -2 < X < 2 (п = 4). 22. /(х) = О, -2 < х < 0; 24. /(х) f 0, -2 < х 1 2, 0 < х (п = 5). f -f, -1 < х < 0; 1 1, О < х < 1 (п = 5).
§4. Приближение функций многочленами Чебышева 73 §4. ТОЧЕЧНОЕ СРЕДНЕКВАДРАТИЧНОЕ ПРИБЛИЖЕНИЕ ФУНКЦИЯ ОРТОГОНАЛЬНЫМИ МНОГОЧЛЕНАМИ. ОРТОГОНАЛЬНЫЕ МНОГОЧЛЕНЫ ЧЕБЫШЕВА Пусть на множестве точек {дг{> ((=1,2,...я) задана функция f(x) и определена система функций igh(x)} (ft=0,1,2,...). Скалярным произведением функций gk(x) и gx(x) на множестве точек (?{> ((=1,2,...яг) называется сумма произведений значений функций, вычисленных во всех точках, т.е. та *' г (=11 * г * ч .1 1 , та р ,. 1 /2 Число |gfe|| = ^(gfe.gfe) = [ Jgjj (i,) J является нормой функции gh(x) на множестве точек ix^ (t=t,2,...m). Функции gfe(?) и ?г(?) называются ортогональными на множестве точек, если их скалярное произведение на этом множестве равно нулю, т.е. (gfe.?,)= S Bjx.)gAX.) = 0 (ft / Z). B6) Система функций {gfe(x)> (A=0,1,2,...) называется ортогональ- ортогональной на множестве точек ixt) (t=i,2,...m), если все функции этой системы попарно ортогональны на этом множестве. Коэффициенты Cq, C1, .... С обобщенного многочлена называются коэффициентами Фурье функции f(x) относительно орто- ортогональной системы функций, если они определяются по формулам е=1 ,2,...,п). B7) 1=1 * Теорема 4 (о точечном среднеквадратичном приближении функции ор- |тогоналышми многочленами). Для функции f(x), определенной на множестве точек ix{} (t=i,2,...m), обобщенный многочлен п-й
74 ГлаВа 4. Среднеквадратичное приближение функций степени Qn(x) с коэффициентами Фурье относительно ортогональное на множестве точек системы функций igh(x)) является многочленом наилучшего среднеквадратичного приближения этой функции, причем квадрат наименьшего среднеквадратичного отклонения определяется соотношением d2(/,Qn) = |/|2 - S <% IS*!2, B8) где С& - коэффициенты Фурье, определяемые по формулам B7). Оценка погрешности приближения определяется величиной многочленами Чебышева на множестве точек {х{) (f=i,2,...m) называются алгебраические многочлены, ортогональные на этом мно- множестве, с нормой Hgfe|, отличной от нуля, и определяемые следующи- следующими рекуррентными формулами: 2(х) (*=2,3,...m-1), B9) гда Соотношения для коффициентов а, aft, o^ получены из условия орто- ортогональности B6). Замечание. Можно показать, что многочлен gmW степени т на мно- множестве точек ixt) (t=i,2,...,m), полученный по рекуррентным формулам B9), на этом множестве точек имеет норму, равную нулю, и уже не является многочленом Чебышева. Пример 1. На множестве двух точек {0,1} определить ортогональные многочлены Чебышева и вычислить их нормы. Решение. Здесь m = 2. Имеем 12 11 go(z) = 1, &, {х) = х - a, a = - 2 xt - - @*1 )= -,
§4. Приближение функций многочленами Чебышевв 75 2 1 4* Далее, используя рекуррентные соотношения B9), построим функцию Норма функции g2(x) на множестве {О, П равна нулю и, следова- следовательно, эта функция не является многочленом Чебышева. а Пример 2. Функция у = f(x) определена таблицей вида 1 xt «i 1 0 4 2 1 0 3 3 1 4 4 2 Требуется аппроксимировать функцию у = fix) алгебраическими многочленами наилучшего среднеквадратичного приближения Q0(x), Q^ix), <Э2(сг), Qj{x) и оценить погрешности каждого приближения Решение. Составим ортогональные многочлены Чебышева gQ(x), g,(x), на множестве точек {0,1,3,4}. Имеем 1 4 1 1, &, (х) = х-а, а = - ? х. = - @+1+3+4) = 2, ' 4 i=i * 4 = (х - = 4, = 10, ¦в,! 0-4+1 .Ц-3-1+4-4 10 - 2,
76 Глава 4. Среднеквадратичное приближение функций 4 1 «А Ив l) о • 1.(-2)+Ь (Х- 2J- 1-<-1 4 5 ?' )+3 • 1 • 1+4 • 1 •2 5 2 9 9 9 9 = (X - t=1 9 9 9 9 О— + 1 — + 3— + 4 — 4 4 4 4 9 То' 2. 17 - 2K (x - 2), 2 4 , 36 144 144 36 72 3 i=1 3 * ~ 25 +25 25 + 25 " 5 Значения многочленов ^(х), g^(x), gg(x), g3(x) на множестве то- точек {0, 1, 3, 4} представлены в таблице ? 1 2 3 4 0 1 3 4 1 1 1 1 -2 -1 1 2 g2(X() 1.5 -1,5 -1,5 1,5 g3{xt) -1.2 2.4 -2,4 1.2 Многочлены наилучшего приближения имеют вид QQ(x) =
§4. Приближение функции многочленами Чебшвева 77 (X) + Здесь коэ<Кицивнты Фурье, определенные по формулам B7), таковы: 1 10 5 2 6 1 с, = - -. Квадрат наименьшего среднеквадратичного отклонения определяется соотношением B8) и, в частности, для S(f,Q*,) имеем Зло ,49 9 25 (T(f,Q-) = |/|г - ? С? |gv| = 21 - [ —-4 + >10 + —«9 + 3 А=0 1 16 100 36 1 72 ч , 49 9 25 8 ч f 1 =21 -{_ + — +— + -I =0. 95J l4 10 4 5J Тем самым найдены алгебраические многочлены наилучшего среднеква- среднеквадратичного приближения QQ(x), Q:(x), Q2(i), Qj(x) и погрешности каждого из приближений 3(/,Q0), 3(/,Q1), 3(/,Qg), 3(/,Q3): 7 = - . 3(/,Q0) = 0,645; 3 47 Q<(X) = X + — , 10 20 5 „ 109 18 QA 1 1 , 17 P 13 зг + — JT т + 4, 3 6 2 .,) = 0,611; 3(/,Q2) = 0,276; 3(/,C3) * 0. Значения алгебраических многочленов наилучшего среднеквадратич- среднеквадратичного приближения в точках х{ представлены в таблице { 1 2 3 4 0 1 3 4 1,75 1,75 1,75 1,75 2,35 2,05 1,45 1,15 <fe(xf) 3,6 0,8 0.2 2,4 4,00 0,00 1.00 2,00 Отметим, что Q3@) = 4, Q3A) = 0, Q3C) = 1, 03D) = 2.
78 Глава 4. Среднеквадратичное приближение функций 2 ¦ О - -1 1 Графики функций QQ{x), 2 3 4 * Рис.21 , Q2{x), Q3(x) изображены на рис.21; на том же рисунке отмечены точки A,0), C,1), D,2). Упр Функцию f{x), полученную, например, в результате эксперимента и определенную таблицей, аппроксимировать алгебраическими мно- многочленами наилучшего среднеквадратичного приближения Q2(t) и <Э3A); оценить погрешности 3(/,Q2), cl(f,Qj). Изобразить гра- <{ики функций Яг(х), Qj(x) и отметить экспериментальные точки в той же системе координат. 1. 2. 3. xi xi у* xi 1 1,1 2 1,4 3 1.6 4 1,7 1 1 1,05 2 1,55 3 1,7 2 0,4 3 0,55 4 0,13 4 1,75 5 0,09 ,9 5 1, 8 6 0, (Л
|4. Пршбянюшм фунющн многочленами Чебымева 79 xi 1 7,6 2 6,2 3 5,6 4 3,5 5 3 xi Vi 1 8,2 2 5,9 3 4,9 4 4 5 3,2 xi У* 1 7,2 2 5,9 3 4.9" 4 4 5 3,2 xl y« 1 7,1 2 6,1 3 4,9 4 4 5 3,1 y< xi yt xi yt xl y« y* 1 0,55 2 0,7 1 1,1 1 1.1 1 5,1 1 5,1 1 1,9 2 1,55 2 1,55 3 0,77 4 0,82 5 0,85 3 1,9 3 1,9 4 2,3 5 2,6 4 2,25 5 2,5 2 4,4 2 3,4 2 5,5 3 3,2 3 3,2 4 2,7 4 2,7 5 2,55 5 2,55 3 10 1 3 2 3,5 3 3,67 4 15 5 21 4 3,75 5 3,8
80 Глава 4. Средяекведратичаое приближение функций 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. V У{ xi xi yt xi yt 1 0,25 1 0,25 1 0,20 1 4,8 2 0,09 3 0,07 2 0,11 I 4 0,05 3 0,071 0,1 5 0,04 i 353 5 0,0*2 2 0,28 2 5,76 xi yt 1 1 y« Уе xt y* xi y* y* *f Ус 1 0,33 1 1,5 1 1 1 1 1 2,25 1 ' 2 2 3,08 3 0,33 3 6,912 3 4,3 4 0,36 4 8,294 5 0,38 5 9,95 4 5,16 2 0,5 2 1,75 2 0,2 2 0,4 2 3,37 2 2,69 3 0,6 3 1,83 3 0,11 3 0,33 3 5,06 3 3,1 4 0,67 4 1,87 4 0,077 4 0,31 4 7,59 4 3,39 5 5,83 5 0,71 5 1,9 5 0,059 5 0,29 5 11,4 5 3,61
§5. Метод наименьших квадратов. Эмпирическое формулы 81 55. МЕТОД НАИМЕНЬШИХ КВАДРАТОВ. ЭМПИРИЧЕСКИЕ ФОРМУЛЫ Пусть данные некоторого эксперимента представлены в виде таб-~ лицы значений переменных х и у: «1 х2 Уг Ш • а • • ш • • Можно поставить задачу об отыскании аналитической зависимости между х и у, т. е. некоторой формулы y=f{x), явным образом вы- выражающей у как функцию х. Естественно требовать, чтобы график ис- искомой функции y=f(x) изменялся плавно и не слишком уклонялся от экспериментальных точек {xi,yi). Поиск такой функциональной за- зависимости называют "сглаживанием" экспериментальных данных. Задачу о сглаживании экспериментальных данных можно решать, используя метод наименьших квадратов. Согласно методу наименьших квадратов указывается вид эмпирической формулы у = QU.Oq.o,,...^), C0) где aQ, а,,..., ап - числовые параметры. Наилучшими значениями параметров aQ, a^ ап (которые обо- значим aQ, а,,..., а ) считаются те, для которых сумма квадратов уклонений функции <J(i,a0>a1,...,on) от экспериментальных точек (xl,yl) A=1,2,...,т) является минимальной, т.е. функция on) - C1) в точке (а0, а, ап) достигает минимума. Отсюда, используя необходимые условия экстремума функции нескольких переменных, по- получаем систему уравнений для определения параметров а0,..., ап: ds os ds — =0, — =0,..., — = 0. да0 да да C2) Бели система C2) имеет единственное реп/ёние aQ, а,,..., ап, то оно является искомым и аналитическая зависимость между экспе-
82 Глава 4. Среднеквадратичное приближение функций риментадьными данными определяется формулой У » /(х) - СНх.^.а,.....^). Заметим, что в общем случае система C2) нелинейна. Рассмотрим подробнее аппроксимирущие зависимости C0) с дву- двумя параметрами: у = Q{x,a,p). Используя соотношения C2) и опус- опуская несложные выкладки, получим систему двух уравнений с двумя неизвестными а и р: - yj —¦ = °. C3) SQ(a:t,a,p) = 0. В частном случае аппроксимации экспериментальных данных с помощью линейной функции имеем dQ dQ у = Q(x,k,b) =йх+о, — = х, — = 1. dk db Система C3) для этого случая является линейной относительно не- неизвестных к и о: [(ftxt + b) - yti = 0, Г(йг4 + о) - yt] xt = 0 ton + ft t=i % i=i * C4) Пусть для переменных яг и у соответствующие значения экспери- экспериментальных данных (xi,yi) не располагаются вблизи прямой. Тогда выбирают новые переменные Х = Ф(лг,у), Y = ф(х.у) C5) так, чтобы преобразованные экспериментальные данные у4) C6) в новой системе координат (Х,У) давали точки (Ki,Yi), менее укло- уклоняющиеся от прямой. Для аппроксимирующей прямой Y - ИХ + О C7) числа й и b можно определить из уравнений C4), где вместо лг{ и
}5. Метод неимениях квадратов. 8мпнрячеокие формулы 83 у{ подставляют соответствующие значения Х{ иУ(. Нахождение за- зависимостей C5) называют выравниванием вксоервмевтальяа дота. функциональная зависимость у=/(х) определена неявно уравне- уравнением Щх.у) = ktf>(x,y) + о, разрешимым относительно у в частных случаях. Припер 1. Установить вид эмпирической формулы y=f(x), используя аппроксимирующие зависимости C0) с двумя параметрами а и C, и определить наилучшие значения параметров, если опытные данные представлены таблицей 1 7,1 2 27,8 3 62,1 4 110 5 161 Решение. Здесь экспериментальные точки (?{,у{) не располагаются вблизи прямой. Положим X - 1шг, Y - 1пу и составим таблицу экспериментальных данных в новых переменных X, и У.: Yl 0,000 1,960 0,693 3,325 1,099 4,129 1,386 4.Т00 1,609 5,081 Точки (Xi,Yi) лежат приблизительно на прямой (рис.22). Наилучшие значения параметров А и Ъ эмпирической зависимости Y = Ш. + о (в новых переменных) находятся из системы уравнений C4): 0,0 1,5
84 Глава 4. Среднеквадратичное приближение функций ъп ¦ * 5 b + 4,787 й = 19,196, 4,787 b + 6,200 A = 21,535. Решив эту систему, получим b ¦ 1,97, й = 1,95. Неявное уравне- уравнение., выражающее связь между переменными хну, имеет вид lay = 1,95 lnx + 1,97. Легко получить явную зависимость между л: и у в виде степенной функции ¦ у = e1>9V'95 = 7,16 х1'95. C8) Сравнение экспериментальных данных с результатами вычислений по эмпирической формуле C8) в соответствующих точках представлено в виде таблицы ' xi у=7,16 х ,95 1 7,1 7,16 2 27,8 27,703 62 61, 3 .1 081 1 107 4 10 ,04 5 161 165,39 Формула C8) является частным случаем аппроксимирущей зависимос- зависимости с двумя параметрами, имеющей вид Параметры аир этой зависимости можно было бы найти из нелиней- нелинейных уравнений C3) непосредственно. Однако применение способа вы- выравнивания существенно упрощает вычисления параметров. В данном случае a = е = к. Рекомендации по выравниванию экспериментальных данных и апп- аппроксимирующие зависимости с двумя параметрами приведены в таблице на с. 85. Одну из шести предложенных формул преобразования к переменным (X.Y) следует выбирать одновременно с проверкой применения ли- линейной зависимости к исходным данным (xi,yl) ((=1,2 т). Усло- Условием выбора наилучшей эмпирической формулы является наименьшее уклонение исходных или преобразованных экспериментальных данных
55. Метод наименьших квадратов. Зшлрнчеокяе формулы 85 Л 1 2 3 4 5 6 (преобразование переменных) X - х, У ¦ ху 1 К = х, Y = - У а: X = х, У = - У К = х, У = lni/ X = lnr, У = у X = lnr, У = 1гц/ Эмпирическая формула р у ш а + -t а»* , р»Ь 1 у = , сх=й , |3=Ь аг + C у = , а=й , р=Ь аз: + р у = афх, a=eb, p=eft у = alnr+p, а=й, р=Ь у = сиР, а=еь, р=й от прямой. Уклонение данных от прямой в калщом варианте выравни- выравнивания данных будем определять величиной у у^ Для наилучшей эмпирической формулы величина d является наимень- наименьшей, т.е. d = mln id.) (J = 0 для случая, когда Х.=х, и У =и,). Естественно, что если не удается удовлетворительно построить функциональную зависимость, используя вид эмпирической формулы с двумя параметрами, то можно продолжать поиски среди формул с большим числом параметров. Пример 2. Опытные данные определены таблицей Х1 0 4 1 0 3 1 4 2 Установить вид эмпирической формулы y=f(x), используя аппрокси-
86 Глава 4. Среднеквадратичное приближение функций мирущую зависимость с тремя параметрами а, Ь и с, имеющую вид Q{x,a,b,cy = ах2 + bx + с. , Решение. Здесь соотношение C1) примет вид S{a,b,c) = 2 с - Для нахождения a, D, и с составим систему уравнений вида C2): dS dS дЗ- — =0, — =0, — =0. Отсюда получаем систему трех линейных да до дс ¦ уравнений с тремя неизвестными: ?. [az? + Ьх. + с - х. ] э? = О, =i * ill t=1 m (=1 + &rt + с _ У(] it = о, + tat + с - ytl =0 4 2 4 (=1 (a-338 + b'92 + c-26 = 41, a- 92 + b-26 + c- 8 = 11, a- 26 + b« 8 + c- 4 = 7. 5 109 18 Решением этой системы являются числа о = -, о= , с= —. 6 30 5 Эмпирическая формула представляет собой функцию 1 5 9 109 18 У = /(х) = - зг X + —, б 30 5
55. Метод наименьших квадратов. Эмпирические формулы 87 совпадающую с алгебраическим многочленом наилучшего среднеквадра- среднеквадратичного приближения Q^ix) на множестве точек {6, 1, 3, 4> (см. пример 2 §4). н Упражнения Выполнить упражнения 1-25 из §4 в соответствии со следующим заданием. 1. Нанести экспериментальные точки (?t,yt) на координатную сетку (х,у). 2. Выбрать одну из шести предложенных формул преобразования к переменным (Х,У) так, чтобы преобразованные эксперименталь- экспериментальные данные {Xl,Yi) наименее уклонялись от прямой. 3. Методом наименьших квадратов найти наилучшие значения пара- параметров й и о в уравнении прямой C7). 4. Найти явный вид эмпирической формулы y=Q(x,a,$) и построить график эмпирической функции.
ГЛАВА 5 ИНТЕРПОЛИРОВАНИЕ ФУНКЦИИ §1. ИНТЕРПОЛЯЦИОННАЯ ФОРМУЛА ЛАГРАНЖА Пусть функция y=f(x) определена таблицей yt хо Х1 У, . . . . . . . . Хп Уп Значения аргументов ?х(} ({=0,1,....п) будем называть узлами интерполяции. Задачей интерполяции является построение многочлена L(x), значения которого в узлах интерполяции х^ равны соответствующим значениям заданной функции, т.е. = yt ((=0,1,...,л). Интерполяционной формулой Лагранжа называется формула, представ- представляющая многочлен Их) в виде A) {=0 где pt(x) - многочлен степени п, принимающий значение, равное единице в узле x =0,1,...,п), til имеющий вид p{(x) = t и нулю в остальных узлах xk (fe*t) (t,fc= )(х-хг )...(х-хп) ixt-x0) многочлен Их) называют интерполяцкоинш ыногочленоы Лагранжа. Заметим, что степень многочлена Лагранжа не превышает числа п. Пргаюр 1. Пользуясь интерполяционной формулой Лагранжа, соста- составить уравнение прямой, проходящей через точки Рл^ Р1(х1,у1), если хо=-1. ^0=-3, ^=2, ^=4. Решение. В данном случае многочлен Лагранжа примет вид x-x* 1 ] хо-хл ,j x~xo о х-г -1-2 + 4 лг+1 2+1 ? 3 2 3 Уравнение искомой прямой есть
$1. Интерполяционная формула Лагранжа 89 Пусть функция у=/(х) определена на отрезке lxQ,xnl. Возьмем на втом отрезке множество точек ixti ((=0,1,...,п) и выберем их в качестве узлов интерполяции. Построив многочлен Лагранжа Их) для системы узлов <?(}, положим f{x) « Ъ{х) У лг € [лго,лгп1. При этом в узлах итерполяции имеем f(xt) = Ь(хг) ((=0,1 п). Если функция /(лг) на отрезке lxQ,xnl имеет непрерывные про- производные до (п+1)-го порядка включительно, то погрешность интер- интерполяционной формулы в каждой точке этого отрезка оценивается не- неравенством lf(x)-L(x)| <-2±l |П +1(лг)|, B) где Jfn+1 = max {х-хо)(х-хл)...(х-хп). Пример 2. Построить многочлен Лагранжа второй степени, аппрокси- аппроксимирующий функцию y=slnr на отрезке Го, - 1, если заданы значения функции в трех узлах интерполяции: slnr Уо=а ^=¦«[/6=0,5235988 У^.5 Т2=1С/4=0,7853982 У2=0,7О71068 С помощью интерполяционной формулы вычислить приближенное значе- значение sin — и оценить погрешность результата вычислений. Решение, многочлен Лагранжа для трех узлов интерполяции запишет- запишется так: L(x) = у0 или {Х-Хл 9J 1 ) {Х-Х лг [лг - - ] лг 1(лг) = 0,5 =—^——- + 0,707 ;=- , 4 2 = - 2,064 -, + 3,344 - При лг = — = 0,2617994 получим L Г — 1= 0,264298. 12 1 12 J
90 Глава 5. Интерполирование С помощью неравенства B) находим оценку погрешности. Имеем |Blnf — 1 - L f — ]| <-2 |H,f — I 12 ) 42 } 3! ^ 12 где П^х) - (x-XqMs^e,)(xsz^) -x Jx — JJx — J и П.Г-1- If-Llf-?] =2f-f. 31 12 J 12 *• 12 Jl 6 J I 12 J Так как f(x)=siax, f (x)=cosx, f(x)=-Btax, f"' (x)=-co8x, то *3 = max |/"' (x)| = max |-coex| = 1 и, следовательно, , jelnf — 1 - L f — 1| <- f — 1 «0,006. 1 12 J l 12 J 3 *• 12 J 1С Итак, sin — * 0,264 ± 0,006. Заметим, что это значение с шестью 12 1С верными цифрами есть sin — = 0,258819. я fnpt ЯХИЙЯИЯ 1. Функция /(лг) аппроксимируется интерполяционным многочленом Лагранжа второй степени для системы трех равномерно располо- расположенных на отрезке узлов. Оценить погрешность интерполяции в точке ?: 1С 1Г a) f{x) = cos х2. ?=— "[о<х<- •тс , тс 12 1 4 _ 2 В) /(х) = е я , 5*0,3 @<х<0,4). 2. функция /(х) определена на отрезке A,00; 1,20] (см. таблицу на с. 91). Найти значения многочлена Лагранжа, интерполирую- интерполирующего функцию /(х) на этом отрезке по системе трех равномерно расположенных узлов (с шагом 0,1), в точках 1,05; 1,09; 1,13; 1,15; 1,17. Полученные результаты сравнить с табличны- табличными значениями и дать оценку точности интерполяции, используя неравенство B).
§1. Интерполяционная формула Лагранжа 91 X 1,00 01 02 03 04 05 06 07 08 09 1,10 11 12 13 14 15 ¦ 16 17 18 19 1,20 е* 2,7183 2,7456 2,7732 2,8011 2,8292 2,8577 2,8864 2,9154 2,9447 2,9743 3,0042 3,0344 3,0649 3,0957 3,1268 3,1582 3,1899 3,2220 3,2544 3,2871 3,3201 0,3679 0,3642 0,3606 0,3570 0,3535 0,3499 0,3465 0,3430 0,3396 0,3362 0,3329 0,3296 0,3263 0,3230 0,3198 0,3166 0,3135 0,3104 0,3073 0,3042 0,3012 sh х 1,1752 1,1907 1,2063 1,2220 1,2379 1,2539 1,2700 1,2862 1,3025 1,3190 1,3356 1,3524 1,3693 1,3863 1,4035 1,4208 1,4382 1,4558 1,4735 1,4914 1,5095 ch x 1,5431 1,5549 1,5669 1,5790 1,5913 1,6038 1,6164 1,6292 1,6421 1,6552 1,6685 1,6820 1,6956 1,7093 1,7233 1,7374 1,7517 1,7662 1,7808 1,7957 1,8107 sin х 0,8415 0,8468 0,8521 0,8573 0,8624 0,8674 0,8724 0,8772 0,8820 0,8866 0,8912 0,8957 0,9001 0,9044 0,9086 0,9128 0,9168 0,9208 0,9246 0,9284 0,9320 COS X 0,5403 0,5319 0,5234 0,5148 0,5062 0,4976 0,4889 0,4801 0,4713 0,4625 0,4536 0,4447 0,4357 0,4267 0,4176 0,4085 0,3993 0,3902 0,3809 0,3717 0,3624 In x 0,0000 0,0100 0,0198 0,0296 0,0392 0,0488 0,0583 0,0677 0,0770 0,0862 0,0953 0,1044 0,1133 0,1222 0,1310 0,1398 0,1484 0,1570 0,1655 0,1740 0,1823
92 Глава 6. Интерполирование функций В процессе решения задачи 1 могут возникнуть труднос- трудности при оценке величины *, = твх \f " W\, 0f Проведем эту оценку в задаче 1а, где f{x) - cos z8. Строгое вычисление величины max \f'"{x)\ требует нахож- дения точек экстремума функции /'''(х) на отрезке [о, - 1, вычисления значений функции в точках экстремума и на концах отрезка и, наконец, выбор необходимого значения My Для этого вычислим производные функции /(х) вплоть до чет- четвертого порядка: /' (х) = -2х sinx2, /"(х) = ^(siiu2 + гх^оозх2), /'" (х) = -4s (Зсозх2 - Zx^sinz2), /D)(х) = - 4Ccosx2 - Д^созх2 - 12x2slnx2). Точки экстремума функции /'''(х) являются корнями уравнения /D)(х)=0, 4Ccosx2 - Дх^озх2 - 12x2slnx2)=0, х ? Го, - ]. Эти корни находятся с помощью численных методов, изложенных в гл. 3. Завышенную, но вполне удовлетворительную оценку величины М3 получим с помощью следующих более простых преобразовании. г тс 1 На отрезке О, - справедливы неравенства хсозх2 ? 0, x^slax2 2 0, Зхсозх2 > Поэтому М3 = max |/'"(х)| = 4 max (Зхсозх2 - 4 Г шах Зхсозх2 - mln a^slnx2 1=12 max хсозх2 < 3ic. L 0«г^ СКг^ J Итак, получена несколько завышенная оценка М3 < 3%.
§2. Интерполирование функций кубнчеокиыи оплайнами 93 §2. ИШкРПОЛИРОВДНИЕ «УНКЦИЙ КУБИЧЕСКИМИ СПЛАЙНАМИ Пусть отрезок [а,о] разбит на п частей точками ix^): Сплайном й-й ствпеня называется функция, представляющая собой многочлен не выше fe-й степени на каадом из последователь- последовательно примыкающих друг к другу интервалов (x(_1fx() A=1,2 n), причем в точках стыка двух интервалов xt (J=1,..,n-1) функция непрерывна вместе со своими производными до порядка не выше А. Например, непрерывная кусочно-линейная функция (ломаная) яв- является сплайном первой степени с производной, терпящей разрыв в точках излома. Пусть на отрезке 1а,Ъ) определена функция у=/(х), значения которой в точках xt равны yt=/(x,). Задача интерполяции функции у=/(х) на отрезке (а,о] кубичес- кубический сплайном (сплайном третьей степени) состоит в нахождении функции S(x), равной многочлену третьей степени S{(x) на каждом отрезке ?x(_1txt] (i-i ,2,...,n), т.е. S(x) = S((x) = a* x3 + a\ x2 + a^ x + a*, x « [jh,i(], C) причем значения сплайна в узлах интерполяции х{ равны соответст- соответствующим значениям заданной функции у и сплайн-функция непрерыв- непрерывна в узлах интерполяции вместе с производными первого и второго порядков: S(x{)=St+1(x() = yt ({=0,1,2 п-1), S(xn)=Sn(xn) = yn, D) S"(x()= S'^fXj) A=1,2 n-1). G) Условия D)-G) дают 4n-2 линейных алгебраических уравнений для определения 4п неизвестных коэффициентов а* (р=0,1,2,3; {=1,2,...,п) при соответствующих степенях х в многочленах S{(x). Можно показать, что интерполяционный кубический сплайн для
94 Глава 6. Интерполирование функций функции у=/(х) существует и является единственным, если вместе с уравнениями D)-G) удовлетворяется какая-либо пара дополнитель- дополнительных условий (краевых условий) следующего типа: I. S'(a) */'(o), S'(b) = /'<b); II. S*(a)*/-(a), S"(b) =/"(*»; III. S'(a)=S'(o), S"(a) = S"(b). Рассмотрим случай разбиения отрезка ta.bJ на п равных час- частей с шагом h, для которого хо=а, х1=х0+?г,. ..x,+1=xt+?i,....xn=b и /i=(b-a)/n. Разберем построение интерполяционного кубического сплайна отдельно для условий I и II типов. При построении сплайна, удовлетворяющего краевым условиям I типа, введем величины m{=S'(x{), называемые иногда наклонами сплайна в точках (узлах) xt ((=0,1,...,n). Интерполяционный кубический сплайн вида (х - х.JB (х - х. ) + h) S(x) = St(i) = yt_, * ?з *=1 + (x - x ,J{2 (x - x) + h) + ^—LJ—it + x f: Cxl_1,xt] (t=1,2,...,n) удовлетворяет условиям D), E), F) для любых m{. Из условий G) и краевых условий I типа можно определить ш-1 параметр mt. Действительно, легко проверить, что S(xt-1)=S<(xt_1)=yt-1, S(x()=St(xt)=j/t (t=1,2 n). Кроме того, вычисления показы- показывают, что S'(x()= S'<+1(xt)= mt ((=1,2 n-1). Если учесть, что 2m, 1 ^j V, ~ yf 1 Л h h
§2. Интерполирование функций кубическая ашшинс 95 а такие краевые условия I типа я условия G), то получим систему из п+1 линейных уравнений относительно неизвестных я(: -ftf- (Ы,2.....№-1), (9) mn = on = /'(b). Решение этой системы позволяет найти значения неизвестных т{ и определить интерполяционный сплайн в виде соотношений (8). Матрица А системы (9) имеет порядок тг+1 и является трехдиа- гональной: О 0 0 ... О О А = 1 1 О 4 1 1 4 0 0 0 0 0 0 О О О О О О 1 О О 1 0 4 1 1 4 О 0 0 0 ... О 0 0 Метод Гаусса (метод исключения неизвестных) для системы (9) значительно упрощается и носит название метода прогонки. Прямой прогонкой находят так называемые праговочвне коэффицмвнты: -1 . MfL^M^- Ъ{) A=1,2 П-1). Обратной прогонкой последовательно определяют неизвестные т{: mt = itmi+1 + Mt (t=n-1,n-2 0). Пример 1. На отрезке Го, - 1 построить кубический сплайн с шагом h = -i удовлетворяющий на концах отрезка краевым условиям I типа г и интерполирующий функцию j/=slnr. С помощью интерполяционной 1С формулы вычислить приближенное значение sin -- и сравнить его с точным. Решение. Будем искать кубическую параболу j/=S(r), удовлетворяю-
96 Глава 6. Интерполирование функции условиям на концах отрезка xQ - О и ж, = ft = -: у0 = S(x0) = slnr0 =0, 'О " " " *Л -- 2 у, =» S(h) = sin Л = 1, (ft)=8ln'h=C08ft=0. Подставим значения h, у0, у1, iiiq, у1 в формулу (8) и получим сплайн вида s(x) = s1 (a?) = (Л - х) + Л) (а: - ЛГ х -, х х 4D - 1С - 1С . Тогда sin - * S| - I = 0,49196983 (точное значение равно 0,5). - 6 I 6 J г % л Пример 2. На отрезке I О, - I построить кубический сплайн с ша- ic L 2J гом h = -, интерполирующий функцию y=slor , если заданы значе- 4 ния функции в трех углах интерполяции: X slnx хо=О х1=«/4=0,7853982 у1=0,7071068 X2=*/2=1,570796 У2 = 1 С помощью интерполяционной формулы вычислить приближенное знача- вне sin - [ - = 0,5235988 I и сравнить с точным значением 0,5. Решение. Представим сплайн в вида (8): {SAx), 0 1 s2(x), %/4 < х < 1С/4; S(x) При таком представлении должны удовлетворяться уравнения (9): Bq = sln'x0 = соаг0=1, 3(у2 - у0) 3 Л Л nig = sln'x2 = coax2=O. 12 12-* Тогда, учитывая, что 1 + 4л. = — или л.= = 0,70493, ^ 1С ^ 4ic
§2. Интерполирование функций кубическими сплайнами 97 (Л - г) + Л) (г - Л Jг х*{х - И) (г - 2ЛJB (х - h) + h) (x - ЛJB Bft - х) + Л) S2(r) = у, — ?з + — ?з (х - 2ЛJ (х - Л) 1 Г? ' получим, в частности, выражение для функции S^(x): х2B (h - х) + h) (x - h Jx x2(x - h) 1С = г - 0,0050683975 0^ - 0,15514782 Др, 0 < X < -. 4 Значение sin - * S.. Г - 1 = 0,499938. - 6 u 6 J При построении сплайна, удовлетворяющего краевым условиям II типа, введем величину т± = S"(x±) - значение второй производной сплайна в узле xt ((=0,1,...,п). Уравнения D), E), G) будут удовлетворены, если интерполя- интерполяционный кубический сплайн представить в виде (X.- X) (X - X , ) Six) = St(x) = уси -i-— + yt —1-!_ + (X,- ГK- Л2(Х,- X) ~ (Г - Г, .K- /12(Х - Г, .) х € Cxt_1trf] (t=1,2 n). Учитывая, что S' (х.) = -i i=l + -i i (f=1,2 n-\), h 6 y.,1 - y, 23m, + ftm,,. S'(r) =^Jli 1S±l 4-469
96 Глава 5. Интерполирование функций и используя краевые условия II типа и условия F), получим систему из п+1 линейных уравнений относительно неизвестных т1: ~ 6(у...- 2у,+у. .) т4+1 - -li±±—fLZ±±- (t=i,2 rM), A1) mn Системы (9) и A1) являются частными случаями системы линей- линейных алгебраических уравнений следующего вида: "о un 4u( + ui+1 = bt (t=i,2,..'.,n-i), A2) Для функции /(х), имеющей на отрезке (а,о] непрерывные про- производные до третьего порядка включительно, точность интерполяции ее кубическим сплайном S(x) по точкам равномерного разбиения отрезка с шагом h при любых указанных ранее краевых условиях оценивается следующим неравенством для любых х на отрезке 1а,Ы: 5 , - S{x)\ <- JfJi3, где 1. = max |/'"(x)|. A3) 2 3 3 О*$Ф Неравенство A3) дает завышенную оценку точности приближения функции сплайном в точке. Упражнения Построить кубический сплайн, интерполирующий функцию у =f(x) на отрезке [1,00; 1,20] для равномерного разбиения с шагом №3,04 при краевых условиях I или II типа. Функция у = f{x) определена аналитически: 1) е*; 2) зпх; 3) chr; '4) sinx; 5) cosi; 6) lnx; 7) e~". Найти значение сплайна в точках 1,05; 1,09; 1,13; 1,15; 1,17. Получить оценку точности с помощью неравенства A3) и срав- сравнить значения сплайна в указанных точках с точными значения- значениями функции, "приведенными в таблице на с. 91.
ГЛАВА 6 ЧИСЛЕННОЕ §1. ВЫЧИСЛЕНИЕ ПРОИЗВОДНОЙ ПО BE ОПРЕДЕЛЕНИЮ Пусть функция у=/(х) определена в некоторой окрестности точ- точки xQ и имеет производную в этой точке, т.е. существует предел отношения приращения функции Ду к приращению аргумента Ах при стремлении дх к нулю: У' (х0) = Г (х0) = llm —, Дх = х-х0, Ду = /(xo+Ax)-/(xQ). A) Значение производной в точке х0 можно получить, переходя к пре- пределу в A) по последовательности целых чисел п и полагая, напри- (Ах)п мер, Ах = (Дх)п = —— . Здесь (АхH - некоторое начальное приращения аргумента, а - некоторое число, большее единицы, п = = Ш,t,2,3,...}. Тогда значение производной функции /(х) в точке х0 запишется так: (Ду) У' <V = Г (хо> = 1Ш • (A»>n = /<хо+(Л:Г)п)-/(хо)- Отсюда получаем приближенное равенство у'(х0) * —^-2 . B) <ДХ)П Для функции у=/(х), имеющей непрерывную производную до вто- второго порядка включительно в окрестности точки xQ, точность приб- приближения производной соотношением B) можно установить, восполь- воспользовавшись формулой Тейлора /(х) = /<х0) + /'(хо)Дх + -ГСОАх2, I « (хо,х). Тогда |/@) и окончательно имеем I (Ay) I \У' B'о)
100 Глава 6. Чиодеяяоо двфференцяровшше Для достижения заданной точности е приближения производной яри определенном числе вычислений можно испольвоввть неравенство 6. о) Праыер. Вычислить производную функции j/=slnr в точке xo=ic/3 с точностью е^Ю"-3 (тс/3 = 1,047198). Решение. Положим (Дх)_=0,1; о=10; (Ьх) = 0,1-Ю-", откуда U т* f 1С , 1С (Ду) = slnf - +0,1•10~n]-sln - . n *¦ 3 •'3 Определим приближенное значение производной: 1С ^ 1С ~п] , 1С ^ 1С ¦ slnf - +0, Ы 0~п] -sin - 1 3 J 3 0f1.10-n Найдем отношения, аппроксимирующие производную: 0,45590189; ——!- = 0,49566158; ^ = 0,49956690; Д) (ДхJ = 0,49995670; J 0,00038979390 < 6. Итак, начиная о третьего приближения, в соответствии с оценкой C) получаем искомое приближение производной данной функции у' (%/3) = cos(ny3) = 0,5 с точностью, не меньшей чем заданная 6=0,001. а §2. КОНЕЧНО-РАЗНОСТНЫЕ АППРОКСИМАЦИИ ПРОИЗВОДНЫХ Пусть отрезок 1а,Ы разбит на п (п??) равных частей точка- точками <xt>: а=х0 < х1 < г2<...<х<_1 < г( < г<+1<...<гп=о. Разность между соседними значениями аргумента постоянна, т.е. шаг h = х( - х(-1 A=1,2,...,п). Далее, пусть на отрезке Са.Ы определена функция y=f(z). значения которой в точках х{ равны {€=0,1.2 п).
§8. Конечно-разноотные аппрокояыации производных 101 Запишем выражения для первой производной функции в точке х{ с помощь» отноиения конечных разностей: а) аппроксимация с помощью разностей вперед (правых разностей) ду. y'{Xi)>"bx' to^M-zr*' АУ|=У|+1-У|. у'(х{)«-^—i (M),i,...,n-i); D) б) аппроксимация с помощью разностей назад (левых разностей) y'(xt)~ ——— ((=1,2,...,л); E) в) аппроксимация с помощью центральных разностей (точка х^ является центром системы точек xi_1, .r^, xi+1) ду у' Аппроксимация производной с помощью центральных разностей пред- представляет собой среднее арифметическое соотношений D) и E) в точках {х{> A=1,...,п-1). Отметим, что соотношения D) и F) не позволяют вычислить производную в точке хп=Ь, а E) и F) - в точке хо=а. Можно показать, что для функции у=/(х), имеющей непрерывную производную до второго порядка включительно, погрешность аппрок- аппроксимации производных разностями вперед и назад имеет один и тот же порядок О(Л), а погрешность аппроксимации центральными раз- разностями F) для функции у=/(т), имеющей непрерывную производную до третьего порядка включительно, имеет порядок 0(h2). Приближенное значение производной второго порядка в точке х выразим через значения функции у(-1, yt, yi+1. Для этого пред- представим вторую производную с помощью правой разности:
102 Глава 6. Численное дифференцирование а производные первого порядка у'{+1 и у'{ - с помощью левых разностей: и окончательно получим y(t) g1 <(=1,2,...,п-1). G) Погрешность последней аппроксимации имеет порядок О(Л2) для функции у=/(х), имеющей непрерывную производную до четвертого порядка включительно на отрезке 1а,Ъ]. Естественно, что пред- представление G) с помощью конечных разностей позволяет вычислять значения второй производной только во внутренних точках отрезка. §3. ИСПОЛЬЗОВАНИЕ ИНТЕРПОЛНЦИОННЫХ МНОГОЧЛЕНОВ ЛАГРАНЖА ДЛЯ ФОРМУЛ ЧИСЛЕННОГО ДИФФЕРЕНЦИРОВАНИЯ Пусть функция у=/{х) определена на отрезке (а,о] и в точках <т?) (J=0,1,2 п) этого отрезка принимает значения yt=/(it). . Разность мевду соседними значениями аргумента т{ постоянна и является шагом ft=zi-Tc_1 (Ui,...,n) разбиения отрезка на п1 ча- частей, причем а - xQ и Ь = х . Найдем аппроксимации производных первого и второго порядков с помощью значений функций у в узловых точках т{ с погреш- погрешностью одного и того же порядка в зависимости от шага h, причем этот порядок не ниже, чем достигаемый при конечно-разностной ап- аппроксимации производных для того же шага. Для того чтобы выразить значения производных через значения функции у{ в узлах интерполяции х1§ построим интерполяционный многочлен Лагранжа Lm{x) степени т, удовлетворяющий условиям Lm<Tis) = -f(;V = Уь (й=1> *+1....,t+m>, t+m < п. Многочлен Ьщ(х) интерполирует функцию f{x) на отрезке tTt,x{+m]. Дифференцируя многочлен Lm(x), получаем значения производных в точках ix^) (&=i, J+1 t+m). Если m=I, то L, (t) - линейная функция, график которой про- проходит через точки {xt,yt) и (те+1,т<+1). Тогда
§3. Использование многочленов Лагранка в дифференцировании 103 Д, <*) = -у, х-х 1+1 х-х, 1 Если m » 2, то график интерполяционного многочлена Лагранка L2(x)- парабола, проходящая через три точки (х(,ус), (xi+1,y{+1) и (з:4+2'1/<+2^ Вычислим первую и вторую производные многочлена ?2(:г) на отрезке + yt+2Bx-xrx{+1)]. = ^ (yt - 2y<+1 + y{+2). Первая и вторая производные многочлена Лагранжа -rif x ных функции /(X) в этих точках: 1 в точках J+1, х{+2 являются приближениями соответствующих производ- производ= 1 (-3yf = ^ (-yt + yt+2), (8) У" i+2 " Если функция /(х) на отрезке [хе,х{+2] имеет непрерывную производную до третьего порядка включительно, то справедливо представление функции в виде суммы: fix) = I^d) + R2(x), A0) где Д2(?) - остаточный член интерполяционной формулы, причем
104 Глава 6. Численное дифференцирование В этом случае можно дать оценку погрешности приближений произ- производных соотношениями (8) и (9). Дифференцируя A0). получим ?{х) - 2?<х) + Я?(х), A1) Г(х) - 1?(х) + #[(х). A2) Здесь IT + (x-xt)(:F-xi+1)], С € (хгхе+2), A3) /"'(?) #;(:r> = [(x-xi)+(x-x<+1)+(x-xi+2)], ? € <xf;ri+2)< A4) Погрешности при вычислении производных в точках х(, х(+1, х€+2 определяются из формул A1)-A4) следующими значениями остатков: 1 Р +2) = -Л2/'"(е), A5) 3 -Л/"'(С), #;B:i+1) - О, Таким образом, равенства A5) покааывают, что погрешности аппроксимации первой производной /' (х) с помощью формул (8) имеют один и тот же порядок О(А2), и естественна следующая реко- рекомендация по их применению на отрезке 1а,Ъ) в точках {х{> ((=0,1,2,...,гс) при гс > 2: Из равенств A6) следует, что приближение второй производной с помощью формулы (9) имеет различный порядок в зависимости от h в разных точках: в точках х{, xt+2 имеется погрешность порядка Л, а в точке xt+1 порядок погрешности выше (K;(xt+1)=0). В случае интерполяции функции fix), имеющей на отрезке 1а,Ь] непрерывную производную до четвертого порядка включительно, мож-
§3. Использование многочленов Лагранжа в дифференцировании 105 но получить погрешность интерполяции второй производной, имеющую порядок Л2 и одинаковую во всех точках, с помощью многочлена Лагранжа третьей степени L,(x) 00 четырем узлам интерполяции xfc (й=1,1+1,1+2,1+3). Опуская выкладки, приведем результаты для ап- аппроксимации второй производной: у< = ¦¦? <2у{ - 5у1+1 + 4у{+2 - у{+з>2 H8) 0{h y"i+3 = -> ("У€ + 4yi+1 - 5yi+2 + 2yi+3) Формулы A7) дают порядок аппроксимации О(Л2) для произ- производных первого порядка функции f(x), непрерывно-дифференцируемой до четвертого порядка включительно на отрезке 1а,Ы. Этот поря- порядок сохраняется при вычислении производной второго порядка на отрезке (а,о] в точках х1 A=0,1,2,...,п) при п > 3 по формулам 1 s (У(-1 - 2yt + yi+1J (t=1,2,...,n-1), A9) 4Уп-2 - 5Уп-1 + 2Уп>- Если функция f(x) на отрезке [xt,rt+mJ имеет негрерывную производную до (т+1)-го порядка включительно, то справедливо представление = Lm(x) + Ят(х), где im(x) -интерполяционный многочлен Лагранжа степени т, аппрок- аппроксимирующий функцию f(x) по узлам интерполяции {х } (fe=l,1+1....,t+m); йт(х) - остаточный член интерполяционной фор- формулы, причем
106 Глава 6. Чиолвнное дифференцирование Далее, используя приведенную схему и выбирая подходящую степень п интерполяционного многочлена, можно добиться нужной точности при аппроксимации производных различных порядков. Пример. Значения функции у = slnr определены таблицей X slnr 0 0 1С/6 0,5 ic/3 0,866 Требуется с помощью формул (8) и (9) приближенно найти у' @) иу'(О) и оценить погрешности результатов вычислений. Решение. Согласно первой из формул (8), имеем 1 3 . у'о « — (-Зу0 + 4у1 - у2) = - (-3-0 + 4-0,5 - 0,866) * 1,05; 1С 1 , 1С ..2 - Г - ] /"' (S), о % 3 *- 6 J ' "" ' 3* Так как /'(х) = cosx, • f{x) = -slar, /'" (x) ¦ -coar, 1 1С 2 |/'"(X)| < 1, то |Д1@)| < - f-1 «0,09. Итак, у' (ОМ ,05 ± ¦ ¦ ? 3 k 6 J ±0,09 (точное значение у'@) = cosO =1). Теперь воспользуемся формулой (9): 1 -1+0,866 зб - 6 - - 0.52. 6 Как видим, для лучшей оценки производной второго порядка необхо- необходимо увеличить число узловых точек и выбрать меньший шаг. т Упражнения функция fix) определена на отрезке С1;1.23 (см. таблицу на с. 91). Выбрав шаг ft=0,05, по формулам A7) и A9) найти прибли- приближенные значения производных /' (х) и f(x) в точках 1 и 1,10; оценить погрешность вычислений. Сравнить результаты с точными значениями производных в этих точках.
ГЛАВА 7 ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ §1. КВАДРАТУРНЫЕ ФОРМУЛЫ ПРЯМОУГОЛЬНИКОВ, ТРАПЕЦИИ И СИМПСОНА Для приближенного вычисления определенного интеграла Ь Г /(х) их разобьем отрезок интегрирования [а,?>] на п равных час- а тей точками хп = а, хл = xn+h х... = x.+h,...,x =Ь (ft - шаг разбиения, h=(b-a)/n). Значения функции /(т) в точках разбие- разбиения х{ обозначим через у . Непрерывная подынтегральная функция у = f(x) заменяется сплайном - кусочно-полиномиальной функцией S(x), аппроксимирующей данную функцию. Интегрируя функцию S{x) на отрезке la,bl, придем к некоторой формуле численного интег- интегрирования (квадратурной формуле). В зависимости от функции Six), аппроксимирующей подынтеграль- подынтегральную функцию, будем получать различные квадратурные формулы. Если на каждой части Ca:{_1,xi] (t=1,2,...,n) деления отрезка 1а,Ы функцию fix) заменить функцией, принимающей постоянное значение, равное, например, значению функции f(x) в серединной *t-i + xi точке f-й части ¦i'{_1/2 = » т0 Функция S(x) будет иметь ступенчатый вид: Six) = St(x) = yiH/2 В этом случае Z Г St(i) dr a i=1 xi1 и получаем квадратурную формулу пряыоуголышков:
108 Глава 7. Чиоленное интегрирование Если функцию fix) на каждом отрезке (х(_1,х(] заменять ее линейной интерполяцией по точкам (xt_1,y{_1) и (х{,у{), то полу- получим непрерывную кусочно-линейную функцию . xt-x х-х^_^ Six) - SAx) - у. . + у. , х € tx. л,хЛ, U\ п. t 1-1 h t h tit Здесь у{ = /(xt). Графиком этой функции является ломаная линия. В этом случае о п х1 г V f у(-1 у< sn) вх - > s, (х) ах = 5 ft J /_ J ?=1 2 С=1 <-1 и получаем квадратурную формулу трапеций: J/(x) to * I S(x) dx = h\ + у + Уо +,..+ у ^1. B) J I 2 1 «i- *»*-iJ a a Мокно получить квадратурную формулу Сшшсова, называемую так- также формулой парабол, если сплайн S(x), аппроксимирующий подын- подынтегральную функцию /(х),. представляет собой непрерывную функцию, составленную из примыкающих парабол. Потребуем, чтобы на отрез- отрезке Cx(_1fxt] парабола проходила через точки (х(_^,у4-1), (xi_1/,2,yi_1/,2), (xt,y(). Испольеуя построение интерполяционного многочлена Лагранка второго порядка на отрезке txl_1,xt], полу- получим сплайн 2(х-хс)(х-х<_1/2) Six) = SAX) = yt_, -g + у X Для дальнейших преобразований введем переменную t с @,1) с по- помощью равенства х = ^t-1+ W. качениям t, равным 0, 1/2, 1, соответствуют значения х, равные а;(И, ^t_1/2, zt. Выразим сплайн ?(х)через новую переменную t: t) = yt_1A-t)A-2t) + 4y(_1/2tA-t) +yttBt-1) =
§1. Формулы прямоугольников, трапеций, Симпоона 109 » У, A\-3t+ZtZ) + Ay, 1/P(t~t2) + y,Bt2-t) (W,2,...,n). 1 1 1 Учитывая, что Jd-3t+2t2)dt = J(t-t2)dt * JBt2-t)dt = -, имеем 0 0 0 b n xi n 1 f S(x) to =\ f S{(x) dr =\ ft Г St(t) df = = 2 e(У{-1 + 4У{-1/2 + У{) и в результате приходим к квадратурной формуле' парабол: ъ а Приближенное значение интеграла Здараб, вычисленное по квад- квадратурной формуле парабол, можно выразить через значения '^щ>яи и  ап - результаты вычислений по квадратурным формулам прямоу- прямоугольников и трапеций: 43прям + ^трап 2 1 парас5 ~ g 3 °прям 3 °трап" Погрешность каждой квадратурной формулы оценивается величиной остаточного члена R(h), зависящего от шага разбиения h (или от числа разбиений п): й * й Г f(x) to - f S(ar) их а а Приведем оценки погрешностей квадратурных формул в том слу- случав, когда подынтегральная функция имеет непрерывную производную второго порядка: для формулы прямоугольников Ъ-а ., (о-аK max |/* {х) | >ff- = —j- max \f (x) |; cpso 24?г2 acr^o 24 ocpso 24?г для формулы трапеций Ъ-а о (b-aK Д(?1)« — max \/*{х)\'ГГ = —у- max |/"(ar)| 12 аС^Ф 12п асз^о
110 ' Глава 7. Чноленное интегрирование Если подынтегральная функция имеет непрерывную производную четвертого порядка, то справедлива такая оценка погрешности формулы Симпсона: Ь-а ..у. . (о-а)^ (Ау. щах |/<*'<*)|.л* « j max |/D)(*)|. 2880 а$яв> 2880П4 Заметим, что при интегрировании степенной функции, степень ко- которой не выше трех, квадратурная формула Симпсона дает точный результат. 1 Пример. Найти приближенные значения интеграла Г ех dr с помощью О квадратурных формул прямоугольников, трапеций и Симпсона, если отрезок интегрирования [0,1] разбит на п = 2; 4; 10 равных час- частей. Оценить величину погрешности полученных результатов в каж- каждом случае. Решение. Обозначим через е погрешность результата интегрирования по квадратурным формулам (здесь е ~ R{h)). 2 Найдем производные подынтегральной функции f{x)-ex до четверто- четвертого порядка включительно и максимальные абсолютные значения про- производных второго и четвертого порядков на отрезке [0,1]: 2 2 2 26* A+2I2), /"' (х) = Дте* C+2Z2), max |/"(х)| = бе, max |/D)(а:)| = 7бе. 0«2*1 0«С$1 При гс = 4 получим следующие оценки величин погрешности результа- результатов: е 0,085; 76е - 0,00056. 2880-256 Результаты вычислений по квадратурным формулам прямоугольников, трапеций и Симпсона для различных чисел разбиений п и погрешнос- погрешности этих результатов сведены в таблицу
§1. Формулы прямоугольников, трапеций, Симпоона 111 Квадратурная формула прямоугольников трапеций Симпсона > п=2 3B) 1,40977 1,57158 1,46371 . 6 0.1699 0,3398 0,0045 П=4 3D) 1,44875 1,49068 1,46272 е 0,0425 0,085 0,0003 №=10 3A0) 1,46039 1,46717 1,46265 е 0,0068 0,0136 Практически важно вести вычисления до достижения заданной точности е по той или иной квадратурной формуле. Этой цели удов- удовлетворяет метод двойного пересчета, который заключается в сле- следующем. По квадратурной формуле проводят вычисление интеграла с шагом К и получают значение 3(h). Затем уменьшают шаг вдвое и получают новое приОлиженное значение интеграла 3(Л/2). Чтобы определить, как сильно уклоняется значение 3>(ft/2) от точного значения интеграла 3, используется правило Рунге: |3 - 1 ? - 3(ft/2)|. где к = 2 для формул прямоугольников и трапеций и k = 4 для фор- формулы Симпсона. При заданной точности е вычисления с уменьшающимся шагом, проводят до окончания приолижений при выполнении условия 1 J s. При этом полагают 3 « 3(Л/2) с точностью s. В Приложении (см. с. 300-305) приводятся блок-схема и прог- программы вычисления интеграла с заданной точностью методом двойного пересчета по квадратурной формуле Симпсона. В программах исполь- используется квадратурная формула пвраОол следующего вида: Вычислить заданные интегралы по формулам прямоугольников, трапе- трапеций и Симпсона, если отрезок интегрирования разбит на гс=2 и п=4 равные части. Оценить погрешность результата и сравнить приближенные значения интеграла с точными.
112 Глава 7. Численное интегрирование t 1 г to . % ^ p di 1. ? Г 3= - * 0,785 1.2. C=ln2«0,693). J 1 + X2 *• 4 J Ji+x 0 0 */4 1 3. f 3ln4x to C=0,5). 4. J — C=lnA+Ji)«0,881). 0 0 'M + X2 в 5. Jin I to C=1). 6. Jln(x+1)to C=21п2-1«0,386). 1 О И/2 1 г и г е*6х % 7. xcosx dr (з=- -1*0,571). 8. 1—к- C=arctge- - «0,433). J 2 Ji+e" 4 О О % и/4 9. Г соз3х dr C=0). 10. Г (З=1пA+Я) «0,881). J J COS X 0 О г/2 1 г 6Х Г 1 11. C=1). 12. arctgr dr C=-(тс-21п2)*0,438). J 1 + sin х J 4 О О 1 ii/2 ,- г dr г AZ 13. C » 0,38). 14. arcslar to C=—(ic*4)-i«0,26). J 1 + ex J 8 о о x/4 n/2 Г 1 f 1 15. tg x dr C=-ln2«-0,346). 16. ctg X dr C=-Ш2«Ю,346). J 2 J 2 0 x/4 1 1 17.* f x ex dr C=1). 18. f fi+x dr C=-BJi-1 )»1,22). 0 0
§2. Квадратурные формулы Гауооа 113 к/2 1 г UX г UX р, 19. C=1). 20. I C=2(j2-1)« 0,828). J 1 + coax J J, . ' о о 41 + x e n/4 21. fln2x dx C=e-2«0,?18). 22. f tg2! dx C= «0,215). J « J 4 1 0 it/2 1C/2 ,,^2 23. fctg2x dx C=—«0,215").'24. fe*cosx dx C= «1,905). J 4 J 2 •К/4 О */2 25. Г e1 sin x dx C . 0 §2. КВАДРАТУРНЫЕ ФОРМУЛЫ ГАУССА Цусть отрезок интегрирования (а,о] непрерывной функции /(х) разбит на п равных частей точками хо=а, х, xt-1 ,xt,... ,xn=b Gi - шаг разбиения, h=(b-a)/n). Обозначим через S(x) сплайн- функцию, апцроксшшрующую подынтегральную функцию fix). Цусть на каждой части разбиения [xt_1txtJ (t=i,...,n) pacno- лохено к узлов (xl1,xt2,...,xim), в которых подынтегральная фун- функция принимает значения /(xfJ) (J=1,...,m). Предположим, что функция /(х) на каждой 1-й части аппроксимируется многочленом S{(x) степени р, х €[x(_1fx{] ((=1,...,n). При этом на многочлен S. (х) накладываются два ограничения: а) значения многочлена и подынтегральной функции равны в уз- узлах интерполяции, т.е. St(x{,)=/(xtJ) (t=1 n; J=1, ,»); б) определенный интеграл от функции ?{(х) на отрезке (х(_1,х{] выражается через значения подынтегральной функции ) в узлах в виде их линейной комбинации, т.е.
114 Глава 7. Чколениое иитегрвровашю xt J St(x) dr - GJ{x^) + Cg/cx^) +...+ OJ{xin). D) Квадратурные формулы Гаусса для выбранной степени р сплайна бу- будут определены, если из условий а) и б) удастся найти т неиз- неизвестных коэффициентов Oj и координаты п узлов x(J(J=i,...,m). Задача решается одновременно для всех п частей разбиения от- отрезка 1а,Ъ], если выразить х « [х(И,х{] A=1,...,п) через пере- переменную t € [-1,1] так: Полоким ?t(t)=/ 1 + ; St(t)=S((x(t)); C(= - С(. Тогда f(xtj) =?t<tj) A=1,...,п; /=1,...,ш) и соотношение D) перепишем в виде 1 S^t) At = 51/<<t1) + С2?сиг> +-"+ V,(tm). E) -1 Выведем квадратурную формулу Гаусса с тремя узлами (т=3). Для этого необходимо определить шесть величин: С.,, С2, С3, tr t2, t3. Функция S((t) - многочлен степени р, общи вид которого St(t) ж Qq + a^t + dgt2 +...+ otp. (б) Подставив соотношение (б) в E) и учитывая, что /t(ti) = st(*i) (/=1,2,3), получим тождество относительно коэффициентов ак (й -1 Шесть неизвестных будут определены однозначно из системы шести уравнений. В общем случае степень р аппроксимирующего многочлена
§8. Квадратурные формулы Гаусса 115 всегда является нечетным числом и свявана с числом узлов т соот- соотношением р = 2т-1. В частности, для трех углов имеем многочлен пятой степени (р=5). Множители при а, в левой части тождества вычисляем так: 1 y-*+1 1 ^ / \\*+1 г 2 О dt = -1 fe+1 1-(-1) С , если й - четное; ~1 fe+1 '*¦ О, если k - нечетное. Приравняем подобные выражения в левой и правой частях тождества при одинаковых коэффициентах си, о,,...,си. Получим следующие шесть уравнений: С. +Ор + Сп — 2, С- ?^ -i-C^tn + (-''з^-з — О) 1122 33 5' 1122 33 Эту систему позволяет упростить следующее свойство ее решения: неизвестные t{ (t=1,2,...,m) системы 2т уравнений вида k и а Г тДт' если ^ ~ четное; *¦ 0, если fe - нечеаяое (где й=0,1,...,2ш-1) являются нулями многочлена Лежандра JP < "t) = (t2-1 )та; нули многочлена принадлежат интервалу (-1,1) и расположены симметрично относительно середины интерва- интервала. 1 , В рассматриваемом частном случае т=3 и JMt) = -EtJ-3t). •* 2 Находим нули многочлена из уравнения 5p-3t=0. Подставив корни уравнения r1= -J - , t2 = 0, t^ = I - в G), получим систему О О Л» Л» Л1 трех линейных уравнений относительно переменных С1, С2, С,: 1 ^ 3 1л|5 3<|5 15 353 Очевидное решение этой системы есть С^ = Cj = 5/9 и С2 = 8/9.
116 Глава 7. Численное интегрирование Теперь подставим найденные значения в соотношение D): Г Stix) to = — E/(xt1) + 8/(х<2) ¦ J 18 18 Xi+Xi-1 ГДе Xi2 = -; ' *П =Xi2~ \ Z'~ • xl3 = Xi2 Итак, квадратурная формула Гаусса с тремя углами записывается в виде ь ь » *. =) \si(x)dj^l —Ef(xl1)+8f(xl2)+5f{x)). Если подынтегральная функция имеет непрерывную производную шестого порядка, то для оценки погрешности формулы Гаусса с тре- тремя узлами можно использовать неравенство T max \f{b)(x)\-hb = г max \f{b'{x)\. ^сФ 2О16ОООПЬ а«г<Ь \f()\ 2016000 а^сФ 2О16ОООП При вычислении интеграла до достижения заданной точности е мето- методом двойного пересчета условие окончания вычислений имеет вид -г— |3(h) - 3(Л/2Д < 6, 2-1 где A=2m (m - число узлов в квадратурной формуле Гаусса). Пола- Полагают, что 3 « 3(Л/2) с точностью е, 1 Приыер. Найти приближенное значение интеграла ех cLr по квад- 0 ратурной формуле Гаусса с тремя узлами для п = 1 (без разбие- разбиения отрезка [0,1] на части, П=1). Сравнить полученный резуль- результат и погрешность с результатами вычиолений примера из §1. 2 Решение. Найдем производные подынтегральной функции f{x)=e до шестого порядка включительно, продолжая вычисления примера из §1: 2 2 /E)(г) = 8ех A5а:+2Ог3+4т5),
§3. Интегралы о бесконечными пределами 117 /F)(х) = 8е* Об+ЭО^+баИ+аЕ6), шах |/F)(х)| = 1384в. Т0ГДа Ъ-а (^ в 13846 ЖЛХ max |/(ь;(х)|.Л6 = 0.0019. 2016000 «Kb 2016000 С погрешностью, не большей чем 0,0019, имеем 1 ¦ г J- 1 е* dx « —Ef(x.)+Qf(X-)+5f(x~)) = 1,46241. J f8 * J 0 Здесь х2=0,5; /(х2) = 1,284025; 2* * 29 - - \ - =¦ 0,112702; /(X.) х 1,012783; 1 * 2 ^ 5 7 х3 = х2 + - J 2 = 0,887298; /(Xj) = 2,19745. в 2 5 •» Упражнения . Вычислить приближенные значения интегралов 1-25 (см. упражнения к §1), используя квадратурную формулу Гаусса с тремя узлами для числа разбиения отрезка интегрирования п=1. Оценить пог- погрешность результата; сравнить приближенные значения интеграла со значениями, полученными в упражнениях к §1, и с их точными значениями. §3. ПРИБЛИЖЕННОЕ ВЫЧИСЛЕНИЕ НЕСОБСТВЕННЫХ ИНТЕГРАЛОВ С БЕСКОНЕЧНЫМИ ПРЕДЕЛАМИ Опрревелекие. Пусть функция /(х) непрерывна на промежутке "[а,») и существует предел интеграла как функции верхнего предела инте- интегрирования: х llm f /(t) dt. . (8) X -* оо J < а Тогда этот предел называют несобственный интегрален функции /(х) 00 на промежутке la,») и обозначают так: Г fix) dx.
118 Глава 7. Численное интегрирование В случае существования предела (8) говорят, что несобствен- несобственный интеграл функции fix) сходятся на промежутке [а,»). Представим несобственный интеграл на промежутке fa.oo) в виде суммы определенного интеграла на отрезке (а,о] и несобственного на промежутке Со,»): оо О оо | fix) йх = Г fix) их + Г fix) dr. а а о Интеграл функции fix) сходится на Са.оо), если для любого числа s > 0 существует число о такое, что абсолютная величина второго слагаемого будет меньше е, т.е. 00 | J /.(х) &r | < s. (9) о Значение сходящегося несобственного интеграла на промежутке la.oo) равно с точностью е определенному интегралу от функции /(х) на отрезке 1а,Ъ], если в соответствии с выбранным е удается найти значение верхнего предела о определенного интеграла, удов- удовлетворяющего условию (9). Пример 1. Даны сходящиеся несобственные интегралы: ОО 00 Г С<Ах Г 1) , a > О, р > 1; 2) Се хйх, А. > 0; С > 0. J j* J a a Используя условие (9), аппроксимировать их определенными интег- интегралами с точностью е. Осуществить замену переменной интегрирова- интегрирования так, чтобы верхний предел интегрирования о был равен а+10. Замена переменной интегрирования имеет смысл в случаях, когда условие F) дает большой отрезок интегрирования \.а,Ы, малоудоб- малоудобный для численного интегрирования. Решенье. Подынтегральные функции в обоих случаях знаконоложи- 00 тельны; тогда условие (9) примет вид j fix) dr < е. о 1) Имеем 00 р UUJ. J "г? ~ -П4-1 - ~ Г Р-1 00 car ax < е. -D+1 (Р-1КГ
C. Интеграла о бескояечшаш пределами 119 Таким образом, A0) (р-1 )е ¦* и в качестве верхнего предала удобно принять наименьшее целое число, удовлетворяпцее неравенству A0). В частности, если а=С= =1, р=2 и е=0,001, то неравенство A0) дает о>1000. Окончатель- Окончательно в этом частном случае получим оо 1001 1001 их с <1г 1 \?'\ X 1 = 1 - 1001 1 1 т.е. найдено значение несобственного интеграла с точностью, не меньшей чем 0,001 (его точное значение равно 1). Простейшая замена переменной интегрирования, сокращающая длину отрезка интегрирования, такова: х = tm. Очевидно, что Ctot™"dt г Omit >— Г+Т' где а1 = 7а ' ъ-\ = j«r а а, а, и показатель степени т полагаем равным ближайшему целому чис- числу, не меньшему чем я = lno/lno.,. В рассматриваемом частном случае о = 1001, о, = аи 0=11 и га=1п 1001/In 11 «3. Сделав замену переменной г = t3, получаем 00 1 1 их г 3dt 1 11 i 1 1 . UJ 1331 1 1 ' что отличается от точного значения на величину второго слагаемо- слагаемого. 2) Имеем J G 1°° С = - - е~Н = - в~кь < s. А. 'Ь А. о Таким образом, t c ' Ъ > -In — , A1) X Хе и в расчетах можно считать о равным наименьшему целому числу, удовлетворяющему неравенству (8). Если положить а = 0, С-А=1 s = 0,001, то Ъ > 31п 10 « 6,9 и
120 Глава 7. Чиолвнное интегрирование т f e~*ctr m f в~хйх = - в~*| = 1 - е~7= 1-0.000912. J J 1C О О Точное аначевве несобствеяного интеграла равво 1. а Несобственные интегралы примера 1 можно считать эталонными для встречающихся в практике интегралов. Ниже на примерах неко- некоторых абсолютно сходящихся интегралов мы покажем, как использу- используются эталонные интегралы. Определение. Несобственный интеграл функции f{x) на Са,») назы- называют абсолютно сходящимся, если сходится несобственный интеграл абсолютной величины функции |/(х)| на этом промежутке. Если \g{x)]^]f{x)\ для любых значений х на промежутке [а,<») или функция |g(x)| эквивалентна \f{x)\ при х ¦* °о (предел отноше- отношения этих функций равен единице при х, стремящемся к бесконечнос- бесконечности) и интеграл функции |/(х)| сходится на (а,<»), то несобствен- несобственный интеграл функции g{x) также сходится на [а,«). Приведенная форма достаточных условий сходимости абсолютно сходящихся интегралов позволяет в неравенстве (9) использовать упрощенные подынтегральные функции вместо заданных. В упражнениях к этому параграфу удобно сравнивать заданную подынтегральную функцию с эталонной, если при больших значениях аргумента применять следующие соотношения: 1) &Р- + Bcfi ~ &P-, если а > О, а > р\ А.В - числа; 2) 1шт < зР, р - любое положительное число. [фанер Z. даны несобственные интегралы: 00 оо г Slnr г 2 1) От; 2) е~х ln(x+1) dr. 1 $x+i[z+ h?) 0 Аппроксимировать их определенными интегралами с точностью, не меньшей чем е = 0,001. Решение. Прежде чем искать верхние пределы интегрирования с по- помощью неравенства (9), упростим подынтегральные функции. 1) Имеем |slnx| 1 11 —————— < ^ = -j-, х > о.
§3. Интегралы с бесконечными пределами 121 Теперь воспользуемся неравенством (9): СО 00 00 slur , г Islnxl « ' ' dr < -к < 6=0,001. J .—г m Ji2 Из решения примера 1 следует, что b=1O01, В., =11 при замене x=t^ 00 1001 11 с slnr • г slnr с 3? slnt-5 и тогда cLr * dr * —— dt 1 i^fTU+Jx3 J 1 J^+TU+Ji3 J 1 Jt3+i [z+\t9 J .с точностью, не меньшей чем 0,001. 2 2 ^2 2) Так как е"* 1п(.л;+1 ) ^ е"* 1пBлг) < 2л?е' , х > 1, то 00 ,00 00 00 2 \е~хС 1п(х+] )йт « Ге"* 1пBл;)(кг « Ггде"* <Lr = Je"udu < e=0,001, Ь b b b2 где u = х2. В примере 1 было получено, что Ь2=7, Ь=ч7. «> Г! Окончательно находим |е~т ln(z+1 )dx * fe * ln(x+1 Nx. в О О Замечание 1. Естественно, что окончательная погрешность при вы- вычислении несобственного интеграла равна сумме погрешности е его представления в виде определенного интеграла и погрешнос- погрешности при вычислении определенного интеграла по одной из квадра- квадратурных формул. Можно полагать, например, погрешность вычисле- вычисления определенного интеграла равной е/10. Замечание 2. Несобственные интегралы на промежутке (-o>,aJ вычис- вычисляют аналогично изложенному. Упражнения Используя определение, показать, что несобственный интеграл 00 з = j /{х)йх сходится. Аппроксимировать его определенным а интегралом с точностью е = Ю. Вычислить определенный ин- интеграл с помощью квадратурной формулы Гаусса методом двойного
122 ГлаВа 7. Чколевно* интегрирование пересчета с точностью 10~*. Сравнить полученный результат о точным значением неооботвенного интеграла, вычисленным с шестью верными аваками. 00 . СО 1. Г —-—^ц C=-lnA+j2)). 2. Г е"я sin х dr C=0,5). 1 x ix* + 1 О 00 3. Г—^^^ C=-lnA+j2)). 4. Г е~* СОВ X их C=0,5). J Г~1 ' 3 J 1 х \хь + 1 О 00 _ " 2 =Aе 5. fe~" sln2x dr C=—A-е)), б. \х e~*sln x dr C=0,5). О О 00 *—ч 00 Г 2 ,, \% л г 7. е * аовгх их C=—A+е~ )). 8. \х е cos х их (з»0). J 4 J О ' О 00 г дх 1 г 9. у- C= - 1п2). 10. \х е"* бх C=1). J 1 + е** 2 / J 00 00 dr 1ПЗ-1 г 2 г dr 1ПЗ-1 г 2 Н 11. - C= ). 12. е~* dr C = — ). J I ; Г 2 J 2 J3 x J (af + 1 )э О 00 3 13« I 7— ч3 C • - )v 14. Jar e ^ dr C=0,25). U \x*+ ij 0 I 19 I '" 0 tr+ №+ 1J 0 00 dr C=21n2). 1+ -le*
§4. Интегралн от функций с бесконечном разрывом 1.23 17. 21. 23. 25. 00 0 00 I 0 I 0 0' 00 Л cV^dr x slnx dr A + X2K x dr dx p час A + зГ)сЪ— 2 dr [1 + X2)Ch«T C C C C 2 27 1С 8e 1С = - ). 4 -In2). 1С = 2- - ) 2 18. 20. 22. 24. • 00 J 0 00 I 1 <x> I 1 It 0 x dr A + **J In x dr ln2x dx dr + ЗГ C = Q,5). C - ;. 9 2 C = — ). 27 2^3 9 §4. ПРИБЛИЖЕННОЕ ВЫЧИСЛЕНИЕ НЕСОБСТВЕННЫХ ИНТЕГРАЛОВ ОТ ФУНКЦИИ С БЕСКОНЕЧНЫМ РАЗРЫВОМ Пусть функция /(х) непрерывна на промежутке Са.о) и предел функции при х, стремящемся к о, равен бесконечности (бесконечный разрыв функции в точке о), т.е. lim /(х) = lim /(x) = оо, х -» ь х-о-О (х<о) или не существует. Определение. Если существует предел интеграла как функции верх- верхнего предела интегрирования: х ilm Г f(t) it. A2) (x<b) a то этот предел называют несобственный интегралсм функции fix) на отрезке 1а,Ы и обозначают, как и определенный интеграл, в ви- b де | /(х) dr! а
124 Глава 7. Численное интегрирование * В случае существования предела A2) говорят, что несобствен- несобственный интеграл функции f{x) сходятся на отрезке [а,Ы. Аналогично определяется несобственный интеграл на отрезке [а,Ы для функции, имещей бесконечный разрыв в точке а. Несобственный интеграл функции, имещей бесконечный разрыв в некоторой внутренней точке с € (а,о), определяют на отрезке ta,b] как сумму сходящихся интегралов на отрезках la.cl и tc.D]. Несобственные интегралы с бесконечным разрывом подынтеграль- подынтегральной функции на отрезке интегрирования с помощью замены перемен- переменной интегрирования преобразуют к несобственным интегралам с бес- бесконечными пределами. Покажем это на примерах. Пример. Даны несобственные интегралы от разрывных функций на от- отрезках интегрирования: dr. 1) f sin - dr; 2.) Г о .• о С помощью замены переменной интегрирования преобразовать их в несобственные интегралы с бесконечными пределами. Аппроксимиро- Аппроксимировать эти несобственные интегралы определенными интегралами с точностью, не меньшей чем е = 0,001. 1 Решение. 1) Подынтегральная функция sin - в течке х=0 (нижнем х 1 пределе интегрирования) не определена и llm sin - не сущест- " х вует. Произведем замену переменной так, чтобы особой точке х=0 соответствовала бесконечно удаленная. Простейшая замена перемен- переменной интегрирования есть х - \. Очевидно, что если t ¦* со, то . х ¦* 0, а если х - 1, то t = 1; их = —ж йХ. Тогда 1 1 со Z с 1 с sin t dt r sin t dt sin - cLr = - я = я . Применяя практически те i X if- i t* 0 oo 1 же пробразования, что и в примере 2A) из §3, для последнего* несобственного интеграла на промежутке И,») находим его приб- приближение определенным на отрезке [1,1001]. Далее, после замены переменной t = и? получаем определенный интеграл на отрезке [1,11], аппроксимирующий заданный несобственный интеграл с пог-
§4. Интегралы от функций о беоконечным разрывом 125 решностыо, не большей чем 0,001: 1 оо 1001 11 , 1 г sin t dt г Bin t dt г 3s In ir du г 1 г sin t dt г Bin t dt г Sin - 4Г = , - , « j J x J t2 J t2 J u4 0 11 1 2) Знаменатель подынтегральной функции B+x)J1-^ обращается в нуль при х=\. Следоветельно, подынтегральная функция при х - 1 (г < 1) стремится к бесконечности. Несобственный интеграл на отрезке [0,1] с помощью замены переменной \-х - - преобразует- преобразуется в несобственный интеграл на промежутке СО.оо). Если t ¦* оо, то х -> 1; если же х=0, то t=i; dx=-j dt. Выполним последова- последовательно преобразования: t их 0 00 2(з--1 II *2 t Несобственный интеграл на промежутке И,<») аппроксимируется оп- определенным на отрезке И,Ь1. Значение верхнего предела о нахо- находится из неравенства (9) после упрощений подынтегральной функ- функции: ПО 00 dt r dt 1 = — <. е = 0,001. Ct-1 )j2t-1 I Ztft ft о iU Значение верхнего предела, удовлетворящего неравенству b > е2 = 106, велико и для вычислений произведем еще одну замену переменной t = u6. Дальнейшие преобразования приводят к опреде- определенному интегралу на отрезке [1,111: 1 со г их с dt О B+ХIГ? , Ct-1)J2TT , Ct-1)j2TT Приведем окончательные результаты (определенные интегралы вычис-
126 Глава 7. Численное интегрирование ленн по квадратурной формуле Гаусса с точностью е = 0,000001): 1 11 , Зз1л иг 6и « 0,504067; г 1 г Зз1л и sin - <tr « I 1 J X J и* 0 1 1 11 R с их г бит. du " ¦=. м 0,604244. О B+x)U-3? 1 Cu6-1 Упражнения & Показать, что несобственный интеграл з = Г /(x)dr от неограни- а ченной на одном из концов отрезка la,bl функции f(x) сходится. Используя замену переменной интегрирования, преобразовать несобственный интеграл от разрывной на отрезке интегрирования функции в несобственный интеграл с бесконечным пределом. Ап- Аппроксимировать несобственный интеграл определенным с точ- точностью s = 10 . Вычислить определенный интеграл с помощью квадратурной формулы Гаусса методом двойного пересчета с точностью КГ*. Сравнить полученный результат с его аналити- аналитическим значением, вычисленным с шесты) верными знаками. 1-1 Г-, г 6Х % (¦ UX %\3 1. C = - ). 2. C = ). q -Пг A+х) 2 • Хг C+х) 9. 3 3 ' г 6х 2% г дх 1с|з 3. I (з=—). 4. C = ). Jx A+Х) 3 qJx C+Х) 6 Q.25 1 г- r dl г (x+2)dr 17-I2 5. C =1ПЗ). 6. C = ). О ^ ^~Х) 0,5 ^ ~ х 6
D. Интегралы от функцк* о бвококечшм рашрывоы 127 7. J (x+2)dr 1 - X 16 1 х dr 12 -X 10 C - — ). 3 9. г (X+1)dX \Ц2 г о I -0,5 х dx |1+2х C » - - ). 3 dr it 0,5 r x dr - J 7= q 4i-2x C = - ). з 0,5 + x (x+1 )dr I1-2X 1B.J- dx 1 In3 r C = ). 16. 2 ^ (x+2)dx J2X-1 8 «"'a'1 (X+2)dX -1 8 x dx n 18-21W3 x dx J3 - x x dx U - x 14J2 f x dx 32 0 2 C • — ). 22. f 3 J 1 (x+1)dx \x - 1 C«4з 14 <3 - --
128 Глава 7. Численное интегрврованве о 23. f 24. -0,5 *- х 1 dr 0 25. 26. »• to _t (x-Dix О dr I f 42 +1 C = In ii ). J2 r ii 42 -1 42 f 42 +1 l г г 42 f 42 +1 1 = ln 2 I Ji -i J (x+3Li - x C = - In3 ). 2 28. 0 Jx E-x) Ji* f 45 +1 29. г (x+1 )dr 2ii r-, — (з4з - *). 9 30. J (x+2)dr - 1 20 C = — ). 3
T1ABA8 ПЕРВОГО ПОРЯДКА #1. Дифференциальное уравнение первого порядка, разрешенное отно- относительно производной, имеет вид У = f(x,y). A) Решением дифференциального уравнения A) называется функция <р(х), подстановка которой в уравнение обращает его в тоадество: <р' (х) s /(х,<р(х)). График решения y=q>(x) называется явтегральаой кривой. Например, решением уравнения у'=у является функция Щх)=Сех при любом значении произвольной постоянной С. Задача Коии для дифференциального уравнения A) состоит в том, чтобы найти решение уравнения A), удовлетворяющее началь- начальному условию | <2> о Пару чисел (xQ,yQ) называют начальным! даппыми. Решение задачи Коши называется частный реяением уравнения A) при условии B). Например, частным решением задачи Коши У = У' У|х=О = i является функция <р(х) = ех. Частному решению соответствует одна из интегральных кривых, проходящая через точку (xQ,y0) (рис.23). 0 Рис.23 5-469
130 Глава 8. Численное решение дифференциальных уравнений Условия существования и единственности решения задачи Коши содержатся в следущей теореме. Творена 1. Пусть функция f(x,y) - правая часть дифференциального уравнения A) - непрерывна вместе со своей частной производной ) по переменной у в некоторой области D на плоскости. Тогда при любых начальных данных (хо,уо) € D задача Коши A)-B) имеет единственное решение у = щх). При выполнении условий теоремы через точку {xQ,y0) на плос- плоскости проходит единственная интегральная кривая. Будем считать, что условия теоремы существования и единственности выполняются. Численное решение задачи Коши И)-B) состоит в том, чтобы получить искомое решение ц>[х) в виде таблицы его приближенных значений для заданных значений аргумента х на некотором отрез- отрезке [а,Ы: х0 = а, агг х2 хп = о. C) Точки C) называют узловыыи точками, а множество этих точек на- называют сеткой на отрезке [а,ЬЗ. Будем использовать равноыерную сетку с шагом h: h - (b-a)/m; xl - т(_1 = h или х = xo+lh (l=\,...,m). Приближенные значения численного решения задачи Коши в узловых точках xt обозначим через у ; таким образом, yt « ф(х4) ({=1,2,...,т). ' Для любого численного метода решения задачи A)-B) начальное условие B) выполняется точно, т.е. yQ = <p(xQ). Величина погрешности численного метода решения задачи Коши на сетке отрезка La,о] оценивается величиной d = max (|у т.е. расстоянием между векторами приближенного решения %.У-|. •••>%) и точного решения (ф(то),ф(х1),... ,4>(хщ)) на сет- сетке по m-норме. Говорят, что численный метод имеет р-й порядок точности по шагу h на сетке, если расстояние d можно представить в виде степенной функции от h: d = Ghp, p > О, где С - некоторая положительная постоянная, зависящая от правой
§1. Решение дифференциальных уравнений первого порядка 131 части уравнения A) и от рассматриваемого метода. В данном случае очевидно, что когда шаг h стремится к нулю, погрешность й также стремится к нулю. 2°. Метод Эйлера Простейшим численным методом решения задачи Коши A)-B) яв- является метод Эйлера, называемый иногда методом ломаных Эйлера. Угловой коэффициент касательной к интегральной кривой в точ- ке Р0(х0.У0) есть y'0 = f(xQ,y0). Найдем ординату у1 касательной, соответствующей абсциссе т., = xQ + h. Так как уравнение касательной к кривой в точке PQ имеет вид y-yQ = y'Q(x-xQ), то Угловой коэффициент в точке Р1 (т., ,у1) также находится из данного дифференциального уравнения у'^ = f{x^,y.). На следующем шаге по- получаем новую точку Р2(х2,у2), причем х2 = хл + h, уг = у1 Продолжая вычисления в соответствии с намеченной схемой, получим формулы Эйлера для m приближенных значений решения задачи Коши с начальными данными (xQ,yQ) на сетке отрезка [а,о] с шагом h: Графической иллюстрацией приближенного решения является ломаная, соединяющая последовательно точки PQ,F называют ломаной Эйлера (рис. 24). рт' У У2 ломаная Эйлера - р приближенное решение 2 интегральная кривая - ^точное решение задачи Коши И х Рис.24
132 Глава в. Чиоленное решение дифференциальных уравнений Оценим погрешность метода Эйлера на одном шаге. Для этого запишем разложение точного- решения задачи Ковш в точке ж, по формуле Тейлора с остаточным членом в форме Лагранжа: ФЦ) - ф (х0 + h) - ф (х0) + ф' (ar0) h + чр-(С) л2 - 1 р 1 '' - = у0 + ft/Цэ'Уо) + -Ф"(?) л - У-, + -ф"(?) л • 5 € Uq.x.,). Погрешность метода на одном шаге имеет порядок ft2, так как )-у Г = -|ф*EI^2 <- max 2 2 О4Г<0 После т шагов погрешность вычисления значения ут в конечной точ- точке отрезка возрастет не более чем в т раз. Погрешность метода Эйлера можно оценить неравенством 1 о 1 d <- max |ф"(х)|«/гж = - шах |<р*(я)I• (о-а)Л г 1 1 или представить в виде d= СП, где С € 0, - max |<р" (х) I (о-а) I. L 2 а«с<ь J Это означает, что метод Эйлера имеет первый порядок точности. В частности, при уменьшении шага h в 10 раз погрешность уменьшится примерно в 10 раз. Практическую оценку погрешности решения, найденного на сетке с шагсм Л/2, в точке х{ € 1а,Ъ] производят с помощью прибли- приближенного равенства - правила Рунге: |<p(xt) - yt<ft/2>| « '** gp _*t -, E) где р - порядок точности численного метода. Таким образом, оцен- оценка полученного результата по формуле E) вынуждает проводить вы- вычисления дважды: один раз с шагом h, другой - с шагом ft/2. Пример 1. Решить задачу Коши У' = х + у, , у\ =1 |ф0 методом Эйлера на отрезке [0; 0,4]. Найти решение на равномер- равномерной сетке с шагом h = 0,1 в четырех узловых точках. С помощью программы Приложения (см. с. 313-31?) найти решение в тех же узлах, ведя расчет с уменьшенным вдвое шагом. Вычислить пог-
§1. Решение дифференциальных уравнений первого порядка 133 решности прибликевий при расчете с шагом 71=0,05: а) с помощью формулы E); б) сравнив с точным значением. Аналитическое реше- решение задачи имеет вид <р(х) = 2е*-г-1. Решение. Здесь f{x,y) = х + у; щ = 4; а = О; о = 0,4; h = (о - а)/т = 0,4/4 = 0,1. Используя рекуррентные формулы то=О; уо=1; *<=*<_.,+0,1; VJ/^.,+0,1 (*,_.,+j/t_.,) A=1.2.3.4). последовательно находим при { = 1: ^=0,1; jy1 = 1 + 0,1 @ + 1) = 1,1; при 1 = 2: хо = 0,2; у2 = 1,1 + 0,1@,1 + 1,1 ) = 1,22; при I ¦¦= 3: хъ = 0,3; у2 = 1,22 + 0,1@,2 + 1,22 ) = 1,362; при I = 4: т4 = 0,4; у4 = 1,362 + 0,1@,3 + 1,362 ) = 1,5282. Обозначим di=\yi{h)-yi(h/Z)\, d,i=\<v(xl)-yl(h/2)\ и пред- представим результаты вычислений в таблице ( ' 1 2 3 4 ¦ xi 0,1 0,2 0,3 0,4 У{ (Л) 1.1 1,22 1,362 1,5282 yt(h/2) 1,105 1,231012 1,380191 1,554911 ф(Х{) 1,110342 1,242805 1,399718 1,583649 . \ 0,005 0,011012 0,018191 0,026711 0,005342 0,011793 0,019527 0,028738 Отметим, что оценки погрешностей dt решения yt(h/2.), вычисляемых по формулам E), близки к отклонениям d{ и обе величины достига- достигают значения d « 0,03 - ошибки метода Эйлера при вычислении с ша- шагом 0,05. Для сравнения заметим, что погрешность при вычислениях с шагом 0,1 составляет d = |у4-ф(л:4)| « 0,06. в 3°. Методы Рунге - Кутта Численные методы решения задачи Коши У = /Сг.у), У\х=х0 = Уо на равномерной сетке {хо=а,х^,х2,...,хт=ЪУ отрезка [а,Ы с шагом
134 Глава 8. Численное решение двфференцваяышх уравнеиив Ъ={Ъ-а)/т являются методами Рунге - Кутта, ваш, начиная с дан- данных (хо,уо), решение ведется по следущим рекуррентным формулам: xt - *«_•, + h, yt = j/t-1 + Ayt-1 A=1,2....,m), P F) Метод называют методом Рунге - Кутта порядка р, если он имеет р-й порядок точности по шагу h на сетке. Порядок точности р дос- достигается с помощью формул F) при определенных значениях коэффи- коэффициентов с. и d, (J=1,2, ,р); с, всегда полагают равным нулю. Эти коэффициенты вычисляют по следующей схеме: 1) точное решение <p{xo+h) и его приближение у1 = у0 + представляют в виде разложения по формуле Тейлора с центром вплоть до слагаемого порядка 2) из равенств подобных членов при одинаковых степенях h в двух разложениях получают уравнения, решая которые находят коэф- коэффициенты с и d,. Заметим, что метод Эйлера можно называть методом Рунге - Кутта первого порядка. Действительно, для р = 1, с, =0, d, =1 формулы F) преобразуются в соотношения D): xt = xt_^+ h, yi = yi^+byi_i A=1,2 m). Ay^^ftj *3=ftj *~1 ], k\f3= V№M • tf«_,) или xi = xt_i + h, yt = yt-1 + V(iM,j/M). Метод Рунге - Кутта второго порядка называют методом Эйлера - Коши, если р=2, с1 = О, с2 = 1, d, = d^ = -. Алгоритм метода Эйлера - Коши получается из формул F): '[Ц{]^С3) (t-1 m), (Т) Для практической оценки погрешности решения можно применять пра-
J1. Решение дифференциальных уравнений первого порядка 135 вило Рунге, полагая в формуле E) р*2. Промер 2. Решить задачу Ковш у' = X + », у| = f |Х=0 методом Эйлера - Коши на отрезке СО; 0,4]. Найти решение на рав- равномерной сетке с шагом 0,1 в четырех узловых точках. Решение, Формулы G) в данном случае примут вид x^^+h, У4=Уе-1 + " Н*~13+Й24~13) С*=1,2,3,4). Полагая xQ = 0, у0 = 1, последовательно находим при I = 1: fe1lo]=0,1(O+1)=0,1; Цо3=0,1 (OfO.1+1+0,1 )=0,12; 1 ^=0+0,1=0,1; у.=1+-@,1+0,12)=1,11; при ( = 2: -- AJ^O.I @,1+1 ,'11 )=0,121; 41]=0'1@+0'1+1'11+0'121)=0'1431; 1 г2=0,1+0,1=0,2; г/2=1,11+-@,121+0,1431)=1,24205. Далее получаем при I = 3: г, = 0,3; у3 = 1,398465; при ( = 4: х4 = 0,4; у. = 1,581804. Погрешность полученного решения не превышает величины Метод Рунге - Кутта четвертого порядка называют классическим 1 методом Рунге - Кутта, если р = 4, с, = 0, с2 » с, = -, с. - 1, 1 1 2 d, = й алгоритм решения задачи Коши классическим методом Рунге - Кутта: , = й^ = -, dg = qL = -. Из рекуррентных формул F) получим О О
T36 Глава 8. Численное ромипю дя{НН» |*-tJ + 2Ц *1 \ ftir<]>. (8) = h ^(Xi-1 + i h> *1гЛ Графиком приближенного решения является ломаная, последовательно соединяющая точки Р{(а^,yt) (?=0,1,2.--,т). С увеличением по- порядка численного метода звенья ломаной приближается к ломаной, образованной хордами интегральной кривой у=<р(х), последователь- последовательно соединяющими точки (х,,<р(х.)) на интегральной кривой. Правило Рунге E) практической оценки погрешности решения для численного метода четвертого порядка имеет вид 1 |(pUt) -yt(ft/2)| *— \yl(h)-yl(li/2)\. Щшер 3. Решить задачу Коши У' = х + у, у\ = 1 классическим методом Рунге - Кутта на отрезке (О; 0,4]. Найти решение на равномерной сетке с шагом 0,1 в четырех узловых точ- точках. Решение. Так как f{x,y)= x + у, то согласно формулам (8)получаем , fbti1]. pbf*1]j. ?fet*1], bft-1]l для значений ( = 1,2,3,4.
Реше дяфференциа уравнений первого порядка 137 Полагая xQ = О, у0 = 1, последовательно иятодим при i = f: fcj0J = 0,1 (О + f) = 0,1; Цо] - 0,1 (О + 0,05 + 1 + 0,05)-0,П; Цо] = 0,1@ + 0,05 + 1 + 0,055) - 0,1105; к[0] = 0,1@ + 0,1 + 1 + 0,1105) = 0,121050; 1 ул=\ + Ч0,1+2«0,11+2-0,1105+0,12105)=1,110342; 0^=0+0,1=0,1; при ? = 2: ftj11 = 0,1@,1 + 1,110342) = 0,1210342; й|1] = 0,1@,1 + 0,05 +1,110342 + 0,0605171) = 0,1320859; Й^1] = 0,1@,1 + 0,05 + 1,110342 + 0,06604295) = 0,1326386; й?13 = 0,1 "@,1+0,1+1,110342 + 0,1326385) = 0,1442980; ,1+0,1=0,2; Далее получаем при ( = 3: х^ = 0,3; при I = 4: г4 = 0,4; 1,399717; 1,583648. Погрешность полученного решения не превышает величины \ - 0,000001. в Для наглядности численные решения одной и той хе задачи Кода, рассмотренные в примерах 1-3, сведены в одну таблицу: 4 0 1 2 3 4 *. 0,0 0,1 0,2 0,3 0,4 Значения yt, найденные методом Эйлера 1,0 1,1 1,22 1,362 1,5282 Эйлера - Коши 1.0 1,11 1,24205 1,398465 1,581804 Рунге - Кутта 1,0 1,110342 1,242805 1,399717 1,583648 Точное решение 1,0 1,110342 1,242805 1,399718 1,583649
138 Глава 8. Чколенное решение дифференциальных уравнений Найти решение задачи Кони для дифференциального уравнения пврво-, го порядка на равномерной сетке отреака [а,о] один раз с ша- шагом Л=0,2, другой - с шагом 0,1 методами Эйлера, Эйлера - Ко- пш и классическим методом Рунге - Кутта. Оценить погрешность численного решения по принципу Рунге. Сравнить численное ре- решение с точным. Результата представить в виде таблиц, анало- аналогичных приведенным в примерах этого параграфа. В задачах 16-25 либо начальные данные, либо значения концов отрезка [а,Ъ1 представлены иррациональными числами. При реше- решении этих задач в программах.иа Приложения к данному параграфу лучше заменить операторы ввода данных с клавиатуры. Например, если в условии задан отрезок интегрирования, рввный Се,е+1], то в программе на языке BASIC оператор "INPUT а, b" следует заменить на операторы "а = ЕХРA): b = a*+ 1". 1% У У У = у - = X + = ху. 2х ¦ —, У зу X У\х-0 ~ ^ ' У\х=\ = °» • У\т=О= 1- 2. 3. у |/^1 р X 2 4. у' = ху. У\х=0 = 1' О^3^1» ф№) = ех / 5. у' = —g—, i-y+ln 6. у = , у\А = о, 1«г«г, <р(г) = 1шг. 1ПХ. 1 о _Т2 0, 0«К1, <р(г) = - лГе х . 9. y'+ycosx= -sln2x, y^Q = 0, СКК1, <p(x)=slnr+e~sina'-1. tO. у' + J/tgT = 81П221, y^Q =-1, <КГС1 , <р(Г)=A-2СОЗХ)СО8Х. 11. ху'- y^lax + у= 0. у\^ = 1
§2. Решение систем диф. уравнений первого порядка 139 12. ту'=х+у+хехр[ ^ ], у|:г=1 = 0, 1«г€1,9, Щх) = х In —. 13. zfy-i^expUM/T), #1-^=1. 1«»S2', (p(r)=exp((i2 ln(i+ 14. (аГ+1)у'+яу-1=0, yj^Q = О, 15. xy' - у = , y|__p = 0, e«a?$e+1, ф(т) = xlnlar. lnr I1*""** . 16. xy' - у = jf-sinx, yj _ = 0, - ? U- г 2 % % ainx-i 17. xy' + у = .rslar, yl = 0, - $r <~+i, ф(т}= cosar. | cL с X 18. у' + е*~у = &*^~x)+2x, y\ =0, \x=Q 19. iy' = ylny, y|T=1 = e, 20. гу'-уAп(гуь! )=0, yj^, = e, 1«r^2, ф(т) = ex/x. У ic 21. гу' = 2Sirh= + у, у I = -, 1^г$2, ф(т) = 2zarctgr. г 22. ^у' = (х-1)у, у)^, = е, 23. (z2+ny'+2y=x(x2+1)> yl =1, 3 2 _2 в Л; .У С*»» у ~~~"~ — XXXLC« У I Т—Р ~* * С^>А^Ч5+I у \y\Jr / — 1Ш( 25. y'-yctgr = sinx, yl ^ = О, - Cr «-+1, ф(.г)=(!г- -jalnr. *?=- 2 2 2 2 §2. ЧИСЛЕННОЕ РЕШЕНИЕ СИСТЕМ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИИ ПЕРВОГО ПОРЯДКА Пусть дана система двух дифференциальных уравнений первого
140 Глава 8. Численное решение дифференциальных уравнений (9) навивается пара функций ф1 (х) и ф2(х), при подстановке которых в систему получаются тождества: ф} (X) ш /t (Х,ф1 (X) ,ф2 (X) ) , ф? (X) ¦ /2 (Х,ф1 (X) ,<| Реиению системы уравнений (9) соответствует интегральная кривая в прост- пространстве трех измерений (х,у^,у2) (рис.25). Условия, при которых через каждую точку ^0{х0,у^0,у20) некоторой области D трехмер- трехмерного пространства проходит единственная интегральная кривая, со- содержатся в теореме существования и единственности реиения. Теорема 2. Если функции ^(х,у^,у2) и /2(x,y1ty2) - правые части дифференциальных уравнений системы (9) - непрерывны вместе со своими частными производными по переменным у1 и у2 в некоторой области D трехмерного пространства, то для любой точки (хо,у1О,у2О) € D система (9) имеет единственное решение, удовлетворяющее начальным условиям (Ю) Задача Кожи для системы состоит в нахождении решения системы (9), удовлетворяющего начальным условиям A0). Постановка задачи Кош для системы п дифференциальных урав- уравнений первого порядка аналогична задаче (9)-A0), а именно: тре- требуется найти решение системы У^ Рис.25
J2. Решение систем диф. уравнение первого порядка 141 У'г 'г = уп), Уп). при начальных условиях 'У. A1) A2) Теорема существования и единственности решения задачи Коши A1)-A2) имеет формулировку, аналогичную приведенной для част- частного случая п = 2. Если ввести векторные обозначения У1 , У '«10 то задача Коши <11)—<12) в векторной форме запишется так: у' = 'о- A3) Численное решение задачи Коши A3) состоит в том, что на сетке отрезка Са,о] требуется получить приближенные значения координат вектора у{х) в узлах сетки хг A=1,2 т). Обозначим вектор, аппроксимирующий решение, через у{ » у[х ) (I = 1,2 яг), а его координаты - через уЛ{ (й = 1,2,...,п; 1=1,2,...,т) так, что yhl « yh{xt) или 'Ум У — 1У* Будем искать решение на равномерной сетке с шагом h = (b-a)/m. ¦ Величина погрешности численного метода оценивается величиной d = max {с*,}, где d, - погрешность решения на сетке с шагом К в точке г.:
142 Глава в. Численное решенве дифференциальных уравиенай Практически погрешность в точке х{ оценивается го формуле Рунге, аналогичной E). А именно, пусть У, (Л/2) = - значения численного решения в точке xt, полученные для шагов h и h/2 соответственно; тогда погрешность d{ в точке xi для вычис- вычислений с шагом h/2 выражается приближенным равенством (h/2) max i\yM{h)-yki(h/Z)\} A4) где р - порядок точности численного метода. Численное решение задачи Кош для системы дифференциальных уравнений находится с помощью классического метода Рунге - Кутта четвертого порядка. Векторная форма алгоритма метода Рунге - Кутта для задачи A3) соответствует рекуррентным формулам (8) и имеет вид xt = yt = y4_., ((=1,2,....т). *~11 _ = hl(x, 1 - h, 2 1 2 1 2 1 2 A5) Л. где векторы к;*^ [t-1} (/=1.2,3,4).
J2. Решение оиотем диф. уравнений первого порядка 143 Пршывр. Найти численное решение задачи Коши для систем! двух дифференциальных уравнений Г У\ = Уг» I у'г =-у.,, на сетке отрезка Го, — 1 методом Рунге - Кутта. Вычисления про- провести с шагами - и —. Оценить погрешность по принципу Рунге. 6 12 Сравнить численное решение с аналитическим решением j/1 = slnx, у„ = cosx. 2 Решение. Здесь = уг, xQ = 0, у10 = 0, у20 = 1, h = тс/6 = 0,523599. Численное решение будем искать по формулам A5). Последовательно вычисляя, при 1=1 и ,/=1,2,3,4 имеем: [О] " 0.523599; .0 = 0; - k [0] /20 + 1 fe[03)- + - k[°]) = 0,523599 A + 0) = 0,523599; У10 + - й[0] + - ft1[°])=-0,523599.0,261T99=-0,13T0T8; |Й31 j К32 «31 - fe t0] - ft tolb К21 • ^го* 2 22 A-0,068539)=0,48ТТ12; - i h.
144 Глава 8. Чвсленное A-0,1ЭТ(]Т8)«О,451825; hfzix0 4ft, y10 + 4?J, y20 + *g')- 10 + *^1)=-0,523599'0,487712=-0,255366; 21 =@,523599+2«0,52359^2.0,487712+0,451825)/6= =0,499674; =t+@+2(-0,137078)+2(-0,1370Т8)-0,255366)/6= =0,866054; Продолжая процесс вычислений, получаем при 1=2: Х2=1,047197; у12=0,865489; у22=0,500375; при 1=3: ХуА ,570796; у13=0,999585; у23=О,00О889- Результаты численного решения задачи с шагами к/б и и/12 сведены в таблицу ( 0 1 2 3 1 Х1 0 1С/6=0,523599 яУЗ=1,047197 1С/2=1,570796 Численное решение задачи Коши с шагом и/6 Ум 0 0,499674 0,865489 0,999585 У21 1 0,866054 0,500375 0,000889 С шагом 1С/12 0 0,499980 0,865998 0,999987 У21 1 0,866032 0,500030 0,000060 Точное решение y1=sioct 0 0,5 0,866253 1
саютем шиша, порядков 146 Используя щиииш TfBTQ, няходим погрешность 0,000055. $3. ЧИСЛЕННОЕ РЕШЕНИЕ ДИФКРЕНЦИАЛЬНЫХ УРАВНЕНИИ И СИСТЕМ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ ВЫСШИХ ПОРЯДКОВ Задача Кони для дифференциального уравнения п-го порядка ставится так: найти решение уравнения ум = /&,у,у'.у,...,уы-*)) A6) при начальных условиях Задача Кош Aб)-A7) для дифференциального урввнения п-го по- порядка приводится к задаче Коли для систет п дифференциальных уравнений первого порядка A1)-A2), к которой затем применяет численные метода решения систем. Положим tfi - У* У2" tiv У-т Уг* ••• ' Уп= К-л и, выразим функцию у(х) вместе с ее производными до (п-1 )-го по- порядка включительно через введенные функции: Вместо задачи Aб)-A7) имеем задачу для системы уравнений У\ = Уг> У'г - уу при начальных условиях Уо> Уг\жо= У'о A8)
146 Глава 8. Чнолеиное ревеняе дифференциальных уравнений Подчеркнем, что численное решение задачи Кош Aб)-A7) - это таблица значений функции yt = y1t в точках х{ A=1,2,...,я). Праыер 1. Задачу Кош для дифференциального уравнения второго порядка ^^ Vе* У О. У|^о=°- У'|а*сг1 преобразовать к задаче Коши для системы двух дифференциальных уравнений первого порядка. Решение. Положим у^=у, У2=У\> тогда функцию у(х) и ее произ- производные до второго порядка включительно можно выразить через у1, У2, У\' У'г' У - &г У = у\ = уг. У" - У'г- Подставляя новые переменные, придем к задаче Коши для системы уравнений, решенной в примере иг §2, поскольку Г У\ - У2 ~ УРавнение> полученное при введении функций у,,, уг; 1 Уг = ~^1 ~ преобразованное исходное уравнение у" = - у; На практике возникают задачи Коши для систем дифференциаль- дифференциальных уравнений, порядок которых выше первого. Например, при ре- решении задач динамики механических систем может получиться систе- система дифференциальных уравнений, состоящая только из уравнений второго порядка. Покажем на примере, как задача Коши для системы дифференциальных уравнений высших порядков преобразуется к за- задаче Коши для системы уравнений первого порядка. Припер 2. Задачу Коши для системы двух дифференциальных уравне- уравнений второго порядка Г У* + У\ + 3(у1 - у2) = slnx, I У| + У'г + 5(у2 - у,) = О, преобразовать к задаче Коши для системы четырех ' дифференциаль- дифференциальных уравнений первого порядка. Найти решение этой задачи методом Рунге - Кутта на сетке отрезка СО; 0,41 с шагом 0,2 и оценить погрешность полученного результата с помощью правила Рунге.
§3. Решение диф. уравнений и систем высших порядков Решение. Введем функции ?.,, z2, zJt z^: Тогда получим первого порядка: . zg = у1, г3 * у2, z^ = у2- Коши для системы дифференциальных уравнений \ z\ - z2, - 3(z1 - slnr, - гл), I /» I —Г) • 7 '• ?з|х=О"и' z Численное решение этой задачи, найденное с помощью программы на языке QUICKBASIC в Приложении (см. с. 325), представлено в таб- таблице. Для оценки погрешности по правилу Рунге решение определя- определялось дважды методом Рунге - Кутта: один раз с шагом 0,2, дру- другой - с шагом 0,1. 1 0 1 2 xi 0 0,2 0,4 Численное решет с шагом 0,2 Уи-*и 1 0,950265 0,844404 У2<=23< 0 0,266267 0,604998 ie задачи Коши с шагом 0,1 Уи~гм I 0,950106 0,844097 0 0,266537 0,605519 Погрешность определяется величиной max { max <|уь,(h)-yb, 15 15 = 0,000035. 15 Упражнения Задачу Коши для данного дифЗЕеренциального уравнения второго по- порядка преобразовать к задаче Коши для системы дифференциаль- дифференциальных уравнений первого порядка. Найти решение последней задачи методом Рунге - Кутта на сетке отрезка 1а,Ъ]. Вычисления про-
148 Глава 8. Чиолонное ремни» дифференциальных уравнена* вести дважды с шагами h и Л/2, полагая h*=0,2. Найти численное решение дифференциального уравнения и оценить его погрешность с помощью правила Рунге. Сравнить численное решение с извест- известным аналитическим решением <р(х). Результаты представить в ви- виде таблицы, аналогичной таблице на с.144. Относительно ирра- иррациональных исходных данных задачи учесть замечания к упражне- упражнениям ИЗ § 1 . 1. ху"-(х+1)у'-2(х-1)у=0, yj^^e2, у'^-ге2, 1«к2, <р=е2х. г. ±2у"+д^'-у=зх2, у^и, У |jtet= • c2> Фг< 3. xV - бу = о, у|:г=1 = 1, у' 1^, = з, 1«*к2, 4. *V - 12у = 0, у^ =1, у'|:г=1 = 4, 1««2, ф(Х)=х4. 1 5. ху" + - у' = 0, y|J>1 = 2, 6. x2y"+y/lro^xe:EB+xlivr), t/|дг=2 = e2ln2> У' |х=2 = е2Aп2+0,5), 2 < х < 3, ф(х)=ея:11и1. 7. д2у"+ху'=0, у)^, =0, У'1^, = 1 _ " . 3 . 8. ^"-ху'+у-Зх3, 1/^=0.76, 1/'^«2.26. 1<г«. чкаг)-^. 9. т2у"-4ху'+6у=х4'-х2, у|х=1 = 0,5, У'1^^3, 1€Г«, ф(х) = — +хг1пт. 7 0 1 j 2 10. j*y*+(af-1)y'-y=0, у^» -, У'|а>1= - -. * 11. хгу"-(гг-2х)у'-(Зх+2)у=0, yj^p е, у' 1 12. хгу"+х3у' + (хг-2)у=0, У|т>-1=1» У* l/z^i^ ' i^x&t <p(.x)=-.
C. Решение диф. уравнений и систем вноших порядков 149 13. (xa-1)y'-2xy'+2y=0. yl-^. У'\ 1 14. z(z+i)y"+C3»Z)y'+y=O. y^-i. У'|х=1=-1' 1<гС' ?<*>—• 15. у 16. y"+y'tffC-ycoB2x=0, yl-p-o'U y'lx-Cf' °*с^1» <P(x)=>6~ein*. 18. y*+2y'tgCT-3y=0, 19. x(x + Dy* - (x - Dy' + у = 0. )in|x|-4jr. y' ^=0 0<rO, 1 , совЗац <p(x)= - I cost j. 21. y^ 22. (в*+1)у--2у'-е*у=0, yj-j^cfO. У' 23. y*sUiy - 2(y' Jcosy = 0, yj^ = -, у' ^ = -, 24. (X-2Jy'-3(*-2)y'+4y = я»2, У^-З. У 25. у' - 2y = Да^е* , у|Хщ0=1, у' jjxf'O. 0««1. <р(х)-е* .
ГЛАВА 9 ЧИСЛЕННЫЕ УЕТОДЫ БЕЗУСЛОВНОЙ (ХИМИЗАЦИИ §1. НЕОБХОДИМЕЕ И ДОСТАТОЧНЫЕ УСЛОВИЯ ЭКСТРЕМУМА В ЗАДАЧАХ БЕЗУСЛОВНОЙ ОПТИМИЗАЦИИ Пусть задано множество X с Rn и функция f(i)=f(x1,xo,...,x ), определенная на множестве X. Определения. Точка i* f X называется точкой локального минимуме функции /(х) на множестве X, если существует шар U?(x*)={x: Цх-х*Ц ется неравенство фу / уу р U?(x*)={x: Цх-х*Ц $е) такой, что для любого х <= U?(x*) выполня- выполня/(х*) < /(х). (I) Если неравенство A) выполняется как строгое (при х * х*), то говорят, что х* - точка строгого локального минимума. Точка х* € X называется точкой глобального минимума функции /(х) на множестве X, если неравенство A) выполняется для любого х из множества X. Аналогично определяются точки локального и глобального мак- максимума функции /(х) на множестве X. Точки локального минимума и максимума функции /(х) называют точками экстремума этой функции. Задача отыскания всех локальных минимумов (максимумов) функ- функции /(х), если множество X совпадает со всем n-мерным простран- пространством, т.е. X = Rn, называется задачей безусловной оптимизации, а функция /(х) - целевой функцией. Задачу отыскания точек локального минимума целевой функции /(х) символически записывают так: /(х) - mln, х € Rn. B) Аналогично, задачу отыскания точек локального максимума функции /(х) символически записывают следующим образом: /(х) - max, х € Rn. C) Задача C) эквивалентна задаче -/(х) - mln, i(Rn в том смысле, что множества локальных и глобальных решений этих задач соответственно совпадают. Теорема 1 (о необходимых условиях локального минимума). Пусть | х* - точка локального минимума функции /(х), которая имеет
81. Условия вкотремуыа в задачах безусловной опттшзацвв 151 в/ в этой точке непрерывные частные производные —(х) dXj О1,2,...,п); тогда частные производные функции /(х) в этой точке равны нулю, т.е. в/ , —(X*) = О (/-1,2,...,п). Иначе говоря, в этой точке градиент функции v/(x*)=f—, —,..., —] L дхл дхо вх J Л с. tl равен нулевому вектору, т.е. ?/<х*)=О. Определение. Точке х*, удовлетворяющая условию 7/(х*) = О, называется стационарной точкой функции /(х). Не всякая стационарная точка функции /(х) является решением задачи B). ОпреОелешя. Пусть даны квадратная матрица 4=(а{.) порядка п и вектор х € Rn. Умножение матрицы А на вектор х дает вектор y=i4x, координаты которого определяются соотношениями п j/t = J atJXj ((=1,2 n). Квадратная матрица А называется симыетричной, если а =а.г Симметричная матрица А называется неотрицательно определенной, если для любого вектора х € Rn скалярное произведение векторов у=Лх и х неотрицательно, т.е. (Ai,x)^O; положительно определен- определенной, если (Ах,х) > 0, х * 0; неположвтельно определенной, если (Лх.х) < 0; отрицательно определенной, если (Ах,х) < 0, х * 0. Теорема 2 (критерий Сильвестра). Симметричная матрица А неотри- неотрицательно (положительно) определена тогда и только тогда, когда все главные (угловые) миноры неотрицательны (положительны): \ la.. ц9| л1 = a,. > о ( > 0), д- = М1 1Z > о ( > 0),
152 Глава 9. метода «11 «12 «13 >0 ( > 0),-.., det A >0 ( > 0). «31 *32«33 мвтряцв А является вепожшительво (отрицательно) определенной тогда я только тогда, когда знаки последователь- последовательных главных миноров чередуются, причем Д1 * ац1 < 0 ( < 0), Ag = > О ( > 0), &3 - < О ( < 0),... . Определение. Матрица вида а2/ а2/ а2/ 1п а2/ а2/ а2/ а2/ называется матрицей Тессе функции /(х). Теорема 3. Если точка х* - локальное решение задачи B) и в этой точке функция /(х) имеет непрерывные частные производные до второго порядка включительно, то матрица Гессе функции /(х) в точке х* является неотрицательно определенной, т.е. (Я(х*)х,х) > О vx € tP. Теорема 4 (о достаточен условиях локального экстремуме). Если точка х* является стационарной точкой функции /(х), т.е. v/(x*) = О, и матрица Гессе функции /(х) в точке х* положи- положительно определена, то х* - строгое локальное решение задачи B); если "яв точка х* является стационарной для функции / (х) и матрица Гессе в ней отрицательно определена, то х*- строгое локальное решение задачи C). Замечание. Задача одномерной минимизации f(x) - mln, x с R является частным случаем задачи B).
f 1. Условна мсстремума в задачах беауеаоваоя оютиимцнж 153 Для этого частвого случая парена 4 формуяруется следупщам образом. Хворама 4', Цусть функция /(х) имеет в точке ж* € * непрерывные производные до второго порядке вклвчительао. Тогда ecus x* - стационарная точка функции fix), т.е. f{x*)*Q я -~^{х*)>0, то х* - строгое локальное решение задачи одномерной минимизации. Пример 1. Решить задачу fix) = х* + х\ - 2хлхг ¦* ш1л, х € В2. Решение. Найдем стационарные точки функции /(х): г2 = О, — = Зх| - Зх1 = О. Решением этой системы уравнений является две точки х* - f ° I х! - f f 1 1 loJ ^ 11J (€>X —3 1 • Г 0 —3 1 • Г 6 —3 1 1 ] я л(Х. ) = [ I; 7t(Xo) — I I. -3 6r2J 1-3 0 J 1-3 6 J В силу критерия Сильвестра матрица Щх*) не является неотрица- неотрицательно определенной, а матрица Щх?) положительно определена. Следовательно, на основании теоремы 3 точка х* не является решением задачи; согласно теореме 4, в точке х^ данная целе- целевая функция достигает строгого локального минимума. я Пример 2. Исследовать на экстремум функцию 1 f X. X, Решение. Найдем стационарные точки: 9/ 1 2 47 а/ 1 1 47 = х0 хл + — = 0, = хо х. + — =0 дх1 12 2 3 1 3 дх2 2 г 12 1 4 8х, + х5 = 188, или i 12 х, + бг, = 141.
154 Глава 9. деленные методы безуоловнов оптимизации Решением этой системы является точка х* = f 21 I. I 20 J При этом 2 1 з ~'ii i i 2 1 1 = <0, Ao= > 0. 3 г 3 144 12 2 Следовательно, в точке х* имеет место строгий локальный максимум. §3. ВЫПУКЛЫЕ МНОЖЕСТВА И ВЫПУКЛЫЕ ФУНКЦИИ Определение. Множество Xcf называется выпуклым, если вместе с любыми двумя точками х1 и хг ему целиком принадлежит отрезок, соединяющий эти точки (рис.26). Аналитически условие выпуклости множества записывается так: х = A-а)х1 + ах2, ха, vx^x^X, асСО.П. D) Определение. Функция fix), определенная на выпуклом множестве X с Rn, называется выпуклой, если V x^Xg с Я, а€Ш,1] справед- справедливо неравенство E) Если неравенство E) выполняется как строгое, то функция /(х) называется строго выпуклой на множестве X. Определение выпуклой функции одной переменной иллюстрирует рис.27. Через любые две течки (^./(х,)) и {x2,f(x2))t лежащие на кривой y=f(x), проведем хорду . Параметрические уравнения этой хорда имеют вид х = ^ э 1 г О < а $ 1. у = V 2 Формальное определение выпуклой функции одной переменной в виде неравенства E), в частности, означает, что для аргумента х € [x1t;r2] ордината графика данной функции /(х)=/(A-а)х1+ат2) не больше ординаты хорды A-а)/(х1 )+а/(х2). График функции яв- является выпуклым вниз по отношению к люОсй его хорде.
Выпуклые множества и выпуклые функции 155 У Рис.26 Рис.27 Теорема 5. Бели функция fix) выпукла на множестве X и ется стационарной точкой функции fix), т.е. х* - строгое локальное решение задачи Т/Ч* ) X ЯВЛЯ- = О, то /(х) -» min, х е X. F) Теорема 6. Если функция /(х) и множество X выпуклы, то любое ло- локальное решение задачи (б) является также глобальным решением на множестве X. Пусть функция /(х) выпукла на множестве X; тогда из теорем 5 и 6 следует, что отыскание стационарной точки задачи F) означа- означает наховдение глобального решения этой задачи. Достаточные условия выпуклости функции содержит следующая теорема. Теорема 7. Если функция /(х) имеет непрерывные производные до второго порядка включительно и матрица Гессе функции /(х) по- положительно определена в любой точке х выпуклого множества X, то функция /(х) является выпуклой на множестве X. Пример 1. Показать, что стационарная точка функции /(х) = а* - х^х2 + 3% + 9х^ - 6г2 + 20 является глобальным решением задачи /(х) - min, x e Решение. Найдем стационарную точку функции fix): 9f_ Ox. = 2Х, - + 9 = 0, = - df_ дх2 Zx2 -6=0.
156 Глава 9. Численные методе безусловной оптимизации f 2 1 1 I -1 г) Решением этой системы уравнений является точка Вычислим частные производные второго порядка и составим матрицу Гессе данной функции: а2/ а2/ а2/ а2/ -4-2. -4-2, = = -1; «(D Угловые миноры Д., =2 и Д2=3 матрицы Я(х) не зависят от координат точки и положительны во всех точках выпуклого множества R2. Сог- Согласно критерию Сильвестра, матрица Гессе положительно определе- определена на множестве R2, и, следовательно, функция является выпуклой на R2, а единственная стационарная точка х*- решение глобальной задачи. я Пример 2. Найти локальный минимум функции A.) — Л14 — СЛл%vto т Хо —СХЬл + О• I } С с. i На каком множества найденное локальное решение является глобальным? Решение. Найдем стационарную точку: а/ . дх. 1 Решение системы - точка х а2/ = б, а2/ ¦-Ш- + 1=0. составим матрицу Гессе: а2/ 1 Г а2/ а2/ 1 *? а2/ 6 1 ix^ ж, Матрица Гессе положительно определена на множестве точек х € X, где угловые миноры »(х) положительны, т.е. 6 > 0 и Зж.- —3 > о.
JS. Выпуклые мноявотва ж выпуклые функции 157 Отсюда следует, что X = ux^Xg): х2 > О, х1 > —- у. Непос- редственной проверкой убеждаемся, что стационарная точка х* при- принадлежит множеству X и, следовательно, согласно теореме 6, х* является точкой глобального минимума функции /(х) на множес- множестве X. н Упражнения Найти решение задачи безусловной минимизации /(х) -> min, х € R2 для заданной це'левой функции fix), используя теоремы о необ- необходимых и достаточных условиях Оезусловной минимизации. Уста- Установить, на каком множестве найденное решение является гло- глобальным. 1. fix) = х^ + аг| - бг^д + 1. xJz ~ 2. /(х) = е 7 (хл +ф. 3. /(х) = х* + г| + хлхг - Зхл - 6х2. 4. /(X) = х\ + х\ + 4(Х2 - х1). х1 - 5. /(х) = х^ + х| + x^ 6. /(X) = х^ + х| - 6x^2 - 39х1 + 18х2 + 20. 7. /(х) = (х1 - ЗJ + (х2 - 2J + (х1 -х2 - 4J. 8. /(х) = 2д^ +х| - 4х1 - Зх2 + 6. 9. /(X) = Х^ 10. /(X) = xf + х\ - 44x^2 - 2Х1 - 2Х2 + 8. 11. /(X) = 2xJ - ^af + 5x2 + х|. 12. /(X) = 2x2 + х\ + 4(Х2 - Х1) + 6.
13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. fix) = /(X) - /(X) - Л») - /(X) = /(I) = /(x) = /(X) = Л*> = Л») - ¦ /(x) = /(x) = 8? «r x2 A A xf 4 50 rP + — X, + 2я| н + 4- + x|- 20 + —. у 2(Х1 2.Д1В, ? + Я*)8/Э--4 -2xf^ -2xf, + 2a| - + 2af - [^ ' .54- -2X?X, - 2x2l2 зх, - бх^. + 4a:, - 4x,t + 4x2) + 5. - IS-lttTg. f*.tJ. 2x?x2 - 2x? 2^r2 - 2x? - 2X2 + 1 - 2x2 + 1 , + 2 , + 2 (X, (*, (x, : (X, • > 0). < 0). > 0). < 0). 25. /(х) = х\ + Зх| + 4х1 - 6хг +7. §3. ЧИСЛЕННЫЕ МЕТОДЫ ПОИСКА МИНИМУМА ФУНКЦИИ ОДНОЙ ПЕРЕМЕННОЙ 1°. Унимодальные функции Определение. Непрерывная функция y=f(x) называется унимодальной на отрезке 1а,Ъ], если: t) точка х* локального минимума функции принадлежит отрез- отрезку [o,t>]; 2) для любых двух точек отрезка х, и х2, взятых по одну сторону от точки минимума, точке х,, более Оливкой к точке минимума, соответствует меньшее значение функции, т.е. как при х*<х1<хг (рис.28,а), так и при х2<х,<х* (рис.28,б) справедливо неравенство /<х1) < /(х2).
§3. Метода поиска ышшмума функция одной переменной 159 х~ а) X б) Рис.28 Достаточное условие унимодальности функции f(x) на отрезке [а,о] содержится в следующей теореме. Теорема 8. Бели функция fix) дважды дифференцируема на отрезке [о,о] и f{x) > О в любой точке этого отрезка, то f(x) - уни- унимодальная функция на [а,о]. Заметим, что условие f(x) > 0 определяет множество точек, на котором функция является выпуклой вниз. Пример 1. для функции f(x) = 2т2 - lnr найти: 1) промежуток X, на котором функция является унимодальной; 2) решение задачи f(x) - mln, х е X (X с R). Решение. Функция f(x) определена при х>0; найдем ее производные Ах2 - 1 /' х € @, »). Следовательно, функция f{x) унимодальна на интервале @, «). Первая производная /'{х)=0 при х=0,5. На основании теоремы А' заключаем, что i*=0,5 - точка локального минимума функции f{x). , 2°. Схема суженая промежутка унимодальности функции Пусть требуется решить задачу f(x) - min, if! (XcR). , G) Применение численных методов для отыскания точек х* локаль- локального мшошума функции f(x) предполагает: 1) определение промежутков унимодальности функции, т.е. на-
160 Глава 9. Читттт метода беауакимоя хождение отрезков, которш принадлежит одна точка локялкюго 2) вычисление значения х*, лртядовжаиаго вобранному проме- промежутку, с заданной точности». дш непрерывной функции /(х) строят ее график на некоторой отрезке (а,о) я если пкпштсЯм что на этом отрезке ''|>мф|и функ- функции имеет вод, изображенный на рис. 28, то ta,oJ - отрезок уни- унимодальности функции. Отрезок 1а,Ы берется по возможности паям. При вычислении точки минимума точность достигается последо- последовательным умвньиеввем отрезка ta,oJ, содержащего точку х*. до размеров, не прплиищщиУ заданную точность s (о - a < e). Пвипчттп. Если функция имеет производную в области определения, то для отыскания стационарных точек функции /(х) нуиио най- найти корни уравнения /'(х) « О. Для реиения этого уравнения, как правило, необходимо использовать **чежатгаа методы, опи- описанные в гл.3. Однако для реиения задачи G) провв приме- применять прямые численные методы поиска минимума функции fix). Рассмотрим один из приемов* позволяимих сузить отрезок уни- унимодальности функции. Пусть функция fix) yimnnffUMm на отрезке (а,о]. Возьмем две произвольные точки х, и Xg, принадлежащие отрезку 1а,Ы и такие, что х1 < х2- В каждом из следукцих трех очевидных возможных слу- случаев можно указать отрезок меньших размеров Са.,,0.,], содержащий точку минимума х* и принадлежащий первоначальному отрезку (рис.29): I. Если щ * /(?,) < уг ¦ /(а^), то положим а1=о и Ьл=х2 и получим меньший отрезок унимодальности (оц.^]. II. Если у1 = /(х1) > у2 = /(х2), то естественно принять III. ЕСЛИ у^ ш /(Xt) = уг = /(Xg), TOjO,*^ И 2. Для функции /(х) = 2Х2 - 1лх, выбрав отрезок унимо- унимодальности 1а,Ы » [ 0,25; 11 и две произвольные точки
». Метода поиске минвцуыа функции одной переменной 161 III а (a1=asr*?r2=b1) х2 b х -И h ахл х Рис.29 хл, хг с Ca.bJ, найти меньший отрезок унимодальности Со,,^]. Решение. В примере 1 было установлено, что функция fix) имеет точку минимума х*=0,5 и является унимодальной на любом отрез- отрезке, содержащем точку х* и лежащем в области ее определения @,«). Возьмем х,=0,375, х0=0,625; тогда Ул=?(хл )=1,2620793, у2 = /<х2) = 1,2512536. Здесь-естественно положить 0,=^ = 0,375 и Ъ^=Ь = 1 (случай II). я Методы вычисления значения точки минимума функции одной пе- переменной отличаются алгоритмами выбора точек х1 и х?_ для локали- локализации точки х* с заданной точностью. 3°. Метод половинного деления Пусть при решении задачи G) определен отрезок [a.bJ, кото- которому принадлежит точка локального минимума х*, и функция fix) является унимодальной на этом отрезке. Далее для сужения отрезка унимодальности используем точки хл и х2. расположенные симметрично относительно середины от- отрезка [a.bJ: ^j, ь_а Х1,2 - 2 2 * Будем считать, что число к гораздо меньше 1 (й « 1). Тогда точки х1 и х2 принадлежат отрезку Ca,b] и, следуя рассмотренной в а. 2° схеме, получим новый суженный отрезк ia^,b^) и оценим 6-469
162 Глава 9. Численные метода безусловно* оптимиз его длину в каждом из трех возможных случаев: сн-Ь Ь-а 1+Ь — + *—; 6,-сц = — (Ь-а). а+Ъ Ь-а 1+й II. у1 > у2, 0,^= й —, b.,=b; о^-а, = —(Ь-а). III. у1 = у2, а,»*.,, Ь^=хг; Ь.,-0, = й(о-а). Таким образом, после первого шага преобразований найден новый отрезок унимодальности Со,.Ь.,], длина которого уменьшилась. Наавание метода (метод половинного деления) мотивировано тем, что если величина k очень мала, то длина отрезка унимодаль- унимодальности Ь-а уменьшается почти вдвое (в случаях 1,11). Теперь в новом суженном промежутке [а^,Ь^1 выберем точки х^ и х^К симметричные относительно его середины: 1,2 2 2 Проведя вычисления, аналогичные проделанным ранее, получаем от- реаок iU2,bz], длина которого не больше Ъ.-а. 0 Ъ-а () —х , 2 2е1 И Т. Д. В результате приходим к последовательности таких вложенных отрезков 1а,Ы, 1а^,Ъ^), .... [an,bnJ,..., что точка локаль- локального минимума х* функции fix) принадлежит каждому из них и яв- является общим пределом последовательностей (an) и <bn>. Отсхща получаются приближенные равенства х * а « Ъ , п п точность которых на n-м шаге вычислений можно оценить неравен- неравенством () -an < Ьп-ап 4 —— (b-a) < e. (8)
$3. Метода поиске минимума функции одной переменной 163 Пример 3. Найти точку х* локального минимума функции /(х) = 22?-1пг не отрезке [0,25; 1 ] методам половинного деления с точностью е - 0,1. Провести вычисления, полагая А - 0,1 и предварительно оценив минимальное число шагов п для достижения ТОЧНОСТИ Е. Решение. Было установлено (см. пример 1), что функция унимодаль- унимодальна на отрезке [0,25;11; точка х* принадлежит этому отрезку. Вос- Воспользуемся неравенством (8) и определим число шагов п: ШГе/(о-а)] 1п@,1/0,75) (Ь-а) < е; п > = «3,37; n,< = 4. 1[Aй)/21 1@55) Ъ1п 2n " 1п[A+й)/21 1п@,55) Обозначим <i\ *^**** * . ®t~®t ii\ tt\ (i\ <i\ 1,2 2 2 1 1 » 2 2 . (t= 0,1,2,...,n), где Oq=o = 0,25, bQ=b=i, С141Ь^ - координаты начала и конца от- отрезка, полученные на t-м шаге вычислений, точки х^ и х^ принадлежат отрезку la гЬ^. Произведем последовательные вычисления. Отрезок Са,Ь] = [0,25; 11: х1 = 0,5375, х2 = 0,6625, ул = 1,2221 < у2 = 1,2895. Отрезок la^.b^l = 1а,х?] =[0,25; 0,66251: Х^5 = 0,4356, тф = 0,4769, у^ = 1,2105 > t/(^ = 1,1953. Отрезок 1аг,Ъ2\ = Ix^,хг\ = [0,4356; 0,66251: хЦ> = 0,5377, x(|J = 0,5604, у^) _ Отрезок [Oj.bj] = [х^.х^Ь = [0,4356; 0,56041: Z(^ = 0,4918, Х^р = 0,5043, j/(^) = 1>1934 > |/(|) = 1,1932. Отрезок ta4,b4l = [x^^.x^h = СО,4918; 0.5604J.
164 Глава 9. Численные метода безусловно* оптвмвашщи Разность А = &4 - а4 = 0.0686 < 6=0,1. Следовательно, точкой локального минимума, найденной с заданной точностью, является х* * а4 = 0,4918. в 4°. Метод золотого сечения Термин "золотое сечение" ввел Леонардо да Винчи. Точка х1 является золотым сечением отрезка 1а,Ы, если отношение длины Ъ-а всего отрезка к длине Ь-х. большей части равно отношению длины большей части к длине х^-а меньшей части (рис.30), т.е. Ъ-хл хл - золотое сечение, если справедливо отношение = 1 Аналогично, точка xz, симметричная точке х^ относительно сере- середины отрезка 1а,Ы, является вторым золотым сечением этого от- отрезка. Так как точки х1 и хг расположены симметрично относи- относительно середины отрезка \.а,Ъ\, то можно записать а+Ъ Ъ-а хл г, = — * й — . (.10) 1,2 2 2 а+Ъ ь-а - Ъ-а ъ-а Учитывая, что Ъ-х.=Ъ + А —=A+А) —, хл-а =<1-А) —, 1 2 2 2 1 2 и используя определение золотого сечения, вычислим число А > 0: Ъ-а Ъ-хл 2 1+А „ г- = 1 » = - A2* 4ft -1=0 » A=J5 - 2. b-Xj x^-a 1+A 1-A Отметим свойство золотого сечения, в котором легко убедиться: пусть z1 и хг - два золотых оечения отрезка 1а,Ы; тогда точка х1 одновременно является золотым сечением отрезка 1а,хг], а дру- другая точка х2 - золотым сечением отрезка 1х^,Ь] (рис.30). Теперь разберем подробнее алгоритм метода золотого оечения при нахождении последовательности вложенных отрезков [ai,bi'i ({=0,1,...,п), сужающихся к точке х* локального минимума уни- унимодальной функции fix).
98. Метода поиска мшшмуиа функцки одной переменное 165 ot-b 2 + X, b х2 - валетов сечение отрезков 1а,Ы и 1х^,Ъ) x1 - золотое сечение отрезков 1а,Ы и [a,x2J fa Рис.зо Сначала на исходном отрезке Ca,b] по формулам A0) при ft * ii - 2 найдем точки х., и х2, а затем разность L^x = х2 - ж,. Далее вычисляем значения функции у1=/(х1) и у2=/(х2) и, следуя схеме п.2°, образуем суженный отрезок (а,,^]. Наконец, готовясь к следующему шагу и используя свойство золотого сечения, на от- отD (Л резке [сц.о.,] находим два сечения хку, xv2;. При этом воз- возможны три случая: ai=a> L, г<5>. ,A). ' 2 " ,(D III. у1 Теперь, следуя разобранной схеме, можно переходить к нахождению отрезков [Og.bg], [а^.Ь^] и т. д., учитывая при этом, что в слу- случаях I или II значение у^ или у(*' целевой функции уже полу- получено на предыдущем шаге (t=1,2,...,п). Точность приближенного равенства х* « an « bn на n-м шаге вычислений можно оценить неравенством ь~а < е, A1)
166 Глава 9. Численные метода безусловной оптимизация 2 2 полученным из неравенства (8), где т = — = « 1,618. 1+й i Промер 4. Найти точку х* локального минимума функции f(x) = 2л^-1пг на отрезке @,25; 1 ] методом золотого сечения с точностью s = 0,1. Провести вычисления, предварительно оценив минимальное число шагов п для достижения точности е. Решение. Определим минимальное число шагов п, используя неравен- неравенство A1): Ь-а ln[(b-a)/el 1п@,75/0,1) < е; п > = «< 4,187; п. = 5. хп 1пг Ш 1,618 Ъй* Произведем последовательные вычисления. Отрезок 1а,Ъ] = [0,25; 11: Х1 = 0,5365, Х2 = 0,7135, y^= 1,1983 < у2= 1.3558, Дг^О.177. Отрезок [а,,о,,] = [а,х2] =[0,25; 0,7135]: Х(]] = 0,4271, ХB}= Xv у{]}= 1,2156 > j/^J^ уг ДХ2=0,1094. Отрезок 1аг,Ь21 = [х(]),х21 = [0,4271; 0,7135: X^W^W.,, Х(|}= 0,6041, J/(^= у^у^И,2339, ДХ3=О,О6763. Отрезок tej.bj] = ix^Kx^h ~ [0,4271; 0,60411: ^ ^f^^ ^ l)=y^, Дх4=0,0418. Отрезок [а4,Ь41 = Ix^.x^h = [0,4271; 0,53651: ХD) = 0,4688, X^W_3), уD)=1,1971>у(|)=уC), Дх5=0,0258. Отрезок [с^,^] = Сх^^.х^'] = [0,4688; 0,53651. Точкой минимума функции /<х) с погрешностью А = Ьс-сц = 0,0677< < 0,1 = е является х* « ct = 0,4688. а
93. метода потоке минимума функции одной переменной 167 3°. Метод СЕ Пусть функция ]/-/(?) является унимодальной на некотором про- промежутке. Предположим, что произвольная точка xQ етого промежутка является исходной для поиска точки х* локального минимума и чис- число е - заданная точность нахождения х*. Обозначим через h произ- произвольное приращение аргумента х и, сделав один шаг от точки xQ, получим новое значение аргумента х1 = х0 + h. Сравним значения функции у0 = f{x0) и y^=f(.x^)=f{xo+h). Возможны три различных продолжения в приближении к точке х*. !• У-( < У о - произошло уменьшение значения функции. Тог- Тогда примем в качестве нового стартового значения х^= х1 и сде- сделаем шаг h от этой точки х^ к точке х^К т.е. х^ = x^qK h. Если окажется у^ < Уд, то снова сделаем шаг ?> от новой отар- товой точки х^= х^ ^ и т.д. На некотором ft-м шаге произой- произойдет увеличение значения функции, т.е. j/** > у^К и если при этом \h\ < е, то принимаем х* « х^ с погрешностью \h\. В про- противном случае полагаем, что точка х0 = х^ является исходной для продолжения вычислений по следующей схеме II. II. у^ > у0 - значение функции возросло. В этом случае по- латаем, что начальной точкой вычислений является точка х0 = х1, а меньшим шагом в продолжении счета - величина h = - h / К, где К - некоторое целое положительное чиоло, К > 2. Далее производим вычисления по схеме I или II, вплоть до достижения заданной точ- точности. III. ул = yQ. В этом практически маловероятном случае (опу- (опущенном при рассмотрении случаев I и II) естественно либо принять х = (хо+х1)/2 при достижении заданной точности |Л|<е, либо сле- следовать схеме II. Поиск минимума функции одной переменной указанным методом представляет собой колебательный процесс, совершающийся около
тов глава -. У Уо A) У2 t. численные \ # V I I х0 ж,= метода оезуолом # 1 юж оптимяаации / / 1 Рис.31 х^2'= V <о0 х точки х* локального минимума функции /(х) с непрерывно уменьшаю- уменьшающейся амплитудой (рис.31). Описанный метод поиска локального минимума называют методом сканирования (scan - "проводить исследования по определенному плану"). Щршмер 5. Найти точку х* локального минимума функции fix) = 2a?-lnx методом сканирования с точностью в = 0,1, пола- полагая xQ = 0,25; h *= 0,2 и К = it. Решение. Последовательность вычислений представим в виде пар ко- координат , где f = 0;1, а верхний индекс к является номером очередного шага сканирования, имеем: К = 0,2 > е = 0,1; х0 = 0,25; х, = хо+л = 0,45; ж^) = хЛ у0 = 1,51129* > уЛ = 1,203508; J/(J) = уЛ h = - Л/Я = - 0,05, |й| < е = 0,1; xQ = x^'; ж1 « xQ+h = 0,60; xv0' Vn = V(V > Ул - 1,230826; u^' = 0,65; = 1,275783; ж,; x^J =0.55; ^ > y(]} = 1,202837;
53. Метода поиока миншуыа функции одной переменней 169 ~<2)_ "A). ~B)_ ~{2).г _ 0 ед. "C) ж _<2). ~C)_ о д5- J/(O)e y(iJ> t^i*" *• 193147; Й3) - УB) < у{3)- t.203508. Здесь при вычислениях с шагом Л от точки xQ = 0,65 до точки х^ = 0,5 происходило уменьшение значений долевой функции, а в точке ху'= 0,45 значение функции возросло. Следовательно, можно принять, что минимальное значение функции достигается в точке х* •* х|2' = 0,5 с погрешностью 0,05. я Замечание 1. Для определения точки х* локального минимума метод сканирования применим без предварительного нахождения проме- промежутка унимодальности целевой функции f(x). Задавая различные начальные точки х0 и начальный шаг h, с помощью метода скани- сканирования можно найти различные точки локального минимума, если целевая функция имеет не единственный минимум. Замечание 2. Если предварительно получен отрезок [а,о] унимо- унимодальности функции, то естественно выбирать начальную точку xQ, принадлежащую отрезку 1а,Ы, а шаг h - таким, чтобы ре- результата вычислений принадлежали отрезку [а,о]. Замечание 3. Для целевой функции fix), имекцей непрерывные про- производные до второго порядка включительно, начальное прираще- приращение аргумента h в точке х0 можно вычислять по формуле h =-/'(xQ) / f'{xQ). Действительно, запишем разложение Тейло- Тейлора функции fix) в окрестности точки xQ по степеням h, ог- ограничиваясь квадратичными членами: /(хо+Л) - /<х0) + /' (х0) h + - f <х0) Л2. В точке минимума х* производная по h равна нулю, т.е. fix*) = f'{xQ+h) • 0. Таким образом, получаем уравнение /'(xQ) + /'(xQ)h = 0, от- откуда находим величину h.
170 Глава 9. Чиоленные методы безусловной оптимизации Для заданной целевой функцш f(x) найти промежуток X с R, на ко- котором она унимодальна. Найти точное решение задачи одномерной минимизации f(x) -* min, x z X (I с R), Найти приближенное ре- решение этой задачи с точностью е = 10~2: а) методом половин- половинного деления; б) методом золотого сечения; в) методом ска- сканирования. 1. 4. 6. X3 3 x3 + Zx - X2. X4 4 з З/а?". 2. 5. 7. Or f ЧХЬ z4 --2Z2 4 + 9Z. (z > 3. 0). 8. r2 z - 2 _ »2 z e 9. z - 21nz. 10. ^^(х-б). 11. . 2-Z jA я2_3 12. Zx2 (X < 0). 13. 1 + У(х-1J. 14. . 4 T X+2 4 , „ lnar 3-х2 15. 3a:4 - Qx3 + бг2. 16. . 17. . z z+2 D-ZK 18. (z > 0). 19. A-:Г)(:Г-1). 20. х 9B-х) 21. xU-x2. гг. a-a^Hi-r3). гз. - 24. (z-2J/3Bz+1). 25. (z-
§4. Метода поиока минимума функции нескольких переменных 171 .94. численные методы поиска минимум! функции нескольких переменных 1°. Общая сивы» методов спуска , Пусть требуется решить задачу B): ¦ /(х) - rnln, х € Rn. 6 двумерном пространстве R2 решению этой задачи можно дать гео- геометрическую иллюстрацию. Пусть точка х = (х^,х2) лежит на плос- плоскости Ох^х2- Введем третью координату х- так, чтобы ось коор- координат Ох3 была перпендикулярна плоскости Ох^х2 (рис. 32). Урав- Уравнению х^ = f(Xj,xz) соответствует поверхность в трехмерном прос- пространстве . Бели функция /(х) достигает локального минимума в точке х* i R2, то поверхность х3 = f(x^,x2) в некоторой окрестности точки х* имеет форму чаши (рис.32). Напомним, что линиями уровня функции f(x^,x2) называют се- семейство линий плоскости R2, на которых функция принимает посто- постоянное значение. Неявным уравнением линии уровня является уравне- уравнение f{x^,x2)=C- Бели функция /(х) имеет в R2 единственную точку локального минимума х*(х*,х|), то такая функция называется x2
172 Глава 9. коленные метода безусловной оптимиацжи (С, 0э) PUC.33 иономодальноА. Взаимное расположение ее линий уровня имеет вид, изображенный на рис.33. Мультинодалышыи называются функции, которые имеют более одного экстремума. Такова, например, функция Химмельблау /(X) -ТJ, имеющая четыре изолированные точки минимума. На рис.34 схематич- схематично изображены линии уровня этой функции. Чтобы найти точку х* локального минимума функции /(х), сос- составляют последовательность точек (приближений к решению) {х^*Ъ (й=0,1,...), сходящуюся к точке х*. Последовательность значений функции /(х^*Ь должна быть мо- монотонно убывающей и ограниченной снизу: Геометрический образ решения задачи B) для случая двух пере- переменных напоминает спуск на дно чаши. Это мотивирует названия ме- методов решения задачи B) - «методы спуска». Для различных методов спуска сначала выбирают начальную точ- точку последовательности х^. Дальнейшие приближения х^ опреде-
§4. Метода поиоха минимума функции неоколъхах переменных 173 ляются соотношениями ,2,...), A2) где S(k) - вектор направления спуска; скалярная величина **** является решением 8адачи одномерной минимизации jr(x(b). + .t S(b)) ¦* mln, t € R. A3) Таким образом, задача поиска минимума функции нескольких пе- переменных сводится к последовательности задач одномерной миними- минимизации A3) по переменной t на отрезках п-мерного пространства, проходящих через точки х^ в направлении векторов Метода спуска различаются выбором вектора спуска и способом решения задачи одномерной минимизации. При решении последовательности задач A2) можно ограничиться методом сканирования для поиска минимума функции одной перемен- переменной. Выбрав произвольно начальную точку х^ и размер началь- начального шага h по переменной t, в методе сканирования можно по- 6,0 4,0-¦ 2,0 ¦¦ 0,0 ¦¦ -2,0 ¦¦ -4,0 ¦¦ -6,0 ! С D /(х)=5 /<х>«20 /(х)=35 /(Х)=50 -6,0 -4,0 -2,0 о;о PUC.34 2,0 4,0 6,0
174 Глава 9. Численные метода беауоловвой о: лучить различные точки минимума мультимодальной функции. Если функция /(х) мономодальна, то независимо от выбора на- начальной точки траектория пошска должна привести к единственной точке локального минимума этой функции. 2°. Метод покоординатного спуска Решение задачи B) методом покоординатного спуска, иначе называемого методом Гаусса - Зейделя, производят по следующей общей схеме. Выбирают произвольно начальную точку х@) из области определения функции /(х). Приближения х^ определяются соотно- соотношениями A2): где вектор направления спуска s^- это единичный вектор, совпа- совпадающий с каким-либо координатным направлением (например, если S^ параллелен х1, то S^= {1,0,0,...,0), если он параллелен х2, то S^= @,1,0 0} и т.д.); величина t^ является решением задачи одномерной минимизации A3) и может определять- определяться, в частности, методом сканирования. Детальная реализация общей схемы в двумерном случае R2 дает траекторию приближения к точке х* методом покоординатного спус- спуска, состоящую из звеньев ломаной, соединяющих точки х^к\ х^к\ х(*+1) (й=0,1,2,...) (рис.35). При й=0, исходя изначальной точки х^Ця^.я^), находят точку х@)= (х^. х^) миниму- минимума функции одной переменной ?Щ,х^)\ при этом /(х^ Затем находят точку минимума х^1' функции !{х^,хг) по второй координате. Далее делают следующий шаг вычислений при й=1. По- Полагают, что исходной точкой расчета является х^К Фиксируя вторую координату точки х^1', находят точку минимума функции fix^,x^b одной переменной хлт, при
64. Метода поиока минимума функции нескольких переменных 175 (О, Pujc.35 этом /(x<1)) < /(х*1*) < /(х*0)).- Точку х^ получают, мини- минимизируя целевую функцию /(хф,г2,) вновь по координате х2, фиксируя координату х^ точки х^1^, и т.д. Условием прекращения вычислительной процедуры при достижении заданной точности s может служить неравенство Припер 1. Методом покоординатного спуска найти точки лекального минимума функции Химмельблау /(х) = (х2 + х2 - с точностью s = 10 . х\ -7J Решение. Решение примера рекомендуется осуществить по программе, приведенной в Приложении (см. с. 348-354). Начальный шаг h в методе сканирования при решении задачи одномерной минимизации A3) во всех приведенных вариантах принят равным 0,2. Найдем течки локальногс минимума функции ХиммельОлау с заданной точностью, достигаемой на 6-м шаге вычислений. Выберем следующие четыре различные начальные точки х^ для каж- каждого варианта расчета: @,0), @,4), @,-1), @,-4). Координаты течек х^=(х^Кх^2Ь, вычисленных на й-м шаге итерации, соот-
176 Глава 9. Численные методы безусловно! оптюшаацви ветствущие значения целевой функции /{х^*Ъ на каждом шаге и координаты точки минимума х*=(х*, х?) с вестью верными знака- знаками сведены в таблицы. Варианты расчета Оля начальных тачек @,0) и @,4): к 0 1 6 0 3,400001 2,996876 4 3 4к) 0 1,715625 2,000000 4 2 /<х<*>) 170 5,609657 0,000361 /(X*) 0 0 -2,840624 -2,809374 X* -2,805118 Х^ * 4 3,134376 3,128126 4 3,131313 Варианты расчета для начальных точек @,-1) и ft 0 1 6 -(*) ХЛ 0 з, з, 518751 581251 я* з, 5Й4428 -1 -1 -1 ,828125 ,850000 4 -1 ,848126 /(ж<*>) 180 0,218756 0,000621 /(X*) 0 1 0 -3,949980 -3,781248 X* -3,779310 *!*> -4 -3,334375 -3,287499 4 -3,283186 /№<»>> 130 0,041687 0,001015 /(X*) 0 СО,-4): /<ж<»>> 306 1,636352 0,000804 0 3 . Метод скорезвкго сиусмэ Пусть требуется решить задачу безусловной минимизации /(х) - mln, х € И*. Исходя из некоторой начальной точки х^°К строят последова- последовательность приближений где S (*) _ единичный вектор в направлении градиента функции /(х) в точке х (*). = v
§4. Метода поиска функции нескольких переменных 177 Точку зации функции вектора определяют ив решения задачи одномерной ^ + ts(i)) попеременное t в направлении mln t € R A5) Задачу A5) численно решают методом сканирования. Вычисли- Вычислительную процедуру повторяют до выполнения неравенства A4). Напомним, что вдоль направления вектора градиента функции происходит либо наибольший рост, либо наибольшее убывание функ- функции /(х). Изложенный метод поиска локального минимума функции /(х) на- называется методом скорейшего или градиентного спуска. На рис.36 показана траектория поиска точки минимума в двумерном случае - ломаная с началом в точке х^°К заканчивающаяся в точке, близ- близкой к точке х* локального минимума. Отрезок ломаной, соединяю- соединяющий точки х^ и х***1' (fc=O,i,...), параллелен вектору градиен- градиента функции /(х) в точке х^*| ориентированного перпендикулярно линии уровня функции, проходящей через точку х (*). Z. Методам скорейшего спуска найти точки локального ми- минимума функции Химмельблау /(х) = tf + хг - IIJ С ТОЧНОСТЬЮ 6 = 10~2. -7J Рис.36
178 Глава 9. Чщолеюше метода безусловной оютмюацш Решение. В расчетах по программ, приведенной в Приложенш (см. о. 355-364), используются компоненты градиента функции Хпмель- бЛву! V , о g - U, 0/ - 22, а также компоненты единичного вектора в направлении градиента функции: ,x2) grad^/ (x1 ,х2) igrad/(x1fx2)i |grad/(x1fx2)| где |grad/(x1tx2)| = Результаты расчетов по программе для различных начальных точек х^ приведены в таблицах. Вариант расчета Оля начальных точек @,0) и @,4): k 0 1 6 к 0 1 6 0 1,781756 3,001121 *1 3 *2 0 2,799901 2,002225 4 2 /(Х<*>> 170 32,125792 0,000181 /(X*) 0 0 -0,150868 -2,805063 хл -2,805118 Х2 4 2Ч 910393 3,133298 4 3,131313 Варианты расчета для начальных точек @,-1) и 0 3,512499 3,580887 *? 3,584428 -00 Х2 -1 -1 -1,847277 4 -1,848126 /(Х<*>) 180 6,301668 0,000646 fix9) 0 0 -0,209979 -3,781304 -3,779310 Х2 -4 -1,970207 -3,274860 -3,283186 /(Х<*>) 130 66,815132 0,000159 /(X') 0 to.-4): /<«<*>> 306 178,161802 0,003751 /(X*) 0
64. Метода потока мкгашуыа функции неокольхах переменных 179 4°. Пршенеше методов спуска к ревевши сястеы нвлинвймх урававввя Пусть требуется найти решение систем! j^ \х^ »х^ •¦ • • • t хп) ~ ^ t /г(х^ ,хг,...,хп) = О, A6) 0. Используя векторные обозначения X =  Их) = "Xn запишем систему A6) в векторной форме: Их) = 0. Введем неотрицательную функцию =2 (ТЛхл Точка локального минимума х функции Ф(х) является решением дан- данной системы уравнений, и наоборот, решение системы реализует ми- минимум функции Ф(х). Действительно, пусть х* -решение системы A6); тогда Ф(х*)=О, т.е. х* является точкой локального минимума функции Ф(х) (Ф(х)>0 V. х e Rn). Обратно, если Ф(х*)=О, то, согласно свойству скелярного произведения, f(x*)=O, т.е. точка локального минимума функции Ф(х) является решением системы A6). Таким образом, можно получить решение системы нелинейных урав- уравнений, решая задачу об определении локального минимума функции Ф(х), т.е. задачу Ф(х) - шШ, х е Rn. Пример 3. Пусть дана система уравнений | af + л§ - 1 =0, Решение этой системы можно найти, отыскивая точку локального ми-
180 Глава 9. коленные метода безуоловнон оптямкзации нимума целевой функции: Ф(х) - /fc^.a^) + фх^.я^) - (af + л§ - IJ + (% Найти приближенное решение задачи /(х) - mm, х е R2, где вид целевой функции /(х) определен в упражнениях 1-25 к §2. Использовать: а) метод покоординатного спуска; б) метод скорейшего спуска. Найти приближенное решение системы двух уравнений г Т^{хл,хг) = О, \Т2(хл,хг) = 0. сведя эту задачу к задаче безусловной минимизации Ф{х) = fi{x^,x2) + j\{x^,x2) ¦* mln, x e R2. Использовать системы, заданные в упражнениях 1-25 к §4 гл. 3. Решение задачи безусловной минимизации получить с помощью ме- метода покоординатного спуска или метода скорейшего спуска с точностью е = 10~2.
ПРИЛОЖЕНИЯ В приложениях приводятся блок-схемы и тексты программ прак- практически для всех рассмотренных численных методов на языках BASIC, PASCAL, FORTRAN и С; три программы - на языке QUICKBASIC. ОСНОВНЫЕ БЛОК! I ЛОГИЧЕСКИЕ УПРАВЛЯОРЕ СТРУКТУРЫ Блок-схема представляет графическую запись алгоритма прог- программы в виде последовательности геометрических <|игур, называемых блоками. Блок отображает некоторый шаг решения задачи и содержит пояснения действий на этом шаге. Каждой форме блока соответству- соответствует определенное назначение. Блоки связаны между собой стрелками, указывающими последовательность выполнения шагов алгоритма. Не- Некоторые определенные связи между блоками называют структурами. При построении любой программы используют последовательную структуру, условную структуру и структуру повторения. Формы бло- блоков и правила построения схем определены стандартами. Наиболее часто используежые блоки и их назначение Блок [ 1 о < > I I t A А 4. Назначение Начало или окончание блок-схемы алгорит- алгоритма; начало или останов в программе Ввод исходных данных или вывод результатов программы Блок для размещения формул, обозначение арифметических операторов у1 Блок для записи условия при ветвлении программы Л Блок для записи параметров цикла, их диапазона и шага изменения Блок для обозначения подпрограммы Указатель переноса связи между блоками
182 Приложения Основные управляющие аяруиюуры Последовательная структура и ее блок-схема: J Оператор 1 Структура 1 Структура условного выполнения и ее блок-схема: 1 Структура повторения и ее блок-схема: —1 Ложь Структура
Основные блоки и логические управляющие отруктуры 183 Структура повторения с постусловием в ее блок-схема: —м Истина Структура - цикл со счетчиком и ее блок-схема: I к=1,n,p / Ложь \ Истина Структура Г В качестве примера внутри блока цикла со счетчиком указан параметр цикла к, который изменяется от 1 до целого числа п с шагом, равным р. Выход из цикла происходит, если параметр к не принадлежит указанному диапазону изменения (на схеме обозначено как "ложь"). Можно опустить обозначение шага цикла, если р=1. Цикл со счетчиком реализуется в языке BASIC в конструкции FOR...NEXT; в языке PASCAL - в виде оператора FOR с тагом цикла, равным либо 1, либо -1; в языке FORTRAN имеется оператор DO для организации цикла. В языке С организацию цикла можно осущест- осуществить, например, в виде следующей записи: for(инициализация цикла; проверка условия выхода из цикла; кор- коррекция параметров) структура (тело) цикла.
К ГЛАВК 2 К Я 1и. Блок-схема методом Гаусса с выбором г. система не имеет единств, решения (по столбцу) элемента I матрицы \ системы i A=1,2,...,п; I а1.гн-1=Ь1 Структура поиска иаксяшадьного по модулю элемента в К-м столбце | Перестановка ; 1-41 строки, 1 содержащей I главный элемент,! с К-й строкой j
Приложение к главе 2, 51 185 а**акк' *\ 1=к+1 ,n> b=a lk; Преобразование разрешающей к-й строки j (к = 1,2,...,п) | Преобразование \ с помощью разрешающей к-й строки } (k = 1,2,...,n) j остальных строк | (от к+1 - й строки | I до п-й) I I Вывод а^ .1 Вывод на экран треугольной матрицы I Пауза | КОНЕЦ ПРЯМОГО ХОДА ОБРАТНЫЙ ХОД В МЕТОДЕ ГАУССА | Пауза | СШ")
186 Приложения 2°. Программ реяеняя сястеш —«¦« алгевраичесяа, методом Гаусса о выбором гшваого мшвпа (во столбцу) BASIC Замечание к программам на языке BASIC. Для некоторое версий язы- языка BASIC следует изменить разделитель ":" между операторами на разделитель "\", изменить оператор CIS - очистка экрана и символьную переменную INKEYI, содержащую символ, считанный с клавиатуры, на соответствущий оператор и переменную в выб- выбранной версии языка. Форматированный вывод матрицы с помощью команды PRINT USING следует изменить, например, при работе в среде TURBO BASIC. Изменятся лишь строка формата на соответ- соответствующую в рабочей версии BASIC-a. Строки программы, не кратные 10, являются комментариями к программам или подсказками и не отражаются на решениях поставленных задач. Примечание. Данная программа позволяет находить решение системы уравнений, если оно является единственным. Число уравнений п не должно превышать девяти для выбранного форматированно- форматированного вывода расширенной матрицы системы на экран. При числе уравнений п - 5,6,7,8,9 каждой строке расширенной матрицы соответствуют две строки чисел на экране. При нахождении решения системы п уравнений с п неизвестными, например для п ^ 20, следует переписать только строку 10 в программе на языке BASIC следующим образом: 10 DEFINT I-K, M-N: DIM аB0, 21), хB0) 1 REM *************************************************** 2 REM РЕШЕНИЕ СИСТЕМЫ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИИ 3 КЕМ МЕТОДОМ ГАУССА С ВЫБОРОМ ГЛАВНОГО ЭЛЕМЕНТА 4 REM *************************************************** 10 DEFINT I-K, M-N: DIM a(9, 10), х(9) 20 CLS :, INPUT "Введите число уравнений п ", п 30 PRINT "Введите расширенную матрицу по" 40 PRINT M одному элементу (по строкам)" 50 FOR 1 = 1 ТО п
Приложение к главе 2, 51 187 60 . FOR i = 1 ТО Ц + 1 70 ШРОТ ; аA, 1): PRINT " "; 80 NEXT j: PRINT 90 NEXT 1 100 GOSDB 470 1П1 VVU * . i_ — _— 102 REM Прямой ход в методе Гаусса 110 FOR k = 1: ТО n ¦f -М ШЛИ j_ _ " _ 112 REM Поиск максимального по модулю элемента в k-м столбце 120 а = ABS(a(k, к)): 1 = к 130 FOR m = к + 1 ТО п 140 IP ABS(a(m, к)) > a THEN a = ABS(a(m, к)): 1 = m 150 NEXT m 160 IP a > .000001 THEN 180 170 PRINT "Система не имеет единственного решения": GOTO 460 172 REM Перестановка i-й строки, содержащей главный элемент, 173 REM -е k-й строкой 180 IF i = k THEN 220 190 FOR Л = k TO n + 1 200 b = a(k, l)i a(k, 1) = a(i, 1): a(i, 1) = b 210 NEXT 3 О А Л РТПУГ — — — —_ — — _——— — _—— _. _.__.__ 212 RM Преобразование k-й строки 220 a = a(k, k): a(k, k) = 1 230 FOR 3 = k + 1 TO n + 1 240 a(k, J) = a(k, 3) / a 250 .. NEXT 3 . oc-4 PTiV „ i. . 252 REM Преобразование с помощью k-й строки остальных строк 260 FOR. 1 = к +. 1 ТО п 270 * b = a(I, к): a(i, к) = 0: 280 IF b = О THEN 320 290 FOR J = к + 1 ТО n + 1 300 a(i, 1) = a(i, 1) - b * a(k, J) 310 NEXT J
188 Приложения 320 321 330 340 341 342 343 350 360 370 380 390 400 410 420 430 440 450 460 461 462 463 470 480 490 '500 510 520 521 530 540 550 NEXT i прямого хода в NEXT к GOSUB 470 REM Конец DW Х\ГЛ ——————————————— — — REM Обратный ход FOR i = n TO 1 STEP -1 s = a(i, n 4 1) FOR 3 = n TO i + 1 STEP -1 s = s - a(i, 2) * XU) NEXT J X(i) = s NEXT i: CLS FOR i = 1 TO n PRINT "x"; i; " = "; NEXT i GOSUB 530 END метода Гаусса методе Гаусса REM REM CLS ПОДПРОГРАММЫ FOR 1=1 TO n FORJ = 1 TO n 4 1 PRINT USING " NEXT j: PRINT NEXT i: GOSUB 530 , 1); RETURN PRINT : PRINT "Для продолжения нажмите любую клавишу...1 IF INKEYt = "" THEN 540 RETURN
Приложение к главе 2, 51 189 3°. Црограмыа решения систем! линейных алгебраических уравнений методом Гаусса с выбором главного элеыента (по столбцу) на языке PASCAL program GAUSSmethod; { г************************************************** РЕШЕНИЕ СИСТЕМЫ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИИ МЕТОДОМ ГАУССА С ВЫБОРОМ ГЛАВНОГО ЭЛЕМЕНТА ««г**************************»*********************} uses Crt; label finish; const 1=9; type matrlceA=arrayC1..1,1..1+1] of real; vectorX=arrayС1..1] at real; var l,J,k,m,n:integer; aa,bb,S:real; armatrlceA; xrvectorX; chrchar; ПОДПРОГРАММЫ procedure PAUSA; BEGIN WRITELN; WRITELN ('Для продолжения нажмите любую клавишу...'); REPEAT ch := readkey UWPIL oh <> "; END; procedure OutputOfltatrice; BEGIN ClrScr; FOR 1:= 1 TO n DO BEGIN FOR j:= 1 TO n + 1 DO WRITE(atlJ]:16:7); WRITELN; END;
190 Приложения PAUSA; ИГО; { ОСНОВНАЯ ПРОГРАММА BEGIN ClrScr; WRITELN ('Введите число уравнений n'); READ(n); WRITELN ('Введите расширенную матрицу по'); WRITELN (' одному элементу (по строкам)'); FOR i:= 1 ТО n DO BEGIN FOR 3:= 1 TO n + 1 DO READ(ati, 3]); WRITELN; END; OutputOfMatrice; FOR k:= 1 TO n DO BEGIN Поиск максимального по модулю элемента в k-м столбце) аа:= ABS(a(k, k]); i:= к; FOR m := к+1 ТО n DO BEGIN IF ABS(a[m, к]) > aa THEN BEGIN 1:- m; aa:= ABS(alm, k]); END; END; IF aa < O.OOOOO1 THEN BEGIN WRITELN; WRITELN('Система не имеет единственного решения'); PAUSA; GOTO rinish; END; Перестановка 1-й строки, содержащей главный элемент, с k-й строкой)
Приложение к главе 2, 81 191 IP 1 О k THEN BEGIN FOR J:= к ТО n + 1 DO BEGIN bb:= aCk, J]; atk, J]:= atl, J]; atl, j]:« bb; END; END; Преобразование к-й строки) aa:= atk, kl; atk, kJ:= 1; FOR j:= k + 1 TO n + 1 DO atk, Jl:= atk, Преобразование с помощью k-й строки остальных строк) FOR i := k+1 TO n DO BEGIN bb:= all, k]; a[i,k]:=O; IF bb <> 0 THEN BEGIN FOR J:= k + 1 TO n + 1 DO a[i, J]:= atl, J] - bb * a[k, J]; END; END; i- ~" ——— —— —————————————————— ——_ — ————„ у END; OutputOfMatrice; { Конец прямого хода в методе Гаусса FOR i:= n DOWNTO 1 DO BEGIN а:= ati, n + 1 ]; FOR J:= n DOWNTO i+1 DO s:= s - all, J] * x[iJ:= s; END; CLRSCR; FOR i:= 1 TO n DO WRITELNCx'.i,' = Mill); PAUSA; finish:; END.
192 Приложения методам Гауооа с выбором гдаваого элемента (по столбцу) КЖВШГ к прпгрпимпи на яашве ИЖВиШ. Программы написаны для версий компиляторов языка, не меньших чем 5.00, созданных фирмой Micrososoft Corp. Во всех программах для очистки экрана используется команда els операционной системы. Функции DOS включаются в программу с библиотекой FORTRAN-a при компилировании программы вместе с файлом EXEC.FI. Программы будут работать без очистки экрана при выводе ре- результатов, если исключить из программ строки со следующими командами; IINCLUDE: 'ЕХЕС.РГ, INTEGER*2 system, i=8y8tem(fcl8'C). fINCLOBE: 'EXEC.FI' PROGRAM GAUSSmethod с « ***************************************** С * РЕШЕНИЕ СИСТЕМЫ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ « С * УРАВНЕНИИ МЕТОДОМ ГАУССА С ВЫБОРОМ * С * ГЛАВНОГО ЭЛЕМЕНТА * с ******************************************* INTEGER*2 system DIMENSION X(9) COMMON n, a(9,10) i=eystem('cl8fC) WRITE (*,«) 'Введите число уравнений п' READ (*,«) n WRITE (*,*) 'Введите расширенную матрицу по' WRITE («,«) * одному элементу (по строкам)' DO 1=1,П DO j=1 ,n+1 READ (*,*) END DO
Приложение к главе 2, *1 193 WRIIE(*,*) ЕЮ DO CilL OutputOllatrlce DO k=1,n G Поиск максимального no модулю элемента в k-м столбце аа = ABS(a(k, k)) 1 = к DO m=k+1,n IP(ABS(a(m,k)).GT.aa) тага 1 = m аа = ABS(a(m, к)) BID IF END DO С IF (aa.LT..000001) THEM WRITE (*,*) ' Система не имеет единственного решения' PAUSE 'Нажмите клавишу ENTER для продолжения...' GOTO 1 END IF С . С Перестановка 1-й строки, содержащей главный элемент, С с k-й строкой IF (l.NE.k) THEN DO J=k,n+1 bb = a(k, i) a(k, 2) = a(l, J) a(i, 1) = bb END DO END U С С Преобразование k-й строки аа = а(к, к) а(к, к) = 1 DO 3=k+1,п+1 а(к, 1) = а(к, 1) / аа END DO 7-469
194 Приложения О С Преобразование о помощь» к-ft отрока остальных отрок DO l=k+i,n bb • a(l, k) a(l, k) - О IP (bb.NE.O) THEN DO J*k+1,n+1 ad, 3) = ad, 3) - bb * a(k, J) END DO END IF END DO END DO l=sy8tem('cls'C) CALL OutputOfMatrlce Конец прямого хода DO i=n,1,-1 e » a(i, n + 1) DO J=n,i+1,-1 8 = s- a(i, j) * xC) END DO X(i) = s END DO l^syetemCcla'C) DO 1=1,n WRITE («,*(А2.11.А1,Е12.6)') • x',1,f=',x(l) END DO PAUSE 'Нажмите зслазшу ENTER для продолжения...' 1 Ш SUBROUTINE OutputOfMatrice COMMON n,a(9,10) DO 1=1,n WRITE (*,'AOE16.3)*) (a(l,3),3=1,n+1) END DO PAUSE 'Нажмете клавишу ENTER для продолжения...' RETURN END
Приложение к главе 2, $1 195 5°. Программа решети системы ff—<H* алгебраических уравнений методом Гаусса с выбором главного элемента (по столбцу) Замечание к программмам на языке С. Работа всех программ на язы- языке С опробована в среде Turbo C++ Version 1.01 A990 г.) фир- фирмы Borland. Тексты программ перенесены в книгу без искажений. Для безотказной работы всех программ в этой среде должна быть установлена, в частности, опция Use C++ Compiler в пози- позиции СРР extension only, которая находится по последователь- последовательности разворачивающихся меню Options- Compiler - C++ options. Неэкономное использование массивов в программах можно оправ- оправдать только возможным облегчением при сравнении программ на языке С с программами на других языках. Блок-схемы Помогают ориентироваться в структурах программ на языке С. /* *************************************************** РЩЕНИЕ СИСТЕМЫ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИИ МЕТОДОМ ГАУССА С ВЫБОРОМ ГЛАВНОГО ЭЛЕМЕНТА к**************************************************/ «include <stdlo.h> «include <conlo.h> «include <roath.h> «define L 9 int i.J.n; float a[L+iHL+2]; ПОДПРОГРАММЫ void pausaO { printf("ЧпНажмите любую клавишу для продолжения..."); getchO;. }
196 Пршюаенвя void outputofmatrlce(vold) { for(clrscr(),i ш i; i <« n; 1++. prlntf <"\n")) far(j-1j 1 <-n + 1; J++) print* ("*-16.6f",a{l]C;K); pauea(); } ОСНОВНАЯ ПРОГРАММА _ %f void mainО { lnt k,m; float aa,bb,s,x[L+1]; char finish; clrscrO; prlntf ("Введите число уравнений n \n"); scanf("%i",&n); prlntf ("Введите расширенную матрицу по п"); prlntf ("одному элементу (по строкам)\п"); for A*1; 1 <= n; 1++, prlntf("\п")) for C=1; J <= n + 1; scanf("%f,&аС1]СЛЗ).Л++); for (outputofmatrlce(),k=i; k<=n; k++) { Поиск максимального по модулю элемента в k-м столбце */ for <aa=fabs(a[k][k]), l=k, m =к+1; m<* n; пн+) If (fabe(a[m][k]) > aa) { 1= m; aa=fabs(a[m][k]); ); /j, _, %/ if (aa < О.ОСЮОО1) { prlntf ("ЧпСистема не имеет единственного решения"); pausa(); goto finish; }; Перестановка 1-й строки, содержащей главный элемент, с k-й строкой */ for (j=k; (J<=n + 1) 4* (l I- k); 1++) i bb» atkltj]; a[k](J]= ellllj]; a?lHj]=bb; }; Преобразование кнэй строки */
Приложение к главе г, 81 197 for a[k][J]/aa; Преобразование о помощью k-й отроки оотальных отрок «/ for (i-k+1; i<»n; i++) for (bb=a[i][kJ,ati][k]=O,>k+1;C<=n+i)Wi{bb!=O);J++) - bb * a[k][J]; /* КОНЩ ПРЯМОГО ХОДА В МЕТОДЕ ГАУССА for (outputofmatrice(),i=n; 1>=И; хШ=з,1—) for (s»e[i]tn+i],J»n;J>=i+i;J—) s = s - eClHJ]*x[J]; for (clrscr(),i=i;i<=n;i++) printf раива(); . finish:; 6°. Программ для решения системы линейных алгебршпвокнх уравнений методом Юрдава - Гаусса на языке QUICKBASIC Замечание к программам на языке QUICKBASIC. Язык QUICKBASIC {или QBASIC) - одна из версий BASIC-a фирмы Microsoft - наиболее близок к современным языкам vпрограммирования и получает ши- широкое распространение в практике благодаря следующим достоин- достоинствам: чрезвычайно удобной среде с развитой системой помощи пользователю и многочисленными примерами; необязательным проставлением меток перед операторами; наличием имен подпрограмм и функций; возможностью пользователя определять структуры данных; наличием широкой библиотеки графических программ; возможностью формирования исполняемого файла программы (файла с расширением ехе) и т.п.
196 Приложения Данная программа позволяет находить решение системы п уравне- уравнений с п неизвестными для любого числа п, допускаемого памятью персонального компьютера. Для числа п > 4 лучше исключить вывод на экран результатов промежуточных преобразований расширенной матрицы системы (исключая команды "CALL matrlceout(n)" из прог- программы) Заметим, что среда QUICKBASIC формирует следующие команды: DECLARE SUB matriceout (n«) DECLARE SUB pausa () DEFSNG A-B, D, I-K, M-N DEFSNG A, I-J, N ' *************************************************** • РЕШЕНИЕ СИСТЕМЫ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИИ МЕТОДОМ ЖОРДАНА - ГАУССА С ВЫБОРОМ МАКСИМАЛЬНОГО ЭЛЕМЕНТА ВЫЧИСЛЕНИЕ ОПРЕДЕЛИТЕЛЯ МАТРИЦЫ СИСТЕМЫ ' *************************************************** DECLARE SUB matriceout (n%) DECLARE SUB pausa () DEFINT I-K, M-N: DEFDBL A-B, D CLS : INPUT "Введите число уравнений n ", n DIM a(n, n + 1), JKn), x(n) PRINT "Введите распшренную матрицу по" PRINT "однвму элементу (по сторонам)" FOR 1=1 ТО п J1(D = 1 FOR i = 1 ТО n + 1 INPUT ; a(i, J): PRINT " "; NEXT: PRINT NEXT det = 1 МЕТОД ЖОРДАНА - ГАУССА FOR fc = 1 TO n
Приложение к главе 2, A 199 GALL matriceout(n) ' Поиск максимального по модулю элемента ' в матрице a(i,J) аа = ABS(a(k, k)): 1 = к: jO = к FOR m = к ТО п FOR р = к ТО п IP ABS(a(m, p)) > аа THEN аа = ABS(a(m, р)): 1 = m: J0 = р END IF NEXT NEXT det = det * a(i, JO) IF aa < .000000000000001# THEN PRINT "Система не имеет единственного решения" PRINT "Определитель матрицы det =";0;" ("; det;")' CALL pausa: END END IF i ^ '_^ . t 1 Перестановка 1-й строки, содержащей максимальный 1 элемент, с k-й строкой IF 1 о k THEN det = -det FOR J = к ТО n + 1 SWAP a(k, i), a(i, J) NEXT END IF 'Перестановка J-ro столбца, содержащего максимальный * элемент с k-м столбцом IF JO о k THEN det = -det SWAP Ji(k), 31C0) FOR i = 1 ТС n SWA? a(i, k), a(i, JO) NEXT END if
200 Пршюяе * Преобразование к-й строки а - а(к, к): а<к, к) - 1 FOR J = к+ 1 ТО п+ 1 а(к. 3) - а(к. 3) / а. MEET ' Преобразование с помощью k-й строки остальных • строк POR i - 1 ТО п I? 1 о k THEN b = a(i, к): a(i, к) - 0: FOR 3 = к + 1 TOn+1 a(i, 3) - a(i, 3) - b * a(k, 3) NEXT END IF NEXT t ,, NEXT GALL matrlceout(n) 'пузырьковая сортировка результатов вычислений POR i = 2 ТО n POR 1 = n TO i STEP -1 IF 31 C - 1) > 31 C) THEN SWAP 31 C - 1). 31 C) SWAP aC - 1, n + 1), aC, n + 1) END IP NEXT NEXT i . •Вывод решения системы уравнений на экран CLS POR i - 1 ТО п PRINT "х"; _;" = "; аA, л + 1) PRINT "Определитель матрицы det ="; det GALL pauea END
Приложение ж главе 2, }1 201 DEFSHG А-В, 0, 1-Х, M-N SUB matrlceout (n*) DEFDBL А SHARED a() ПЕРШГ I-J, N CLS TOR i = 1 ТО п FOR i = 1 ТО п + 1 PRIMT USING " ##.### "; аA, NEST: PRINT NEXT CALL pauea END SUB DEFSNG A, I-J, N SUB pausa PRINT : PRINT "Дня продолжения нажмите любую клавишу" DO at = INKEYf LOOP WHILE at = "" END SUB
202 Приложения К 52 1°. Блок-схеме численного равняя оиотвмн уравнение методом итераций /Ввод п.вл/ п - число уравнений; —| =*^ е - точность решения; | Вывода,, I j—»LJ е - точность решения; аЦ~ Расширенная мат- рща системы < Приведение к вычисление п (х1).= у. \а виду, удосЗному для х а ах + 0; координат вектора итераций х=р; ±i\ и k-нормы матрицы (dg) h-xt Вывод а±j Вычисление m-,1- норм приведенной матрицы d,d1; d = mlntd.di,d2> s = d /A - d) 02 + jj Расстояние меаду векторами по m-норме d =flx - I Вывод d, xi I V 'Проверка" достаточного условия сходимости итераций
Приложение к главе 2, §2 203 Некоторые более подробные фрагмент блок-схем, численного решения систем уравнений летодол итераций Приведение к виду, удобному для итераций z = ах + р; вычисление координат вектора х=р; п (х1Ь= 2 \а-(Л и k-нормы метрицы (cL) 1 3=1 ч ^ 0^=0 1=1 ,п з=аи; аи=0; ai J=1 ,n X4 "и- ai/s; Подпрогралла вычисления вектора на однол шаге итерации (умножение матрицы а на вектор х плюс вектор р) I х1= азе + з! >< 1=]1,п > x1 I ,n >—¦
204 Приложения 2°. Програша численного реаввня системы алгебракчвспх ураваетй методой итерафй на яанвв BASZO 1 REM «не************************************************* 2 REM РЕШЕНИЕ СИСТЕМЫ 3 REM ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЯ МЕТОДОМ ИТЕРАЦИИ 4 НЕМ *************************************************** 10 DEFINT I-J, N: DIM а(9. 10), х(9), х1(9) 20 OLS 30 PRINT " Введите через запятую" 40 PRINT "число уравнений п и точность epsllon" 50 INPUT n. e 60 PRINT "Введите расширенную матрицу по" 70 PRINT " одному элементу (по строкам)" 80 FOR 1 = 1 ТО п 90 TOR J = 1 ТО п + 1 100 INPUT ; a(i, 1): PRINT " "; 110 NEXT J: PRINT 120 NEXT i: GOSUB 520 1 0Л VVU — .—^— _ _ —«. _.— .^---- * .«. — i с i гииш "• ——————— —_ — 122 REM Проверка условия, допускающего приведение системы к виду, 123 КЕМ удобному для итераций 130 JOR i = 1 ТО п 140 Л a(i, i) О О THEN 170 150 PRINT : PRINT " Системз решается другим методом " 160 GOSUB 580: GOTO 510 170 NEXT i mDIU _ 172 REM ПреоОразованив матрицы к виду, удобному для итерзций; 173 REM вычисление компонент вектора х1, равных сумме по 3 174 REM abs(a(i,J)); вычисление k-нормы приведенной матрицы 180 02 = О 190 POR i » 1 ТО п 200 в - a(i, i): a(i, i) - 0: a(i, n + 1) - a(i, n + 1) / s 210 x(i) = a(i, n + 1): xKi) = 0
Приложение к главе 2, §2 205 ABS(a(i. 220 230 240 250 270 280 290 300 FOR 3 » IF 3 a(i, d2 - NEXT 3 NEXT 1 1 5 - i 3) d2 d2 - SQR(d2) GOSUB 520 ra n THEN 270 - -a(i. 3) / s: + iBSfaU.JJ)) < Xi(i) - X1{1) * iBS(a(i, 3)) 302 REM Вычисление m-нормы "приведенной " матрицы 310 GOSUB 830: d = у oi i хил •"—— ————————¦-¦—.————•—•———¦-¦———¦-————————и———————— 312 REM Вычисление 1-нормы "приведенной" матрицы 320 FOR i = 1 ТО n 330 x1(i) = 0 340 FOR J = 1 TO n 350. IF 3 <> 1 THEN X1A) - X1(i) + ABS(a.C, i)) 360 NEXT 3 370 NEXT i 380 GOSUB 830: di « у 390 PRINT : PRINT USING "Нормы ={#.##; #.##; #.#*}"; d; d1; <12 4Q1 П1?М —-. — — —___-.—__— — —_—__——_ _ 392 REM Нахождение наименьшей из трех норм 400 IF di < d THEN d = di 410 IF d2 < d THEN d - d2 420 PRINT "Наименьшая норма * "; d ЛЭ1 DH . _ _____ __ ЩС I X\C*HL ____________________ ^«. ' ¦—•_—___—_—_.— 422 REM Проверка достаточного условия сходимости метода 430 IF d < 1 THEN 470 440 PRINT "Достаточные условия сходимости метода итераций " 450 PRINT " не удовлетворяются" 460 GOSUB 580: GOTO 510 Af.1 R1<W —-. —____._ _________ - _____ _ ___ ___ ___ *frVJ 1 ХШМ ^^ _—• — _____________ ___ 470 PRINT "Условие сходимости метода удовлетворено": GOSUB 580 480 е = d / A - d) _Й1 BTilM - ~ 482 REM Выполнение последовательных итераций 490 GOSUB 610: GOSUB 680: GOSUB 730: GOSUB 580
206 Приложения 500 IP d * в > е THEN GOSUB 790: GOTO 490 510 END 511 REM 512 REM ПОДПРОГРАММ 513 REM 514 REM Вывод матрицы на экран (не более 5 чисел в строке) 520 CIS : FOR i = 1 ТО п 530 FOR J = 1 ТО п + 1 540 PRINT USING " ##.###ЛЛЛЛ"; a(i, 1); 550 NEXT d: PRINT 560 NEXT i: GOSUB 580 570 RETURN 572 REM Пауза 580 PRINT : PRINT "Для продолжения нажмите любую клавишу..." 590 IP DJKEY* = "" THEN 590 600 RETURN 602 REM Вычисление вектора на каждом шаге итераций (умножение 603 REM матрицы на вектор плюс вектор свободных членов) 610 POR i = 1 ТО п 620 XI(i) = a(i, n + 1) 630 FOR 3 = 1 TO n 640 IF J <> i THEN x1A) - X1 (i) + a(i, J) • x(J) 650 NEXT 3 660 NEXT i 670 RETURN 671 REM 672 REM Вычисление расстояния между векторами двух 673 REM последовательных приближений по т-норме 680 d = ABS(xA) - _1 A У) 690 FOR i = 2 ТО П 700 IF ABS(x(i) - x1(i)) > d THEN d = ABS(x(i) - Xi(i)) 710 NEXT i 720 RETURN 7o< DTTM _ _ i с I n_m _____ __ ____ 722 REM Вывод на экран координат вектора итерационного процесса 730 CIS
Приложение к главе 2, 52 207 740 FOR i = 1 ТО п 750 РИИТ "х"; i; " - "; Х1 A) 760 NEXT i 770 РНШГ "Расстояние между итерациями по пмнорме ¦ "; d 780 RETURN 7О1 Х)ТП1 ___— __ __ 790 FOR i = 1 ТО n 800 x(i) = X1A) 810 NEXT i 820 RETURN mi poi __ _ 822 КЕМ Вычисление 1- m- нормы матрицы 830 у = ABS(XKD) 840 FOR i -¦ 2 TO n 850 IF ABS(x1(i)) > у THEN у - ABS(x1(l)) 860 NEXT i 870 RETURN 3°. Программа численного решения системы линейных алгебраических уравнений методом итераций на языке PASCAL program SolutionOfSystemBylteration; { «г************************************************* РЕШЕНИЕ СИСТЕМЫ ЛИНЕШЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИИ МЕТОДОМ ИТЕРАЦИИ ¦ ««ж********************************«***•««*********) uses Crt; label finish; const 1=9; type matriceА=аггауС1.,1.1..1+1] of real; vectorX=arrayH..l] of real; var
208 . Щяяоя» l.J.n: integer; d,d1 ,d2,e,s:real; armatriceA; x,x1 rvectorX; chrchar; ПОДПРОГРАММ procedure PAUSA; BEGIN WRITELN; WRITEIM ('Для продаляения нажмите любую клавишу...') REPEAT ch := readkey UNTIL ch <> "; END; Вывод матрицы на экран } procedure OutputOfMatrlce; BEGIN ClrScr; POR 1:= 1 TO n DO BEGIN POR J:= 1 TO П + 1 DO WRITE(a[i,JJ:16:7); WRITELN; END; PAUSA; END; Вычисление вектора на кавдом шаге итераций (умножение матрицы на вектор плюс вектор свободных членов) ) procedure VectorOflteration; BEGIN POR i := 1 TO n DO BEGIN xUil := all, n + 11; POR J := 1 TO n DO IF 3 <> 1 THEN xicij := X1C1J + all, J) • xlji; END; END;
Щжлояенве к глав* 2, J2 209 Вычисление ш- и 1- норм вектора } function normlm (x: TectorX): real; var у: real; BEGIN у :- ABS(xm); FOR i := 1 TO n DO if ABS(xtil) > у then у : normlm := y; END; Вывод на экран координат вектора итерационного процесса ) procedure OutputOfVector; BEGIN ClrScr; FOR i := 1 TO n DO WRITELN Cx',i,'= ',х1Ш); WRITELN ('Расстояние мевду итерациями по m-норме = ', d); END; procedure ChangeXbyXI; BEGIN POR i := 1 ТО n DO xtil := xitil; END; ОСНОВНАЯ ПР0ГРАША } BEGIN ClrScr; WRITELN (' Введите '); WRITELN ('число уравнений n и точность epsilon1); READ(nFe); WRITELN ('Введите расширенную матрицу по'); WRITELN (' одному элементу (по строкам)'); FOR i:= I TO n DO BEGIN FOR J:= 1 TO n + 1 DO READ (ati, Jl); WRITELN; END; OutputOfMatrlce;
210 Щшкмюнюг Проверка условия - диагональные элементы отличны от 0} FOR i :» 1 ТО n DO BEGIN I? atl, 1] » 0 THEN BEGIN WRITELN; WRITELN (' Система решается другим методом'); PAUSA; GOTO finish; END; END; < Преобразование матрицы к виду, удобному для итераций; вы- вычисление компонент вектора Х1, равных сумме abs(a(i,j)) по ]', вычисление k-нормы приведенной матрицы ) аг := о; FOR i := 1 ТО П DO BEGIN s := ad, il; aCi, i] := 0; Х1Ш := 0; ati, n + 11 :» ati, n + 1 ] / s; хШ := ati, n + П; FOR J := 1 TO n DO IP 3 <> i THEN BEGIN aCi, J] := -ati, Л / s; хШ] := xlll] + ABS(ati,J]); ' d2 := C2 + ABS(atl, Jl) * ABS(ati, J]); END; END; d2 :- SQRT(d2); OutputOfMatrice; Вычисление m-нормы "приведенной " матрицы } d :=» normlra(xt); Вычисление 1-нормы "приведенной" матрицы FOR i :=r 1 ТО n DO BEGIN ИШ := 0; POR 3 := 1 TO n DO
Приложение к главе 2, §2 211 IF J о 1 THEN x1ti] := xitll + ABS(a[J. 13); МБ; d1 := normlm(xi); WRITELN; writeln снорш = {'.аи-.г,4;f,<н:4.:г,ч'.&и:г,'У); Нахождение наименьшей из трех норм } IF d1 < d THEN d := d1; IF <32 < d THEN d := C2; WRITELN ('Наименьшая норма = ', d:4:2); r Проверка достаточного условия сходимости метода } IF d >= 1 THEN BEGIN WRITELN ('Достаточные условия сходимости метода итераций'); WRITEEN (' не удовлетворяются'); PAUSA; GOTO finish; END; WRITELN ('Условие сходимости метода удовлетворено1); PAUSA; s := d / A - d); Выполнение последовательных итераций REPEAT VectorOflteration; FOR i :=1 TO n DO хШ := x1ti] - хШ; d := normlm(x); OutputOfVector; PAUSA; ChangeXbyXI; UNTIL d*s < e; finish: END.
212 Приложения 4°. Программа численного решения системы линянию алгебраических методом итераций на «ант FORERAN 1INCLUDE: 'EXEC.PI' PROGRAM SolutionOrSystemBylteration с ***************************************** С «РЕШЕНИЕ СИСТЕМЫ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ» С «УРАВНЕНИЙ МЕТОДОМ ИТЕРАЦИИ * С ft*************************************** INTEGER*2 system DIMENSION X(9),X1(9) COMMON n,a(9,10) l^systemCcls'C) WRITE (*,*) ' Введите ' WRITE (*,*) 'число уравнений п и'точность epsilon' READ (»,*) n, e WRITE (*,*) 'Введите расширенную матрицу по' WRITE (•,*) ' одному элементу (по строкам)' DO i=1,n ДО 3=1,п+1 READ (*,*) a(ij) END DO WRITER,*) END DO i=syBtem('cls'C) CALL OutputOflUatrlce С Проверка условия - диагональные элементы отличны от О DO 1=1,п IF (a(i. D.EQ.O) THEN WRITE (•,*) WRITE (*,*) ' Система решается другим методом' PAUSE 'Нажмите клавишу ENTER для продолжения...' GOTO 1 END IP
Приложение к главе 2, §2 213 END DO С Преобразование матрицы к виду, удобному для итераций; вы- С числение компонент вектора XI, равных сумме abs(a(l,j)) С по 3; вычисление k-нормы приведенной матрицы <32 = О DO 1=1,п s = аA, 1) аA, 1) = О ¦ xi(i) = 0 a(i, n + 1) = a(l, n + 1) / s x(i) = a(i, n + 1) DO J=1,n IF (J.NE.i) THEN a(i, J) = -a(i, J) / s xi(i) = xi(i) + ABS(a(iJ)) d2 = <32 + ABS(a(lJ))*ABS(a(iJ)) END IF END DO END DO 62 = SQRT(d2) i=system('cls'C) CALL OutputOfJiatrice С Вычисление m-нормы "приведенной " матрицы d = dnormlm(xi,n) С Вычисление l-нормы'"приведенной" матрицы DO 1 = 1,п Х1A) = О DO J = 1,п IF (J.NE.i) X1A) » Х1A) + ABS(a(J, i)) END DO END DO d.1 = dnormlm(xi ,n) WRITE (*,*) WRITE(*,t(A9.3(F4.2,A1)II Нормы ={' ,d,';(,d1,';•.62,'}'
214 Приложения С Нахождение наименьшей из трех норм IP (di.LT.d) d = di IP (d2.LI.d) d = d2 WRITE (*,'(A19,P5.3)') ' Наименьшая норма = ', d WRITE (*,*) Л _ С Проверка достаточного условия сходимости метода IF (d.GE.1) THEN WRITE (*,*) 'Достаточные условия сходимости метода' WRITE (*,*) ' итераций не удовлетворяются' PAUSE 'Нажмите клавишу ENTER для продолжения...' GOTO 1 END IP WRITE (*,*) 'Условие сходимости метода удовлетворено' PAUSE 'Нажмите клавишу ENTER для продолжения...' s =, d / A - d) О Выполнение последовательных итераций Ю WHILE (d*s.GT.e) CALL Vector0flteration(x,x1) Ю i =1 ,n x(i) = xi(i) - x(i) END DO d = dnormlm(x,n) i=sys tern ('els'O GALL OutputOfVectorUi.n.d) PAUSE 'Нажмите клавишу ENTER для продолжения...' GALL ChangeXbyXi(x,x1,n) END DO 1 END . Q ' ' С ПОДПРОГРАММЫ Вывод матрицы на экран SUBROUTINE OutputOIMatrice COMMON n,a(9,10)
Приложение к главе 2, §2 215 DO 1=1,п WRITE (•.•(ЮЕ1б.З)') (a(i,J),J=1,n+1) END DO PAUSE 'Нажмите клавишу ENTER для продалжвния...' RETURN END С Вычисление вектора на каждом шаге итераций (умножение С матрицы на вектор плюс вектор свободных членов) SUBROUTINE Vector0ntera-tion(x,x1) DIMENSION X(9),X1(9) COMMON п,а(9,10) DO 1 = 1,n X1A) = a(i, n + 1) DO J = 1,п IP (J.NE.i) x1(i) = x1(i) + a(i, 3) * END DO END DO RETURN END с с с 0 Вычисление га- и function dnormlm(x,n) DIMENSION x(9) у = ABS(x(D) DO i = 2,n IP (ABS(X(D).GT.y) END DO dnormlm = у RETURN END Вывод на экпан кооожна1 1- норм вектора у = ABS(x(i)) ? вектотза итеоаиионного шюиесса SUBROUTINE OutputOfVector(x1,n,d) DIMENSION x1(9) DO i = 1,n WRITE (»,((A2,I1.A1,E12.6)') ' x',1,'=',x1(i) END DO
216 WRITE (*,*) 'Расстояние между итерациями' WRITE (*.((A13,E12.6)') ' ПО шторме =',d RET0RH ЕЯ) SDBRODTIBE ChangeXbyXI(x,x1,п) DIMENSION Х(9),Х1(9) DO 1 = 1,П 1A) = 11A) END DO RETURN END 5°. Программа численного реаения систем! линейных алгебраических уравнений методом итераций на языке С РЕШЕНИЕ СИСТЕМЫ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАШЕНИИ МЕТОДОМ ИТЕРАЦИИ «Include <stdio.h> «Include <conio.h> «Include <math.h> «define L 9 Hit l.J.n; float d,xtL+1l,x1[L+1],a[L+1][L4-2]; ПОДПРОГРАМШ void pausa() { prlntf("ЧпНажмите любую клавишу для продолжения..."); getch(); /*
Приложение к славе 2, {2 217 Вывод матрица на экран •/ void outputofmatrice(void) «ог(с1г8сг(),1 - 1; 1 <= n; i++,pr_ntf("\n")) fortf-i; 2 <=> n + 1; 34+) printf C*-i6.6i",ali)U)); pauea(); Вычисление вектора на каждом шаге итераций (умножение матрицы на вектор плюс вектор свободных членов) */ void vectorofiteration(void) { for (i = 1; i <=«; i++) for A1Ш = a[il[n+ 1],J = f; J <= n; J++) if (J != i) xiti] = xi [i] + atiHj] • Вычисление m- 1- нормы вектора */ float normlm (float xtL+11) { float y; for (y - fabe(xt1]),l= 1; i <- n; i++) ; if (fabs(xflJ) > у) у = fabs(xlil); return y; Вывод на экран координат вектора итерационного процесса*/ void outputofvector(vold) {for(clrecr(),i=i;i<=n; prlntf("_M.=*f\n",i,x1[i]),l++); printf("Расстояние между итерациями по m-норме - *f",d); void ctaangexbyxi(void) { for (i - 1; i <- n; хШ = xim,i++); } /» ОСНОВНАЯ ПРОГРАММА void main() { float di,c_,e,s; char finish; clrscrO;
218 Приложения printf (" Введите n"); prlntf ("число уравнений п и точность epsllon\n"); scan! ("»l*f",&n,ae); printf ("Введите расширенную матрицу го п"); printf ("одному элементу (по строкам)\п"); for A=1; 1 <= n; 1++, printf("\п")) . for (J=1; Л <= n + 1; acanf("*r",&a[l][j]),j++); outputofmatrlce(); Проверка условия - диагональные элементы отличны от 0 */ for A = 1; 1 <= n; 1++) If (!аШШ) { printf ("\n\n Система решается другим методом"); pausaO; goto finish; ); /» Преобразование матрицы к виду, удобному для итераций; вычисление компонент вектора Х1, равных сумме Гaba(аA,3)) по j; вычисление k-нормы приведенной матрицы */ for (d2 = 0,1 - 1; 1 <= п; 1++) { s = аШШ; аШШ = хШЗ = 0; аСШп + 1] = atlHn + 1] / а; хШ = аШСп+П; for (J = 1; 3 <= n; J++) { if (i != 1) < &ШЦ] = -aHJU] / в; xiCiJ = xUU + fabs(a[l]Cj3); 02. = d2 + fabs(a[13[J3) « fabs(a[l][33);>; d2 = sqrt(d2); outputofmatrlce(); Вычисление m-нормы "приведенной" матрицы */ d = normlm(ii); Вычисление 1-нормы "приведенной" матрицы */ for A = 1; 1 <= n; 1++) for <х1Ш = 0J = i; J <= n; J++) If (j != 1) I1C13 = xi Ci] + fab8(aU3tl]);
Приложение к главе 2, §2 219 di = normlm(x1); printf ("\п\пНорш = d i%l %1 *f>B,d,d1,d2); Нахождение наименьшей из трех норм •/ If <d1 < d) d = di; if (d2 < d) d = d2; prlntf ("\п\пНаименьшая норма = %t", d); /^ Проверка достаточного условия сходимости метода */ .If (d >= 1) { printf ("\n Достаточные условия сходимости "); prlntf ("Чпметода итераций не удовлетворяются"); pausa(); goto finish; prlntf (н\п\пУсловие сходимости метода удовлетворено"); pausaO; s = d / A - d); /* Выполнение последовательных итераций | , ц/ do { vectorofiteratlon(); for A = 1; i <= n; хШ = xi Ш - x[l],l++); d = normlm(x); outputofvector(); pausa(); changexbyxi();} while (d*s >= e); finish:;
приложите к главе з К f 2 1°. Блок-схеме решай уравнения /(х)=0 методом /Ввод а.Ь.е / а- b " концы — ' содержащего корень уравне- i =(a+b)/2 " t^"sQ> e " заданная 1 — точность вычисления корня Д т.,) Д [вывод х,,,аД В приведенных программах рассматривается функция /(х) ¦ 4 - ех -2Х2 (см. пример из §2). 2°. Програмыа ревения уравнения /(х)=0 иетодоы половинного деления на языке BASIC 1 КЕМ **************************************************** Z REM РЕШЕЖЕ УРАВНЕНИЯ f (x)=0 МЕТОДОМ ПОЛОВИННОГО ДЕЛЕНИЯ 3 НЕМ «г************************************************** 10 DEP fnl (X) = А - ЕХР(Х) - 2 * X л 2 20 CIS 30 PRINT "Наберите через запятую три числа"
Приложение к главе 3» 82 221 40 РИШТ "координаты концов отрезка а, Ь , точность epsilon" 50 INPUT a, to, e: IP ftif(a) * tat(b) > 0 THEN 150 60 H « (a + to) / 2: fi * fttf(xi) 70 IP f 1 <> 0 THEN 90 80 d = 0: GOSUB 160: GOTO 150 90 1 = ftif(a) 100 IP t * f1 < 0 THEN b = x1: GOTO 120 no a = H 120 d = b - a 130 IF d > e THEN GOSUB 160: GOTO 60 140 GOSUB 160 150 END 152 RM ПОДПРОГРАММА 153 RM Вывод результата вычислений на экран 160 CLS 170 PRINT "х ="; х1 180 PRINT "Погрешность результата"; d 190 PRINT : PRINT "Для продолжения нажмите любую клавишу. 200 IP INKEY* = "" THEN 200 210 RETURN 3°. Программа решения уравнения f{x)=Q методой половинного деления не языке PASCAL program SolutionOfEquationByDevislon; { **************************************************** РЕШЕНИЕ УРАВНЕНИЯ Г(х)=0 МЕТОДОМ ПОЛОВИННОГО ДЕЛЕНИЯ **************************************************** } usea Crt; label rinlsh; var a,b,d,e,x1,Ia,Ii:real; ch:char; ПОДПРОГРАММЫ } function t(x:real):real;
222 Приложения BEGIN f := 4 - EXP(I) - 2 * I * I END; procedure OutputOfResult; BEGIN ClrScr; WRITELN Cx =',x1); WRITELN ('Погрешность результата =',d); WRITELN; WRITELN ('Для продолжения нажмите любую клавишу...'); REPEAT ch := readkey UNTIL cho "; END; ОСНОВНАЯ ПРОГРАММА } BEGIN ClrScr; WRITELNС Введите по порядку три числа'); WRITELN('координаты концов отрезка a, b , точность epsilon'); READDf(a. b, e); IP f(a)*f(b) > О THEN GOTO finish; REPEAT x1 := (a + b) / 2; П := f(x1); IP f1 = 0 THEN BEGIN' d := 0; OutputOfResult; GOTO finish; END; fa := f(a); IP fa * f1 < 0 THEN b := И ELSE a := ii; d := b-a; OutputOfReault; UNTIL d < e; finishrEND. 4°. Прогреми ревеиия уравнения f{x)=0 иетодоы половинного деления на языке FORTRAN $INCLUDE: 'EXEC.FI1 С ****************************************************
Приложение к главе 3. {2 223 С РЕШЕНИЕ УРАВНЕНИЯ 1(х)«О МЕТОДОМ ПОЛОВИННОГО ДЕЛЕНИЯ О «до************************************************* INTEGERS system 1(I) - 4 - EXP(i) - 2 * I • I l-eyetemCole'C) WRITE (*,*) ' Наберите три числа: координаты' WRITE (*,*) ' концов отрезка а, Ь, точность epsilon1 READ (*,«) a,b,e IF (f(a)*f(b).GT.O) GOTO 1 WRITE (*,*) d = b - a DO WHILE (d.GT.E) xi = (a + b) / 2 Я = Г(х1) IF (fi.EQ.O) THEN d = О i=syatera('cls'C) CALL OutputOfResult(xi.d) GOTO 1 END IF fa = 1 (a) IF (fa « f1.LT.O) THEN b = x1 ELSE a = x1 END IF d = b - a l=system('cls'C) CALL OutputOfResult(x1,d) END DO 1 END С ПОДПРОГРАММА С Вывод результата вычислений на экран SUBROUTINE Outpu.tOfResult(H,d) WRITE (*,'(A4,E12.6)') ' Х«',х1 WRITE («,*(А27.Е12.6I) ' Погрешность результата »*,d .. PAUSE 'Нажмите клавишу,ENTER для продолжения...'
22* Щяжоже. НЕПЯШ ERD 5°. Цшцшип рпмшм урн—ни /(х)=0 РЕШЕНИЕ УРАВНЕНИЯ Г<1)=0 МЕТОДОУ ПОЛОВИННОГО ДЕЛЕНИЯ «««««««««««««««««««««««««с**************************/ «Include <stdlo.h> «include <conlo.h> «Include <math.h> rioat d,H; ПОДПРОГРАММ * */ rioat Г(float i) { float у; у = 4 - exp(i) - 2 * x • x; return y; } /« */ void outputofreault(Told) { clrscrO; prlntf ("x = «An",ii); prlntf ("Погрешность приближения d = Xf\n",d); print!("ЧпНаяните любую клавишу для продолжения..."); ОСНОВНАЯ ПРОГРАММ */ void main () { float a,b,e(fa,f1; cbar finish; clrscrO; prlntr (" Введите по порядку три числа п"); prlntf ("координаты концов отрезка а, Ь, точность epsllonXn"); scanf ("%f«fXT",&a, &b, &e); 1Г (f(a)*f(b) > 0) goto rinlsh; do { ii = (a + b) / 2; fi = f(ii); If (f1 == 0)
к главе 3. #3 225 { d = О; outputofresult(); goto finish; }; Л - f (в); If (fa * ft < 0) to « xi; else a - if; d = b-a; outputofresult(); > while (d >= e); finish:; K}3 1°. Блок-схема методом /ВводЮ.е/ х=« 1емвод ii.dj приближение Рршючяшю. Ураввение /(х)=0 должно быть иредварительао преоора- зоваво к эквивалентному уравнению х = g(x). В приведенных программах рассматривается функция g{x)= - Bх- 3 - In х) (ом. пример 2 S3). Для достижения заданной точности результата е вводится ве- величина е - е/10. 8-469
226 Приложения 2°. Программа решения уравнения /(х) =¦ О методам итераций ва яэыке BASIC 1 H9f ***************************************** 2 R3( РЕШЕНИЕ УРАВНЕНИЯ f(x)=O МЕТОДОМ ИТЕРАЦИИ 3 REM f (Х)=О <=> X = g(X) 4 REM ***************************************** 10 DE* fng (X) = B * x - LOG(x)) / 3 20 CIS 30 PRINT "Введите через запятую начальное значение хО " 40 PRINT " и точность е = ерзПопЛ 0я 50 INPUT х, е 60 х1 = fng(x) 70 d = ABS(X1 - X) 80 GOSUB 110 90 IP d >= e THEN x = x1: GOTO 60 100 END 101 REM r 102 REM ПОДПРОГРАММА 110 CLS : PRINT "x ="; x1; " Погрешность приближения Л ="; й 120 PRINT : PRINT "Для продолжения нажмите любую клавишу..." 130 IP INKEYf = яи THEN 130 140 RETURN 3°. Программа решения уравнения fix) = О методом итераций на языке PASCAL program. SolutlonOfEquatlonBylteratlon; { ***************************************** РЕШЕНИЕ УРАВНЕНИЯ f(X)=O МЕТОДОМ ИТЕРАЦИИ 1<х)=0 <===> х = g(x) ««««я***********************************»} ивеа Crt; var d,e,x,x1:real; ch:char; П0ДПРОГРАМШ > function g(x:real):real; BEGIN g := B * x - Ш(х)) / 3
Приложение к главе 3, §3 227 END; procedure OutputOfResult; BEGIN ClrScr; WRITELN('x =', xi, ' Погрешность приближения d =', d); WRITELN; WRITELN ('Для продолжения нажмите любую клавишу...'); REPEAT eh := readkey UNTIL eh <> *'; END; ^ ОСНОВНАЯ ПРОГРАММА ' } BEGIN ClrScr; WRITELN(' Введите по порядку два числа'); WRITELN('начальное значение хО и точность е = epsllon/10'); READLN(x.e); REPEAT x1:=g(x); d := ABS(x1 - x); OutputOfResult; x := x1; UNTIL d < e; END. 4°. Програмыа решения уравнения f(x) = О методой итерации не языке FORTRAN tINCLUDE: 'EXEC.FI' program SolutlonOfEquatlonBylteratlon С ***************************************** С РЕШЕНИЕ УРАВНЕНИЯ 1(х)=0 МЕТОДОМ ИТЕРАЦИИ С Г(х)=0 <===> х = g(X) с ***************************************** INTEGER*2 system g(x) = B • х - LOG(x)) / 3 l=system('cl3'C) WRITE (*,*) ' Введите по порядку два числа' WRITE (*,*) 'начальное значение хО и точность е=ерз11оп/10' READ (*,*) х,е WRITE (*,») d = 1 DO WHILE (d.GT.E)
228 Приложения II - g(D d *-ABS(H - I) i=syetem(lcle1C) CALL OutputOfReeult(zi.d) i = H END 00 END С ПОДПРОГРАММА С Вывод результата вычислений на экран SUBROUTINE OutputOfResult(x1,d) WRITE (*,'(A4,E12.6)') ' X = ',X1 WRITE (*,'(A25,E12.6)') ' Погрешность приближения d =',d PAUSE 'Нажмите клавишу ENTER для.продолжения...' RETURN END 5°. nporpauua решеявя уравнения fix) = 0 методом итераций на языке С /* ***************************************** РЕШЕНИЕ УРАВНЕНИЯ f(х)=0 МЕТОДОМ ИТЕРАЦИЙ f(х)=0 <===> X = g(I) «««««г***********************************/ #lnclude <stdlo.h> «include <conio.h> «Include <math.h> float d.xi; ПОДПРОГРАММЫ •/ float g(float x) { float у; у = B * x - log(x)) / 3; return y; > void outputofresult(void) { clrscr(); prlntf ("x = *f\nn,xi); prlntf ("Погрешность приближения d = *f\n",d); prlntf("ЧпНажмите любую клавишу для продолжения..."); getchO;
Приложение к главе 3. И 229 /* ОСНОВНАЯ ПРОГРАММА */ void main() { float e,i; с1г8сг(); printf (" Введите по порядку два числа п"); printf ("начальное значение "); printf (их0 и точность e=epsilon/10\n"); scanf ("%f%f,8uX,&e); do { H=g(x); d = faba(xi - x); outputofresultO; x = xi; } while (d >= e); К «4 1°. Блок-схема численного решения систеин нелинейных уравнений методам итераций Система уравнений " (х1,х2) = О, 'г{х1 ,х^) = О должна быть предварительно преобразована к эквивалентной системе уравнений |y1=g1(x1.l2); y2=gg(x1,x2)| I
230 Приложения В приведенных программах рассматриваются функции 1 1 о з в, (Ж,, Л^) = Ж,- - (Х2(Ж,-1)-1) Щ - Д| - 1), 1 1 _2 9 8Л {хл, х2) = х2- - (х2Ц-1 )-1) + -(а* - г| - 1) (см. пример из §4). Окончание процесса итераций определяется величиной е = е/10, где е - точность результата. 2°. Программа численного решения сиотемы нелинейных уравнений методом итераций на языке BASIC 1 КЕМ ***************************************************** 2 REM РЕШЕНИЕ СИСТЕМЫ НЕЛИНЕЙНЫХ УРАВНЕНИИ МЕТОДОМ ИТЕРАЦИИ 3 REM f1(x1,x2)=O x1=g1(x1tx2) 4 MM < === > 5 ММ Г2(Х1,Х2)=О Xi=g2(x1,x2) 6 MM ***************************************************** 10 DEF ГпЛ (x1, X2) = X2 * (x1 - 1) - 1 20 DEP ГШ2 (X1, x2) = x1 • xi - x2 • x2 - 1 30 DEP fng1 (xi, x2) = X1 - ftrf1(xi, x2) / 2 - fnf2(x1, x2) / 12 40 DEP ftig2 (xi, x2) = X2 - fnf 1 (XI, x2) / 2 + ЙИ2(х1, Х2) / 4 50 CLS 60 PRINT "Введите через запятую начальные значения " 70 PRINT " хЮ, х20 и точность е = epsllon/10" 80 INPUT XI, х2, е 90 у1 = fng1 (XI, х2): у2 = fn^(x1, X2) 100 d = ABS(y1 - х1) 110 IP ABS(y2 - х2) > d THEN d = ABS(y2 - x2) 120 GOSUB 150 130 IP d >= e THEN x1 = yi: X2 = y2: GOTO 90 140 END 141 REM 142 REtf ПОДПРОГРАММА 143 EM
Приложение к главе 3. §4 231 150 CLS 160 PRINT "х1 ="; yi; " Погрешность приближения ="; d 170 РНШГ "х2 ="; у2 180 PRINT : PRINT "Для продолжения нажмите любую клавишу..." 190 ЕР INKEYt - "" THEN 190 200 RETURN 3°. Программ численного решения систеш нелинейных уравнений методой итераций на языке PASCAL program SolutionOISystemBylterat; { ***************************************************** РМЕНИЕ СИСТЕМЫ НЕЛИНЕИШХ УРАВНЕНИИ МЕТОДОМ ИТЕРАЦИЙ Л(х1,х2) =0 х1 = g1(x1,x2) < === > Г2(х1,х2)=0 X2=g2(x1,x2) «««с*************************************************} uses Crt; var d,e,xi,x2,y1,y2:real; ch:char; ПОДПРОГРАММЫ } procedure Гип_у1_у2 ; var f1,T2:real; BEGIN Г1 :» X2 * (II - 1) - 1; f2 := xi *x1 - x2 • X2 - 1; y1 := X1 -• Г1 /2 -Г2 / 12; y2 := x2 - Г1 / 2 + f2 / 4; END; procedure OutputOfResult; BEGIN ClrScr; WRITEOJ(fx1 =', y1, ' Погрешность приближения =', d); WRITEbN('x2 =', y2);
232 Пряложе ШВ1ТЕШ; ЯНПЕШ ('Для продолкння пп—ттг любую клавишу...'); REPEAT ch := readksjr ШИП. ch <> "; < основная пинтами > HEGIH ClrScr; WRITEUK1 Введите да порядку три числа'); 1НШ!Ш('начальные значения xfO, х20 я точность e=ep8ilon/fO'); REABUr(xf.x2,e); REPEAT d := ABS(jn - II); IF ABS(y2-x2) > d THEM d := ABS(y2-x2); (XitputOfResult; if := jri; x2 := y2; IMDIL d < e; EHD- 4°. Пртгцмт чвсленвого ранения оютемн нрюнрймге лмшненвй метолом ятершяв на яэние КХШМИ flMCUTOE: 'EXEC.PI' prograai SolutlonOfSystefflBylteratlon С «I**************************************************** С РЕШЕНИЕ СИСТЕМЫ НЕЛИНЕИШХ УРАШЕНИН МЕГОДОН И1ЕРАШ61 С ff(H,x2)=0 I1=gf(l1,x2) С < = > С f2(Il,x2)=0 ' H=^(lt,x2) С ***************************************************** ' INTEGERS system f1 (xf, x2) - x2 * (xt - 1) - 1 f2(xl, x2) = xf * if - x2 * x2 - 1 g1{Xt, X2) « xf - ff(x1. x2) / 2 - ?2(XI, X2) / 12 fi?(xt, i2) . x2 - ft(xl, X2) / 2 + ?2(XI. X2) / 4 l=sy8teffl('Cl8'C) •RITE (*,«) ' Введите начальнне значения'
Приложение к главе Э. §4 233 ¦ШЕЕ (*,*) ' х1О, х20 я точность е = epsllon/10' READ (*,*) Х1,х2,е ¦RICE (*,*) d = 1 DO WHILE (d.GT.E) y2 = d = ABS(yf - if) IP (ABS(y2 - x2).GT.d) d = ABS(y2 - x2) i=syetem(fcl8fC) CAbL 0utput0fRe8Ult(y1,y2,d) X1 = yi x2 = yZ END DO END Q . „ С ПОДПРОГРАММА С Вывод результата вычислений на экран SUBROUTINE OutputOfResult(y1,y2,d) WRITE (*,'(А5,Е12.б)') • ц =\у1 WRITE (*,'(А5,Е12.б)') ' х2 =f,y2 WRITE (*,'(А25,Е12.6)') • Погрешность приближения d =',d PAUSE 'Нажмите клавишу ENTER для продолжения...' RETURN END 5°. Програша численного решения систем* нелинейных уравнений методом итераций на языке С /* ***************************************************** РЕШЕНИЕ СИСТЕМЫ НЕЛИНЕЙНЫХ УРАВНЕНИИ МЕТОДОМ ИТЕРАЦИИ П(х1,х2) =0 х1 = g1(x1,x2) Г2(Х1 ,Х2) =0 Х2 = ^(х1 ,х2) г***»*************»**»»»********»********************/ ¦Include <stdlo.h> ¦include <conio.h>
234 Прилотения «Include <math.h> float d,xitx2,yi,y2; ПОДПРОГРШИЫ */ void ftm_yi_y2(TOid) { float ff,f2; f 1 = x2 * (xi - 1) - 1; f2 = xi *xi - x2 • x2 - 1; yi = xi - f1 / 2 - f2 / 12; y2 = x2 - f1 / 2 + Г2 / 4; void outputorresult(void) { clrscr(); printf (их1 = %t Погрешность приближения d = %1",y1,d); print! ("\nx2 = ЖГ",у2); printf(и\п\пНажмите любую клавишу для продолжения..."); getch(); } ОСНОВНАЯ ПРОГРАММ */ void main () { float e; clrscrO; printf С Введите го порядку три чиола п"); printf ("начальные значения хЮ, х2О и "); printf ("точность e=epailon/10\n"); acanf {"%t%f%t",Ш ,&х2,ье); do { fun_y1_y2(); d = fabs(y1 - x1); if (fabs(y2-x2) > d) d = fabs(y2-x2); putputofresult(); xi = yi; x2 = y2;> while (d >= e);
ПРИЛОЖЕНИЕ К ГЛАВЕ 4 К 92 1°. Блок-схема построеивя тригонометрического многочлена, аппроксшшрущпго веданную функцию Тригонометрический многочлен степени п наилучшего среднеква- дратического приближения функции 1', -1 ^ х < 0; х, 0 < х < 1 имеет вид -{ A-(-1)я) -э 1 cos icfer 1 sin icfer к? If % k k=l (см. пример 1 из §2). Пусть требуется вычислить значения многочлена Qn(z) на мно- множестве равноотстоящих точек с шагом h = 21/т на отрезке [-Z.I] (в данном примере Z=1). На экран выводить не более 20 значений. Блок-схема этой задачи такова: Р=3, /Ввод I 141593; 1= п, •1; V h=2Z/m; x=-Z 1=0,m />¦¦- Q = 3/4 Пауза k=1, n />— X p1=p«k; xi=p1«x; Q=Q-slnx1/p1 End
236 Пршгоавшм 2°. Программа построешк тригонометрического многочлена, аппроксимкруювего виданную функцию, на януя BASIC 1 RBf ******************* РАСЧЕТ ********************** 2 ИМ ТАБЛИЦЫ ЗНАЧЕНИИ ТРИГОНОМЕТРИЧЕСКОГО МНОГОЧЛЕНА 3 RM НАИЛУЧШЕГО СРЕДНЕКВАДРАТИЧНОГО ПРИБЛИЖЕНИЯ 4 RUM ж************************************************ 10 DEFINT I, К, M-N: CLS 20 PRINT " Введите через запятую два числа: " 30 PRINT "n-порядок многочлена, пьчисло разбиений отрезка 1-1,IV 40 ШРОТ п, га: CLS 50 р = 3.141593: l = 1:h = 2*l/m:x = -l 60 FOR i = О ТО m = р1 * х: Q = Q - SIN(x1) / р1 THEM Q = Q - 2 * COSA1) / р1 л 2 MOD 20 = О THEN GOSUB 170: CLS — ¦**-**¦ ЩЫШ1П* т* П" П — If II • И II Ir tt If у А) 111 Vt 70 80 90 100 110 120 130 UO Q = .75 FOR k = pi = IP К NEXT k IF i <; = 1 TOn p • k: х1 MOD 2 = 1 > 0 AND i PRINT USING "X = X = X + h 150 NEXT i 160 GOSUB 170: END 170 PRINT : PRINT "Для продолжения нажмите любую клавишу..." 180 IP 1ЖШ = "" THEN 180 190 RETURN 3°. Программа для построения тригонометрического многочлена, ппроксимнрупцего заданную функцию, на языке PASCAL PROGRAM FOURIEpollnom; { ******************* РАСЧЕТ ********************** ТАБЛИЦЫ ЗНАЧЕНИИ ТРИГОНОМЕТРИЧЕСКОГО МНОГОЧЛЕНА НАИЛУЧШЕГО СРЕДНЕКВАДРАТИЧНОГО ПРИБЛИЖЕНИЯ ««г**********************************************} uses Crt; var
Приложение к главе 4, 52 237 i,k,m,n:lnteger; h,l,Q,pi,x,xt:real; ch:char; ПОДПРОГРАММА } procedure PAUSA; BEGIN WRITELN; WRITELN ('Для продолжения наямите любую клавишу...'); REPEAT ch := readkey UNTIL ch о "; END; ? ОСНОВНАЯ ПРОГРАММА } BEGIN ClrScr; WRITELN (' Введите два числа: n-порядок многочлена,'); WRITELN (' m-число разбиений отрезка [-1,1]'); READ.(n, га); ClrScr; 1 := 1; h := 2 « 1 / m; х := -1; FOR i := 0 TO m DO BEGIN Q := 0..75; FOR k := 1 TO n DO BEGIN p1 := pi « k; x1 := p1 * x; Q := Q - SIN(xi) / p1; IP k MOD 2 =1 THEN Q := Q - 2 « COS(x1) /<p1«pi); END; IP (ioO) and (i MOD 20 = 0) THEN BEGIN PAUSA; ClrScr; END; WRITELNCx =\x:8:5,' Q',n:2,' =',Q:8:5); x := x + h; END; PAUSA; END.
238 Прилоте Программа для построения тригонометрического м&огочдева, заданную функции, на tINCbUDE: 'EXEC.FI' PROGRAM FOUREBpollnom О ******************* РАСЧЕТ ********************** G ТАБЛИЦЫ ЗНАЧЕНИИ ТРИГОНОМЕТРИЧЕСКОГО МНОГОЧЛЕНА С НАИЛУЧШЕГО СРЕДНЕКВАДРАТИЧНОГО ПРИБЛИЖЕНИЯ о ************************************************* REAL 1 INTEGER*2 system i=system('cls'C) WRITE(*,*) ' Введите два числа: n-порядок многочлена,• WRITE(*,«) ' m-число разбиений отрезка Г—Z,Z1 * READ (*,*) п, га р = З.Н1593 1 = 1 h = 2 * 1 / га х = -1 DO 1 = О,ш Q = .75 DO k = 1 ,П р1 = р * к Х1 = р1 * X Q = Q - SIN(x1 ) / pi IF (M0D(k,2).EQ.1) Q = Q - 2 * COS(x1) /p1**2 END DO IP (i.NE.O .AND. MOD(l,2O).Eq.O) THEN PAUSE ' Нажмите клавишу ENTER для продолжения...' k=system('cls'G) END IP WRITE (*,'(A3,E12.6,A2,I2,A1,E12.6)')' X=',X,' Q ',n,'=',Q X = X + h END DO PAUSE 'Назкмите клавишу ENTER для продолжения...' END
Приложение к главе 4. §2 239 5°. Щюграша дяя постромок «рвгоаоммрнчвсяого ивогочяена, ашроксшдфущиш виданную функцию, на языке С /* ««««««ж************ РАСЧЕТ ж*»**********»**»»***» . ТАБЛИЦЫ ЗНАЧЕНИИ ТРШШСЖГРИЧЕСКОГО МНОГОЧЛЕНА НАИЛУЧШЕГО СРЕДНЕКВАДРАТИЧНОГО ПРИБЛИЖЕНИЯ г*************************************************/ «Include <atdlo.h> «include <conio.h> ¦Include <math.h> «define PI 4«atanA) /* ПОДПРОГРАММА */ void pausa() { prlntf("ЧпНаямите любую клавишу для продолжения..."); getch(); ОСНОВНАЯ ПРОГРАММА */ void main() { int i,k,m,n; float h,l,Q,p1,x,x1 ; clrscrO; printf (" Введите два числа: n-порядок многочлена,\пи); prlntf (" m-число разбиений отрезка [-1,1]\пи); scan! ("«ifcT.&n, «an); for (с1гясг(),1=1,Л=2*1/т,1=-1, 1 = О; i <= т; 1++) { for (Q = 0.75,к = 1; к <= п; к++) { р1 = Р1 « к; х1 = р1 « х; Q = Q - я1п(И) / pi; If (к % 2 — 1) Q = Q - 2 * соя(х1) /(р1»р1); >; if (i != О && i % 20 == О) { pausa(); cirscr(); }; prlntf ("x = *f Q*i = »f\n",x,n,Q); x += h; >; pause();
240 Dpi Пусть задано множество точек (х(> (С«1,2,...,я). Рвкуррент- нне соотношения, опрвделящие ортогональные многочлены Чеошева gA(x) (ft=0,i,...,m-i), имеют вид Значения коэффициентов аоза, afc, bfc находятся по формулам a = /Ввод m. Вычисление аО 1=1 ,ш _L i=2, m-2 Подпрограмма вычисления! параметров аA), b(l) I ± a1=g1 C): el (J )-
Щтяояеаю ж г. 4, §4 241 Подпрограмма вычисления параметров а(я-1) ,b(m-i) X *\ k=1,m g<0)=1;gA )=x-aO /•вывод g(O),gA|/ 1=2, ш-1 /Вывод j Вычисление ! значений i многочленов \ \ \ Чебышева j на заданном ! множестве \ точек 2°. Щюграыиа вычисления ортогональных многочленов Чебышева на языке BASIC 1 КЕН ********************************************* 2 КЕМ ПОСТРОЕНИЕ ОРТОГОНАЛЫЖ МНОГОЧЛЕНОВ ЧЕБЫШЕВА 3 КЕМ НА МНОЖЕСТВЕ m < 16 ТОЧЕК 4 КЕМ ********************************************* 10 DEFINT I-J, M: DIM XA5), gA5), gi A5), аA4), b(U) 20 CLS 30 INPUT "Введите m - число точек множества (m < 16) "; m 40 PRINT "Введите последовательно значения xl;i = 1 ш" 50 аО = О 60 POR i = 1 ТО m 70 INPUT x(i): аО = аО + x(i) 80 NEXT 1
242 Прыоаенжя 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 О 1 1 312 313 314 О 1 О 320 330 340 350 360 370 380 ЧЯ1 aO = aO / m FOR i = 1 ТО ш g(l) « 1: gi(i) = хA) - aO NEXT 1 F0Ri = 2T0m-2 GOSUB 320 FOR J = 1 ТО m a1 = g1 (d) gHJ) = (x<d) - a(l)) * gKd) g(J) = ai NEXT 3 NEXT i: GOSUB 320 FOR k% = 1 TO m X = x(k*) g@) = 1: gA) = x - aO PRINT USING "X = ##.## "; x; PRINT USING " gO = «#.### g1 = FOR i = 2 TO m - 1 g(i) = (x - a(i)) * g(i - 1) PRINT USING " g# = ##.«##"; NEXT i: PRINT NEXT k* GOSUB 390: END REM REM ПОДПРОГРАММЫ REM Вычисление коэффициентов a(i) - b(l) * g{J) ##.###"; g<0); gA); - b(i) * g(I - 2) i; g(D; , b(i) рекуррентных REM соотношений для многочленов Чебышева REM ... kO = 0: n1 = 0: ЬО = 0: nO = 0 FOR J = 1 TO m kO = kO + x(i) « g1A) л 2: n1 = Ш + giC) Л 2 Ш = bO + x(J) * g(d) * gi(d): no = nO + g(d) " 2 NEXT i aU) = kO / m: b(i) = bO / nO RETURN 382 REM Пауза 390 PRINT : PRINT "Нажмите любую клавишу для продолжения"
Приложение к главе 4, §4 243 400 п такт = "" then 4оо 410 RETURN PASCAL program PolinomOfTchebishev; { ********************************************* ПОСТРОЕНИЕ ОРТОГОНАЛЬНЫХ МНОГОЧЛЕНОВ ЧЕБЫШЕВА НА МНОЖЕСТВЕ m < 16 ТОЧЕК ********************************************* } uses Crt; const 1=15; type data=array C1..1J of real; runctions=array [0..1] of real; parameters=array [2..1-1] of real; var i,J,k,m:lnteger; aO.ai,zi:real; a,b:parameters; x:data; g,gi:runctions; chrchar; -ПОДПРОГРАММЫ procedure PAUSA; BEGIN WRITELN; WEITELN ('Для продолжения нажмите любую клавишу...'); REPEAT ch := readkey UNTIL ch <> "; END; Вычисление параметров рекуррентной формулы a[k], bfk] } procedure CalculOfParametersd:Integer); var kO.bO.nO.ni:real;
244 Приложения • BEGIN КО := О; Ш := 0; ЬО :» 0; пО := О; FOR J := 1 ТО m DO BEGIN кО := КО + xCJ] • gitjl * gitjl; Ш := m + g1 [JJ * giCJ]; bO := bO + xtj] * g[j] * g1[J]; nO := nO + g[j] * gtj]; END; a[il := kO / m; bCil := bO / nO; END; \. ——————— — —•-—.—.—.— ________________— i _____________, _ ._._ ________ i i _____ ОСНОВНАЯ ПРОГРАММА ) BEGIN ClrScr; WRITELN ('Введите га - число точек множества (m < 16)'); READ (m); WRITEIM ('Введите последовательно значения xi; i=i,...,m'); aO := 0; FOR i := 1 TO ra DO BEGIN READ (хШ); aO := aO + хШ; END; aO := aO / m; FOR i := 1 TO m DO BEGIN gCl] := 1; gim := xfi] - aO; END; FOR i := E TO m - 2 DO BEGIN CalculOfParametera(i); FOR i := 1 TO m DO BEGIN ai := gifj]; gitj] J= mi) - alii) * gifj] - b(i] * gt.j; gtj] := ai; END; END; CalculOfParameters(ra-1);
Приложение к главе 4» 64 245 FOR k := 1 ТО m DO \ BEGIN \ х1 := xtkl; gtO3 :- 1; gtU :- х1 - аО; WRITE <'x = '.хпбгг,* gO = f,g{0]:6:3,• gi = f,g[1]:6:3); FOR i := 2 TO m - 1 DO BEGIN g[ll := (xi - a[il) * gtl - U - bti] * g[i - 21; WRITE Г g',i:i,( = ',gCi]:6:3); END; WRITELN; END; PAUSA; END. 4°. Программа вычисления ортогональных многочленов ЧеОыиева на языке FORTRAN IINGLUDE: 'EXEC.FI' program PollnomOfTchebishe? G ********************************************* G ПОСТРОЕНИЕ ОРТОГОНАЛЬНЫХ МНОГОЧЛЕНОВ ЧЕБЫШЕВА С НА МНОЖЕСТВЕ m < 16 ТОЧЕК G ********************************************* INTEGER*2 system COMMON m,xA5),g@:15),g1@:15),aB:H),bB:U) i=system('cls'G) WRITE (*,*) 'Введите m - число точек множества (m < 16)' READ (*,*) m WRITE (*,*) 'Введите значениях!; 1=1,...,m1 аО = О DO 1=1,m READ (*,*) aO = aO + ) END DO aO = aO / m DO 1 = 1 ,m gd) = t gKD = x(l) - aO END DO
246 Приложений DO i = 2, m - 2 CAIL CalculOfParameters (i) DO 1 = 1,m ai = giU) gim = <x<j) - a(D) * gicj) em = ai END DO ¦ END DO ' ' ¦ : , . GALL CalculOrParameters (m - 1) DO к = 1,m xi = x(k) g(O) = 1 gA) = X1 - aO WRITE (*,'(A4,F5.2\)') ' x =',X1 WRITE (*,'(A5,F6.3,A5,F6.3\)') ' gO=',g(O),' g1=',gA) DO i = 2, m - 1 g(i) = (XI - a(i)) * g(i - 1) - b(i) * g(i - 2) WRITE (*,'(A4,11,A2,F6.3\)') ' g',1,'=¦',g(i) END DO WRITE (*,*) END DO PAUSE 'Нажмите клавишу ENTER для продолжения...' END Л С ПОДПРОГРАММА Вычисление параметров рекуррентной формулы а(к), Ь(к) SUBROUTINE CalculOfParameters (i) REAL кО.пО.Ш COMMON m.xA5),g@:15),g1 @:15),aB:U),bB:14) kO = 0 Ш = 0 bO = 0 nO = 0 DO 3 = 1,т kO = kO + x(j) * gi(j) * gi(j) Ш = m + gi(j) * gHJ) Ш = bO + х(Л * gC) * gK3)
Приложение к главе 4. 64 247 по = по + END DO a(i) = ИЗ / Ш b(I) = ЬО / nO RETURN END 5°. Програша вычисления ортоговалыих ивогочяввов Чебшвва на языке С /* ********************************************* ПОСТРОЕНИЕ ОРТОГОНАЛЬНЫХ МНОГОЧЛЕНОВ ЧЕБЫШЕВА НА МНОЖЕСТВЕ m < 16 ТОЧЕК ********************************************* */ #include <stdio.h> #lnclude <conio.h> «define L 15 int i,m; float a[L],b[L].xCLf1],g1[Lf1],g[LHJ; ПОДПРОГРАММА Вычисление параметров рекуррентной формулы a(k], btkl */ void calculofparameters(i) int i; { int i; float kO.bO.nO.ni; for (kO=ni=bO=nO=O,J=i; 1 <= m; d++) < ko += xtj] * gUJl * gitj]; m += gitjl * gi[J]; bO 4= xCJ] * g[J] * giCJ]; nO 4= g[J] * g[J]; >; аШ = kO / ni; bCiJ = bO / nO; ОСНОВНАЯ ПРОГРАММА */ void main() { int 3,k; float aO.ai.xi; clrscrO; printf ("Введите m - число точек мнояества (m < 16)\пн);
248 Лртяаштятя scan* (•*!",»); prlntf ("Введите последовательно значения zl i=i,...,m\n"); far (аО = 0,1 « 1; 1 <= в; 1++) С scan* ("*Г»,«Ш); аО+= хШ;}; far (аО /= шд - t; i <= а; 1++) < gtil = 1; gttil = хШ - аО; ); for A = 2; I <= m - 2; 1++) { calculofparameters(l); for Ц = 1; J <= m; J++) { ai = gitjJ; gitj] = UtJ] - аШ) * giCJ] - b[il * g[J]; g[J] = ai; y, }; calculofparameters(m-i): for (k = 1; к <= ra; k++) { xi = KkJ; gCOJ = 1; g[U = xi - aO; prlntf ("i = %5.2t gO = «6.3f gi = %6.3Г, xi.gCOJ.gti]); for A = 2; 1 <= ш - 1; 1++) { g[U = (x1 - аШ) * gtl - 11 - ЬШ * g[l - 23; prlntf (• g*l = «6.3f,i,g[l]); }; prlntf ("\n"); >; prlntf("ЧпНажмите любую клаиашу для продолкения..."); getch(); }' I1. Вычисление ыногочленов наилучшего сгредаеквадратичного приближения функций ортогональныш многочленами Пусть заданы функция в виде множества пар чисел (( (t=i,2,...,m) 'и степень п @ < п < п-1) многочлена Qn(x) наи- наилучшего среднеквадратичного приближения. Рекуррентные соотноше- соотношения, определящие ортогональные многочлены Чебышева и многочлен Qn(x), имеют вид (x) (й=2,3,...п); = с0, Значения коэффициентов а, с^, bfc, Cfc находятся по формулам
Лртжтеиме ж главе 4, 94 249 1 ш - s (fe = 2,3,.--,п); 1=1" Погрешность приближения оценивается величиной где 1=1 Блок-схема и программа вычисления многочлена наилучшего средне- среднеквадратичного приближения представляют собой пополнение блок- схемы и программы вычисления значений ортогональных многочленов Чебывева. Программа позволяет вычислить значение многочлена Qnix) в точках хь (к = 1, 2,...,я). 21. Программа шчвсяешш многочленов нанлучвего йл на ******************* РАСЧЕТ *********************** 2 REV ТАБЛИШ ЗНАЧШШ СРЩЩЕКВАДРАТИЧШГО ПРИБЛИЖЕНИЯ 3 RQf ФУНКЦИИ ОРТОГОНАЛЬНЫМИ МШГОЧЯЕНАКИ ЧЕБЫШЕВА 4 RHf ************************************************* tO DIM XA5), yA5), gA5), g«(i5), a<14), bA4), cA4) 20 DEPDH! I-K, M-M: CIS 30 INPUT "Введите m - число значений функции (m < 16) "; m 40 INPUT "Введите п-порадок аппроксимирующего многочлена"; п 50 PRINT " Вводите через запятую пары значений " 51 PRINT " xl.yl; i=i,,..,m" 60 аО = 0: yi = 0: у2 = О
250 Приложения 70 FOR 1 = 1 ТО m 80 ШРОТ X(l), y(I) 90 аО = аО + i(I): yf = Я + УA): у2 = у2 + уA) А 2 100 NEXT 110 аО = аО / m: с@) « yi / ш 120 IF П = О THEN 250 130 FOR i = 1 ТО m uo g(i) = 1: gi(i) = x<i) - aO 150 NEXT i 160 П" n > m - 1 THEN n = m - 1 170 FOR i = 2 TO n 180 GOSUB 380: GOSUB 440 190 FOR 3 = 1 TO m 200 a1 = gi(J) 210 gi(J) = (xC) - a(i)) * gi(j) - b(I) * g(J) 220 g(J) = a1 230 NEXT 1 240 NEXT i: GOSUB 380 250 d = 0 260 FOR к = 1 TO m 270 i = x(k) 280 g@) = 1: gA) = x - aO 290 g1@) = c@): g1A) = gi(O) + cA) * gA). 300 FOR i = 2 TO n 310 g(l) = (x - a(i)) * g(I - J) - b(i) * g(i - 2) 320 g1(i) = g1(i - 1) + c(i) * g(i) 330 NEXT i: d = d + <y(k) - gi(n)) A 2 340 PRINT USING "x = «#.«# Q# = ##.### "; x; n; g1(n) 350 NEXT k: d = SQR{d / y2) 360 PRINT USING "Погрешность приближения d = #.######"; d 370 GOSUB 510: END 380 ni! = 0: c1 = 0 390 FOR 1 = 1 TO m 400 Ш ! = ni! + gi Ц) Л 2: el = d + УШ * gi A) 410 NEXT J 420 C(i - 1) = d / ni! 430 RETURN 440 kO! = 0: bO = 0: nO! = 0: cO = 0
Приложение к главе 4, §4 251 450 FOR J = 1 ТО m 460 kO! = kO! + X(J) * g1(J) A 2: 470 bO = bO + x(J) * eC) * gKJ): nOl = nO! + g(;f) " 2 480 NEXT 3 490 a(i) = kD! / nit: b(i) = bO / nO! 500 КЕТ1ЛШ 510 PRINT : PRINT "Нажмите любую клавишу для продолжения" 520 IF INKEYt = "" THEN 520 530 RETURN 31. Программа вычисления многочленов наилучшего среднеквадратичного приближения функций ортогональными многочленами на языке PASCAL program Approxlmat ionByPollnomsOfTchebishev; { ******************* РАСЧЕТ *********************** ТАБЛИЦЫ ЗНАЧЕНИИ СРЕДНЕКВАДРАТИЧНОГО ПРИБЛИЖЕНИЯ ФУНКЦИИ ОРТОГОНАЛЬНЫМИ МНОГОЧЛЕНАМИ ЧЕБЫШЕВА **************************************************} uses Crt; const 1=15; type data=array С1..1] of real; functions=array C0..1] of real; coef=array CO.. 1-1]. of real; parameters=array [2..1-1] of real; var i,J,k,m,n:Integer; aO,a1 ,d,n1 ,x1 ,y1 ,y2:real; a,b:parameters; x,y:data; g,g1:functions; с:coef; en:char; ПОДПРОГРАММЫ procedure PAUSA;
252 Приложения BEGIN WRITELN; ШТЕДО ('Дня продолжения нажмите любую клавишу...'); REPEAT ch := readkey UNTIL cho ' •; END; Вычисление коэффициентов Фурье c[k] } procedure CalculOfCoef1OfPourleA:Integer); var d:real; BEGIN Ш := 0; el := 0; FOR J := 1 TO m DO BEGIN d := d + ytj) • g1 fj); ni := ni + gi t J] * gi tj]; END; cti - П := el / Ш; END; Вычисление параметров рекуррентной формулы а[К], ЬСк] } procedure CalculOfParameters(i:liiteger); var k0,b0,n0:real; BEGIN kO := 0; bO := 0; nO := 0; FOR J := 1 TO m DO BEGIN kO := kO + x[J] * gi tj] * g1 [J]; bO := bO + xt^3 * g[JJ * g1[31; nO := nO + gtj] * gtjl; \ END; atiJ := kO / Ш; bti3 := bO / nO; END; ОСНОВНАЯ ПРОГРАММА } BEGIN ClrScr; WRITELN ('Введите m - число значений функции (m < 16)'); READ (m);
Приложена» к главе 4» §4 253 WRITELN ('Введите п - порядок аппроксимирующего многочлена1); READ (n); WRITELN ('Вводвте пары значений zl.yi; i«1,...,m'); аО := 0; yi :» 0; у2 :* 0; FOR i :- 1 ТО m DO BEGIN READ (хШ.уШ); WRITELN; aO := aO + ХШ; y1 := yi + yd]; y2 := y2 + ytl] • y[13; END; aO := aO / m; cKH := yi / m; FOR 1 := 1 TO m DO BEGIN g[l] := 1; g1[l] := xtl) - aO; END; IF П <> 0 THEN BEGIN IP n > m - 1 THEN n := m - 1; FOR 1 := 2 TO n DO BEGIN CalculOfCoeftOfFourleA); CalculOfParametereA); FOR 4 := 1 TO m DO BEGIN a1 := g1[JJ; ¦ g1[j] := (хШ - аШ) • g1tj] - b[l] • g[j]; glV := ai; END; END; CalculOfCoeffOfFourie(m1); END; d:=0; - ' FOR k := 1 TO m DO BEGIN x1 := x(k]; gto] := 1; gtn := xi - aO; gi CO] := otoi; g1tu :- g1 CO] + c[1] * gtU; FOR 1 := 2 10 n DO BEGIN g[l] := (x1 - a[13) * g[l - 1] - btl] • g[i - 2];
254 Приложения gHiJ := gm - 13 + сШ * g[iJ; END; d := d + (y[K]-gitn])*(y[k]-g1[n]); WRITELN ('x= ',x1:6:3,' Q'.nri,1 = \g1[n]:6:3); END; d := SQRT(d / y2); WRITELN ('Погрешность приближения d = ', d:8:6); PAUSA; END. 41. Программа вычисления многочленов наилучшего среднеквадратичного приближения функций ортогональными многочленами на языке FORTRAN «INCLUDE: 'EXEC.FI1 program ApproxByPolinomsorTchebishev С ******************* РАСЧЕТ *********************** С ТАБЛИЦУ ЗНАЧЕНИЙ СРЕДНЕКВАДРАТИЧНОГО ПРИБЛИЖЕНИЯ С ФУНКЦИИ ОРГОГОНАЛЬНЬШИ МНОГОЧЛЕНАМИ ЧЕБЫШЕВА о ************************************************** INTEGER*2 system COMMON m.z.gi @:15)/Ы/уA5),с@:14) COMMON /D2/xA5).g@:15),aB:14),bB:U) i=system('cls'C) WRITE (*,*) 'Введите m - число значений функции (m < 16)' READ (*,*) m VI/RITE (*,*) 'Введите n - порядок многочлена' READ (*,*) n WRITE (*,*) 'Вводите пары значений xi.yi; 1=1,.'..,m' aO = 0 . . ¦ У1 = 0 У2 = 0 DO 1=1,m READ (*,*) x(i),y(l) WRITE (*,*) aO = aO + x(l) У1 = У1 + УA) y2 = y2 + y(l)«*2 END DO aO = aO / m
Приложение к главе 4, §4 255 с@) = у1 / Ш DO i = 1,ю gi(l) = x(i) - aO END DO IP (n.ME.O) THEN IF (n.GT.ffl - 1) П = III - 1 DO 1 = 2,n GALL GalculOrGoeffOfFourle A) GALL CalculOfParameters A) DO J = 1,т ai = gKJ) gi(J) = <x(J) - a(i)) • gi(J) - b(i) • g(J) gU) = ai END DO END DO GALL GalculOICoeffOfPourie (n+1) END IF d = О DO k = 1 ,m XI = x(k) g(O) = 1 gd ) = xi - aO g1(O) = c(O) g1(D = gi(O) + c(i) * g(i) DO i = 2,n g(l) = (xi - a(l)) • g(l - 1) - b(i) * g(i - 2) END DO d = d + (y(k) - g1(n))**2 WRITE (*,l(A4,F5.2\)f) * X=',x1 WRITE (•,'(A6,I1.A2,F6.3I) ' Q',n,'= ',g1(n) END DO d = SQRT(d /y2) WRITE (*,'(A28.F8.6)') ' Погрешность приближения d =',d PAUSE 'Нашито клавишу ENTER для продолжения...' END
256 Щяяоття С ПОДПРОГРАММЫ С С Вычисление коэффициентов Фурье с (к) 8ШМШ1НИВ OalculOfCoeffOfFourle A) СОНМ m,z,gl @:15)/tri/yA5),c@:U) z « О cf = О DO J « 1, а cf = ct + y(J) * giU) z - z + giU) * giC) END DO c(l - 1) = cf / z RETURN END С С Вычисление параметров рекуррентной формулы a(fc), b(k) SUBROOmiE CalculOfParaeeters A) REAL kO,nO СОИКИ m,z,gf@:15)/be/i(f5),g@:15),aB:U),bB;f4) kO = О ЬО * О DO i * 1,m too = Ю + x(J) • gftf) • gf(J) bO = bO + 1C) * g(J) • gf(i) nQ * nQ + gC) * gU) END DO a(l) = kO / z b(l) = bO / no RETORM EHD 51. Программ иаогочленов щмйммвшш ДОварй ортсячжаяьшнв /* ******************* РАСЧЕТ *********************** ТАБЛИф ЗНАЧЕНИИ СРЕДНЕКВАДРАТИЧНОГО ПРИБЛИЖЕНИЯ ФУНКЦИЙ ОРТОГОНАЛЬНЫМИ МНОГОЧЛЕНАМИ ЧЕБШВВА
Щашошвшшв а главе 4, §4 2S7 «с*******»****************************************/ •Include <stdlo.b> «Include <conlo.h> «Include <eath.h> «define L 15 lnt l,m; float а[Ы ,ЬШ ,сШ ,n1 .xtLH ) ,ylL+1 ] ,g1 [L+1 ] ,g[L+1 ]; ПОДПРОГРАММЫ Шчисление коэффициентов Фурье elk] */ void calculofcoefloffourle(i) lnt 1; i lnt J; float d; for (n1=c1=O,J=1; J <= m; J++) { d += y[JJ « giCJJ; ni += g1[J] « giCJJ; }; c[l - 11 = el / Ш; }; /* Вычисление параметров рекуррентной формулы аШ, ЬСк) */ void calculofparameters(l) lnt 1; { lnt j; float kO.bO.nO; for (kO=bO=nO=O,J=1; J <= m; J++) { kO += xtj] « gitj] * gi[J]; bO += xtj] * g[J] * gitjl; nO += g[J] * g[Jlr }; atl] = kO / ni; b[l] = bO / nO; /^ ™_____ ——_—_—„ ОСШВНАЯ ПРОГРАММА */ void maln() { lnt J,k,n; float aO.ai.d.xi,y1,y2; clrscr(); prlntf ("Введите m - число значений функции (m < 16)\n"); scanf ("*i".em); ' prlntf("Введите n - порядок аппроксимирующего многочлена п"); scanf ("Ж1",&п); 9-469
258 Приложения print* ("Вводите пары значений xi.yl; 1=1,...,m\nn); lor (аО=у1=у2=0»1=1; I <= m; l++,prln«("\n")) { scan* C*«f.&i[13f&y[l]); aO += ill]; yi += y[i]; y2 += yti] • ytil; >; ctO] = yi / ra; for (aO /= m,l=i; 1 <= m; 1++) { gtl] = 1; gitl] = x[l] - aO; }; if (n != 0) { If (n>m-i)n = m-i; for A = 2; 1 <= n; 1++) { calculofcoeffoffourle(i); calculofparameters(l); for (j = 1; J <= m; J++) { ai = g1tJ3; gifj] = (xtj] - atl]) * gi[j] - bCl] * g[J]; }; calculofcoeffoffourle(rH-1); >; for (й=0,к=1; к <= га; К.++) { x1 = xtk]; gtO] = 1; gtl] = xi - aO; gHO] = ctOl; gH1] = gHO] + ct1] * gt13; for A = 2; 1 <= n; 1++) { gtl] = (X1 - atl]) • gtl - 1] - btl] * gtl - 2]; gitl] = gitl - П + cCl] * gtll; >; cl+= (ytk]-gitn])*(ytkl-gitn]); prlntf ("x = %t Q*l = «fMi-.xi.n.gitn]); >; d = sqrt(d / y2); prlntf ("Погрешность приближения d = %f",d); prlntf("ЧпНажмите любую клавишу для продолжения..."); getchO;
Приложение к главе 4, §5 259 К 55 Блок-схема опреде. параметров эмпирической формулы с двумя параметрами мптглпм нашенывжх квадратов Пусть результаты некоторого эксперимента представлены в виде множества пар чисел {(x{,j/t)> A=1,2 т). Используя метод наименьших квадратов и выравнивание экспериментальных данных, нужно выбрать наилучший вариант эмпирической формулы с двумя па- параметрами y=Q(x,a,p) среди семи, шесть из которых представлены в таблице на с.85. Нулевой вариант - линейная зависимость y=kx+b. Для упрощения программ полагаем, что xt>0 и yt>0. Кроме того, при выводе результатов вычислений на экран указывается только номер в таблице, соответствующий наилучшей аппроксимирующей фор- формуле и значения параметров к и о эмпирической зависимости У=М.+Ь в новых переменных X и Y. /Ввод m.Xj. = 1, ш />¦¦ -<\ з = о, б Плотность прилегания преобразованных переменных Х^, Y^ к прямой Y = кХ + b определяется параметром d(J). Преобразование переменных Подпрограмма вычисления параметров аC)=к, bC)=b, dC)=d использует для решения уравнений C4) правило Крамера L Выравнивание будет наилучшим, если d = mln Выбор номера к наилучшей эмпирической формулы из условия d = mln tL(i), 1=0,1,...,6 1 вывод »,а К) b(k)X
260 Приложения щишечаяие. В случав отрицательных значений х{, у4 требуется предварительное преобразование исходных данных. Бели, напри- например, хп.= mln ix.H О и уп = mln iy.i < о, то программу мож- но применять для переменных х(=|х0|+1+х{, yi=\y0\+l+yi- 2°. Программа вычисления параметров эмпирической формулы с двумя параметрами методом наименьших квадратов на языке BASIC 1 КЕМ ********************************************** 2 REM ОПРЕДЕЛЕНИЕ ПАРАМЕТРОВ ЭМПИРИЧЕСКОЙ ФОРМУЛЫ ' 3 REM С ДВУМЯ ПАРАМЕТРАМИ 4 НЕМ МЕТОДОМ НАИМЕНЬШИХ КВАДРАТОВ 5 REM ********************************************** 10 DIM хA5), уA5), х1A5), у1A5), а(б), bF), dF) 20 DEPINT I-K, M: CLS 30 INPUT "Введите число экспериментальных точек m > 1 "; m 40 PRINT " Вводите через запятую пары значений " 41 PRINT " xl.yi; 1=1,...,m" 50 FOR 1 = 1 то га 60 INPUT x(l), y(i) 70 х1A) = x(l): y1(l) = y(i) 80 NEXT 1 90 FOR J = 0 TO 6 100 ON 3 GOSUB 340, 370, 400, 430, 460, 490 110 GOSUB 200 120 130 140 150 160 161 162 170 180 190 200 210 NEXT d = 1@): к = 0 FOR 1 = 1 TO 6 IF d(i) < d THEN d = d(i): NEXT 1 a$ = "Эмпирическая формула N#; Ь$ = " k=##.#tHT'AA; b=## PRINT USING a»; k; d; PRINT USING bt; a(k); b(k) GOSUB 520: END a1 = 0: Ы = 0: a2 = о: Ь2 = FOR i = 1 TO m k = i d=#.#AA 0 '
Приложение к главе 4, $5 261 220 ai - ai + xi(l): Ы - Ы + у1 <1) 230 82 - 82 + 11 A) л 2: Ь2 =• Ь2 + XI A) * у1 A) 240 NEXT 1 250 d = m*a2-a1'2 260 kl = (m * Ь2 - a1 * Ы) / d: b = (Ы * a2 - a1 * b2) / d 270 d = 0: Г2 = 0 280 FOR 1 = 1 TO m 290 12 = 12 + y1 A) A 2: d = d + (y1 A) - kl * x1 A) - b) Л 2 300 NEXT ,i 310 d(J) = SQR(d / Г2) 320 a(j) = kl: b(j) = b 330 RETURN 340 FOR 1 = 1 TO m 350 y1 (i) = 360 NEXT 1: RETURN 370 FOR i = 1 TO m 380 y1(i) = 390 NEXT l: RETURN 400 FOR i = 1 TO m 410 УК1) = 420 NEXT 1: RETURN 430 FOR 1 = 1 TO m 440 y1(l) = LOG(y(l)) 450 NEXT: RETURN 460 FOR 1 = 1 TO m 470 • X1A) = LOG(x(l)): 480 NEXT l: RETURN 490 FOR 1 = 1 TO m 500 УН1) = LOG(y(i)) 510 NEXT l: RETURN 520 PRINT : PRINT "Для продолжения нажмите любую клавишу" 530 IF INKEY» = "" THEN 530 540 RETURN 3°. Программа вычисления параметров эмпирической формулы с двумя параметрами методом наименьших квадратов на языке PASCAL program MethodOrLeastSquares;
262 Приложения { ОПРЕДЕЛЕНИЕ ПАРАМЕТРОВ ЭМПИРИЧЕСКОЙ ФОРМУЛЫ С ДВУМЯ ПАРАМЕТРАМИ МЕТОДОМ НАИМЕНЬШИХ КВАДРАТОВ г*********************************************} uses Crt; const 1=15; type parameters-array Ш..6] of real; <Jata=array[1 ..1] of real; var x i,J,k,m:lnteger; (Unreal; a,b,d:parameters; x,y,x1,yi:data; chrchar; ^ ^ ПОДПРОГРАММЫ \ procedure PAUSA; BEGIN WRITELN; WRITER ('Для продолжения нажмите любую клавишу...•); REPEAT ch := readkey UNTIL cho "; END; Вычисление параметров линейной функции при выравнивании экспериментальных данных ) procedure calculOfParameters ; var kO.bO.a1 ,Ы ,а2,Ь2,Г2:геа1; BEGIN ai := 0; Ы := 0; a2 := 0; b2 := 0; FOR 1 := 1 TO m DO BEGIN ai := a( + х1Ш; Ы := Ы + yitil; a2 := a2 + Uti] *x1(i]; Ь2 := Ь2 + ИШ * у1Ш; END;
Приложение к главе 4, §5 263 d1 := m * а2 - а1 *а1; kO := (m * Ь2 - а1 * b1)/d1; ЬО := (Ы * a2 - a1 * b2)/di; d1 := 0; f2 := 0; FOR 1 := 1 TO m DO BEGIN Г2 := f2 + yiti] * уШЗ; di := di -+ (у1Ш-кО*х1Ш-ЬО) * (yiU]-kO*xiti]-bO); END; d[j] := SQRT<d1 /12); afj] := kO; btj] := bO; END; ОСНОВНАЯ ПРОГРАММА } BEGIN ClrScr; WRITELN ('Введите число экспериментальных точек m > 1'); READ (m); WRITELN ('Введите пары значений xi.yi; 1=1,...,m'); FOR 1 := 1 TO m DO BEGIN READ (хШ.уШ); WRITELN; END; FOR J := Q TO 6 DO BEGIN CASE 3 OF 0: FOR i := 1 TO m DO BEGIN HID := id); yltl] := yti]; END; 1: FOR 1 := 1 TO m DO yltl] := xtl] * уШ; 2; FOR i := 1 TO m DO yiШ := 1 / ytl]; 3: FOR 1 := 1 TO m DO yltl] := xtl] / ytl]; 4: FOR 1 := 1 TO m DO yltl] := LN(ytl]); 5: FOR 1 := 1 TO m DO BEGIN х1Ш := Ш(хШ); уШЗ := ytl]; END;
264 Оршкмнипш 6: ИВ 1 :« 1 10 ш DO yf III := 1Я(уШ); НТО; CalculOfParaaeterB; END; di := «01; к :« О; FOR 1 := 1 ТО 6 DO IP йШ < d1 THEN BEGIN di := dill; к := 1; END; WRITE ('Эмпирическая формула N',k:1,' d=',d1:8:5); WRITEUT {' k=',a[k]:8:5,' b=*,b[k]:8:5); PAUSA; END. 4°. Прттгршмп внчиеичшя параимров эшшрвчесвлв форцуж с двуия параметра» методом шшменыва квадратов на яанке FORTRAN •ШСЫГОЕ: 'EXEC.PI' program MethodOfLeastSquares С ********************************************** С ОПРЕДЕЛЕНИЕ ПАРАМЕТРОВ ЭМПИРИЧЕСКОЙ ФОРМУЛЫ О С ДВУМЯ ПАРАМЕТРАМИ С МЕТОДОМ НАИМЕНЫШЦ КВАДРАТОВ INTEGER*2 system DIMENSION xA5),yA5) COMMON m,J,xiA5),у1(i5),a@:6),b@:6),d@:6) l=system('cls'C) WRITE (*,*) 'Введите число экспериментальных точек m > 1' READ (*.*) m WRITE (*,*) 'Введите пары значений xl.yl; 1=1 m' DO 1=1,m READ (*,*) x<l),y(l) WRITE (*,*)
Прнкиюшв к главе 4, *5 265 НТО DO DO 2 ш 0,6 SELECT CASE DO XI У1 END CASE DO yi END CASE DO yi EDD CASE DO Я EKD CASE DO yi EDD CASE DO XI yi END CASE DO yi END CASE (J) @) i * 1,B A) - id) d) = yd) DO A) 1 = 1,т (i) = xd) * yd) DO B) 1 = i,m d) = 1 / yd) DO <3) 1 = 1,m d) = xd) / yd) DO U) 1 = i,m d) = 10G(yd)) DO E) 1 = i,m d) = LOG(xd)) d) = yd) DO F) 1 = i,m d) = LOG(yd)) DO END SELECT САЫ. END DO CalculOCParameters d1 = d@) k= 0
266 Приложения DO 1 = 1, 6 IF (d(l).LT.di) THEN di = d(l) к - 1 HID IF END DO WRITE (*,'(A23.I1)') 'Эмпирическая формула N',k WRITE (*,'(A3,E12.6)') ' d=',d(k) WRITE (*,'(A3,E12.6,A4,E12.6)') ' k=',a(k),( b=',b(k) PAUSE 'Нажмите клавишу ENTER для продолжения...' END Q С Вычисление параметров линейной функции при выравнивании С экспериментальных данных SUBROUTINE calculOIParameters REAL kO COMMON m,3,xi A5),у1 (i5),a@:6),b@:6),d@:6) ai = 0 Ы = О a2 = 0 Ь2 = О DO 1 = 1,m a1 = ai + x1 (i) Ы = Ы + yi (I) a2 = a2 + x b2 = b2 + END DO d1 = m * a2 - a1 *a1 kO = (m * b2 - ai * Ы) / di bO = (Ы * a2 - a1 * b2) / d1 d1 = 0 . 12 = О DO i = 1,m 12 = Г2 + y1(l) * y1(i) d1=cl1 + (yi(l) - kO*x1(i)-bO) * (y1(l) - kO*x1.(l)-bO) END DO d(J) = SQRT(d1 / 12) a(J) = kO
Приложение к главе 4, $5 267 = ЬО RETURN ИГО 5°. Программа вычисления параметре» эмпирической формулы с двуш параметрами методом наименьших квадратов на языке С /* ********************************************** ОПРЕДЕЛЕНИЕ ПАРАМЕТРОВ ЭМПИРИЧЕСКОЙ ФОРМУЛЫ С ДВУМЯ ПАРАМЕТРАМИ МЕТОДОМ НАИМЕНЬШИХ КВАДРАТОВ к*********************************************/ «include <stdio.h> «include <conlo.h> «Include <math.h> «define L 15 Int l,J,ktm; float d1,a[T3,b[T],d[T],x[]>1 ],у[1н-1 ],x1 [L+1]fy1 [L+1 ]; ПОДПРОГРАММА Вычисление параметров линейной функции при выравнивании экспериментальных данных */ void calculofparameters(vold) i float k0fD0,a1,b1,a2,b2,f2; for (а1=Ь1=а2=Ь2=0,1=1; 1 <= m; 1++) { a1 = a1 + х1Ш; Ы = Ы + yilil; a2 = a2 + xHl] *х1Ш; Ь2 = Ь2 + х1Ш * у1 [ 1 ]; }; di = m * а2 - а1 *а1; M) = (m * Ь2 - a1 * Ы)/d1; ЬО = (Ы * a2 - a1 * b2)/d1; for (d1=f2=0,l=i; i <= m; 1++) { f2 = f2 + у1Ш * yiti]; d1 = d1 + (y1tl]-kO*x1[l]-bO) * (у1Ш-к0*х1Ш-Ь0); dtj] = sqrt(d1 = kO; ЪЦ) = ЬО;
268 Приложения ОСНОВНАЯ ПРОГРАММ */ void main () { с1гвсг(); printf ("Введите число экспериментальных точек m > 1\п"); scanf ("Ж1",&т); prlntf ("Вводите пары значений xi.yl; 1=1 m\n"); forA=1; 1<=т; i++,prlntf("\n")) scanf ("*Г%Г",&х[1],&$г[1]); for (J = О; 3 <= 6; 3++) switch case case case case case case 0 1 CVI 3 4 5 (J) { : for { 3 : for : for : for : for : for A=1; 1 :1Ш = x[J (l = t; 1 (l = 1; l A=1; 1 A = 1; l <= 4; <= <= <= <= <= m; yil m; m; m; m; m; 1++) 1++) 1++) i++) 1++) 1++) yd); >; yicn=x[i] * yti]; yuu = 1 / уШ; у1Ш=х[1]/у[1]; yi[l]=log(yC13); break; break; break; break; break; case 6: { х1Ш = iog(xti]); yici] = for A = 1; 1 <= m; 1++) yiШ >; calculofparameters(); for (di=d[0],k«0,l«1; 1 <= 6; 1++) If (dtl] < ai) < di = dtl]; k = l; >; prlntf ("Эмпирическая формула N*l d=%f",k,d1); prlntf (" k=*f b=«f\n",a[k],btk]); prlntf("ЧпНаямите любую клавишу для продолжения... getch(); break; log(y[13); break; ); 6 . Программа вычисления параметров эмпирической формулы с двумя параметрами методом наименьших квадратов на языке QUICKBASIC Программа позволяет определить эмпирическую формулу с двумя параметрами, наилучшим образом аппроксимирующую заданную табли- таблицей функцию (экспериментальную зависимость), при любом числе
Приложение к главе 4, 95 269 пар (х((),#(()) A<(«в), допускаемом памятью компьютера, исполь- используя метод наименьших квадратов. Предполагается, что значения хЦ) и у(() положительны, а величины х(<) упорядочены по воз- возрастанию, т. е. О < хA )<...< х(п). В результате выполнения программы на экране дисплея появля- появляются одна из шести формул (см. таблицу на с.85), график функ- функции, соответствующий полученной формуле, и точки, отвечающие экспериментальным данным. * ********************************************** ОПРЕДЕЛЕНИЕ ЭМПИРИЧЕСКОЙ ФОРМУЛЫ С ДВУМЯ ПАРАМЕТРАМИ МЕТОДОМ НАИМЕНЬШИХ КВАДРАТОВ С ГРАФИЧЕСКОЙ ИЛЛЮСТРАЦИЕЙ ' ********************************************** DECLARE SUB choice C*) DECLARE SUB calculOfparameters () DECLARE FUNCTION f! (variant*, x!, kt, b!) DEFINT I-K, M: DIM aF), bF), dF): CLS INPUT "Введите число экспериментальных точек m > 1 "; m DIM Km), y(m), xi(m), y1 (m) PRINT " Вводите через запятую пары значений " PRINT " xl.yl; i=i,...,m" FOR i = 1 TO m INPUT x(l), y(l) NEXT FOR J = О ТО 6 CALL choiceC) CALL caleulOfparameters ¦ NEXT 'Выбор формулы, приближающей наилучшим образом эксперименталь- 'ные данные по условию d=d_minlmum I | ^ __ d = d@): k = О FOR 1 = 1 ТО 6 If d(l) < d THEN d = d(i): k = 1 NEXT
27Q Приложения 'Определение границ экспериментальных значений функции для mlny! = yd): mazy! = yd ) FOR 1 = 2 ТО m ГР уA) < mlny! THEN mlny! = y(l) IF y(l) > maxyl THEN maxyt = yd) NEXT IF mlny! = maxy! THEN miny! = mlny! - ABS(mlny!) / 2 maxy! = maxy! + ABS(maxy!) / 2 END IF SCREEN 9 VIEW A0, 20)-F30, 300), 1 WINDOW (xA), miny!)-(x(m), maxy!) h = (x(m) - xA)) / 100 x = xA) PSET (x, f(k, x, a(k), b(k))) FOR 1 = 1 TO 100 x = x * h LINE -(x, f(k, x, a(k), b(k))) NEXT г = (x(m) - xA)) / 200 FOR 1 = 1 TO m CIRCLE (xd), yd)), r, 4 PAINT (X(l), yd)), 4 NEXT LOCATE 1,3: PRINT "Эмпирическая формула N"; k; ": "; SELECT CASE k CASE 0: PRINT "y = ("; a(k); ") x + ("; b(k); ")" CASE 1: PRINT "y = ("; a(k); ") + ("; b(k); ")/x " CASE 2: PRINT "у = 1/(("; a(k); ") x + ("; b(k); "))•" CASE 3: PRINT "y = x/(("; a(lc); ") x + ("; b(k); ")) " CASE 4: PRINT "y = ("; EXP(b(k)); ")*("; EXP(a(k)); ")Лх" CASE 5: PRINT "y = ("; a(k); ")*Ln x + ("; b(k); ")" CASE 6: PRINT "y = ("; EXP(b(k)); ")*"; V("; a(k); ")" END SELECT
Приложение к главе 4, §5 271 LOCATE 23, 40 PRINT "Для продолжения нажмите любую клавишу" aft » ШРОТ$A) END DEPSNG 1-Х, М SUB calculOrparameters DEFINT I-J, M: SHARED J, m, x1(), y1(), a(), b(), d() a1 = 0: bi = 0: a2 = 0: Ь2 = О FOR 1 - 1 TO m a1 = ai + x1(i): Ы = Ы + yi(i) a2 = a2 + X1 (i) Л 2: Ь2 = Ь2 + x1 <1) * y1 (i) NEXT d = m * a2 - а1 Л 2 k = (m * Ь2 - а1 * Ы) / d: b = (Ы « a2 - ai * b2) / d d = 0: Г2 = 0 FOR 1 = 1 TO m • ' Г2 = Г2 + y1(i) Л 2: d = d + (yi(i) - k * X1(i) - b) A 2 NEXT aC) = k: b(J) = b: d(j) = SQR(d / Г2) END SUB DEFSNG I-J, M SUB choice C%) DEPINT I-J, M: SHARED m, x(), y(), x1(), y1(; SELECT CASE 3 CASE 0 FOR 1 = 1 TO m 11 (i) = x(i): yKi) = y(i) NEXT CASE 1 FOR 1 = 1 TO m yKi) = x(i) • y(i) NEXT CASE 2 FOR i = 1 TO m
272 Щяштешм ИЕХТ CASE3 FOR i = 1 ИЕХТ CASE 4 POR 1 = 1 NEXT CASE 5 POR I = t NEXT CASE 6 POR I = 1 NEXT END SELECT END SUB DEPSNG I-J, M ytd) ¦ TO ш ytd) > TO ffl УК1) ¦¦ TO ffl 11A) • TO ш yid) - FUNCTION 1 (variant*, DEPINT V SELECT CASE CASE О: Г = CASE 1: 1 = CASE 2: f = CASE 3: f = CASE 4: a = CASE 5: 1 = CASE 6: a = END SELECT END FUNCTION variant к • x н к + b / ¦ 1 / (k x / (k EXP(b): ¦ 1 / 7d) * x(i) / y(l) - LOG(yd)) . LOG(xd)): yi(D LOG(yd)) , x, k, b) ¦ b ' X • X + b) • X + b) : с = EXP(k): 1 = к • LOG(x) + b EXP(b): : 1 = a • x л к • с
КГЛДВВб к я 1°. Бжж-схвш шхяроеию швщшцмцимшго По определенным эвачвшж yt некоторое функции в точках х( A=0,\,2,...,п) требуется составить программу вычисления значе- значения многочлена Лагранка Их) в точке х t \.xQ,xni. Для построения многочлена яспользуются рекуррентные соотно- аеняя Pt0(x)-1, p U = 0,1,2 (-i,i+i,...,n); 0, / ЭД П -< ——ч SS ,.,.„< <" f Р-р(х- L = 1 ь=о 1 1=0,П 1 р-1 ' /—'— -А 1 ф ¦хл)/(хгхл) 1 1 • L + у,р 1 /Вывод
274 Пржлоювнмя 2°, Прогрева вычисления значения ывогочлена Лагранжа на языке BASIC 1 REV ********************************************** 2 HEX ВЫЧИСЛЕНИЕ ЗНАЧЕНИЯ МНОГОЧЛЕНА ЛАГРАНЖА 3 REM ДЛЯ ФУНКЦИИ, ОПРЕДЕЛЕННОЙ 4 ЮМ В п+1 УЗЛЕ ИНТЕРПОЛЯЦИИ хA) A=0,1, ...,п) 5 КЕМ ********************************************** . 10 DEFINT I-J, N: DIM хA5), уA5) 20 CLS 30 INPUT "Введите п - порядок многочлена Лагранжа "; п 40 PRINT "Введите через запятую пары значений xi.yi; 1=0,...,п" 50 FOR 1 = О ТО п 60 INPUT x(i), y(I) 70 NEXT 1 80 INPUT "Введите х "; x 90 L = 0 100 FOR 1 = 0 TO n 110 p = 1 120 FOR J = 0 TO n 130 IF. J О 1 THEN p = p * (X - X(J)) / (x(i) - X(J)) 140 NEXT 3 150 Ь -b + y(I) * p 160 NEXT 1 170 PRINT USING "X = ###.#### L(x) = ###.####"; x; L 180 GOSUB 190: END , 190 PRINT : PRINT "Для продолжения нажмите любую клавишу..." 200 IF INKm » "" THEN 200 210 RETURN 3°. Программ вычисления значения многочлена Лагранжа на языке PASG1L program PoltnomOfLagrange; { ********************************************** ВЫЧИСЛЕНИЕ ЗНАЧЕНИЯ МНОГОЧЛЕНА ЛАГРАНЖА ДЛЯ ФУНКЦИИ, ОПРЕДЕЛЕННОЙ В п+1 УЗЛЕ ИНТЕРПОЛЯЦИИ хA) A=0,1,...,п) г*********************************************} uses Grt;
Приложение к главе 5, $1 275 const m = 15; type vectop=array[0..m] of real; таг ij.n: Integer; p.L.xi:r,eal; x,y:vector; ch:char; ПОДПРОГРАММА } procedure PAUSA; BEGIN WRITELN; WRITELN ('Для продолжения нажмите любую клавишу...1); REPEAT ch := readkey UNTIL ch <> "; ОСНОВНАЯ ПРОГРАММА } BEGIN ClrScr; WRITELN ('Введите п - порядок многочлена Лагранжа'); READ (n); . WRITELN ('Введите пары значений xi.yl; 1=0 n'); FOR 1 := 0 TO n DO BEGIN READ (illl, ytil); WRITELN; END; WRITELN ('Введите х'); READ {XIL . •¦ . ¦ L := 0; . - FOR 1 := 0 TO n DO BEGIN p := 1; FOR i := 0 TO n DO IF i <> 1 THEN p := p • (xi - xtjl) / (ill] - x[.JJ); L := L + ytll • p; ¦ . . END;
276 Приложения WRITELN (Ч = \х1:8:4,' L(i) = ',L:8:4); PAUSA; END. 4°. Программа вычнслевня значены многочлена Латравжа на языке FORTRAN «INCLUDE: 'EXEC.PI' program PollnomOfLagrange G **********и*********************************** С ВЫЧИСЛЕНИЕ ЗНАЧЕНИЯ МНОГОЧЛЕНА ЛАГРАНЖА С ДЛЯ ФУНКЦИИ, ОПРЕДЕЛЕННОЙ С В П+1 УЗЛЕ ИНТЕРПОЛЯЦИИ 2A) A=0,1 п) С *««*****«««««******««****«**««*«***«****»«*«** REAL 1 INTEGER«2 system DIMENSION 2@:l5),y@:15) i=system('cls'C) WRITE(«,«) 'Введите п - порядок многочлена Лагранка' READ (*,*) n WHITE(*,*) 'Введите пары значений x(i),y(l); 1=0,1,...,n' DO I = 0, n READ (»,«) l(i),y(l) WRITE («,«) END DO WR1TE(«,«) 'Введите х ' READ (*,«) X1 L = 0 DO I = 0,n p = 1 DO J = 0,n IP (J.NE.1) p = p « (II - I(J)) / AA) - X(J)) END DO L = Ь + y(l) « p END DO WRITE (*,'CA5,P8.4,A10,P8.4)f) ' X = \X1,' L(X) = ', L PAUSE 'Для продолжения нажмите клавишу ENTER...' END
Приложение к главе 5, 82 277 5°. Программа вычисления значения многочлена Лаграява на языке с /* ********************************************** ВЫЧИСЛЕНИЕ ЗНАЧЕНИЯ МНОГОЧЛЕНА ЛАГРАНЖА ДЛЯ ФУНКЦИИ, ОПРЕДЕЛЕННОЙ В (п + 1) УЗЛЕ ИНТЕРПОЛЯЦИИ хA) A=0,1 п) г*********************************************/ #lnclude <stdio.h> #lnclude <conlo.h> adefine M 15 /, к/ void maln() { tot I.J.n; float p,L,x1,x[M+1],y[M+1l; clrscr(); prlntr ("Введите n - порядок многочлена Лагранжа гГ); scanf (яЖ1я,&п); prlntf ("Вводите пары значений xi.yi; 1-0,...,п\гГ); for (i = 0; I <= п; 1++,рг1пЩ"\гГ)) scanf (u%ntn,еаш, s^lU); print.f ("Введите х\пи); scanf (H!8f"f&xi); for A=0,1=0; 1 <= n; 1++) {for (p=i,3=o; 2 <= n; J++) If (.1 != 1) p=p*(x1-xtJ])/(xtl]-x[J]); L = ь + ytll * p;}; prlntr ("\nx = %t L(x) = »f",xi,L); prlntf("ЧпНажмите любую клавишу для продолжения..."); getch(); К §2 1°. Блок-схеыв построения кубического сплайна Пусть отрезок [а,о] разбит на гг равных частей и в точках х ((=0,1,2,...,п; хо=а, хп=Ъ) некоторая функция принимает значения
278 Приложения у{. Для переменной х, принадлежащей части разбиения [x{_1fa?tJ A=1,...,п), определена функция (кубический многочлен) (х-х. J B(* -* . )+Л) <*-*,_., J B <* .- —* r^-iJ— + y *1 * (Г - X J {X - X .) (Z-Z ,)г(Х-Х) t s 2 :i-L- + я ti !_. b-a Здесь h = —- - шаг разбиения отрезка. Неизвестные т{ опреде- определяются рекуррентными соотношениями т0 = А; тп = В; ml = Itmt+1 + *{ (t=n-1,n-2 0) после предварительного вычисления вспомогательных величин tf{> L{ по рекуррентным формулам -1 io=0, Jfo=mo, I» , IT =1 (Jf - b ) ((«1,2 n-\), ?ti + 4 Величины Л и В должны быть заданы. При построении кубичес- кубического сплайна, интерполирующего дифференцируемую функцию y=f{x) по системе точек, полагают A=f (a), B=/'(о) (краевые условия I типа). Выбор необходимой формулы Si(x) для заданного значения переменной х определяется целым числом I: х-а (J.-U » — I + 1- Работа программ проверяется на примерах 1 и 2 из §2. В соот- соответствии с условиями задач в программах принято то=1, \=0-
Приложение к главе 5, §2 2Т9 /Ввод n.a. т(О)*1 ;m(n)=O;l(O)=O;fc=(b-a)/n / bi=3(yi+ryi-1)/h; rni=1imi+i + mi Qi< нет 1=Цел.часть((х-а)/11)+1 ;xo=a+(I-1 2 . Программа построевия кубического сплайна, интерполирупщего заданную функцию, на языке BASIC 1 REM ******************************************************* 2 КЕМ ИЙРЕгаОЛИРОВАНИЕ ФУНКЦИИ С ПОМОЩЬЮ КУБИЧЕСКОГО СПЛАЙНА
280 Щяштеяия 3 RHf ••••¦••••••••¦••¦••••*•••¦••••••••••*••••••*•¦•¦*•••••• 10 ПЕРШ I, ¦: DIM yA5), b<14), тA5), 1A4) 20CLB 30 IHPOT "Введите n - число разбиении отрезка la,bJ "; n 40 РНШГ "Введите черве запятую координат концов отрезка а, Ь" 50 ШРОТ a, b 60 РИШТ "Введите значения функции у<1) в узлах интерполяции" 70 РЫЖ "A = 0, 1, 2,...,п), причем у@) = Г(а), у(п) = Г(Ь)" 80 FOR I = О ТО п 90 ШРОТ уA) 100 НЕКГ 1 110 IHFUT "Введите значение х "; х 111 REM Условия на концах отрезка: m@)=f(a)=i я т(п)=Г'(Ь)=0 120 ш@) - 1: ш(п) = О: 1@) = О: h = (Ь - а) / п 130 FOR 1 = Г ТО П - 1 Т40 ЬA) = 3 « (уA + 1) - уA - 1)) / h 150 1A) = -1 / AA - 1) + 4) 160 m(l) = 1A) « (m(l - 1) - Ь(Щ 170 ЯЕХТ 1 180 FOR 1 = n - 1 TO 1 STEP -1 190 m(l) = 1A) • m(l + 1) + m(l) 200 HEST 1 210 IF X <= a OR X >= b THHf 280 220 1 = IUT((x -a)/h) + 1:XO = a+(l-1)«h:xi=xO + h 230 s = y(l - 1) • ((X - XI) л 2 • B * (X - xO) + h)) / h " 3 240 s=s+ y(l) • ((X - xO) л 2 • B • (XI - X) + h)) / h л 3 250 s = в + m(l - 1) • (x - xi) л 2 « (x - xO) / h " 2 26C- *ч в + шA) • (x - xO) л 2 * (x - xi) / Ь " 2 270 ?HINT USING "X = ##.####лллл 8 = ##.####### "; x; s 280 PRINT : PRINT "Для продолжения нашите любую клавишу..." 290 И INKEYf = "" THEd 290 300 ИГО 3°. Програша построения куожческого сплайна, интерпоишрупяего ""Л""^" Дункцид» на языке PiSCAL { ««*********«**»****¦¦«¦*¦•««*¦»¦¦»¦¦**¦¦¦¦¦¦¦¦*****¦¦¦« ИНТЕРПОЛИРОВАНИЕ ФУНКЦИИ С ПОМОЩЬЮ КУБИЧЕСКОГО СПЛАЙНА *¦**¦************¦****¦*¦*¦¦*¦***¦¦¦******¦****¦*****¦¦}
Приложение к главе 5, {2 281 program Splinelnterpolatlon; uses Crt; const P - t5; type vector=array[0..pl of real; parameter=array[O. .p-11, of real; rightpart=array[1..p-11 of real; var l,n:Integer; a,bifh,s,x,x0,xi:real; y,m:vector; brrightpart; 1: parameter; ch:char; ПОДПРОГРАММА } procedure PAUSA; BEGIN WRITELN; WRITELN ('Для продолжения нажмите любую клавишу...'); REPEAT ch := readkey UNTIL ch <> "; END; / ОСНОВНАЯ ПРОГРАММА } BEGIN ClrScr; WRITELN ('Введите n - число разбиений отрезка Са.ЬГ); READ (n); WRITELN ('Введите'координаты концов отрезка а, Ь'); READ (а, Ы); WRITELN ('Введите значения функции уA) в узлах,1); WRITELN (' причем у@) = f(a), y(n) =Г(Ь)'); FOR i := О ТО n DO READ (уШ); WRITELN ('Введите значение x');" READ (x); { Условия на концах отрезка: m@)=f'(а)=1 и m(n)=f'(b)=O } • mtO] := 1; m[n] := 0; ПОЗ := 0; h := (Ь1 - a) / n; FOR 1 := 1 TO n - 1 DO
282 Приложения BEGIN b[l] :* 3 « (yd + 11 - y?i - 11) / h; lti] := -1 / (Ш - 1] + 4); m[l] := ltll • (ш[1 - 13 - Ы11); END; FOR I := n - 1 DOWNTO 1 DO mfi] := 1Ш • mil + 11 + mill; IP (x >a) AND (x < Ы) THEN BEGIN i := TRUNC ((i - a) / h) + 1 ; xO := a + (i - 1) * h; X1 := xO + h; s := yCl - 1] * (U - xt)*(x - xi) * B * (x - xO) + h)) /(h*h*h) + уШ * ((x - xO)*(x - xO) * B * (x1 - x) + h)) /(h*h*h) + m[i - 1 ] * (x - x1)*(x - x1) * (x - xO) /(h*h) + mCil * (x - xO)*(x - xO) * (x - xt) /(h*h); WRITE ('x = \x,' s = \s); END; PAUSA; END. 4°. Црограша построения кубического сплайна, интерполирующего заданную функцию, на языке FORTRAN «NCLUDE: 'EXEC.PI' program Splinelnterpolation С ******************************************************* ¦С ИНТЕРПОЛИРОВАНИЕ ФУНКЦИЙ С ПОМОЩЬЮ КУБИЧЕСКОГО СПЛАЙНА с ******************************************************* INTEGER*2 system REAL l@:U),m@:15) DIMENSION y@:15),bA4) WRITE (*',*) 'Введите n - число разбиений отрезка [а.ЬГ READ (*,*) n WRITE (*,*) 'Введите координаты концов отрезка а, Ь' READ (*,*) а, Ь1 WRITE (*,*) 'Введите п+1 значение функции y(i), ' WRITE (*,*) ' причем у@) = Г(а), y(n) =f(b)'
Приложение к главе 5. §2 283 DO 1 = 0,П HEAD (*,*) УA) END DO WRITE (*,*) 'Введите значение х' BEAD (*,*) х С Условия на концах отрезка: m@)=f'(a)=1 и m(n)=f'(b)=0 m(O) = 1 m(n) = О 1@) = О h = (Ы - а) / п DO 1 = 1, п - 1 ЬA) = 3 * (уA + 1) - уA - 1)) / h 1A) = -1 / AA - 1) + 4) m(l) = 1A) * (m(l - 1) - b(l)) END DO DO 1 = n - 1,1,-1 ra(l) = 1A) * m(l + 1) + m(l) ЕЮ DO IF ((x.GT.a).AND.(x.LT.bD) THEN 1 = INT((x - a) / h) + 1 xO = a + A - 1) * h xi •"=¦ xO + h s = y(l - 1) * ((x - x1)**2 * B * (x - xO) + * h)) / h**3 + y(l) * ((X - xO)**2 * B * (x1 - * x) + h)) / h**3 + m(l - 1) * (x - xi)**2 * (x - * xO) / h **2 + m(l) * (x - xO)**2 * (X - xi) / h**2 WRITE (*,'(A5,E13.7,A7,E13.7)f) ' X= ',X,f S= ',S " END IF PAUSE 'Нажмите клавишу ENTER для продолкения...' END 5°. Програыыа построения кубического сплайна, интерполирупцего заданную функцию, на языке С /* ******************************************************* : ИНТЕРПОЛИРОВАНИЕ ФУНКЦИИ С ПОМОЩЬЮ КУБИЧЕСКОГО СПЛАЙНА «ж*****************************************************/ «Include <stdio.h> ¦include <conlo.h>
284 Приложения «Include <math.h> «define F 15 /^ , . __ , осшвндя долгами */ void main () { lnt l,n; float а,Ы,h,s,x,xO,x1,m[F+1],y[P+i],b[Pl,l[Pl; clrscrO; prlntf ("Введите n - число разбиений отрезка [a,b]\nn); scanf ("%i",__i); prlntf ("Введите координаты концов отрезка a, b\n"); scanf ("ХГЖГ",в__, &Ы); prlntf ("Введите значения функции уA) в узлах,"); prlntf <" причем у@) = f(a), y(n) =Г(Ь)\п"); for A = 0; 1 <= n; scanf ("%Г",&у[11),!++); prlntf ("Введите значение х\п"); scanf ("%Г,&х); /* Условия на концах отрезка: m(О)=Г(а)=1 и m(n)=f*(b)=0 */ for (m[0]=1,m[n]=l[0]=0,h.= (b1-a)/n,l=i; l <= n - 1; 1++) { btll = 3 * (y[l + П - y[l - 11) / h; 1Ш = -1 / (Ш -11 + 4); mtlJ = 1C1J * (mtl - f1 - bdl); }; for A ¦¦= n - 1; 1 >= 1; 1—) mil] = 1Ш * mil + П + mdJ; If ((x >a) && (x < Ы)) { 1 = floor((x - a)/h) + 1 ; xO = a + A - 1) * h; x1 = xO + h; в = ytl - 1J * ((x - xi)*(x - xi) * B » (x - xO) + h)) /(h*h*h) + yd] * ((x - xO)*(x - xO) * B * (xi - x) + h)) /(h*h*h) + mil - f1 * (x - xi)*(x - xi) * (x - xO) /(h*h) + mCll * (x - xO)*(x - xO) * (x - xi) /(h*h); prlntf ("x = %l s = %f",x,s); >; prlntf("ЧпНашште любую клавишу для продолжения..."); getch();
ПРИЛОЖЕНИЕ К ГЛАВЕ 6 К Я 1°. Блок-схеыа вычисления производной по ее определению При вычислении производной по ее определению находят отноше- ше в некоторой точке х при уменьшении величины Ах до тех пор, пока разность этих отношений по абсолютной величине между двумя пос- последовательными шагами вычислений не станет меньшей, чем некото- некоторое число е. Тогда последний результат принимают в качестве про- производной фунции, вычисленной в точке х с заданной точностью е. В блок-схеме и программах вычислений рассматривается функция у = sin х (см. пример из §1). Ввод х,и X y(x,Ax)=(sin(x+Ax)-sinx)/Ax Дх=0,1; а=10; у'=у(х,Дх) Дх=Дх/а; у^=у(х,Ах); //"Вывод х,у',« f End ] 2°. Программа вычисления производной по ее определению на языке BASIC 1 НЕМ ************************************************* Z REM ВЫЧИСЛЕНИЕ ПРОИЗВОДНОЙ ФУНКЦИИ ПО ЕЕ ОПРЕДЕЛЕНИЮ 3 КЕМ на примере функции у = slnx 4 REM ************************************************* 10 DEP Гпу (x, d) = (SIN(x + d) - SIN(x)) / d
286 Приложения 20 CIS 30 INPUT "Введите значение х = "; х 40 INPOT "Введите точность е = "; e 50 d = .1: a = 10: yi = fnyd, d) 60 d=d/a:y2 = fny(r, d): el = ABS(yi - y2) TO IP e1 > e THEN y1 = y2: GOTO 60 80 at = "x = #.#### f'(x) = #.ни и и и tni погрешность = #.#####" 90 PRINT USING a$; x; y2; el 100 PRINT : PRINT "Для продолжения нажмите любую клавишу..." 110 IF INKEY* = "" THEN 110 120 END 3°. Программа вычисления производной по ее определению на языке PASCAL program derivefunctlon; { ************************************************* ВЫЧИСЛЕНИЕ ПРОИЗВОДНОЙ ФУНКЦИИ ПО ЕЕ ОПРЕДЕЛЕНИЮ на примере функции у = sinx г************************************************} uses Crt; const a=10; var deltax.den,der2,e,ei ,x:real; ch:char; ПОДПРОГРАММЫ } function derlvf(x,deltax:real):real; BEGIN derlvf := (sin(x+deltax) - sin(x))/deltax END; procedure Pauea; BEGIN WRITELN; WRITELN ('Для продолжения нажмите любую клавишу...'); REPEAT ch := readkey UNTIL ch <> "; END; ОСНОВНАЯ ПРОГРАММА }
Приложение к главе 6, A 287 BEGIN ClrScr; WRITELN ('Введите значение х и точность epeilon'); READ (x.e); deltax:» 0.1; deri := deriTf(x,deltax); REPEAT deltax := deltax / a; der2 := derlvf(x,deltax); el := ABS(den - der2); deri := der2; UNTIL e1 < e; WRITELN ('x = \x,' произв =',der2); WRITELN ('Погрешность приближения =',е1); PAUSA; END. 4°. Программа вычисления производной по ее определению на языке FORTRAN IINCLUDE: 'EXEC.FI' program derlvefunctlon С ************************************************* С ВЫЧИСЛЕНИЕ ПРОИЗВОДНОЙ ФУНКЦИИ ПО БЕ ОПРЕДЕЛЕНИЮ С на примере функции у = sinx с ************************************************* INTEGER*2 system derivr(x.deltax) = (sln(x+deltax)-sln(x))/deltax i=system('cls'C) WRITE (*,*) 'Введите значение х и точность epsllon' READ (*,*) X,e deltax = .1 a = 10 der1 = derlvf(x,deltax) e1 =t DO WHILE (ei.GT.e) deltax = deltax / a der2 = derlvf(x,deltax) el = ABS(der1 - der2) den = der2 END DO
288 НЮХЕ (*.'(Л4.Е13.7,Л9.Е13.7)') ' X =',Х.' ЩКЖ8В*' ,der2 НЮХЕ (•.'(А26.Е13.7I) • Погрешность првблшюния =\е1 PAOSE 'Нааате клаеацу SHEER для продпявяия...' 5°. Прорана шчвслешш производной по ее опредмешя С /« с»»**»*»»»»*»»»»**»»»*»»»*»»»»*»»»»*»»»*»»»»»*»»» ВЫЧИСЛЕНИЕ ПРОИЗВОДНОЙ ФУНКЦИИ ПО ЕЕ ОПРЕДЕЛЕНИЮ НА ПРИМЕРЕ ФУНКЦИИ У = slnx г*»*******»»****»»**»»********»»»******»*»*»*****/ «Include <stdlo.h> «Include <conlo.n> «include <math.h> «define A 10 П0ДПРОГРА1МЫ «/ float derlvf(float x, float y) { float z; z = (sln(x+y) - sln(x))/y; return z; } f * ——— — —————— - — — -— ,.—— — ' ОСНОВНАЯ ПРОГРАМКА */ void main() { float deltax,den,der2,e,ei,x; clrscrO; prlntf ("Введите значение х и точность epsilon\n"); scanf ("«f*f",&x,&e); deltax = O.i; deri = derivf(x,deltas); do { deltax = deltax / A; der2 = derivf(x.deltax); el = fabs(der1 - der2); deri = der2; } while (el >= e); prlntf ("\n\nx = %l щюизв f'= *f",xtder2); prlntf ("ЧпПогрешность приближения = *f\n",e1); prlntf("ЧпНавмите любую клавишу для продолжения..."); getch();
Приложение к главе 6, J3 289 к«з no suy h Пусть отрезок 1а,Ъ1 разбит на п равных частей с шагом Ь-а и в точках х{ (f=0,1,2,...,п; ?0=а, #П=Ь) некоторая функция при- принимает значения у{. Для переменной х, принадлежащей отрезку la,bh требуется вычислить значения первой и второй производной, имеющих порядок аппроксимации О (Л2) в зависимости от шага. Полз- гаем, что значения производных у' и у" в точках х, близких к точкам х{, равны соответствующим значениям y't и у^. Будем счи- считать точку х близкой к т{, если она принадлежит промежутку h h .тс— < ^ < х.+ -. Точки х, близкие к х{, имеет одно и то же значение параметра х_а ^ целая частьГ — + - 1 • l « ? J A9) - B1) I П 2 В зависимости от I при п>3 имеем три типа формул гл. 6. Так, при I = 0: • 1 1 при I = 1,2,...,п-1: 1 при I = п: 1 Чтобы получить правильные результаты, вычисления производят с двойной точностью. Для ориентировки в работе программ можно ис- использовать таблицу X У У' вх г 2 2 1 ,718150 ,730000 ,718282 2 2 2 1,01 ,745650 ,750000 ,745601 2 2 2 1,02 ,773250 ,770000 ,773195 2 2 2 1,03 ,800950 ,790000 ,801066 10-469
290 Приложения из которой, в частности, следует, что при вводе данных п=3; о=1; о=1,03 и четырех значений функции ех с шестью верными знаками после запятой в результате вычислений сохраняется пять знаков после запятой для первой производной и два знака - для второй производной. Если, например, ввести значения функции с четырьмя знаками после запятой, то получим для у значение 2,715000, а для у - 3,000000. h= (b-a)/a; h1=2h; Ввод г h2=h'^; i,a,b,{ I 1=Цел yi}>1 у .часть( (x-a)/h+h/2)) УО= Уо=(уО+4уГУ2)/1г1 ~5у1+4у2~У3 yn=<yn-2-4yn-1+3yn)/hl yn=(-yn-3+4yn-2-5yn-1 /Вывод x.y ,y ( End ] ,0 2 . Программа вычисления производных первого и второго порядков на языке BASIC 1 КЕМ ************************************************** 2 REM ВЫЧИСЛЕНИЕ ПРОИЗВОДНЫХ ПЕРВОГО И ВТОРОГО ПОРЯДКОВ 3 REM С ОДИНАКОВОЙ ПОГРЕШНОСТЬЮ В ЗАВИСИМОСТИ ОТ ШАГА 4 НЕМ ПО ФОРМУЛАМ ЧИСЛЕННОГО ДИФФЕРЕНЦИРОВАНИЯ 5 НЕМ ************************************************** 10 DEPINT I, N: DEFDBL А-В, Н, X-Y: DIM уA5) .
Приложение к главе 6, §3 291 20 CIS 30 INPUT "Введите п >=3 - число разбиений отрезка [а,Ь] "; п 40 IP n < 3 OR n > 15 THEN 200 50 PRINT "Введите через запятую координаты концов отрезка а, Ь" 60 INPUT a, b 70 PRINT "Введите значения функции y(i) в узлах интерполяции" 80 PRINT "A = 0, 1, 2.....П), причем у@) = Г(а), у(п) = Г(Ь)" 90 FOR 1 = О ТО п 100 INPUT y(l) 110 NEXT i 120 INPUT "Введите значение х "; х 130 h = (b - а) / п: 1 = INT((x - а) / h + h / 2) 140 Ш = 2 * h: Ъ2 = h л 2 150 IF i = 0 THEN GOSUB 230 160 IP i > 0 AND 1 < n THEN GOSUB 260 170 IP i = n THEN GOSUB 290 180 PRINT USING "x = #.### произв1 = ##.#####* "; x; yi; 190 PRINT USING " произв2 = ##.######"; y2 200 PRINT : PRINT "Для продолжения нажмите любую клавишу..." 210 IF INKEYI = "" THEN 210 220 END 230 y1 = (-3 * y@) + 4 * yA) - yB)) / hi 240 y2 = B * y@) - 5 * yA) + 4 * yB) - yC)) / h2 250 RETURN 260 y1 = '(-y(i - 1 ) + y(i + 1)) / W 270 y2 = (y(i - 1) - 2 * y(i) + y(i + 1)) / h2 280 RETURN 290 y1 = (y(n - 2) - 4 * y(n - 1) + 3 * y(n)) / Ш 300 y2=(-y(n - 3) + 4*y(n - 2) - 5*y(n - 1) + 2*y(n)) / h2 310 RETURN 3°. Программа вычисления производных первого и второго порядков на языке PASCAL { ************************************************** ВЫЧИСЛЕНИЕ ПРОИЗВОДНЫХ ПЕРВОГО И ВТОРОГО ПОРЯДКОВ с одинаковой погрешностью в зависимости от шага ПО ФОРМУЛАМ ЧИСЛЕННОГО ДИФФЕРЕНЦИРОВАНИЯ с*************************************************}
292 Приложения progran Derivative0f1and2order; uses Crt; const p - 16; type vector=array[0..p] of real; var i,n: Integer; a.b.h.hi,h2,x,y1,y2:real; у:vector; chrchar; ПОДПРОГРАММА > procedure PAUSA; BEGIN WRITELN; WRITELN ('Для продолжения нажмите любую клавишу...'); REPEAT ch := readkey UNTIL ch <> ''; END; ОСНОВНАЯ ПР0ГРАША } BEGIN ClrScr; WRITELN ('Введите n - число разбиений отрезка ?a,b]'); READ (tl); IF (n >= 3) AND (n <= 15) THEN BEGIN WRITELN ('Введите координаты концов отрезка а, Ь'); READ (a, b); WRITELN ('Введите значения функции уС13 в узлах,'); WRITELN (' причем у@) = Г(а), у(п) =Г(Ю'); FOR i := О ТО n DO READ (уШ); WRITELN ('Введите значение х'); READ (х); h := (b - а) / n; i := TRUNC((i - a) / h + h/2); hi := 2 * h; h2 := h • h; IF 1 = 0 THEN BEGIN y1 := (-3 * ytO] + 4 * ytn - y[21) / hi;
Приложение к главе 6, §3 293 у2 :* B * у(ОЗ - 5 • уШ + 4 * УС21 - уСЗЗ) / h2; ВТО; IP A > 0) AND (i < n) THEN BEGIN yt :=» (-yti - U + yd + П) / hi; y2 := (yd - П - 2 * yli] + yd + 13) / h2; END; IF i = n THEN BEGIN yi := (ytn - 2] - 4 • ytn - n + 3 • ytn]) / hi; y2 := (-уСп-ЗЗ + 4 * y[n-2] - 5 * y[n-1] + 2 * y[n]) / h2; END; WRITE ('x = ',x:6:3,' произв1 = *,у1:9:6); WRITELN С произв2 = г,у2:9:6); END; PAUSA; END. 4°. Программа вычисления производных первого и второго порядков на языке FORTRAN «INCLUDE: 'EXEC.PI' program DerivativeOf1and2order С ************************************************** С ВЫЧИСЛЕНИЕ ПРОИЗВОДНЫХ ПЕРВОГО И ВТОРОГО ПОРЯДКОВ С С ОДИНАКОВОЙ ПОГРЕШНОСТЬЮ В ЗАВИСИМОСТИ ОТ ШАГА С ПО ФОРМУЛАМ ЧИСЛЕННОГО ДИФФЕРЕНЦИРОВАНИЯ G ************************************************** INTEGETU2 system DOUBLE PRECISION a,b,h,x,y DIMENSION y@:15) i=eystem('cis'C) WRITE (*,*) 'Введите n - число разбиений отрезка [a.b]1 READ (*,*) n IF ((n.GE.3).AND.(n.LE.15)) THEN WRITE (*,*) 'Введите координаты концов отрезка а, Ь' READ (*,*) a, b WRITE (»,*) 'Введите n+1 значение функции y(i), •
294 Приложения WRITE (*,*) ' причем у(О) = f(a), y(n) =f(b)' DO i = O,n READ (*,*) y(l) END DO WRITE (*,*) 'Введите значение х' READ (*,*) X h = (b - a) / n i = INT((x-a)/h+h/2) hi = 2 * h h2 = h * h IF (l.EQ.O) THEN У1 = (-3 * y(O) + 4 * yA) - yB)) / hi y2 = B * y(O) - 5*yA) + 4*yB) - yC)) / h2 END IF IF ((i.GT.O).AND.(l.LT.n)) THEN yi = (-y(l - 1) + y(i + 1)) / hi y2 = (y(i - 1) - 2 * y(I) + yd + 1)) / h2 END IF IF (i.BQ.n) THEN yi = (y(n - 2) - 4 • y(n - 1) + 3 • y(n)) / hi y2 = (-у(п-З) + 4*y(n-2) - 5*y(n-1) + 2*y(n)) / h2 END IF WRITE (*,'(A5,E1O.4,A8,E12.6\)') ' X = \x,' Iip1 = \y1 WRITE (*,'(А8,Е12.6)') ' np2 = ',y2 END IF PAUSE 'Нажмите клавишу ENTER для продолжения...' END 5°. Программа вычисления производных первого и второго порядков не языке С /* ************************************************** ВЬГШСЛЕНИЕ ПРОИЗВОДНЫХ ПЕРВОГО И ВТОРОГО ПОРЯДКОВ с одинаковой погрешностью в зависимости от шага ПО ФОРМУЛАМ ЧИСЛЕННОГО ДИФФЕРЕНЦИРОВАНИЯ «Include <stdio.h> «Include <conlo.h>
Приложение к главе 6, §3 295 «include <math.h> «define P 15 ОСНОВНАЯ ПРОГРАММА */ void main () { lnt l,n; double a,b,h,h1,h2,x,y1,y2,y[P+1]; clrscr(); printf ("Введите n - число разбиений отрезка [a,b]\n"); scanf ("Ж1",&п); if ((n >= 3) && (n <= 15)) { printf ("Введите координаты концов отрезка а, Ь\п"); scanf ("*lf*lf",te, &Ь); printf ("Введите значения функции y(i) в узлах,"); printf (" причем у@) = f(a), y(n) =f(b)\n"); for (i = 0; i <= n; scanf (ЩГ'.&уШ)Д++); printf ("Введите значение x\nH); scanf ("ЖИ-.ьх); h ¦=¦ (b - a) / n; i = floor((x - a) / h + h/2); hi = 2 * h; h2 = h * h; If (i == 0) { y1 = (-3 * у CO] + 4 • yd] - yC2]) / hi; y2 = B * yCO] - 5 * yd] + 4 * y[21 - yC3]) / h2; }; If (A > 0) && (i < n)) { У1 = (-ytl - П + yti + 11) / hi; y2 = (yd - 1] - 2 * yCi] + yd + 1]) / h2; ); if A == n) i yi = (ytn - 2] - 4 * yen - 1 ] + 3 * y[n]) / hi; y2 = (-yfn-31 + 4 * yCn-2] - 5 * yCn-1] + 2 * yCn]) / h2; >; printf ("x = %1 произв1 = %f",x,y1); printf (" произв2 = %f",y2); ); printf("ЧпНаамитб любую клавишу для продолжения..."); getch();
прилгав к главе 7 к я /Ввод a.b.n У а- b " концн отрввка ™тег- — 1 ' рирования Са,Ы; h=(b - a)/n; х1=а+п/2; х2=а 81=Г(х1); 82=(Г(а)+Г(Ь))/2 рирования 1(х) - подынтегральная функция; п - число делении отрезка интегрирования x2=x2+h; ; S2=82+f(x2) 8i=h-s1; s2=h«s2; s3=B«8i+s2)/3 I Приблиавнные значения интегралов по формулам прямоугольников - si; трапеции - з2; Симпсона - вЗ 8 программах к данному и следующему параграфам в качестве 2 подантвгральной функции взята функция /(х)=еж • 2°. Программа вычисления «федежеввоп» ивтеграяа по квадратурнш формулам прямоугольников, трапеций и Ошпсона на языке BASIC 1 REK ******************************************************* 2 HOC ВЫЧИСЛЕНИЕ ОПРЕДЕЛЕННОГО ИНТЕГРАЛА ПО ФОРМУЛАМ 3 REM ПРЯМОУГОЛЬНИКОВ, ТРАПЕЦИИ И СШПСОНА 4 КЕН ******************************************************* 10 DEFIHT I, N:- CIS 20 PRINT "Введите через запятую значения концов отрезка Са.Ь]" 30 INPUT a, b
Приложение к главе 7, $1 297 40 PRINT "Введите чясло разбиений отрезка п" 50 ШРОТ п 51 КЕМ ПОДШПЕГРДЛЬНАЯ ФУНКЦИЯ 60 DE? fnf (х) = ЕХР(х * х) 61 НИ1 : 70 h = (Ь - а) / п: х1 = а + h / 2: х2 = а 80 s1 = ГпГ(х1): s2 = (ГпГ(а) + ftif(b)) / 2 90 FOR 1 = 1 ТО n - 1 100 х1 = х1 + h: x2 = х2 + h 110 S1 = 81 + fnf(x1): s2 = 82 + fnf(x2) 120 NEXT i 130 s1 = h • si: s2 = h • s2: s3 = B • 81 + s2) / 3 140 PRINT "S1 = "; 81; " S2 = ";, s2; " s3 = "; s3 150 PRINT : PRINT "Для продолжения нажмите любую клавишу..." 160 IP INKm = "" THEN 160 170 END 3°. Программа вычисления определенного интеграла по квадратурный формулам прямоугольников, трапеций и Синпсона на языке PASCAL program integration; ВЫЧИСЛЕНИЕ ОПРЕДЕЛЕННОГО ИНТЕГРАЛА ПО ФОРМУЛАМ ПРЯМОУГОЛЬНИКОВ, ТРАПЕЦИИ И СИМПСОНА *******************************************ж***********} uses Crt; var i,n:integer; a,b,h,si ,s2,s3,x,xi ,x2:real; chrchar; r ___ _____ _ _ __ ПОДПРОГРАММЫ ГОДЫНТЕГРАЛЬНАЯ ШЖЦИЯ } function 1(x:real):real; BEGIN t := exp(x«x) END;
298 Приложения procedure Pause; BEGIN WRITEUJ; WRITEUJ ('Для продолжения наяште любую клавишу...'); REPEAT ch := readkey UNTIL ch <> "; END; l ОСНОВНАЯ ПРОГРАММА } BEGIN ClrScr; WRITELN ('Введите значения концов отрезка [а,Ь]'); READ (a,b); WRITELN ('Введите число разбиений отрезка п'); READ (n); h := (Ь - a) / n; x1 := a + h / 2; x2 := a; s1 := Г(х1); s2 := (f(x2) + f(b)) / 2; FOR 1 := 1 TO n - 1 DO BEGIN x1 := 11 + h; x2 := x2 + h; si := si + f(xi); s2 := s2 + Г(х2); END; s1 := h * S1; s2 ;= h * s2; S3 := B * s1 + s2) / 3; WRITELN Cs1 = \81:9:б,' s2 =' ,s2:9:6,' S3 =',s3:9:6); PAUSA; END. 4°. Програыыа вычисления определенного интеграла по квадратурный формулам прямоугольников, трапеций и Симпсона на языке FORTRAN ¦INCLUDE: 'EXEC.PI1 program integration С ****де******************************************** С ВЫЧИСЛЕНИЕ ОПРЕДЕЛЕННОГО ИНТЕГРАЛА ПО ФОРМУЛАМ С ПРЯМОУГОЛЬНИКОВ, ТРАПЕЦИИ И СИМПСОНА с ************************************************** INTEGER*2 system С ПОДЫНТЕГРАЛЬНАЯ ФУНКЦИЯ Г(х) = ехр(х**2)
Приложение к главе 7. §1 299 ^systemCcls'C) WRITE (*,*) 'Введите значения концов отрезка Га.ЬГ READ (•,*) a.b WRITE (*,*) 'Введите число разбиений отрезка п' READ (•,•) п h = (b - а) / п х1 = а + h / 2 х2 = а si = Г(х1) S2 = (Г(х2) + Г(Ь)) / 2 ¦¦¦' DO 1 = 1 , Л - 1 И = х1 + h х2 = х2 + h 51 = Si + Г(Х1) 52 = s2 + f(x2) END DO si = h • 81 s2 = h * 82 S3' = B * S1 + s2) / 3 WRITE (*ffC(A4,E13.7))') ' Bi=f,si,f S2=\s2,' S3=',s3 PAUSE 'Нажмите клавишу ENTER для продолжения...' END 5°. Программа вычисления определенного интеграла по квадратурным формулам прямоугольников, трапеций и Симпсона на языке С /г***************************************************** ВЫЧИСЛЕНИЕ ОПРЕДЕЛЕННОГО ИНТЕГРАЛА ПО ФОРМУЛАМ ПРЯМОУГОЛЬНИКОВ, ТРАПЕЦИИ И СИМПСОНА г******************************************************/ ^include <stdlo.h> #include <conlo.h> #lnclude <math.h> / ^ ____.j .^ ___.^_-, __-^ , ________ ¦ _____ ____ __ ПОДПРОГРАММА Подынтегральная функция */ float f(float x)
300 Приложения { float у; у = ехр(х«); return у; ); ОСНОВНАЯ ПРОГРАММА */ Ўold main () { Int l,n; float a.b.h.si,s2,s3fx,x1,X2; clrscrO; printf ("Введите значения концов отрезка ta,b]\n"); scan! ("»f*f",te,*b); prlntf ("Введите число разбиений отрезка п\п"); scanf ("Ж1",&п); \ h = (Ь - а) / п; х1 = а + h / 2; х2 = а; S1 = f(H); 82 = (f(x2) + f(b)) / 2; , for A = 1; i <= n - 1; i++) { X1 += h; x2 += h; si += f(xi); s2 += f(x2); si •= h; s2 *= h; s3 = B * si + s2) / 3; prlntf ("\nsi = %1 s2 = %t s3 = «f",si,s2,s3); prlntf("\п\пНажмите любую клавишу для продолжения..."); getch(); 11. Блок-схема вычисления определенного интеграла методом двойного пересчета по формуле Симпсона Вычисления интеграла по формуле Симпсона J б *• ° п 1=1 ведут с увеличением числа разбиений п вдвое до окончания прибли- приближений при выполнении условия 1 —|3(п) - 3Bп)| < е. 15 При этом полагают 3 » 3Bп) с точностью 8.
Приложение к главе 7, 81 301 /Ввод а.Ь.е/ I ; X1-I(b); 8-ЯМ1; Bi»(b-a).(fO+f1+4.f((e+b)/2))/6 п = 2 h=(b-a)/n; x2=a+h; в2=в 1=1,п 82=s2+4.t(ii)+2-f(x2); ; x2=x2+h J 81 = S2 П = 2>П B2=s2-H/6; d=|s1-s2|/15 Вьюод B2,d [ End ] 21. I^orpaima вычисления определенного интеграла методой двойного пересчете по формуле Сшшсона на языке BASIC 1 REM #****************************************************** Z REM ВЫЧИСЛЕНИЕ ИНТЕГРАЛА С ЗАДАННОЙ ТОЧНОСТЬЮ ервПоп 3 REM МЕТОДОМ ДВОЙНОГО ПЕРЕСЧЕТА ПО ФОРМУЛЕ СИМПСОНА 4 REM к****************************************************** 10 DEPINT I, N: CLS 20 PRINT "Введите через запятую значения концов отрезка (a.b]" 30 INPUT a, b
302 Приложения 40 PRINT "Введите точность вычисления epellon" 50 INPUT e 60 DEP tnt (I) = ЕХРЦ • I) 70 to •= fnl(a): f1 = ftrt(b): s = fO - fi 80 si - (b - a) • (fo + ti + 4 • rnf((a + b) / 2)) / 6 90 n = 2 100 h = (b - a) / n: x1 = a + h / 2: x2 = a + h: s2 = s 110 F0R.1 = 1 TO n 120 s2 = 32 + 4 * fnf(x1) + 2 * firf(x2) 130 x1 = x1 + h: x2 = x2 + h 140 NEXT 1 150 82 = 32 * h / 6: d = ABS(s1 - s2) / 15 160 IP tit < e THEN GOTO 180 170 s1 = S2: n = 2 * n: GOTO 100 ^ 180 PRINT "Величина интеграла s ="; s2; " Погрешность d = 190 PRINT : PRINT "Для продолжения нажмите любую клавишу.. 200 IP INKEYS = "" THEN 300 210 END 31. Программа вычисления определенного интеграла методой двойного пересчета по формуле Сиилсона на языке PASCAL program IntegratlonBySlmpson; {г*****************************************!************* ВЫЧИСЛЕНИЕ ИНТЕГРАЛА С ЗАДАННОЙ ТОЧНОСТЬЮ epsllon МЕТОДОМ ДВОЙНОГО ПЕРЕСЧЕТА ПО ФОРМУЛЕ СШ1С0НА •с******************************************************} uses Crt; var l,n:Integer; a,b,d,e,fO,fi ,h,s,s'i ,s2fx,x1 ,x2:real; ch:char; ПОДПРОГРАММЫ ПОДЫНТЕГРАЛЬНАЯ ФУНКЦИЯ function i(x:real):real; BEGIN f :- exp{x»x) END;
Приложение к главе 7, §1 303 procedure Pause; BEGIN WRITELN; WRITELN ('Для продолжения нажмите любую клавишу...'); REPEAT ch := reafflcey UNTIL ch о "; END; ОСНОВНАЯ ПРОГРАММА } BEGIN ClrScr; WRITELN ('Введите значения концов отрезка Са,Ь]'); READ (a,b); WRITELN ('Введите точность вычисления epsilon'); READ (e); to := Г(а); f1 := f(b); s := ГО - f1; si := (b - a) * (ГО + Л + 4 * f((a + b) / 2)) / 6; n := 2; REPEAT h := (b - a) / n; 11 := a + h / 2; x2 := a + h; s2 := s; FOR 1 := 1 TO n DO BEGIN s2 := s2 + 4 * f(xi) + 2 ¦ f(x2); x1 := x1 + h; x2 := x2 + h; END; s2 := s2 * h / 6; d := ABS(s1 - s2)/15; si := s2; n := 2»n; UNTIL d < e; WRITELN ('Величина интеграла а =',з2:9:6," Погреши. d=',d:9:6); PAUSA; END. 41. Программа вычисления определенного интеграла методом двойного пересчета по формуле Симлсона на языке FORTRAN fINCLUDE: 'EKEC.PI' program IntegrationBySimpson С ************************************************** С ВЫЧИСЛЕНИЕ ИНТЕГРАЛА С ЗАДАННОЙ ТОЧНОСТЬЮ epsilon С МЕТОДОМ ДВОЙНОГО ПЕРЕСЧЕТА ПО ФОРМУЛЕ СИМЛСОНА
304 Приложения 4 с ************************************************** INTEGER*2 system q П0ДЫНТЕГРАЛШ1Я ФУНКЦИЯ f(x) = exp(x»»2) G i=system('cls'C) WRITE (»,») 'Введите значения концов отрезка [а.Ы* READ (»,») a,b WRITE (»,») 'Введите точность вычисления epsilon' READ (*,*) е fO = f(a) f1 = Kb) 31 = (b - a) * (fO + Г1 + 4 » f((a + b) / 2)) / 6 в = fO - fi n = 2 d = 1 DO WHILE (d.GT.e) h = (b - a) / n x1 = a + h / 2 32 = a + h s2 = s DO i = 1,n s2 = s2 + 4 * f(xi) + 2 * f(x2) 'xi = x1 + h x2 = x2 + h END DO 32 = s2 * h / 6 d = ABS(s1 - s2)/15 si = s2 n = 2 * n END DO WRITE (*,'B(A12,E13.7))'),' Вел. ин. B=',s2,f Погр. d=',d PAUSE 'Нажмите клавишу ENTER для продолжения...' END 51. Программе вычисления определенного интеграла методом двойного пересчета по формуле Синпсона на языке С
Приложение к главе 7» §1 305 ВЫЧИСЛЕНИЕ ИНТЕГРАЛА С ЗАДАШЮИ ТОЧНОСТЬЮ EPSILOif МЕТОДОМ ДВОЙНОГО ПЕРЕСЧЕТА ПО ФОРМУЛЕ СИМПСОНА «««««г********************************************»**/ «Include <stdio.h> «Include <conio.h> «Include <math.h> ПОДПРОГРАММ Подынтегральная функция */ float refloat x) { float у; у = exp(x»x); return y; } ¦ ОСНОВНАЯ ПРОГРАММА •/ void main() { int i.n; float a,b,d,e,fO,fi,h,8,si,s2,x,x1,x2; clrscrO; printf ("Введите значения концов отрезка [a,b]\n"); scanf (nmf",&a,&b); printf ("Введите точность вычисления epsilon\n"); scanf (Sf",&e); fO = f(a); f1 = f(b); a = fO - f 1; 31 = (b - a) * (fO + f1 + 4 * f((a + b) /2)) / 6; n = 2; do i h = (b - a) / n; xl = a + h / 2; x2 = a + h; s2=s; for (i = 1; i <= n; i++) { s2 = s2 + 4 * T(xi) + 2 * Г(Х2); x1 += h; x2 += h; }; s2 »= h / 6; d = rabs(s1 - s2)/15; s1 = s2; n »= 2; } while (d >= e); printr ("Велич. интегр- в = %L Погреши, d = »f",s2,d); printf("\п\пНажмите любую клавишу для продолжения..."); getchO;
306 Приложения 1 . Блок-схема мл ю пересчета но формуле Гаусса с Вычисления интеграла по формуле Гаусса с тремя узлами Г J /(x) dr * — 2 а ведут с увеличением числа разбиений п вдвое до окончания приб- приближений, исходя из условия |з(п) - 3Bп)|/63 < е. I c=j3/5; h1 = (b-a)/2; с1=с«Ы; х2=Aна)/2; n=f(x2-c1); ГЗ=Г(х2 + d); Bi=h1-Ef1+8f(x2)+6f3)/9; n = 2 h=(b-a)/n; hi=h/2; ci=c»h1 x2= a+h1; x1=x2-d; x3=x2+c1 s2=0 i=t .n 82=B2+5f(X1)+8Г(х2)+5Г(хЗ); ; x2=x2+h; x3=x3+h 81 = 82 П = 2«П _L B2=s2.h1/9; d=|Bi-s2|/63 Вывод s2,d
Приложение к главе 7, §2 307 2°. Программа вычисления определенного интеграла методой двойного пересчета по формуле Гаусса о тремя узлами на языке BASIC 1 КЕМ ******************************************************* 2 КЕМ ВЫЧИСЛЕНИЕ ИНТЕГРАЛА С ЗАДАННОЙ ТОЧНОСТЬЮ epsilon 3 КЕМ МЕТОДОМ ДВОЙНОГО ПЕРЕСЧЕТА ПО ФОРМУЛЕ ГАУССА 4 КЕМ ******************************«*****««****.****«*«*«**** 10 DEFINT I, N: CLS 20 PRINT "Введите через запятую значения концов отрезка Са.Ь." 30 INPUT a, b 40 PRINT "Введите точность вычисления epsllon" 50 INPUT e Е-t ЩЛЦГ _ _J I iVl-lIU ~ ————— —— -— — __________—-_—_________ __________—___— 52 КЕМ ПОДЫНТЕГРАЛЬНАЯ ФУНКЦИЯ 60 DEP fnf (х) = ЕХР(х * X) 61 КЕМ ТО с = SQRC / 5): hi = (b - а) / 2: d = с * hi: 80 к2 = (Ь + а) / 2: Л = fnf(х2 - d): 13= fnf(_2 + d) 90 S1 = hi * E * Я + 8 « fnf (X2) + 5 * f3) / 9 100 n = 2 110 h - (b - a) / n: hi = h / 2: el = с * hi 120 x2 = a + hi: x1 = x2 - d: x3 = x2 + d 130 s2 = 0 140 FOR 1 = 1 TO n 150 s2 = s2 + 5 * fnf(XI) + 8 * fnf(x2) + 5 * fnf(x3) 160 x1 = x1 + h: x2 = x2 + h: x3 = x3 + h 170 NEXT 1 180 s2 = s2 * hi / 9: d = ABS(s1 - s2) /63 190 IP d < e THEN GOTO 210 200 s1 - s2: n = 2 * n: GOTO 110 210 PRINT "Величина интеграла s ="; s2; " Погрешность d = "; d 220 PRINT : PRINT "Для продолжения нажмите любую клавишу..." 230 IP INKEYf = "" THEN 230 240 END
308 Приложения 3°. Программа вычисления определенного интеграла методом двойного пересчете по формуле Гауссе о тремя узлам* на яанке PASCAL program IntegratlonByGauss; С******************************************************* - ВЫЧИСЛЕНИЕ ИНТЕГРАЛА С ЗАДАННОЙ ТОЧНОСТЬЮ epsilon МЕТОДОМ ДВОЙНОГО ПЕРЕСЧЕТА ПО ФОРМУЛЕ ГАУССА •ft*****************************************************} : uses crt; ; var l,n:Integer; a.b.c.d,d,e,fiff3,h,h1,b,sits2,x1,x2,x3:real; ch:char; ПОДПРОГРАММЫ ПОДЫНТЕГРАЛЬНАЯ ФУНКЦИЯ } Emotion f (x:real):real; BEGIN i := exp(x»x) END; procedure Pausa; BEGIN WRITELN; WRITELN ('Для продолжения нажмите любую клавишу...'); REPEAT ch := readkey UNTIL ch <> '*; END; { _, ОСНОВНАЯ ПРОГРАММА } BEGIN ClrScr; WRITELN ('Введите значения концов отрезка ta,b]'); READ (afb); WRITELN ('Введите точность вычисления epeilon'); READ (e); с := SQRTC /5); Ы := (b - a) / 2; el := с « hi; x2 := (b + a) / 2; П := f(x2 - el); ГЗ := f(x2 + el); si := hi * E * f1 + 8 * f(x2) + 5 * f3) / 9;
Приложение к главе 7. 52 309 п := 2; REPSAT h := (b - а) / п; Ы := h / 2; d := с • М; х2 := а 4 hi; xi := х2 - d; хЗ := х2 + d; в2 := О; FOR 1 := 1 ТО n DO BEGIN s2 := s2 + 5 ¦ Г(х1) + 8 * f(x2) + 5 » Г(хЗ); X1 := X1 + h; x2 := x2 + h; x3 := x3 + h; END; S2 := s2 » hi / 9; d := ABS(s1 - s2)/63; st := s2; n := 2»n; UNTIL Л < е; WRITELN ('Величина интеграла в =',32:9:6,' Погреши. d=',d:9:6); PAUSA; END. 4°. Программа вычисления определенного нятеграла методом двойного пересчета по формуле Гаусса с тремя узлами на языке FORTRAN fINCLUDE: 'EXEC.FI' program IntegratlonByGauss С im************************************************ О ВЫЧИСЛЕНИЕ ИНТЕГРАЛА С ЗАДАННОЙ ТОЧНОСТЬЮ epsiIon С МЕТОДОМ ДВОЙНОГО ПЕРЕСЧЕТА ПО ФОРМУЛЕ ГАУССА с ************************************************** INTEGER*2 system С ПОДЫНТЕГРАЛЬНАЯ ФУНКЦИЯ Г(х) = ехр(х**2) l=system('clB*C) WRITE (*,*) 'Введите значения концов отрезка [а,Ь]' READ (»,*) а,Ь WRITE (*,*) 'Введите точность вычисления epsilon1 READ (*,*) е с = SQRTC./5.) hi = (Ь - а) / 2 с1 = с * hi
310 Приложения х2 = (Ь + а) / 2 Л = Г(х2 - С1) ГЗ = 1 (х2 + d) si = hi * E » Л + 8 • Г(х2) + 5 • ГЗ) / 9 п = 2 d = 1 DO WHILE (d.GT.e) h = (b - a) / n hi = h / 2 d = с * hi x2 = a + hi xi = x2 - d x3 = x2 + d s2 = 0 DO i = 1,n s2 = 32 + 5 * f(x1) + 8 * f(x2) + 5 * f(x3) xi = x1 + ri X2 = x2 + h x3 = x3 + h END DO s2 = s2 * hi /9 d = ABS(s1 - s2)/63 si = s2 n = 2 * n END DO WRITE (*,'B(A12,E13.7))')' Вел. ИН. s=',s2,' Погр. d=*,d PAUSE 'Нажмите клавишу ENTER для продолжения...' END 5°. Программа вычисления определенного интеграла методой двойного пересчета по формуле Гаусса с тремя узлами на языке С /«я*************************************************** ВЫЧИСЛЕНИЕ ИНТЕГРАЛА С ЗАДАННОЙ ТОЧНОСТЬЮ EPSILON МЕТОДОМ ДВОЙНОГО ПЕРЕСЧЕТА ПО ФОРМУЛЕ ГАУССА «include <stdio.h>
Приложение к главе 7, §2 311 «Include <conlo.h> «include <math.h> «define G sqrtC.0 / 5.0) ПОДПРОГРАММ Подынтегральная, функция */ float Г(float x) { float у; у = exp(x*x); return у; } / у ОСНОВНАЯ ПРОГРАММА */ void main() { int i,n; float a.b.d,d,e,f1,f3,h,h1fs1,s2,x1tx2,x3; clrscr(); printf ("Введите значения концов отрезка ta,b]\n"); scanf ("*f«f",&a,&b); printf ("Введите точность вычисления epsilon\n"); scanf ("%f",&e); hi = (b - a) / 2; d = С * hi; x2 = (b + a) / 2; f1 = f (x2 - c1); f3 = f (x2 + d ); 81 = hi * E * f1 + 8 * f(x2) + 5 * ГЗ) / 9; n = 2; do { h = (b - a) / n; hi = h / 2; el = G * hi; x2 = a + hi; x1 = x2 - d; x3 = x2 + d ; s2 = 0; for (i = 1; i <= n; i++) { S2 = S2 + 5 * f(x1) + 8 » f (x2) + 5 » f(x3); x1 += h; x2 += h; x3 += h; >; s2 *= hi / 9; d = fabs(s1 - s2)/63; S1 = s2; n *= 2; } while (d >= e); printf ("Велич. интегр. = %l Погреши, d = 56f,a2,d); printf("\п\пНажмите любую клавишу для продолжения..."); getch();
8 1°. Блок-схема a.b.yO.m/ х=а; h=(b-a)/m; у1=у; у2=у; уЗ=у; сA)=0; сB)=0,5; сC)=0,5; сD)=1. X уршшюня первого поряди ж Рунга — Куттв ta,b] - отрезок, на котором определена равномерная сетка приближенного решения (шаг h); уО - начальное значение функ- функции при x=iO=a; ш+1 - число точек сетки i —<\ 1=1 ,ш у> [ End ] y1=y1+hf(x, yi) Вычисление приближенного решения на одном шаге г„ методом Эйлера | 1 -< 3=1,2 >- kO<J)=hf(x+2cC)h,y2+2cC)kO(J-1)) I ± у2=у2+(кОA)+кОB))/2 +—Ч >i >' -1)) уЗ=уЗ+(кA)+2кB)+2кC)+кD))/б методом Эйлера - Коши методом Рунге - Кутта x=x+h /"Вывод i.yi .уг.
Приложение к главе 8. §1 313 В программах к этому параграфу рассыатривается задача Ков у'= х?у, У\х=х = уо> На экран выводятся щибяивтшв ревенвя на отрезке 1а,Ы в виде таблицы *И значение функции. Ам ш млв9О^^нЗввввввяв ^ввншш^вв1ЖвввH^Р^Р в*8^ер9^вивмЯ> ^ввял&В^ввЖ жнОввввТ для дифференциального уравнения первого поряди методами Эйлера, Эйлера - Кони и Рунге - Кутта на языке BASIC 1 КЕМ ********************************************************* 2 REM РЕШЕНИЕ ЗАДАЧИ КОШ ДЛЯ ДИФЮРНЩИАЛЬНОГО УРАВНЕНИЯ 3 REH ПЕРВОГО ПОРЯДКА МЕТОДАМИ 4 REM ЭЙЛЕРА, ЭЙЛЕРА - КОШ, РУНГЕ - КУТТА 5 REM ********************************************************* 6 REM Правая часть дифференциального уравнения - функция f(х,у) 10 DEPINT I-J, M: DIM СD), Ю<2), кD) 20 DEP tal (х, у) = i + у 30 CLS 40 PRINT "Введите через запятую значения концов отрезка (а,Ь1" 50 ШРОТ а, Ъ 60 INPUT "Введите начальное значение функции уО при х=хО "; у 70 INPUT "Введите число шагов на отрезке (а,Ы"; ш 80 х = a: h = (Ь - а) / ш: у1 = у: у2 = у: уЗ = у 90 at = "х = ##-## yi = #.#####* у2 = #.«***** уЗ = #.#***#*" 100 Ъ% =" мет. Эйлера Нет. Э.-Кови Нет. Рунге-К." 110 PRINT : PRINT b» 120 PRINT using at; х; у1; у2; уз 130 сA) ,= 0: сB) = .5: сC) = .5: сD) = 1 140 POR i = 1 ТО m 150 yi = yi + h * ГпГ(х, у1) 160 ?0R J = 1 ТО 2 170 кОШ = h • ШГ(Х + 2 • c(J) • h, y2 + 2 • c(J) * kO(J - 1)) 180 NEXT 3 190 yZ = у2 + (kOA) + kOB)) / 2 200 POR J = 1 TO 4 210 к(Л) = h * ftrf(x + c(j) • h, уз + c(J) * k(J - 1)) 220 NEXT J 230 y3 = уЗ + (KAJ + 2 • k<2) + 2 • kC) + kD)) / 6
314. Прилояюнил 240 z = I + h 250 PRINT USING a*; z; yi; y2; уЗ 260 NEXT 1 270 PRINT : PRINT "Для продолжения наяште любую клавишу..." 280 IP INKEY* = "" THSJ 280 290 END 3°. Программа численного ранения задачи Коми для дифференциального уравнения первого порядка методами Эйлера, Э&яера - Кош и Рунге - Куттв на языке PASCAL program DlfEquatlonsOrFirstOrder; { ****ш*ш**ш***ш********мшшт**мшшш****шш*****ш*ш*шш******** РЕШЕНИЕ ЗАДАЧИ КОШ ДЛЯ ДИФФЕРЕНЦИАЛЬНОГО УРАВНЕНИЯ ПЕРВОГО ПОРЯДКА МЕТОДАМИ ЭЙЛЕРА, ЭЙЛЕРА - КОШИ, РУНГЕ - КУТТА uses Crt; const с:аггау[1..4] of real =<0,0.5,0.5,i); type соеГ= аггау[0..4] of real; var l,J,m:lnteger; a,b,b,x,y,y1,y2,y3:real; kO,k:coef; cluchar; ПОДПРОГРАММЫ > ( Правая часть дифференциального уравнения - функция Г(х,у)> function f(x,y:real):real; BEGIN Г := i + у END; procedure Pausa; BEGIN WRITELN; WRITELN ('Для продолжения нажмите любую клавишу...'); REPEAT ch := readkey UNTIL ch <> "; END;
Приложение к главе 8, §1 315 ОСНОВНАЯ ПРОГРАММА } BEGIN GlrScr; WRITELN ('Введите значения концов отрезка [а,Ы'); READ <a, Ь); WRITELN ('Введите начальное значение функции уО при х=хО'); READ (у); WRITELN ('Введите число значений функции на промежутке (а,ЪГ); READ (m); х := a; h := (b - а) / m; y1 := у; у2 := у; уЗ := у; WRITELN (' Метод Эйлера Метод Э.-Коши Метод Рунге-К.'); WRITELN ('х=\х:5:2,' у1=',у1:9:6,' у2=\у2:9:6,' уЗ=',уЗ:9:6); FOR 1 := 1 ТО m DO BEGIN у1 := у1 + h * f(x, y1); { < 1 Метод Эйлера} FOR 3 := 1 ТО 2 DO kO[J] : = h*r(x+2*ctj]*h, y2+2*c[J]« kOCJ-П); y2 := y2 + (kOMl + kO[2]) / 2;{ < ! Метод Эйлера-Коши} FOR 3 := 1 TO 4 DO { < ! Метод Рунге-Кутта} kfj] := h * Г(х + c[J] * h, y3 + c[JJ * ktj - 11); уЗ := уЗ + (kMl + 2*k[2] + 2*k[3] + k[4]) / 6; x := x + h; WRITELN ('x=',x:5:2,' y1=',y1:9:6,' y2=',y2:9:6,' уЗ=',уЗ:9:6); END; PAUSA; END. 4°. Программа численного решения задачи Коли для дифференциального уравнения первого порядка методами Эйлера, Эйлера - Коли и Рунге - Кутта на языке FORTRAN tINCLUDE: 'EXEG.FI1 program DifEquationsOfFirstOrder С ******************^************«************************* С РЕШЕНИЕ ЗАДАЧИ КОИМ ДЛЯ ДИФФЕРЕНЦИАЛЬНОГО УРАВНЕНИЯ С ПЕРВОГО ПОРЯДКА МЕТОДАМИ С ЭЙЛЕРА, ЭЙЛЕРА - КОШИ, РУНГЕ - КУТТА
316 Приложено* С ********************************************************* INTEGER*2 system КЕА1 к0@:2),к@:4) DIMHGION с D) G Правая часть дифференциального уравнения - функция Г(х,у) 1 (х„у) = х + у i=system('cls'C) WRITE (*,*) 'Введите значения концов отрезка [а.Ь]' READ (*,*) а,Ь WRITE (*,*)'Введите начальное значение функции уО при х=хО' READ (*,*) у WRITE (*,*)'Введите число шагов на отрезке [а.ЬГ READ (*,*) m х = а . h = (b - а) / m У1 = У У2. = у уз = у WRITE(*,tD(A5,E13.7))')' х=',х,'у1=',у1,'у2=',у2,(у3=',уЗ сA) = О сB) = 0.5 сC) = 0.5 СD) = 1 DO i = 1 ,т у1 = yl + h * f(x, y1) DO J = t, 2 kO(J)=h*f(x+2*c(j)*h, y2+2*c(J)*kO(j - 1)) END DO y2 = y2 + (kOA) + kOB)) / 2 DO J = 1, 4 kU)=h*:C<x + c(j) * h, y3 + c(J) * kC - 1)) END DO y3 = уЗ + (k(t) + 2 * kB) + 2 * kC) + kD)) /6 x = x + h WRITE(*,1D(A5,E13.7)I)' x=',x,'y1=',y1,'y2=(,y2,'уЗ=',уЗ END DO PAUSE 'Нажмите клавишу ENTER для продолжения...' END
Приложение к главе 8, §1 317 5°. Программа численного решения задачи Коми для дифференциального уравнения первого порядка методами Эйлера, Эйлере - Коми и Руяге - Кутта на языке С РЕШЕНИЕ ЗАДАЧИ КОШ ДЛЯ ДИФФЕРЕНЦИАЛЬНОГО УРАВНЕНИЯ ПЕРВОГО ПОРЯДКА МЕТОДАМИ ЭЙЛЕРА, ЭЙЛЕРА - КОШ, РУНГЕ - КУТТА «at*********************************************************/ «Include <stdio.h> «Include <conio.h> /* ПОДПРОГРАММА Правая часть дифференциального уравнения - функция Г(х,у)«/ float f(float i, float у) { float z; z = x + y; return z; ) /« ОСНОВНАЯ ПРОГРАММА «/ void maln() - { lnt ij.m; float a,bth,i,y,yi,y2,y3,ka[5],k[5]; float с[4]={0,.5,.5,1}; clrscrO; printГ ("Введите значения концов отрезка ta,b]\n"); scanf ("ЖГЖГ",ьа,&Ь); print! ("Введите начальное значение функции уО при х=хО\п"); scanf ("*Г",&у); printf ("Введите число значений функции на промежутке (а,Ы\п"); scanf (я%1",ш); х = a; h = (Ъ - а) / т; у1 = у2 = уЗ = у; prlntf (" Метод Эйлера Метод Э.-Коши Метод Рунге-К.\п"); prlntf ("X=*-5.2f у1=#Г y2=*f уЗ=ЖГ\Ц",х,у1,у2,уЗ); for (i = 1; i <= m; 1++) { yi += h « f (i, y1); /« <-. ! Метод Эйлера*/ for C = 1; J <= 2; J++) kQ[J] = h*f(x+2*ctj-1]*h, y2+2«ctj-1]* kQ[J-|]); y2 += (кОШ + kQ[2]) / 2; /* < ! Метод Эйлера-Коши«/ for (J = 1; J <= 4; J++) /« < 1 Метод Рунге-Кутта*/ k[j] = h * f(i + c[J-n « h, уз + ctJ-1] * ktj - П); y3 += (kt1]"+ 2«kt2] + 2«k[31 + kE4]) / 6;
318 Приложения i += h; prlntf ("l=«-5.2f y3=*f\n",X,y1,y2,y3); prlntf("\п\пНа*мите любую клавишу для продолжения..."); getch(); К §2 Блок-схеыа численного решения задачи Коши для системы дифференциальных уравнений первого порядка методом Рунге - Кутта x1=a; h=(b-a)/m; сA)=0; сB)=0,5; сC)=0,5; сD)=1. //Вывод х1 ,у1 A ),у1 {2)/ i=1 ,m n=1,2 -[ End ] n) = M(n.x.y(i),yB)) -,-< n=1, y1 (n)=y1 ,n)+2kB,n)+2kC.n)+kD.fn))/6 x1 , X1 =x1 +h
Приложение к главе 8, §2 319 В программах к этому параграфу рассматривается задача Ковш для системы дифференциальных уравнений первого порядка Уг|х=хо=Уго• Задача Коши для дифференциального уравнения второго порядка у* + у = 0. У\ж0=У0, У \х=хо=У'о приводится к задаче Коши для предыдущей системы, если обозначить У, №) = У(х), У2 = У\ (х) и у10 = у0. у20 = у?. Вычисления правых частей дифференциальных уравнений ведутся в подпрограммах. Заметим, что явной зависимости от г в данных функциях нет и, в частности, при компиляции программы на языке FORTRAN на экране появляется предупреждение о неиспользо- неиспользованной переменной х. При выполнении программы на экран выводятся приближенные ре- решения на отрезке [а,Ъ\ в виде таблицы т+1 значений двух функ- функций на равномерной сетке с шагом h. 2°. Программа численного решения задачи Коми для системы дифференциальных уравнений первого порядка методом Рунге - Кутта на языке BASIC 1 REM ************************************************** 2 НЕМ РЕШЕНИЕ ЗАДАЧИ КОШИ ДЛЯ СИСТЕМЫ ДИФФЕРЕНЦИАЛЬНЫХ 3 REM УРАВНЕНИИ ПЕРВОГО ПОРЯДКА МЕТОДОМ РУНГЕ - КУТТА 4 КЕМ *********************************************** 10 DEFINT I-J, M-N: DIM cD-), kD, 2), у<2), у1 B) 20 CLS 30 PRINT "Введите через запятую значения концов отрезка [а,Ъ]" 40 INPU? а, Ъ 50 PRINT "Введите через запятую начальные значения" 60 PRINT "функции ую и функции у20 при х=хо "; 70 INPG1' у1A), у1{2)
320 Првлояеяие к главе 8, §1 80 ШРОТ "Введите чшаю шагов на отрезке (а,Ы"; ш 90 at ¦ "х » «*.«* yi = #».#•*#*• у2 - #».!¦¦¦¦¦» 100 PRINT 110 PRINT USING at; x; yiA); yiB) 120 xi = a: h « (b - a) / ¦ 130 cA) = 0: cB) = .5: cC) = .5: cD) = 1 140 FOR 1 = 1 TO m 150 POR 1 = 1 TO 4 160 POR n = 1 TO 2 170 x = xi + c(J) • h: y(n) = yi(n) + c(J) • k(J - 1, n) 180 NEXT n 190 PORn = 1 TO 2 200 GOSUB 330 210 k(J, n) ¦ h • Г(п) 220 NEXT n 230 NEXT J 240 POR n = 1 TO 2 250 yi(n) = yi(n) + (kA,n) + 2«kB.n) + 2«kC,n) + kD,n)) / 6 260 NEXT n 270 xi = xi + h 280 PRINT USING at; xi; yi A); yi B) 290 NEXT 1 300 PRINT : PRINT "Для продолжения нашита любую клавишу..." зю IP mm* = "я them зю 320 END 330 fA) * yB): fB) = -yA) 340 RETURN 3°. Прохрамка чвсленаого решешш задачи Кош JUUX ^Я1СТ^ЯК JDiw6ei3e<OlBK8Jfflb^BU3C TDQBBB^BDb QB13B0FO ивтодюн Рунгв - Кутта на языке PiSC4L program MethodOfRungeKutt; { **************************************************. РЕШЕНИЕ ЗАДАЧИ КОШИ ДШ СИСТЕМЫ ДИФФЕРИЩИАЛЬНЫХ УРАВНЕНИИ ПЕРВОГО ПОРЯДКА МЕТОДОМ РУНГЕ - КУТТА ************************************%**********}
Принимаю к главе 8, 52 321 uses Crt; const с:аггауН..41 of real = @,0.5,0.5,1); type coetz = arrayto..4,1..2J of real; vect = array П..21 of real; таг i,j,n,m:Integer; a,b,h,x:real; y.ylrveet; K:coef2; Clirchar; 1ЮДПР0ГРАМА1 } { Правая часть дифференциального уравнения - функция Г(х,у)> function f(l:lnteger;i:real;y:vect):real; BBGIN CASE 1 OP 1: Г := yB1; 2: f := -уШ; END; procedure Pausa; BEGIN WRITEUI; WRITEDJ ('Для продолжения нажмите любую клавишу...'); REPEAT ch := readkey ШРРП. ch о • •; ОСНОВНАЯ ПРОГРАММА } BEGIN ClrScr; WRITEUT ('Введите значения концов отрезка (а,Ы'); READ (a, b); ffRITELN (.' Введите начальные значения'); WRITEIJi ('функции уЮ и функции у20 при х=хО'); READ (yUll, yH21); ffRITEIK ('Введите число значений функции на промежутке (а,Ы*); 11-469
322 Приложения READ (ro); i :» a; h := (b - а) / m; IRITEbM (•!='.x:5:2,f yi-'.yUI 1:9:6,' y2=\ytC2J:9:6); FOR 1 := 1 TO m DO BEGIN FOR. 3 := 1 TO 4 DO BEGIN FOR n := 1 TO 2 DO ytn] := y1tn] + c[J] * kE3 - 1, nJ; FOR n := 1 TO 2 DO ktj, n] := h * f(n, x + c[J] * h, y); END; FOR n := 1 TO 2 DO yi[n]:=y1tnl + (kti, nl + 2*kB,n] + 2*kt3,n] + kt4,n])/6; x :=x + h; WRITELN ((i=',i:5:2,1 y1=\y1I13:9:6,' y2=',y1[23:9:6); END; PAUSA; END. 4°. Программа численного решения задачи Коши для системы дифференциальных уравнений первого порядка методом Рунге - Кутта на языке FORTRAK IINCLUDE: 'EXEC.FI' program MethodOfRungeKutt С *****************«ж******************************* С РЕШЕНИЕ ЗАДАЧИ КОШИ ДЛЯ СИСТЕМЫ ДИФФЕРЕНЦИАЛЬНЫХ С УРАВНЕНИИ ПЕРВОГО ПОРЯДКА МЕТОДОМ РУНГЕ - КУТТА с *********************************************** INTEGER*2 system REAL k(O:4,2) DIMENSION СD),уB),у1B) i=system('clslC) WRITE (*,*) 'Введите значения концов отрезка [а.ЬГ READ (*,») a,b WRITE (*,*)' Введите начальные значения ' WRITE (»,«) 'функции у1О и функции у20 при х=хО'
Приложение к главе 8, §2 323 READ (*,*) У1A),У1B) WRITE (*,*)'Введите число шагов на отрезке (а.ЬГ READ (*,*) га I = a h = (b - а) / m WRITE («.ЧЗСАб.Е^.Т)I)' I=',i,'y1='fy1A),ly2=tIy1B) сA) = О С<2) =0.5 СC) =0.5 СD) = 1 DO i = 1,'m DO j = 1,4 DO n = 1,2 y(n) = yKn) + c(j) * kU - 1, n) END DO DO n = 1,2 k(J, n) = h * f(n, x + c(J) * h, y) END DO END DO DO n = 1,2 y1(n)=y1(n)+(kA,n)+2*kB, n)+2*kC,n)+kD,n))/6 END DO i = i + h WRITE (*,'C(А5,Е13.Т))')' x=',x,'y1=',y1A),*у2=',у1B) END IK) PAUSE 'Нажмите клавишу ENTER для продолжения...' END FUNCTION Г (i, I, y) DIMENSION уB) SELECT CASE (i) CASE A) Г = УB) CASE B) Г = -УA) END SELECT RETURN END
324 Приложения 5°. Программ! численного решения задачи Кон методой Рунге - Купа на явыке С /««««««««««««««к*********************************** РЕШЕНИЕ ЗАДАЧИ КОШ ДЛЯ СИСТЕМЫ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИИ ПЕРВОГО ПОРЯДКА МЕТОДОМ РУНГЕ - КУТТА ««««««ж******************************************/ «include <stdlo.n> «include <conio.h> / у .._— _ ПОДПРОГРАММА Правые части дифференциальных уравнений */ float f(int i, rioat x, rioat y[31) { float z; switch (i) { case 1: z = yC2]; break; case 2: z = -yli); break; return z; ОСНОВНАЯ ПРОГРАММА */ void maln() { int i,3,n,m; float a,b,h,x,yt3],yit3],k[51t3]; float ct4]={0,.5,.5,1}; clrscrO; printf ("Введите значения ковдов отрезка ta,b]\n"); scanf {-%f«f",&a,&b); printГ ("Введите начальные значения п"); printf ("функции уЮ и функции у20 при х=хО\п"); Bcanf C%f%r",&yiti],&yit23); prlntr ("Введите число значении функции на промежутке (а,Ь)\пи); scan! (я«1н,8сш); х = a; h = (b - а) / ш;
Приложение к глав» в, J2 325 print* ("x=*-5.2f y1=*9.6f y2=*9.6f\n",x,yim,yH2]); for (i » 1; l <«• ю; 1++) { for (J = is 3 <- 4; J++) { for (n в 1; n <= 2; гн-+) y[nl - yUn] + c[J-1] * k[J - i][nl; » for (n a 1; n <= 2; n++) = h « f(n, x + ccd-n « h, y); for (n = 1; n <= 2; n++) yitn] += (kti]tn]+2«kE2][n]+2*kf3Jfn]+k[4]tn])/6; x += h; prlntf ("X=%-5.2f y1=«9.6f y2=«9.6f\nB,X,y1C1],y1t2]); }; prlntrc\n\nHaiKMHTe любую клавишу для продолжения..."); getchO; > 6°. Программа численного реиения задачи Коши для систеш дифференциальных уравнений первого порядка методом Рунге - Кутта на языке QUICKBASIC При решении, например, задачи Кош для системы двух дифферен- дифференциальных уравнений второго порядка * + z^ + 3(z1 - z2) = etra, 'z + z'z + 5(z2 - z^) = 0, ее можно свести к следующей задаче Коши для системы дифференци- дифференциальных уравнений первого порядка: У'3 - Уд- д ид = " Численное решение последней задачи на сетке отрезка Са.Ы pea-
326 Приложения лизуется с помощью программы. Решение исходной задачи получается автоматически, если учесть, что z^(x) - у.,(х), a z2(x) = * ************************************************** ' РЕШЕНИЕ ЗАДАЧИ КОШ ДЛЯ СИСТЕМЫ ДИФФЕРЕНЦИАЛЬНЫХ 1 УРАВНЕНИИ ПЕВОГО ПОРЯДКА МЕТОДОМ РУНГЕ - КУТТА ' *********************************************** DECLARE SUB pausa () DECLARE FUNCTION Г! AЖ, xl, y!()) DEPINT I-J, M-N: DIM cD), kD, 4), yD), yiD) CLS PRINT " Введите через запятую" PRINT "значения концов отрезка Ca,b]" INPUT a, b PRINT "Введите через запятую начальные значения" PRINT "функций уЮ, у20, уЗО, у40 при х=хО" INPUT y1A), у1B), у1C), У1D) PRINT "Введите число значений функции на промежутке (а,Ь]" INPUT га Я1 * — "т — ЛЛ Alt V1 — ЛЛ ***llllll тг? — ** и II и и и* " а2$ = "уЗ = ##.#####» у4 = ««.«####«" а$ = а1$ + а2$ PRINT USING at; x; у1A); у1{2); у1C); у1D) x = a: h = (b - a) / m cA) = 0: cB) = .5: cC) = .5: cD) = 1 FOR 1 = 1 TO ra FOR J = 1 TO 4 FOR n = 1 TO 4 y(n) = y1(n) + c(d) ikC-l,n) NEXT FOR n = 1 TO 4 Ш, n) = h * f(n, x + c(d) * h, yO) NEXT NEXT FOR n = 1 TO 4 yi(n> = yi(n) + (HA, n) + 2*kB, n) + 2*kC, n) + kD, n)) / б NEXT: x = x + h
Приложение к главе 8, §2 327 PRINT USING а$; х; у1A); yi{2); у1C); у1D) NEXT GALL pausa END DEFSNG I-J, M-N FUNCTION 1 A%, x, y()) DEFINT I SELECT CASE i CASE 1: Г = yB) CASE 2: f = -yB) -,3 * (yA ) - yC)) + SIN(x) CASE 3: f = yD) CASE 4: f = -yD) - 5 * (yC) - yd)) END SELECT END FUNCTION DEPSNG I sub pausa PRINT : PRINT "Для продолжения нажмите любую клавишу..." DO LOOP WHILE INKEYt END SUB
1°. К ГЛАВК 9 К «3 В блок-схеме и программах настоящего параграфа рассматрива- рассматривается унимодальная на отрезке ta.oJ функция /(х) = 2л2 - hue (си. пример 3 из }3). Для этой функции находится точка локаль- локального минимума с заданной точностью е. / Ввод а,Ь, е I |fU)=2x2-lnx| . L к=о,1 d = b - а /вывод с=(а+Ь)/2; di=k(b-a)/2; Х1=с-ч11; x2=c+d1; У1=Г(Х1); у2=Г(х2) Т Ь=х2 а=х1 а=х1; Ь=х2 End
Пршюягаю к главе 9, $3 329 HBVOJBOH ООЛОНДОЮРО JBBJHUBD1 НЯ XSKBGO BASIC 1 RHI ********************************************* 2 REM МЕТОД ПОЛОВИННОГО ДЕЛЕНИЯ ДЛЯ ОПРЕДЕЛЕНИЯ 3 REM ТОЧКИ МИНИМУМА ФУНКЦИИ ОДНОЙ ПЕРЕМЕННОЙ 4 КЕМ ««««««««««««««««««««««««««««««««««««««««««««в 10 CIS 20 PRINT "Введите через запятую значения концов " 30 ШРОТ "отрезка [а,Ы унимодальности функции Г(х) "; a, b 40 INPUT "Задайте точность нахождения точки mln Г(х) "; е 50 DEP ftlf (X) = 2 « X л 2 - LOG(X) 60 к = .1 70 d = b - a: GOSUB 210 80 IP d < е THEN 150 90 с = (а + b) / 2: di = к « (b - а) / 2 100 xi = с - di: x2 = с + d1 110 у1 = ШГ(х1): у2 = ГШ(х2) 120 IP yi < у2 THEM b = Х2: GOTO 70 130 IP у1 > у2 THEN а = х1: GOTO 70 140 а = х1: b = x2: GOTO 70 150 PRINT USING "Т. минимума х=##.###### погр.=#.#####"; a; d 160 GOSUB 180 170 END 172 REM ПОДПРОГРАММЫ 180 PRINT : PRINT "Для продолжения нажмите любую клавишу..." 190 IP ШКЕУ$ = "" THEN 190 200 RETURN 201 REM — — — — 210 CLS 220 PRINT "Отрезок унимодальности Ca.bJ" 230 PRINT USING "a =##.###### b =##.######"; a; b 240 GOSUB 180 250 RETURN
330 Приложения 3°. Щшгршша поиска мявшую функции сдвой переыенвоа методом пожми иного деления на ганке PASCAL { ********************************************* МЕТОД ПОЛОВИННОГО ДЕЛЕНИЯ ДЛЯ ОПРЕДЕЛЕНИЯ ТОЧКИ МИНИМУМА ФУНКЦИИ ОДНОЙ ПЕРЕМЕННОЙ • «ж*******************************************} program FindMinOfFuncByDlv;¦ uses Crt; const k = 0.1; var a,b,c,d,di,e,x1,x2,y1,y2:real; ch:cliar; ^ ПОДПРОГРАММЫ } procedure PAUSA; BEGIN WRITELN; WRITELN ('Для продолжения нажмите любую клавишу...'); REPEAT ch := readkey UNTIL ch о "; END; function f(x:real):real; BEGIN Г := 2*x*x - Ln(x); ' END; ОСНОВНАЯ ПРОГРАММА > BEGIN ClrScr; WRITELN (' Введите значения концов*); WRITELN ('отрезка ta.b] унимодальности функции I(xI); READ (a, b); WRITELN ('Задайте точность нахождения точки mln f(x)'); READ (e); REPEAT d := b - a;
Приложение к главе 9, §3 331 ClrScr; WRITELN ('Отрезок унимодальности [а,ЬГ); 1RMELN ('a = f,a:9:6,' b = f,b:9:6); Fausa; с := (а + b) / 2; d1 := k.« (b - а) / 2; x1 := с - d1; x2 := с + d1; yi := f(x1); y2 := Г(х2); IP yi < y2 THEN b := x2; IP y1 > y2 THEN a := n; IF y1 = y2 THEN BEGIN a := z1; b := x2; END; UNTIL d < e; WRITELN ('Т. минимума z = ',a:9:6,' norp. = ',d:9:6); Pausa; END. 4°. Программа поиска минимума функции одной переменной методом половинного деления на языке FORTRAN tINCLUDE: 'EXEC.FI1 С ********************************************* С МЕТОД ПОЛОВИННОГО ДЕЛЕНИЯ ДЛЯ ОПРЕДЕЛЕНИЯ С ТОЧКИ МИНИМУМА ФУНКЦИИ ОДНОЙ ПЕРЕМЕННОЙ с ********************************************* program FindMinOfFuncByDlv INTEGER*2 system REAL k 1 Ш = 2 * I * X - LOG(X) l=system('cls'C) WRITE (*,*) ' Введите значения концов* WRITE (*,*) 'отрезка [a,b] унимодальности функции f(x)' READ (*,*) a, b WRITE (*,«) 'Задайте точность нахождения точки mln f(x)' READ (*,*) e
332 , Приложенмя WRITE (*.«) к - .1 d ш 1 DO WHILE (d.GE.e) d - b - a l=systein('clB'C) WRITE (*,*) 'Отрезок унимодальности 1а,Ы' WRITE (*,'(A4,F9.6,A5,P9.6)') ' a=',a,' b =\ PAUSE 'Нажмите клавишу ENTER для продолжения.. с = (а + b) / 2 di = k * (b - а) / 2 х1 = с - di x2 = с + d1 y1 y2 = IP (y1.UP.y2) b = x2 IP (y1.GT.y2) a - H IF (y1.EQ.y2) THEN a « ii b = Z2 END IP END DO WRITE (*,'(А10,Р9.6,А7,Р9.6)'), ' Т. мин х=',а,' norp.=\d PAUSE 'Нашлите клавишу ENTER для продолжения...' END 5°. Программ поиска минимума функции одной переменной методой половинного деления на языке С /ж жж**жжжжжжж*жжжжжжжжжжж*ж*жжжжжж**жжж*жжж*«жж МЕТОД ПОЛОВИННОГО ДЕЛЕНИЯ ДЛЯ ОПРЕДЕЛЕНИЯ ТОЧКИ МИНИМУМА ДЛЯ ФУНКЦИИ ОДНОЙ ПЕРЕМЕННОЙ жж*****ж***ж**жж**ж*жжжж*ж*ж*жжжжжжж*ж*жж***«/ #lnclude <stdlo.h> «include «jonio.h> «include <math.h>
Приложение к главе 9. S3 333 ¦define К 0.1 /__ mm тштшшт-.. J ¦ ттгттш — -_.— —»»»—— — » — — т — ¦¦ —— ¦¦ —— — _ ПОДПРОГРАММЫ «/ float f(float г) { float у; у - 2*x«x - log(x); return y; ) /• «/ void pausa() { printf("\n\nHajKM_.Te любую клавишу для продолжения..."); getchO; } /* ОСНОВНАЯ ПРОГРАММА */ void main() { float a,_,c,d,di,e,x1,x2,yT,y2; clracr(); printf (" Введите значения концов п"); printf ("отрезка [a,b] унимодальности функции f(x)\n"); scanf ("«f%f",_a,_b); prlntf ("Задайте точность нахождения точки mln f(x)\n"); scanf ("%f"-,&e); do { d = b - a; clrscr();. prlntf ("Отрезок унимодальности [a,b]\n"); prlntf ("a = %f b = %f",a,b); pausa(); с - (a + b) / 2; di = К * (b - a) / 2; xl = с - di; x2 = с + d1; yi - f(H); y2 - f(z2); If (y1 < y2) b = x2; if (yi > y2) a =¦ х1; ' if (у1 -- у2) С а = xl; b = x2; }; } while (d >= e); prlntf ("\п\пТочка минимума х - %t погреши. = %f",a,d); pausa();
334 Приложения 11. Блок-схема поиска минимума функции одной переменное методом золотого сечения Ввод а,Ь, I =2xc-lra: II sub начало || k = V5 -2; o=(a+b)/2; d1=k(b-a)/2; х1 =c-d1; x2=c+d1; y1=f(x1); y2=f(x2) d=b-a; d2=x2-x1 ъ.,ъ/ //Вывод a.d/' b=x2; x2=x1; y2=y1 z1=a+d2; y1=f(i1) [ End ] a=x1; x1=x2; y1=y2 x2=b-d2; y2=f(x2) a=H ; b =x2, Иsup начало и 21. Программа поиска минимума функции одной переменной методом золотого сечения на языке BASIC 1 КЕМ ********************************************* 2'КЕМ МЕТОД ЗОЛОТОГО СЕЧЕНИЯ ПОИСКА 3 REM ТОЧКИ МИНИМУМА ФУНКЦИИ ОДНОЙ ПЕРЕМЕННОЙ 4 REM *********************************************
Приложена» к главе 9, §3 335 10 DEFDBL А - Р, К, X - Y: CIS 20 PRINT "Введите через запятую значения концов " 30 INPUT "отрезка Са.Ы унимодальности функции 1(х) "; a, b 40 INPUT "Задайте точность нахождения точки mln t(x) "; е 50 DEP ГиГ (I) = 2 * I Л 2 - LOG(x) 60 k = SQRE) - 2: GOSUB 230 70 d = b - a: d2 = x2 - x1: GOSUB 180 80 IP d < e THEN 120 90 IP yKy2 THEN b=x2: x2=x1:y2=y1:x1=a+d2:y1=fnl(x1): GOTO TO 100 IP y1>y2 THEN a=z1: Xi=x2:yi=y2:x2=b-d2:y2=fnf(x2): GOTO 70 110 a = X1: b = x2: GOSUB 230: GOTO TO 120 PRINT USING "Т. минимума x=##.###### norp.=#.#####"; a; d 130 GOSUB 150 140 END 141 REM 142 REM ПОДПРОГРАММЫ 1 A'i BTM _ i чо ?\jjm —————————.———. ___————————————————— .__—— — —__ 150 PRINT : PRINT "Для продолжения нажмите любую клавишу..." 160 IP 1ЛКВД = "" THEN 160 , 1Т0 RETURN Швм - _ j\j^m —— — — — —— — — 180 CLS 190 PRINT "Окзезок унимодальности fa.b]" 200 PRINT USING "a =##.###### b =##.######"; a; b 210 GOSUB 150 220 RETURN 230 с = (a + b) / 2: di = k * (b - a) / 2 240 H = с - d1: x2 = о + d1 250 y1 = Inl(x1): y2 = ГпГ(х2) 260 RETURN 31. Программа поиска минимума функции одной переменной методом золотого сечения на языке PASCAL С ********************************************* МЕТОД ЗОЛОТОГО СЕЧЕНИЯ ПОИСКА • ТОЧКИ МИНИМУМА ФУНКЦИИ ОДНОЙ ПЕРЕМЕННОЙ **********к**к*****к*****************к*******} program FindMlnOfFuncByGoldSec;
336 Приложения uses Crt; var a,b,dfd2,e,i1,x2,y1,y2:real; ch:char; ПОДПРОГРАММ } procedure PAUSA; BEGIN WRITELN; WRITELN ('Для продолжения нажмите любую клавишу...'); REPEAT ch := readkey UNTIL ch о "; END; function I(x:real):real; BEGIN I := 2*x*x - Ln(x); END; i. } procedure frombeglnnlng; var k,c,d1 :real; BEGIN k := SQRTE) - 2; с := (a + b) / 2; di := k * (b - a) / 2; x1 := с - di; x2 := с + di; У1 :- 14x1); У2 := Г(хн); END; / ОСНОВНАЯ ПРОГРАММА } BEGIN ClrScr; WRITELN (' Введите значения концов'); WRITELN ('отрезка ta.b] унимодальности функции I(z)'); READ (a, b); WRITELN ('Задайте точность нахождения точки mln I(i)'); READ (e); Irombeglimlng; REPEAT d := b - a; d2 := x2 - x1;
Црщдоявшю к главе 9, 53 337 ClrScr; WRTTELN ('Отрезок унимодальности [а,Ь]'); WRITELN ('а » ',8:9:6,' b - f,b:9:6); Pausa; IP yi < y2 THEH BEGIN b := x2; x2 := xi; y2 := yi; xi := a + d2; yi := f(xi); END. ELSE BEGIN IP y1 > y2 THEN BEGIN a := i1; z1 := x2; yi := y2; i2 := b - C2; y2 := f(x2); END ELSE BEGIN a := x1; b := x2; frombeglnning; END; END; UNTIL d < e; WRITELN ('Т. минимума x = ',a:9:6,' norp. = ',A:9:6); Pausa; END. 41. Программа поиска минвмуыа функции одной переменное методом золотого сечения на языке FORTRAN $INCLUDE: 'EXEC.PI' С Ж**************************»:»:*************»:** С МЕТОД ЗОЛОТОГО СЕЧЕНИЯ ПОИСКА С ТОЧКИ МИНИМУМА ФУНКЦИИ ОДНОЙ ПЕРЕМЕННОЙ С ««ft«ft*ft*«««ftftftftftft**«ftft*«ft««ftftftft**ft«ft*«««ft««ft« program PlndMlnOfFuncByGoldSec INTEGER*2 system COMMON a,b,H,x2,y1,y2 l=system('cls'C) WRITE (*,»)¦• Введите значения концов*
338 Приложения WRITS (*,*) 'отрезка Ca,b] унимодальности функции Их)' READ (*,*) a, b WRITE (*,*) 'Задайте точность нахождения точки mln Их)' READ (*,*) е WRITE (*,*) CALL frombeglnnlng d = 1 DO WHILE (d.GE.e) d = b - a d2 = x2 - X1 l=system('cls'C) WRITE (*,*) 'Отрезок унимодальности [а,ЬГ WRITE (*,'(A4,F9.6,A5,F9.6)') ' a=',a,' b=', b PAUSE 'Нажмите клавишу ENTER для продолжения...' IF (y1.LT.y2) THEN b = x2 x2 = x1 У2 = y1 x1 = a + d2 yi = f(x1) ELSE IP (y1.GT.y2) THEN a = x1 X1 = x2 У1 = y2 X2 = b - d2 y2 = f(i2) ELSE a = xi b = x2 GALL frombeglnnlng END IP END IP" END DO WRITE (*,'(A10,F9.6,A7,F9.6)') ' Т. минх=',а,' norp.=',d PAUSE 'Налмите клавишу ENTER для продолжения...' END FUNCTION f(x)
Приложение к главе 9, 53 339 f = RETURN END 2« SUBROUTINE REAL к COMMON a,b, к = SQRTE; с = d1 = ii = x2 = У1 = У2 = RETURN END (a = к = с = с C«I - LOG (I) rrombeginnlng ,11,x2,y1(y2 I -2 + b) / 2 * (b - a) / 2 - d1 + df = Г(х1) 51. Программа поиска минимума функции одной переменной методом золотого сечения на языке С /* ********************************************* МЕТОД ЗОЛОТОГО СЕЧЕНИЯ ДЛЯ ПОИСКА ТОЧКИ МИНИМУМА ФУНКЦИИ ОДНОЙ ПЕРЕМЕННОЙ ««««ж****************************************/ #include <stdlo.h> «Include <conio.h> «Include <math.h> Mefine К (sqrtE)-2) float a,b,x1 ,x2,y1,y2; /* ——___ ПОДПРОГРАММЫ «/ float f(float i) { float у; у = 2*x*x - log(i); return y; } /A _ _ _ A/ / • .—.—— — — ^^_ ______ _ ___ _____________________ щ^ void pausaO { printf("\п\пНажмите любую клавишу для продолжения..."); getch();
340 Приложения то id rrombeginnlngO { float c,di; с - (a + b) / 2; d1 = К * (b - a) / 2; xi - с - di; _2 - с + di; ; y2 = f(x2); ¦ / * —•—-_-—————-_•_-________-._-__-_______________________ _-_._.____-___-_-_-_____-___. ОСНОВНАЯ ПРОГРАММА */ void main() { float d,<J2,e; clrscrO; printf (" Введите значения концов пи); prlntr ("отрезка [a,b] унимодальности функции f(x)\n"); ecanf C%r%f"f&a,&b); printf ("Задайте точность нахождения точки mln f(x)\n"); seanf ("%f",&e); frombeginningO; do {d-b-a;d2=_2-x1; clrscrO; printf ("Отрезок унимодальности [a,b]\n"); printr ("a = %1 b = %f",a,b); pausa(); if (У1 < У2) { b ¦- x2; x2 = xi; y_ = yi; xi = a + d2; yi = f(xi);} else { if (yi > y2) { a = xi; ii = _2; y1 = y2; x2 = b - d2; y2 = f(x2);> else { a - xi; b = x2; frombeginning()';.} while (d >= e); printf ("\п\пТочка минимума х - %f погреши. - iSf.a.d); pausa();
Приложение к главе 9. §3 341 1 . Блок-схема поиска минимума функции одной переменной методом сканирования х, f(x)=2x2-lnx h=0,2; К=4; х1=х; y=f(x) xi=xi+h; yi=f(xi); d=|h| x.y, x1 ,yl// x=x1; у=у1 h=-h/K //Вывод End 2 . Программа поиска минимума функции одной переменной методом сканирования на языке BASIC 1 REM ««««ж**************************************** 2 КЕМ ПОИСК ТОЧКИ МИНИМУМА ФУНКЦИИ ОДНОЙ ПЕРЕМЕННОЙ 3 REM МЕТОДОМ СКАНИРОВАНИЯ 4 КЕМ ********************************************* 10 CLS 20 INPUT "Введите некоторое значение х > 0 "; х 30 INPUT "Задайте точность нахождения точки mln Г(х) "; е 40 DEF fnf (X) = 2 * X Л 2 - LOG(X) 50 h = .2: К = 4 60 х1 = х: у = ftrf(x): GOTO 80 70 х = х1: у = у1
342 Приложения 80 ii = ii + h: yi = ftrf(xi): d = ABS(h): GOSUB 170 90 IP y1 < у THEN GOTO 70 100 IP d > e THEN h = -h / K: GOTO 70 110 PRINT USING "Т. минимума х=##.###### погр.=#.#####"; i; d 120 GOSUB 140 130 END 132 REM ПОДПРОГРАММЫ 133 REM 140 PRINT : PRINT "Для продолжения нажмите любую клавишу..." 150 IF INKEY* = "" THEN 150 160 RETURN Шнрм 1T0 CIS 180 PRINT "Два последовательных значения аргумента х, х1" 190 PRINT USING "x =##.##«### х1 =#*.####*#"; х; х1 200 PRINT USING "у =##.###### у1 =#«.######"; у; у1 210 GOSUB 140 220 RETURN З2. Програиыа поиска мишшума функции одной переменной методом сканирования на языке PASCAL { к******************************************** ПОИСК ТОЧКИ МИНИМУМА ФУНКЦИИ ОДНОЙ ПЕРЕМЕННОЙ МЕТОДОМ СКАНИРОВАНИЯ «mm******************************************} program PlndMinOfPuncByScanMeth; uses Grt; const К = 4; var a:boolean; d,e,h,x,x1,у,у1:real; chrchar; ^ ПОДПРОГРАММЫ } procedure PAUSA;
Приложение к главе 9, S3 343 BEGIN WRITELN; WRITELN ('Для продолжения нажмите любую клавишу...'); REPEAT ch := readkey UNTIL ch О "; END; function f(x:real):real; BEGIN t := 2*x*x - Ln(x); END; ОСНОВНАЯ ПРОГРАММА } BEGIN ClrScr; WRITELN ('Введите некоторое значение х > 0 '); READ (x); WRITELN ('Задайте точность нахождения точки min f(x)'); READ (e); h := 0.2; х1 := х; у := Г(х); REPEAT d := ABS(h); x1 := xi + h; y1 := i'(xi); a := (у1 >= у); { Вывод на экран промежуточных вычислений } ClrScr; WRITELN ('Два последовательных значения аргумента х, хГ); WRITELN ('х = ',х:9:б,' х1 = ',х1:9:6); WRITELN ('у = ',у:9:б,' у1 = ',у1:9:6); Pausa; г \ IF a THEN Л := - h / К; х := х1; у := у1; UNTIL a AND (eke); х := х + h * К; WRITELN ('Т. минимума х = ',х:9:6,' погр. = *,d:9:6); Pausa; END.
344 Приложения 42. Т"т—г шшжа ишжцуиа #ушщш одаой переменной методом сктицююнтя на яанке ГОЯВШГ fZMGLDDE: 'ШС.7Г С ********************************************** С ПОИСК ТОЧКИ МИНИМУМА ФУНКЦИИ ОДНОЙ ПЕРЕМЕННОЙ С МЕТОДОМ СКАНИРОВАНИЯ с ********************************************** program PlndMlnOfPuncByScanMeth INTBGER*2 system LOGICAL a Ш) = 2*1*1 - LOG (I) i=system(tcls'C) WRITE (*,*) 'Введите некоторое значение х > О' DEAD (*,*) X WRITE (*,*) 'Задайте точность наховдения точки mln t(x)' READ («,*) e WRITE (•,*) h = .2 К = 4 у = f(x) x1 = i d = t DO WHILE (a.OR.(d.GE.e)) x1 = x1 + h У1 = Г(х1) a = (y1.LT.y) ч d = ABS(n) С — Вывод на экран промежуточных вычислений l=system('cls'C) WRITE (*,*) 'Отрезок унимодальности [а,Ь]' WRITE (*,'(A4fP9.6,A6,P9.6)') ' х=\Х,' х1 =', XI WRITE (*,'(A4,P9.6,A6,P9.6)') ' у =',у,1 у1 =', У1 PAUSE 'Нажмите клавишу ENTER для продолжения...' IP (.NOT.a) h = -h/K х = Х1 У = У1 END DO
Щжложенне к главе 9, 93 345 X = X + h*K irite {«.'(Аю.ге.бдт.ге.бI) • т. минх=',х,' norp.-'.d PAUSE 'Нажмите клавишу вЮШ для продсипюния...' ЭТО 52. Прогртшп поиска шникуна функции сдвой оеременяой методам сканирования на языке С /* г******************************************** ПОИСК ТОЧКИ МИНИМУМА ФУНКЦИИ ОДЕЮИ ПЕРЕМЕННОЙ МЕТОДОМ СКАНИРОВАНИЯ «Include <stdlo.h> ¦Include <conlo.h> «include <math.h> «define К 4 ПОДПРОГРАММЫ */ rioat f(float x) { float у; у = 2*x*x - log(x); return y; ) /» «/ Told pausa{) {printГ{"\п\пНашите любую клавишу для продолжения...Чп"); getch(); ОСНОВНАЯ ПРОГРАММА */ void maln<) { short a; float d,e,h,x,x1,y,y1; clrscr(); printf ("Введите некоторое значение х > O\n"); scanf ("*f",«kx); prlntr ("Задайте точность нахождения точки min f(x)\n"); scanf (H*f",&e); h = 0.2; xi = x; у = f{x); do { d = fabs(h); xf += n; Я = tW); a = (yi < y);
346 Приложения /« — Вывод на экран промежуточных вычислений clrecr(); printr ("Два последовательных значения"); print* (" аргумента х, х1\п"); printf ("х « %1 х1 = ЖГ\п",х,х1); prlntf ("у = «f у1 = *Ап",у,у1); pausa(); /* _ __ If (!a) h /= - К; х = х1; у = у1; «/ while (a !l d >= е); х += h * К; prlntf ("ЧпТочка минимума х = %1 погрешность pausa(); = Xf.x.d); К 54 1°. Блок-схеыа поиска минимума функции двух переменных методой покоординатного спуска //Ввод |f(x1.x2)=(xf+i. I }, е// J+(х1+х|-ТJ| h=0,2; K=2; e1=e/K d=|h| /"Вывод хл,х2, h=h/K h1=h; I минимизация f<x1,x2) no Xj Hi.. i I iiiimiii.ii I и и . /"Вывод x.pXg. End]
Приложение к главе 9. §4 347 ПОДПРОГРАММА ОДНОМЕРНОЙ МИНИМИЗАЦИИ МЕТОДОМ СКАНИРОВАНИЯ ПО ПЕРЕМЕННОЙ Х минимизация f(x1,z2) по В блок-схеме и программах рассматривается функция Химмель- <5лау - 11) - 7J, для которой находятся точки локального минимума. Вычисления по программам приведены в таблицах к примеру 1(см. с. 176). Структура программ допускает их естественное обобщение для поиска локального минимума функции трех и более переменных. Условие A4) прекращения вычислительной процедуры при достижении заданной точности е заменено практически равноценным, особенно при достижении высокой точности, условием \Щ < е. Шаг h - стар- стартовое изменение переменной в задаче одномерной минимизации, уменьшающееся от одного этапа вычислений к другому в К раз (це- (целое число А>2). Одномерная минимизация осуществляется с умень- уменьшающимся шагом h^ до выполнения условия \h.\ < в.. Точность е1 в одномерной задаче принята несколько более высокой по сравнению се: ?.j= б/к. Если положить h отличным от принятого в программе h = 0.2 и изменить начальный вектор х@^, то вычисления по прог- программе снова приведут к одной из четырех точек локального миниму- минимума функции Химмельблау.
348 Приложения 2°. Программ пояска минимума функции двух перепетых методом покоординатного спуска на языке BASIC 1 REM г************************************!******* 2 REM ПОИСК ТОЧКИ МИНИМУМА ФУНКЦИИ ДВУХ ПЕРЕМЕННЫХ 3 REM МЕТОДОМ ПОКСЮРДИНАТНОГО СПУСКА 4 REM in******************************************* 10 DEF fnf (И, Х2) = \х1А2 + Х2 - 11)А2 + (Х1 + Х2Л2 - 7)А2 20 DEPINT I: DIM хB) 30 CLS 40 PRINT "Введите координаты начального вектора (Х1,х2)" 50 FOR 1 = 1 ТО 2 60 INPUT i(i) 70 NEXT I 80 INPUT "Задайте точность наховдения точки mln f(x1,x2) н; е 90 И = .2: К » 2: : е1 = е / К: d = ABS(h) 100 GOSUB 260 110 FOR 1 = 1 ТО 2 120 Ы = h: GOSUB 200 130 NEXT 1 140 d - ABS(Ji): IP d > e THEN GOSUB 260: Л = Л / K: GOTO 110 150 a* - "Т. минимума х1=##.###### x2=##.###### norp.=#.######" 160 PRINT : PRINT USING a$; xA); xB); e 170 PRINT USING nf(x1,x2) =###.######"; fnf<XA), XB)) 180 GOSUB 330 190 END 1У1 192 . QO 200 210 220 230 240 250 d_D 1 ?60 KKM RSM XIVU Z : z -. Mi IP IP . fnf(xd), XB)) : Z1 L) = x(i) + M: z Z1 < z THEN GOTO d1 > e1 THEN hi RETURN REM 0ТЯ ПОДПРОГРАММЫ : GOTO 220 1 = fnf(xA), xB)): d1 = ABS(U1)' 210 - -hi / K: GOTO 210 270 PRINT "Вектор приближения (х1,х2) на данном шаге вычисления"
Приложение к главе 9, §4 349 280 Ь| - "Х1-##.###### х2 =*#.###### • 290 PRINT USING b*; хA); хB) 300 PRINT USING nf(x1,x2) =*****. 1"; flxf(xA), xB)) 310 GOSUB 330 320 RETURN noi X)VU oc. i цып ————— 330 PRINT : PRINT "Для продолжения нажмите любую клавишу..." 340 IF ШКВД = "" THEN 340 350 RETURN 3°. Программа поиска минимума функции двух переменных методом покоординатного спуска на языке PASCAL program MlnOfFuncByGoordDescent; { о***»**»*»»********»»»*»**»*»**»»*»**»****** ПОИСК ТОЧКИ МИНИМУМА ФУНКЦИИ ДВУХ ПЕРМЕННЫХ МЕТОДОМ ПОКООРДМНАТНОГО СПУСКА «к*»**»***»»»»*****»»**»****»***********»***} uses Grt; const п = 2; К=2; type vector=arrayC1..п] of real; var i:Integer; d.e.et,h,hi,z:real; x:vector; ch:char; ^ ПОДПРОГРАММЫ } procedure PAUSA; BEGIN WRI.TELN; WRITELN ('Для продолжения нажмите любую клавишу...'); REPEAT ch := readkey UNTIL ch <> "; END; ? у function f(x:vector):real; v var a,b:real;
350 Приложения BEGIN а := xm-хШ + хС2] - 11; b := ill] + x[2]*xC2] - 7; f := a*a + b*b; END; r ____} procedure ScanForOneDlm (I:Integer); var a:boolean; dl,z1:real; BEGIN z := f(x); REPEAT dl := ABS(hi); хШ := хШ ¦+ M ; z1 := _(_); a := (z1 >= 2); LF a THEN hi := - hi / K; 2 := s1; UNTIL a AND (dUel); END; { Вывод на экран промежуточных вычислений } procedure OutputResult; вес; ш ClrScr; WRITELN ('Вектор приCлижения (х1,х2) на данном шаге вычислений'); WRITEbN (_'х1 = \_[1]:9:6,' х2 - ',x[21:9:6); WRITELN СГ(х1,х2) = ',Г(х):9:б); Pausa; END; ^ ОСНОВНАЯ ПРОГРАММА ) BEGIN ClrScr; WRITELN ('Введите координаты начального, вектора (xi,_2)'); FOR i :=1 TO n DO READ (хШ); WRITELN ('Задайте точность наховдения точки mln f(x)'); READ (e); h := 0.2; е1 := e / К; OutputResult; REPEAT d := ABS(h); FOR i := 1 TO n DO
Приложение к главе 9, §4 351 BEGIN hi := h; ScanPorOneDim A); end; OutputResult; h := h / K; UNTIL <ke; WRITELN ('Т. минимума x1 = '.хШгЭгб,1 x2 = ',x[2]:9:6); WRITELN ('Погрешность = ',е:9:6); Pausa; END. 4°. Программа поиске миниыуые функции двух переменных методом покоординатного спуска не языке FORTRAN $INCLUDE: 'fiXEC.Pl' С ПОИСК ТОЧКИ МИНИМУМА ФУНКЦИИ ДВУХ ПЕРЕМЕННЫХ G МЕТОДОМ ПОКООРДИНАТНОГО СПУСКА с #*******##****¦***************************** program MlnOfFuncByCoorcLDeacent . INTEG?R*2 system COMMON xB),K,e1,h1 i=system('cls'C) WRITE (*,*) 'Введите координаты вектора (xi,x2)' READ (*,«) (x(l),i=1,2) WRITE (*,«) 'Задайте точность наховдения точки mln f(x)' READ (»,*) e WRITE (*,*) h = 0.2 К = 2 el = e / К d = 1 i=sy?tem('ola'C) CAIJJ OutputResult DO WHILE (d.GE.e) d = ABS(ii) Б0 1----1,2 ht ~ h
352 Нрвложення GALL ScanPorOneDIM A) END DO l=system('cls'C) CALL OutputResult h = h/K END DO WRITE (•,'(A8,E12.6,A4,E12.6)t)' Mln Xi=' ,XA),' X2=',XB) WRITE <»,'{A14,E12.6)') ' Погрешность =\е PAUSE 'Нажмите клавишу ENTER для продолжения...' END Q _J , С ПОДПРОГРАММЫ FUNCTION f(l) DIMENSION XB) f = (xA)»*2 + xB) - 1I)*»2 + (xA) + xB)**2 - 7)*»2 RETURN END SUBROUTINE ScariPorOneDIM (i) COMHON хB),К.е1,Ы LOGICAL a z - JT(x) A1=1 DO WHILE (a.OR.(di.GE.ei)) x(i) = x(i) + hi zi = Г(х) di = ABS(hi) a = (zi.LT.z) IP (.NOT.a) hi = -hi/K z = zi END DO RETURN END G Вывод на экран промежуточных вычислений SUBROUTINE Ou/tputResult COMMON xB) WRITE (*,*) 'Вектор приближения (х1,х2) на шаге вычислений'
Приложение к главе 9, $4 353 irite («.•(Аб.иг.б.Аб.иг.б)*) • и «\хA).* хг=*,хB) ШИВ («.'(АИ.Иг.б)*) * f(x1,x2) =',f(X) PAUSE 'Нааште клаввщу SHIER дхя продолвения... * RETURN ЕЮ 5°. Црограмш поиска шпящуш функции двух перененных методой покоординатного спуска на языке С /« ***«««»«««******«««*«*«^*****««««*«*««***««* ПОИСК ТОЧКИ МИНИМУМА ФУНКЦИИ .ДВУХ ПЕРЕМЕННЫХ МЕТОДОМ ПОКООРДИНАТНОГО СПУСКА «Include <stdlo.h> «include <conio.h> «Include <math.h> «define N 2 «define К 2 int i; float el,h,hl,z,xtN+1]; ПОДПРОГРАММЫ */ float f(float xtH+ll) {float a.b.y; a = xtn»x[1 ]+x[2J-i1; Ь=х[П+х[2]»х[2]-Т; у = а»а + b»b; return y; ) void scanforonedim (i) Int i; <.' short a; float di,zl; 2 = f(x); do { di = fabs(hi); xti] += hi; zi = f(x); a = (zi < z); if (la) hi /= - K; z = zi; } while (a i ! di >= el); } 12-469
354 Приложения void pausaO {print! ("ЧпНажкште любую клавишу для продолжения...\п"); «etchO; } /„ Вывод на экран промежуточных вычислений */ void outputresult(Yold) { clrecrO; print! ("Вектор приближения (х1,х2) на данном шаге"); printГ (" вычислений п"); pplntr .{"х1 = %1 х2 = ЖГ\п",х[1],х[2]); printf <"Г(х1,х2) = %f\n",f<x)); pausaO; } /if, —_—._-. - ————— ОСНОВНАЯ ПРОГРАММА •/ void mainО { float d,e; clrscrO; printf ("Введите координаты"); printf (" начального вектора (xi,x2)\n"); for (i =1; 1 <= N; 1++) scanf ("»Г",&х[Ц); print'f ("Задайте точность нахождения точки min f(x)\n"); scanf ("%f",&e); outputresult(); h = 0.2; el = e / K; do { d = fabe(h); for A = 1; 1 <= N; i++) { hi = h; scanforanedlm A); }; outputresult(); h /= K; } while (d >- e); ¦ printf ("Точка минимума х1 = %t x2 = *r\n"txt1],x[2]); printf ("Погрешность = *f\n",d); pausaO;
Приложение к главе 9, §4 355 11. Блсяе-схеиа псшска минимума функции двух переменных методом скорейшего спуска Для поиска минимума функции двух переменных методом скорей- скорейшего спуска можно использовать структуру программы поиска мини- минимума функции двух переменных методом покоординатного спуска. Следует изменить содержание подпрограммы одномерной минимизации. Метод сканирования в задаче одномерной минимизации используется для поиска минимума функции двух переменных вдоль направления градиента функции Химмельблау (см.пример 2 §4). Структуру прог- программы можно использовать для задач поиска точек минимума функции трех и более переменных. Подпрограмм одномерной линижизацш летодол сканирования вдоль направления, градиента функции К минимизация f(xvx2) вдоль S=grad r(x)/||grad Г(х)|| | z =Г(х1,х2) s1=gradxr(x)/||gracL 21. Программа поиска минимума функции двух переменных методом скорейшего спуска на языке BASIC 1 REM ******************************************** 2 REM ПОИСК ТОЧКИ МИНИМУМА ФУНКЦИИ ДВУХ ПЕРЕМЕННЫХ 3 REM МЕТОДОМ СКОРЕЙШЕГО СПУСКА 4 REM ********************************************
356 Приложения 10 DEFINT I: DIM xB), 8B) 20 DEP mf(x1,x2)=(x1 A 2 + X2 - 11 )A2 + <x1 + X2 A 2 - 7)A2 30 DEP Ing1(x1,22)=4*x1A3 + 4*x1«2 + 2«2A2 - 42*Xi - 14 40 DEP fng2(x1,22)=4«x2A3 + 4«1«22 + 2«1A2 - 26*x2 - 22 50 DEP md2 (H, X2) = SQR(Ing1(x1, 22) A 2 + fng2(x1, 22) A 2) 60 DEP fns1 (xi, x2) = rng1(x1, 12) / fnd2(x1, X2) 70 DEP ЙВ2 (xi, X2) = fng2(x1, x2) / fnd2(x1, 22) 80 CLS 90 PRINT "Введите координаты начального вектора (х1,х2)" 100 FOR 1 = 1 TO 2 110 IKPUT 1A) 120 NEXT i 130 IF fn<32(xA), xB)) О О THEN 160 140 a$ = "Стационарная точка х1 = ##.#### z2 = ##.####" 150 PRINT USING a$; xA); xB): GOSUB 410: GOTO 250 160 INPUT "Задайте точность нахождения точки min f(xi,x2) "; e 170 h = .2: К = 2: el = e / К 180 GOSUB 360 190 GOSUB 260 200 d = ABS(h): IF d > e THEN h = h / K: GOSUB 360: GOTO 190 210 a$ = "Т. минимума и=##.###### x2=##.###### norp.=#.######" 220 PRINT : PRINT USING a$; xA); xB); e 230 PRINT USING Bf(x1,x2) =###.######"; fnl(xA), xB)) 240 GOSUB 430 250 END cm 252 рсл 260 270 280 290 300 310 320 330 340 350 НЕМ 8A) = fns1(XA), X Z = ftlX(XA), XB)) Z = Z1 FOR i = 1 TO 2 x(i) = x(l) + NEXT i zi = ftif (x(i), IF zi < 2 THEN GOTO IF di > el THEN hi ¦¦ RETURN ПОДПРОГРАММЫ : hi = hi » xB)): 280 = -hi 8B) = h: 8A) : di / K: = fns2(xA), xB)) GOTO 290 - ABS(h1) GOTO 280
Приложение к главе 9, 94 357 351 REM 360 CLS 370 PRINT "Вектор приближения (х1,х2) на данном шаге вычисления" 380 Ь* = "х1=##.###### х2 =#*.11И111НК " 390 PRINT OSING b»; хA); хB) 400 PRINT USING "f(x1,x2) =#####.#**###"; fnf(xA), xB)) 410 GOSUB 430 420 RETURN 421 REM 430 PRINT : PRINT "Для продолжения нажмите любую клавишу..." 440 IP INKEY8 = "" THEN 440 450 RETURN З1. Программа поиска минимума функции двух переменных методом скорейшего спуска на языке PASCAL program MlnOfFuncByMethodOfGrad; { ******************************************** ПОИСК ТОЧКИ МИНИМУМА ФУНКЦИИ ДВУХ ПЕРЕМЕННЫХ МЕТОДОМ СКОРЕЙШЕГО СПУСКА . ж*******************************************} uses Crt; label finish; ouns I . n = 2; K=2; type vector=arrayU..nl of real; var 1:integer; absgrad.d.e.elth,h1,z:real; s,x:vector; ch:char; { j ПОДПРОГРАММУ } procedure PAUSA; BEGIN WRITELN; WRITELN ('Для продолжения нажмите любую клавишу...');
358 Приложения REPEAT ch := readKey UNTIL ch <> "; END; / \ function 1(x:vector):real; var a,b:real; BEGIN a := хИ]»хШ + x[21 - 11; b := хШ + x[2]»x[2] - 7; Г := a»a + b»b; END; / \ procedure GradDirectibn; var gradx,grady:real; BEGIN gradx := 4»хИ ]«[П*х[1 ]+4*хИ ]*х[2]42*х[2]*х[2]-42»хП ]-14; grady := 4*x[2]*x[2]*x[2]+4*xM]*x[2]+2*xt1]»xt1]-26*x[2]-22; absgrad := SORT(gradx*gradx + grady»grady); IF absgrad о О THEN BEGIN sd] := gradx / absgrad; s[2] := grady / absgrad; END; END; ^ j procedure ScanForOneDim; var a:boolean; di,z1:real; BEGIN z := f(x); GradDirection; REPEAT d1 := ABS(h1 ); FOR i := 1 TO n DO xli] := xti] + h1»s[i]; z1 := f(x); a := (zi >= z); IF a THEN hi := - hi / K; z :=¦¦ zi; UNTIL a AND (dUel ); END;
Приложение к главе 9, §4 359 Вывод на экран промежуточных вычислений } procedure OutputResult; BEGIN ClrScr; WRITELN ('Вектор приближения (х1,х2) на данном шаге вычислений'); WRITELN ('x1 = \хП]:9:6,' х2 = ',х[2]:9:6); WRITELN Cf(x1,x2) = ',f(x):9:6); Pausa; END; ОСНОВНАЯ ПРОГРАММА } BEGIN ClrScr; WRITELN ('Введите координаты начального вектора (х1,х2)'); FOR I :=1 TO n DO READ (хШ); GradDlrectlon; IP abagrad = 0 THEN BEGIN WRITELN ('Стационарная тчк. xi = ',x[11:9:6,' x2 = \xC2]:9:6); PAUSA; GOTO finish; END; WRITELN ('Задайте точность нахождения точки mln f(x)'); READ (e); h := 0.2; el := e / K; OutputResult; REPEAT d := ABS(h); hi := h; ScaitforOneDim; OutputResult; h := h / K; UNTIL d<e; WRITELN ('Т. минимума xi = f,xti]:9:6,' x2 - ',zl21:9:b); WRITELN ('Погрешность = ',e:9:6); Pausa; finish: END.
360 Прилоке 4 • Шмилрямив готска шшщумв Душ щи двух методой скореаюго спуска вв яанве FORBUM •ШСЫПЖ: 'EXEC.FI' С ««««««««««««««««««««««««««««««««««««««««««с* С ШЖЖ ТОЧКИ МИНИМУМА ФУНКЦИИ ДВУХ ПЕРНШШХ О МЕТОДОМ СКОРЕЙШЕГО СПУСКА с ******************************************** program MlnOrPuncByCoordDescent INTEGER«2 system COMMON xB),sB),absgrad,K,el,h1 I=system<'cls>C) WRITE (*,») 'Введите координаты вектора (x1fx2)' READ (•,*) (i(i),1=1,2) CALL GradDlrectlon IF (absgrad.LT.0.000001 ) THEN WRITE(»,'(A9,E12.6,A4,E12.6)')' C.T. xU'.xd),1 x2=',iB) PAUSE 'Нажмите клавишу ENTER для продолжения...' GO TO I END I? WRITE (*,») 'Задайте точность нахождения точки mln f(i)' READ (*,») e WRITE (»,») h = 0.2 К = 2 el = e / К d = 1 • l=system('cls'C) CALL OutputResult DO WHILE (d.GE.e) d = ABS(h) hi = h CALL ScanforOneDIM l=system('cls'C) CALL OutputResult h = h/K . 0 END DO WRITE (*,'{А8,Е12.6,А4,Е12.6)')' Mln l1=',ZA),' x2=',lB)
Щялояенше к главе 9» §4 361 •RITE (*,'(AU,Ef2.6)') • Погрешность =',е PAG5E 'Нашив кяянищу jarjcjoc дня продаяяенвя...' 1 ИГО \ С С ПОДПРОГРАММЫ с FUNCTION Г(х) DIMENSION хB) Г = <ХA)**2 + 1B) - 11)**2 + AA) + 1B)**2 - 7)*«2 RETURN END S0BRO0TINE GradOlrectlon COMMON xB),8B),absgrad gradl= 4«A)*«3 + 4«A)«B) + 2«IB)*«2 - 42*1A) - 14 grady= 4«xB)**3 + 4*1A )*xB) + 2«A )*»2 - 26«B) - 22 abegrad = sqRT(gradx«*2 + grady**2) sA) = gradi / absgrad sB) = grady / absgrad RETURN END SUBRODTINE ScanForOneDIM COMMON xB),sB),ab8grad,K,e1,h1 LOGICAL a z = f(X) CALL GradDlrectlon di^i DO WHILE (a.OR.(di.GE.ei)) DO 1=1,2 x(i) = r(i) + hi • 8A) END DO zi = Цх) di = ABS(hi) a = (zi.LT.z) IF (.NOT.a) hi = -h1/K z = z1 END DO
362 Приложения RETURN С Вывод на экран промежуточных вычислений SUBROUTINE OutputResult COMMON zB) WRITE (*,*) 'Вектор приближения (xi,x2) на шаге вычислений1 WRITE (*,'(A5,E12.6,A6,E12.6)*) ' хТ =f,xA),' x2 =',xB) WRITE (*,I(A11,E12.6I) ' f(x1,x2) =',Г{х) PAUSE 'Нажмите клавишу ENTER для продолжения...' RETURN END 51. Программа поиска минимума функции двух переменных методом скорейшего спуска на языке С /* ******************************************** ПОИСК ТОЧКИ МИНИМУМА ФУНКЦИИ ДВУХ ПЕРЕМЕННЫХ МЕТОДОМ СКОРЕЙШЕГО СПУСКА **¦¦****¦*******¦*к*************************/ ¦include <atdlo.h> ¦Include iconic h> ¦include <math.h> ¦define N 2 ttderin* К ?. int i; float absgrad.ei,h,h1,k,s[N+1],x[N+1]; z ^ . . ПОДПРОГРАММЫ */ float f(float хШ+13) {float a,b,у; а=хИ ]*хШ+хС2]-11; b=xt1 ]+xI2J*x[2]-7; у = a*a + b*b; return y; } /* _ ~ / void graddirection(void) { float gradx.grady; gradi = 4*хП]*хП]*х[П+4*х[1]«Х[2]+2*х[2]*х[2]- 42*xtU-14; grady = 4*x[2]*x[2)*x[2]+4*x[1]*xt2]+2*xt1]*xnJ- 26*xf?J-22;
Приложение к главе 9, §4 363 abagrad = sqrt(gradx»gradx + grady«grady); И (absgrad != 0) { aMJ = gradz / absgrad; s[2] = grady / absgrad; void scanforonedim(vold) { short a; float d1,z1; z = f(x); graddlrectlon(); do { d1 = fabs(hi); for (l = i; i <= N; I++) xCi] += h1*stl]; zi = f(x); a = (z1 < z); If (!a) hi /= - K; z = zl; } while (a !! di >=ei); void pausa() {printf ("ЧпНазкмите любую клавишу для продолжения...\п"); getch(); } /* — Вывод на экран промежуточных вычислений — */ void outputresult(vold) { clrscrO; printf ("Вектор приближения (х1,х2) на данном шаге"); printf {" вычислений пя); printf ("х1 = %1 х2 = %f\n",x[13,x[2]); printf C'f(x1,x2) = Sf\n\f(x)); pausa(); } * ОСНОВНАЯ ПРОГРАММА */ void maln() { float d,e;
364 Приложения char finish; с1г8сг(); printr ("Введите координаты начального"); prlntf (" бектора (х1,х2)\п"); for A=1; 1 <= N; 1++) scanf ("ЖГ",вдШ); graddirectionO; if (tabsgrad) { printf ("Стационарная точка х1 = %f",xm); prlntf (" x2 = %f",x[21); раива(); gyto finish; }; printr ("Задайте точность"); printГ (" нахождения точки roln f(x)\n"); scanf ("%f",&e); outputresuit(); h = 0.2; el = e / K; do .{ d = fabs(h); hi = h; scanforonedlmO; outputresult(); h /= K; } while (d >= e); prlntf ("Точка минимума х1 = %1 x2 = %f\n",x[1],x[23); prlntf ("Погрешность = %f\n",d); pausa(); finish:;
ОТВЕТЫ К УПРАЖНЕНИЯМ Главе 1 51. 1. |a|w-6. lalj-11, Ца|Л4б7, ЦЬ|т-4. |Ь|г-б. d(e,b)m« 10, сКа.Ь)г« 13. l|c|m=10, |o|l422. |с|ь=3^2 <Х(с,А)щ* 11, cf(c,d)j=24, 2. а) Квадрат с вершинами в точках 4A, 2), В(-3, 2), С(-3. -2), РA, -2); б) внешность единичного круга с центром в точке A, 0); в) граница квадрата с вершинами в точках 4A, 0), В(-1, 2), С(-3, 0), DM, -2); г) квадрат с вершинами в точках 4@, 3), В(-6, 3), С(-б.-З), z>@. -3); д) эллипс с центром в точке @, 0) и полуосями а=2, о=4з. 3. а) X = {(T1tz2): |х,| < - , |х,| < - }; б) X = {(z,,.r2): ix,| > 1, |х2| > 1); в) X = ((х^.х^): х1 € R, 0 < xz < 2>; г 13 1 г) X = •j(T1.T2): l^l < -, - - < х„ ^ - v 2 4 4 1С д) X ={(т1(т2): т^ и*, т2?? - Bй + 1), й=0,±1,±2,±...}. Ji 1 -Гзо 4. а) ис«1, тьг = -. iyi0 = -. 1у1х2 - ~^- 2^30 ) 2 » ; Jd 10 б) |я|0 = е, |х| 2 = - J2(e2-1), |у|с = 1, |у| 2 = 4' 1л 2 JD 3 d(x,y)c - е, d(T,j/) 2 - - 4б[Зе(е-4)+23]; В) |Т|С = 1П2, |Х1 2= Я<1-Ш2). |у|с « 2, |у| 2
366 Ответы d(x,y)c = 2 -In2, d(x,y) 2 = - -|6[35+121n2(ln2-4)]'; L 6 l Г) J^IC = 1, M 2 - —-. Il/Ro = 1 . 12/1 2 L 2. L i ) 2 = - J6<7w-12). L • 6 1 . a) I I; 2. а) Сходится к функции 9(t) г о (О < t < 2х) поточечно и равномерно; б) сходится к функции 9(t) а о (О < t < 1) поточечно, но не сходится к ней равномерно; в) сходится к функции x(t) ¦ \t\ (-« < t < ов) поточечно и равномерно; г) сходится к разрывной функции о, о < t « 1; x{t) f О, О < t 4 It. t = о; д) сходится равномерно к функции 6(t) » О (О < t < 1); е) сходится равномерно к функции 6(t) ¦ О (О < t < 1). з. a) e(t) = о (о < г < i); б) e(t) в о (о < t < i). Глава 3 J2. 1. 2,28. 2. 2,095. 3. -1,16. 4. 1,10. 5. 3,66. б. -1,79. 7. -0,57. 8. 1,27. 9. -3,39. 10. 1,56. 11. 1,57. 12. 1,94. 13. 1,64. 14. -0,375. 15. -1,15. 16. 1,12. 17. -1,84. 18. 1,68. 19. 0,825. 20. 0,65. 21. 1,37. 22. 5,36. 23. 1,40. 24. 0,48. 25. 1,55. Г 2,51 1 f-2,51 I Г 0,92 1 f 0,83 1 54. 1. -2. . 3. -4. L 3,16 J I 3,16 J L 1.386J I 0,56 J Г-0,83 Л Г 0,64 "J f 0,53 I f 0,74 1 L-0.56 J' I 0,43 J" " 1-0,66 J' I 0.6T J"
Ответы 367 f-0.74 l f-0.59 1 f 0,83 1 f 1,75 1 9. . 10. . 11. . 12. 1-0,67 J I 1,806j 1-0.44 J I 1.66 J Г 1.811 f-0.38 1 f 0,18 1 f 0,18 1 13. . 14. . 15. . 16. [ 0,59 J (.-0,21 J I 0.57 J 1-0,57 J f 0,81 1 f-0,81 -J f 0,87 1 f-0,87 Л 17. . 18. . 19. -20. I 0,59 J I 0,59 J I O,495J l-0,495j f 0,67 1 f 0,94 1 f 0,7151 f-0,3361 21. -22. -23. -24. I 0,26 J I 1,33 J I 0,70 J 1-0,94 J f 0,72 I f-0,72 1 25. -26. I 0.48 J L 0,48 J Глава 4 00 3 2 ^ sin icBft-1 )x 52. 1. -+- > , oiif.CL) = 0,071 2 it ?_ 2ft-1 ~ 1 4 V" cos 2. - + -„ > 5 , <i(f,Qc-) = 0,0135. 2 itc /_ BЙ-1Г ft=1 00 1 4 Y~" cos 1СBй-1 )x 3 • — — —~, oo oo 1С 2 V~" COS Bft-1 )X V~" k Sin ЙГ 4 It / . Bft-1 J + l_ k . ' 18=1 k*1 ac/.Q.) = 0,235. 00 00 Э 5% 10 Г~" cos Bft-i )г V"" .. sin ter 5. ) j ) (-1 )* . 4 1С ?__ [Zk-\r /_^ ft V) - 0,066.
368 Ответе I Й=1 8 V i < ) 6. - > . ЗСГ.О,) = 0,224. / 2ft-1 ' 8 Г" cos BЙ-1 )x т. - > 5— , ay.gu) = 0,027. % Z- BЙ-1J ^ sin 2ftT 8. 2 > , a(/,au) = 0,305. ft Z sin fer (-t)* , ЗС/.Оу) = 0,142. I-'* 8 V^ sin (Zft-1 )x 10. - - ) , ac/.O.) = 0,224. % Z- 2Й-1 ~ 1 6Г8Ш Bfe-1 )x ii. \ . 2 ic ^_ 2fe-1 3« 2 V COS Bfe-1 )x V ь sin fcr 12. > 2 > (-1 )* , 4 *Z- <2Ь-1Г Z- * 3(/,Q-) = 0,117. oo ' sin Bfe-1 )x ¦- 0,213. 00 % 2 V~* cos Bft-1 )x ТГ~ ь sin ttx 13. > 5 3 > (-1 )* 4 % {_, Bft-1)? ^ ft oo 8 Г-С0В 1CBU-1 )x 14. 1 - -ту > , , 3(/,Q-) = 0,0135.
Ответа 369 о *Bft-1 )x 8 ж 15. 3 - -ж > ж , 3</,<L) » 0,0051. 8 16. 1 + -* 5х 10 V~cos B6-1 )х V"" . sin ftr 17. + — ft=1 о» о» 4 х ?_ <2й-1)* Z_ ft Г.Ос) = 0,066. « «Bft-1)x о» «ftr t 4 Т "^^ 2 2 *—' sln 1 4 V 22 V ь 18. - - -г > з > М) 2 ?/ Bfc1J / 2 и^ /_^ {2it-^)" X /_ ft ft=1 ,4-) = 0,235. 19. 1- cos ] 12 ,—. sin 2 / * • i : » ft=1 ft=1 »%)= 0,315. nfcr 4 cos —2 2 ^- sin -g- 20. ---Л -г-^и,» 3(/,«4) = 0,26. r.o,) = 0,201. 2 «r/ Bfe-11* т. / h i=1 ft=1 00 8 Y~" sin *Bft-1 )x 8T~" 21. 1 + - \ o» *Bft-1 )x sin 4 V" B1" 2 ¦-V-;Z. 'аи ' 22 ft=1
370 Ответы 5 2 V" cos *Bfe-1 )X 1 V" ъ sin tikx 23. - - -ж > n > (-1 )* , 4 ** i_^ Bfe-1)z *?_ * ft=l й=1 3(/,<34)= 0,0822. 00 00 3 2 T— cos *Bfe-1 )x 1 ^— . sin uter 24. - + -^> 5 > (-1)* , 4 я2^ BА-1 )z « l_^ к ft=1 ft=1 3(/,Q4) = 0.-130. oo 1CBfe-1 )X oo nfcX Bin -n- 25. - + 4 2 К* ^_ BЙ-1 )c % ?_ k й=1 fe=1 r.QL) = 0,608. 0,044. 2. (^(x) = -G5хг+32х+60)/64, Щ?.Яг) = 0,122. 3. (^(х) = о&^-заи^лб, a(/,<j2) = 0,125. 4. (^(x) - (Иба^+эбх-^^гв, ac/.Qg) = 0,040. 5. ^(X) = -D5хг+32х+36)/б4, at/,^) = 0,118. 6. Q2(x) - D5l2+32x+36)/64, af/.Qg) = 0,118. 7. <3g(x) - (iSa^+gex-^J/e*, at/.ljg) = 0,240. 8. <3g(X) - (-15хг+48х-27)/9б, Щ/,^) - 0,088. 9. QgCX) = A5хг-14х+34)/32, ЗС/,^) = 0,028. 10. Q4(x) - (-10бХ4+210хг+128х+15)/2бб, 3(/,Q4) - 0,044. It. Qg(X) -¦ (-15l?-16»f29)/32, 3(/,Q2) - 0,044. 12. ^(X) = ('Eхг+32х-60)/б4, ac/.Og) -0,122. 13. qg(x) = (-15хг-32х+11б)/б4, aC/.Qg) = 0,044.
Ответы 371 14. <3g(z) = A5^-9624-12)/128, 15. 16. 17. Q4(z) = A0&T4-840i2+1808)/924, = 0,040. • 0,044. = 0,221. 3(/,Q4) = 0,062. 18. Q4(X)=(94&r4-378Or3+5500l2-348QT+832)/924, a(/,Q4)=0,091. 19. QA(X) = C15x4-63Qr2+339)/384, 3(/,Q4) = 0,062. 21. Q4(x) = (-315x4+630l2-339)/384, 22. Q5(x) = F93a^-420OT3+576CtC+6736)/4096, 23. Q4(Z) = (-105x4+210l2+143)/128, 24. Q5(X) = F93a^-1050i3+525x)/128, 25. QAx) = !4) = 0,062. !4) = 0,062. l5) =0,022. a(/,Q4) = 0,024. 3(/,Q5) = 0,312. 3(/,Q4) = 0,062. Коэффициенты многочленов наилучшего приближения Qn(;r)=a0+a1i+a2;r2+...+anxri и погрешности 3(/,Qn): Номер вар. 1 2 3 4 2 3 2 3 2 3 2 3 аО 0,8200 0,5401 0,56 0,07013 0,736 -1,7423 8,8 7,54 а1 0,31857 0,7118 0,59857 1,287 -0,135 2,0582 -1,2986 0,4715 °2 -0,0214 -0,1714 -0,07143 -0,334 0,003 -0,5872 0,02143 -0,6536 аз - 0,016663 0,0292 - 0,04917 •- 0,075 0,0193 0,0068 0,03146 0,00503 0,347 0,2231 0,0521 0,0465
372 Ответы Йомёр вар. 5 б 7 8 9 10 11 12 13 14 15 16 17 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 • 3 2 3 2 3 2 3 °О 10,36 12,039 8,56 8,84 8,32 8,04 0,392 0,308 0,64 0,64 0,61 0,61 6,53 5,3399 6,53 8,1396 -0,98 -1,1203 2,496 2,074 0,388 0,57 0,3866 0,5154 0,108 0,08 «1 » -2,519 -4,8776 -1,461 -1,8542 -1,2243 -0,8308 0,1834 0,3014 0,4821 0,4821 0,5214 0,5214 -1,4514 0,22033 -1,78 -4,04101 2,4986 2,6957 0,6093 1,1992 -0,1746 -0,4302 -0,1665 -0,3474 0,104 0,1433 °2 0,2214 1,121 0,0786 - 0,2284 0,03571 -0,1143 -0,0186 -0,0636 -0,018 -0,018 -0,0286 -0,0286 0,1286 -0,50896 0,2 1,0623 0,3786 0.3034 -0,0707 -0,2957 0,02143 0,1189 0,01986 0,08884 -0,01 -0,025 - -0.1 - -0,0166 - 0,01667 - 0,005 - 0 - 0 - 0,07084 - -0,09581 - 0,00835 - 0,025 - -0,01083 - -0,00766 - 0,001667 3(/,вя) 0,0329 0,0116 0,0058 0,0020 0,0098 0,0082 0,0122 0,0043 0,0082 0,0082 0,0056 0,0056 0,0392 0,0222 0,0595 0,0373 0,00396 0,0038 0,0122 0,0027 0,15896 0,0635 0,1033 0,0255 0,00893 0.00000
Ответы 373 номер вар. 18 19 20 21 22 23 24 25 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 °0 4,104 3,989 -1,238 -2,176 0,138 0,082 1,254 1,03 1,7012 2,674 1,524 2,2659 2,288 1,2938 1,252 0,958 «1 0,5882 0,7496 2,537 3,8544 0,2173 0,2959 0,2977 0,6124 -0,8952 - -2,2618 -0,6696 -1,7117 -0,4137 0,9829 0,8463 1,2593 °2 0,1159 0,0543 -0,227 -0,7296 -0,0207 -0,05071 -0,03429 -0,1543 0,1158 0,6369 0,08643 0,4839 0,4443 -0,08832 -0,07571 -0,2332 - 0,006835 - 0,055826 - 0,00333 - 0,01333 - -0,05791 - -0,04416 - 0,05918 - 0,0175 0,00157 0,000044 0,02277 0,00417 0,01046 0,003697 0,01309 0,00301 0,22478 0,07088 0,14563 0,04269 0,01488 0,001341 0,01005 0,001952 $5. Эмпирическая формула у = в(т,а,р), где аир - наилучшие значения параметров, полученные методом наименьших квадратов: Номер вар. 1 4 7 эмпирическая формула 0,481пг+1,084 9,978-0,786* -1,01?+8,07 Номер вар. 2 5 8 эмпирическая формула 0,89 1,98 X -3,04lirr+8,15 X 1.015Х+0.8216 Номер вар. 3 6 9 эмпирическая формула 1 3,286т - 5,66 8,852.0,818я* 0,375я+0,7б5
374 Ответы Номер вар. 10 13 16 19 , 22 25 эмпирическая формула 1,0936г°'513 1.924Х1'489 1 4,948т -0,8892 31пх + 1 1 3.989Х-2.96 1.ОО21Ш7+1,999 Номер вар. 11 14 17 20 23 эмпирическая формула 1 0,05352*0,1391 0,998 X X 2,028х+3,015 X 0,999г+2,01 X 4,039z-3,069 Номер вар. 12 15 18 21 24 эмпирическая формула 3,22 1,93 + X о.гзаГ'1'111 4-1,2х 0,5 X 1,498-1,5* 02. 1. х *-('•)• 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. z" = (-2, 0), X* = @, 3), I* = B, -2), Z* = (-1. 1). Z* = E, 6), Z* = D, 1), Z* = A, 1), Глава 9 D = ЦХ^ D = i(X^ D = R2. 0, а*, " D = ,x2 = R2. D = { Ц 3, хо е R>. 0}. Z* = @, 3), 0=1^. z = B, 2), г D = {(хл,х2): х^ > 0, х2 > 0) z*= @, 0), D = j^.ig): x, Z* = A, -2), D = R2. Z* = @, 3), D = R2. 5 б' -62^ }•>
Ответы 375 * f 2 5 1 15. X* = E,. 2), 16. X* = (-1, -2), 17. X* = A. 3), 18. X* = E, 5), 19. X* = @, 0), 20. X* = @. 0). 0 - 0 - 0 - D = D = D = D = B2. {(x1tx2): ; R2. {(Tt,T2): : {<x,.x2y.; R2. R2. ^ > 0, ^ > 0, 2^2 < 10 У X2 > 0}. 25 ^ 12 4 J • 21. X = ^ — , - J, . .. ... ... , .. ..., _ ., - . 0). 2 2 22. x = ^ , - J, D - {(ж,,^): х^О, 13з*- 5л:2-5 > OK 23. x* = A, 1). D = 1{хл,х0): x. > 0, 24. x* = (-1, 1), D = i(x^,x2): x, < 0, 2x^ - x2 > 0>. 25. x* = (-2, 1), D = R2. S3. 1. 3. 5. 7. 9. 11. 13. 15. 17. 19. 21. 23. 25. X* = X* = X* = X* = X* = X* = X* = X* = X* = X* = X* = X* = X* = 0, 4, 2, 1. 2, 0, 1, 0, -3, 0, -u -1, 4, -2 < 2 < 0 < -1 < 0 - -00 < -00 < -00 4 -00 < -00 < -41« -00 < —OD < С X (. X : x <. X С X : x (. X С X С X с х с х : х : х < < < < < < < < < < < < < 00. ' 00. 00. 00. 00. 2. 00. ». -2. 1. 1. 0. 00. 2. 4. 6. 8. 10. 12. 14. 16. 18. 20. 22. 24. X* X* X* X* X* X* X* X* X* X* X* X* = -1.' = -з, = 1, = -1, = 2, = -2, = -1, = е, = 1, = 1, = 1, = 2, -3 - - —00 < 0 « -00 < 0 « —00 4 -г 4 0 4 0 < —OD < 0 < 1 < < X ' С X 4 <. X • С X ' С X • (. X < (. X < С X < V X < : х < : х < : х < С оо. С оо. С оо. С 1. С оо. с 0. с ». : ». : оо. : 2. : оо. : оо.
I. Вилммов В.С., ЖЩвов Н.П., Кобельков Г.М. Численные мето- метода. - U.: Наука, 1987- 2» Баимшова Е.С., Вжпвнберр Ж.М., либеров А.В.^ Пашков А.л°. Справочник. Программирование мпсроЗВМ на языке БВКЯК. - II.: Радио ж связь, 1991» 3. Деиидоввч Б.П., ИарОН К.А. Основы вычислительной математя- ки. - И.: Наука, 1963. 4. Деиидоввч Б.П.. Марон М.А., Шувалова Э.З. Численные методы анализа. - Н.: Наука, 1963. 5. ВОЛКОВ Е.А. Численные методы. - м.: Наука, 1987. 6. Вулнх Б.З. Введение в функциональный анализ. - М.: Наука, 1967. Т. Неясен К., Варг Н. ПАСКАЛЬ. Руководство для пользователя. - II.: Финансы и статистика, 1989. 8. Катцан Г. Язык Фортран 77. - М.: Мир, 1982. 9. Кершган Б., РЯТЧИ Д. Язык программирования Си. - М.: Фи- Финансы и статистика, 1992. 10. Мврчук Г.М. Методы вычислительной математики. - м.: Наука, 1980. II. Ортега Дн., Щя 7. Введение в численные метода решения диф- дифференциальных уравнений. - м.: Наука, 1986. 12. Осипов СВ.. Оотеикив В.Г., Скмовевков О.С. ms-dos 5.O. QBasic. - М.: Малин, 1992. 13. Реклейтис Г., Рейвнвдран А., Рэгсдел К. Оптимизация в техни- технике. Кн. 1. - U.: Мир, 1986. 14. Сборник задач по методам вычислений. Под ред. Монастырно- го П.И. - М.: Наука, 1994. 15. Соловьев П.В. FORTRAN для персонального компьютера (справоч- (справочное пособие). -U.: Арист, 1991. 16. Сухарев А.Г., Тимохов А.В., Федоров В.В. Курс методов опти- оптимизации. - М.: Наука, 1986. 17. Треногий В.А. Функциональный анализ. - М.: Наука, 1980. 18. Турчак Л.Н. Основы численных методов. - М.: Наука, 1987. 19. УЭЙТ М., Щрта С, Мартин Д. Язык Си. Руководство для начи- начинающих. - М.: Мир, 1988.
ом Предисловие 3 Глава 1. Паняпю линейного нормированного пространства 5 §1. Основные определения. Прамерж линейных нормиро- нормированных пространств 5 §2. Сходимость последовательностей в линейных норми- нормированных пространствах .~ 14 1 . Сходимость последовательностей n-мерных векто- векторов и матриц 14 2. Сходимость последовательностей непрерывных функций 16 Глава 2. Методы численного решения систем линейных алгебраических уравнении 21 §1. Метод Гаусса 21 §2. Метод итераций 29 Глава 3. Методы численного решения уравнений и систем нелинейных уравнений 36 §1. Отделение корней 36 §2. Метод половинного деления для уравнения f{x)=Q 37 §3. Метод итераций для одного уравнения с одним неизвестным .¦ 40 §4. Метод итераций для системы двух нелинейных уравнений 45 Глава 4. Среднеквадратичное приближение функций 53 §1. Интегральное среднеквадратичное приближение функций обобщенными многочленами 53 §2. Среднеквадратичное приближение функций тригонометрическими многочленами 56 §3. Среднеквадратичное приближение функций алгебраическими многочленами Лежандра .64 §4. Точечное среднеквадратичное приближение функций ортогональными многочленами. Ортогональные мно- многочлены Чебышева 73 §5. Метод наименьших квадратов••Эмпирические формулы....81
378 Оглавление Глава 5. Интерполирование функций 88 §1. Интерполяционная формула Лагранха 88 §2. Интерполирование функции кубичеокшш сплайнами 98 Глава б. Численное дифференцирование 99 §1. Вычисление производной по ее определению 99 §2. Конечно-разностные аппроксимации производных 100 §3. Использование интерполяционных многочленов Лагран- жа для формул численного дифференцирования 102 Глава 7. Численное интегрирование 107 §1. Квадратурные формулы прямоугольников, трапеций и Симпсона 107 §2. Квадратурные формулы Гаусса 113 §3. Приближенное вычисление несобственных интегралов интегралов с бесконечными пределами 117 §4. Приближенное вычиоление несобственных интегралов интегралов от функций о бесконечным разрывом 123 Глава в. Численное решение обыкновенных дифференциальных уравнений 129 §1. Численное решение дифференциальных уравнений первого порядка 129 1 . Понятие о численном решении задачи Коши 129 2°. Метод Эйлера 131 3°. Методы Рунге - Кутта 133 §2. Численное решение систем дифференциальных уравнений первого порядка 139 §3. Численное решение дифференциальных уравнений и оиотем дифференциальных уравнений высших порядков .' '. 145 Глава 9. Численные методы безусловной оптимизации 150 §1. Необходимые и достаточные условия вкстремума в задачах безусловной оптимизации 150 ?2. Выпуклые множества и выпуклые функции 154 §3. Численные методы поиска минимума функции одной переменной 158 1 °. Унимодальные функции 158
Оглавление 379 2°. Схема сужения промежутка унимодальноотя функции...159 3 . Метод половинного деления 161 4 . Метод золотого оечения. 164 5 . Метод сканирования 167 §4. Чиоленные метода поиска минимума функции нескольких переменных 171 Г . Общая схема методов спуска 171 2 . Метод покоординатного опуска 3 . Метод скорейшего спуска 176 4 . Применение методов спуока к решению сиотем нелинейных уравнений 179 Приложения 181 Основные блоки и логические управляющие структуры 181 Приложение к главе 2 184 К §1. Решение системы линейных алгебраических уравне- уравнений методом Гауоса с выбором главного елемента (по отолбцу) 1 . Блок-схема 184 2". Программа на языке BASIC 186 3°. Программа на языке PASCAL 189 4°. Программа на языке FORTRAN 1 92 5". Программа на языке С 195 6 . Программа решения системы линейных алгебраи- алгебраических уравнений методом Жордана - Гауооа на языке QUICKBASIC 197 К §2. Решение оистемы линейных алгебраических урав- уравнений методом итераций 1°. Блок-схема 202 2 . Программа на языке BASIC 204 3 . Программа на языке PASCAL 207 4 . Программа на языке FORTRAN 212 5 . Программа на языке С 216 Приложение к главе 3 220 К §2. Решение уравнения /(т)=0 методом половинного деления 1 . Влок-охема 220 2°. Программа на языке BASIC 220 3 . Программа нз языке PASCAL 221
380 Оглавление 4°. Программа на языке PORTRAN 222 5 . Программа на языке С 224 К §3. Решение уравнения /(т)=0 методом итераций 1 °. Блок-охема 225 2°. Программа на языке BASIC 226 3°. Программа на языке PASCAL 226 4 . Программа на языке FORTRAN .227 5 . Программа на языке С ,. .228 К §4. Решение системы нелинейных уравнений методом итераций 1 °. Блок-схема 229 2 . Программа на языке BASIC 230 3 . Программа на языке PASCAL 231 4 . Программа на языке FORTRAN 232 5°. Программа на языке С 233 Приложение к главе 4 235 К §2. Построение тригонометрического многочлена, аппроксимирующего заданную функцию 1°. Блок-схема 235 2 . Программа на языке BASIC 236 3°. Программа на языке PASCAL 236 4 . Программа на языке FORTRAN 238 5 . Программа на языке С 239 К §4. Вычиоление ортогональных многочленов Чебышева на заданном множестве точек 1 . Блок-схема .240 2 . Программа на языке BASIC 241 3°. Программа на языке PASCAL 243 4 . Программа на языке FORTRAN .245 5°. Программа на языке С 247 Вычисление многочленов наилучшего ореднеквадра- ореднеквадратичного приближения функций ортогональными мно- многочленами 1 . Алгоритм вычисления. 248 21. Программа на языке BASIC 249 З1. Программа на языке PASCAL 251 41. Программа на языке FORTRAN 254 51. Программа на языке С 256
Оглавление 381 К $5. Определение параметров вшшричеокой формулы о двумя параметрами методом наименьших квадратов 1°. Блок-схема 259 2°. Программа на языке BASIC 260 3°. Программа на языке PASCAL 261 4 . Программа на языке FORTRAN 264 5 . Программа на языке С 267 6°. Программа на языке QUICKBASIC 268 Приложение к главе 5 , ,. .273 К §1. Построение интерполяционного многочлена Лагранжа 1°. Блок-схема 273 2°. Программа на языке BASIC 274 3°. Программа на языке PASCAL 274 4°. Программа на языке FORTRAN 276 5°. Программа на языке С 277 К §2. Построение кубичеокого сплайна 1°. Блок-схема 277 2°. Программа на языке BASIC 279 3°. Программа на языке PASCAL 280 4°. Программа на 'языке FORTRAN 282 5 . Программа на языке С 283 Приложение к главе 6 285 К §1. Вычисление производной по ее определению 1 °. Блок-охема 285 2 . Программа на языке BASIC .285 3 . Программа на языке PASCAL 286 4 . Программа на языке FORTRAN 287 5 . Программа на языке С 288 И §3. Вычисление производных первого и второго порядков с одинаковым порядком аппроксимации по шагу h 1°. Блок-схема ' 289 2 . Программа на языке BASIC 290 3°. Программа на языке PASCAL 291 4°. Программа на языке FORTRAN 293 5 . Программа на языке С 294 Приложение к главе 7 296 И §1. Вычисление определенного интеграла пс квадратур- квадратурным формулам прямоугольников, трапеций и Симпоона
382 Оглавление 1°. Блок-схема 296 2°. Программ на языке BASIC 296 3°. Программа на языке PASCAL , 297 4 . Программа на языке FORTRAN ....298 5 . Программа на языке С 299 Вычиоление определенного интеграла методом двойного пересчета по формуле Симпоона 11. Блок-схема 300 21. Программа на языке BASIC 301 З1. Программа на языке PASCAL 302 4 . Программа на языке FORTRAN 303 5 . Программа на языке С 304 К §2. Вычисление определенного интеграла методом двой- двойного пересчета по формуле Гауоса с тремя узлами 1°. Блок-схема. ..., 306 2°. Программа на языке BASIC 307 3°. Программа на языке PASCAL 308 4 . Программа на языке FORTRAN 309 5 . Программа на языке С 310 Приложение к главе 8... 312 К §1. Решение задачи Коти для дифференциального уравне- уравнения первого порядка методами Эйлера, Эйлера - Коши и Рунге - Кутта 1°., Блок-схема , 312 2°. Программа на языке BASIC 313 3°. Программа на языке PASCAL. 314 4 . Программа на языке FORTRAN 315 5°. Программа на языке С 317 К §2. Решение задачи Коши для системы дифференциальных уравнений первого порядка методом Рунге - Кутта 1 . Блок-схема 318 2°. Программа на языке BASIC 319 3°. Программа на яеыке PASCAL 320 4°. Программа на языке FORTRAN 322 5 . Программа на языке С 324 6 . Программа на языке QUICKBASIC 325
Оглавление 383 Приложение к главе 9 328 К §3. Поиск минимума функции одной переменной методом половинного деления 1°. Блок-охема* 328 2°. Программа, на языке BASIC 329 3°. Программа на языке PASCAL 330 4°. Программа на языке FORTRAN 331 5 . Программа на языке С 332 Поиск минимума функции одной переменной методом золотого сечения 11. Блок-охема 334 2 . Программа на языке BASIC 334 З1. Программа на языке PASCAL 335 41. Программа на языке FORTRAN 337 5 . Программа на языке С 339 Поиск минимума функции одной переменной методом сканирования 1 . Блок-схема 341 22. Программа на языке BASIC 341 Зг. Программа на языке PASCAL 342 4 . Программа на языке FORTRAN 344 5 . Программа на языке С 345 К §4. Поиск минимума функции двух переменных методом покоординатного опуска 1°. Блок-охема 346 2°. Программа на языке BASIC .....348 3 . Программа на языке PASCAL 349 4 . Программа на языке FORTRAN 351 5°. Программа на языке С 353 Поиск минимума функции двух переменных методом скорейшего спуока 1 . Блок-схема 355 21. Программа на языке BASIC 355 3 . Программа на языке PASCAL 357 41. Программа на языке FORTRAN 360 51. Программа на языке С 362 Ответы к упражнениям 365 Литература .- 376
Учебное издание Ракжтия Валевггав Иванович Первушин Виталий Евгеньевич ПРАКТИЧЕСКОЕ РУКОВОДСТВО ПО МЕТОДАМ ВЫЧИСЛЕНИЙ С ПРИЛОЖЕНИЕМ ПРОГРАММ ДЛЯ ПЕРСОНАЛЬНЫХ КОМПЬЮТЕРОВ Редактор А. М. Суходскяй Художественный редактор Т. А. Коленкова Технический редактор В. М. Оригинал-макет книги выполнен В. И.. ЛР № 010146 от 25.12.96. Изд. J* ФМ — 161. Сдано в набор и подписано в печать 31. 10. 97. Формат 60x88/16. Бум. газета. Печать офсетная. Объем 23,52 усл. печ. л. 23, 77 усл. кр.-отт. 20,22 уч. изд. л. Тираж 10000 экз. Зек. J* 469 Издательство «Высшая школа», 101430, Москва, ГСП-4, Неглинная ул., д. 29/14. Отпечатано с диапозитивов издательства в ОАО «Оригинал», 101898, Москва, Хохловский пер., д. 7.