Методичні вказівки до розділів “Розв’язання нелінійних алгебраїчних рівнянь”, “Чисельне інтегрування та диференціювання”...
6 downloads
316 Views
2MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Методичні вказівки до розділів “Розв’язання нелінійних алгебраїчних рівнянь”, “Чисельне інтегрування та диференціювання” курсу “Чисельні методи в інформатиці” / Укл. С.О.Лук’яненко.-К.: НТУУ “КПІ”, 2005 – 58с.
Навчальне видання
Укладач:
Лук’яненко Святослав Олексійович
Відповідальний редактор Рецензенты:
В.Г.Сліпченко В.М.Медведєва О.К.Молодід
Лабораторная работа №1 РЕШЕНИЕ НЕЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ И ТРАНСЦЕНДЕНТНЫХ УРАВНЕНИЙ (НАТУ) 1.1. Теоретические сведения Постановка задачи Пусть дано уравнение (1.1) f(x) = 0 , где функция f(x) определена и непрерывна на некотором интервале (a,b) . Всякое значение x * , обращающее функцию f(x) в нуль, т.е. такое, при котором f(x* ) = 0 , называется
корнем уравнения, а процесс нахождения x* – решением уравнения (1.1). Если функция f(x) представляет собой многочлен относительно x , то уравнение (1.1) называется нелинейным алгебраическим (например, x 4 − 3 x − 1 = 0 ); если же в функцию f(x) входят элементарные (тригонометрические, логарифмические, показательные и др.) функции – трансцендентным ( например, e x -x 2 − 5 = 0 ). С точки зрения вычислительной математики они эквивалентны. Геометрически решение уравнения (1.1) состоит в нахождении точек пересечения графика функции y = f ( x) с осью ОХ (рис.1.1). Характеристика методов Методы решения нелинейных уравнений делятся на прямые и итерационные. Первые позволяют найти решение непосредственно с помощью формул и всегда обеспечивают получение точного решения (например, формула для решения квадратного уравнения). Однако они имеются лишь 3
для ограниченного круга уравнений, поэтому на практике более широко используются методы второго типа итерационные. В них задается процедура решения в виде многократного применения некоторого алгоритма. Полученное решение всегда является приближенным, хотя может быть сколь угодно близким к точному. Кроме того, часто уравнения содержат коэффициенты, известные лишь приближенно, и, следовательно, сама задача о точном определении корней теряет смысл. Можно выделить два типа итерационных методов:
Рис.1.1 1. Методы сужения интервала, содержащего корень (например, методы половинного деления, золотого сечения). Здесь используется только знак функции y = f ( x) , а не ее значения. Они являются относительно простыми, но имеют низкую скорость сходимости. 2. Методы аппроксимации, в которых функция y = f ( x) заменяется некоторой более простой функцией y = ϕ (x ) , для которой и отыскивается корень (например, методы хорд, Ньютона). Используют значения функции y = f ( x) . Скорость сходимости у них выше. В общем случае задача решается в два этапа: 4
1) отделение корня, т.е. установление достаточно малого интервала (a,b) , в котором содержится изолированный корень уравнения (1.1); 2) уточнение корня до заданной степени точности с помощью одного из итерационных методов. При решении серии систем НАТУ, к которым сводится решение какой-то более сложной задачи, необходимость в первом этапе зачастую отпадает, т.к. решение предыдущей системы является хорошим начальным приближением к решению последующей. Для отделения корней при решении одного НАТУ применяют различные соображения и методы: 1. Физические явления, которые описываются уравнением (1.1). 2. Замена уравнения (1.1) более простым, имеющим корни, близкие к корням уранения (1.1). y = f (x) и 3. Построение графика функции приближенное определение точек, где кривая пересекает ось ОХ. 4. Запись уравнения (1.1) в виде f1 ( x) = f 2 ( x) и построение графиков двух функций y = f1 ( x) и y = f 2 ( x) . Точка их пересечения есть корень исходного уравнения. Для отделения корней может быть использована теорема: Если функция y = f ( x) непрерывна на интервале (a,b) и если f (a ) и f (b) имеют противоположные знаки, т.е. f ( a ) ⋅ f (b) < 0 , то f ( x) имеет по крайней мере один действительный корень на интервале (a,b) . Если при этом f ( x) имеет первую производную, не меняющую знак, то корень единственный. В соответствии с ней для отделения корней можно вычислить значения функции в точках, расположенных через 5
равные промежутки, и определить те из них, на концах которых функция имеет противоположные знаки. На втором этапе происходит уточнение корня с помощью одного из итерационных методов, т.е. строится последовательность {xk}k=0,1,… приближений к решению, причем можно использовать один из двух критериев окончания итерационного процесса: 1. f ( xk ) < ε ,
xk − xk −1 < ε . Возможно их одновременное использование. Важной характеристикой итерационных методов является их порядок, характеризующий скорость сходимости, т.е. число итераций, за которое достигается заданная точность. 2.
Обозначим через ek = xk − x* расстояние между очередным приближением и точным решением. Очевидно, для сходимости метода величина ek +1 должна быть меньше, чем e ek , т.е. отношение k +1 должно быть меньше единицы. Чем ek меньше это отношение, тем выше скорость сходимости. Если предположить, что расстояния ek < 1 , то можно для каждого ek +1 =C , метода подобрать такую константу p , что lim p k → ∞ ( ek ) где C -константа, отличная от нуля и бесконечности. Величина p и называется порядком метода. Рассмотрим некоторые итерационные методы.
Метод половинного деления ( бисекции ) 6
Метод применяется, если f(x) непрерывна на отрезке [a,b] и f(a) ⋅ f(b) < 0 . Суть метода заключается в следующем (рис.1.2). Делим отрезок [a,b] , на котором имеется корень a+b уравнения (1.1), пополам, и если f( ) > е , то выбираем 2 a+b a+b ту из половин [a, ] или [ ,b] , на концах которой 2 2 f(x) имеет противоположные знаки; новый суженый отрезок [a,b] снова делим пополам и так до тех пор, пока не получим корень уравнения с заданной точностью.
Рис. 1.2. Метод половинного деления Метод половинного деления надежен и его практически удобно применять для грубого нахождения корня уравнения, так как с увеличением точности возрастает объем выполняемой работы из-за медленной сходимости итерационного процесса (порядок метода равен 1). Вычислительная схема метода состоит в следующем. До начала вычислений задаем: ε – точность, с которой нужно 7
получить корень уравнения; a,b- отрезок, содержащий корень. Затем для каждого шага процесса: 1. Вычисляем координату середины отрезка и значение функции в ней: a+b xс = , y с=f(xс ) ; 2 2. Проверяем неравенство yс < е . Если оно выполняется, то xc считаем корнем уравнения и выходим из цикла. Если неравенство не выполняется, определяем, какую из двух половин взять для следующей итерации (в п.3). 3. Если f(a) ⋅ yc > 0 , полагаем a = xc , иначе полагаем b = xc . Переход на п.1. Ниже приведен соответствующий фрагмент программы. ... yc:=1; while abs(yc)>eps do begin xc:=(a+b)/2; yc:=f(xc); writeln(xc,yc) if f(a)* yc >0 then a:=xc else b:= xc; end; Метод хорд В основе метода лежит линейная интерполяция функции по двум значениям, имеющим противоположные знаки. Метод хорд дает решение задачи для достаточно малых ε за меньшее число арифметических операций, чем метод половинного деления. Порядок его сходимости равен p ≈ 1,618 . Пусть нужно найти корень уравнения f ( x ) = 0 на отрезке [a,b], причем известно, что f(x) непрерывна на [a,b] и 8
f(a) ⋅ f(b) < 0 . Кроме того, пусть f / (x) и f // (x) на отрезке [a,b] сохраняют свой знак. Заменим функцию f(x) на отрезке [a,b] линейной функцией (рис.1.3), составив уравнение прямой, которая проходит через точки (a,f(a)) и (b,f(b)): y − f(a) x−a = ; f(b) − f(a) b − a x−a y = f(a) + [f(b) − f(a)] . b−a
Рис. 1.3. Метод хорд x−a [f(b) − f(a)] на концах b−a отрезка [a,b] принимает те же самые значения, что и функция f(x). В качестве приближенного корня уравнения f ( x ) = 0 возьмем точный корень уравнения P(x)=0. Это значение x1 (первое приближение) определяется из соотношения x −a f(a) + 1 [f(b) − f(a)]=0 , b−a
Линейная функция P(x) = f(a) +
9
откуда следует, что b-a . f(b)-f(a) Далее рассмотрим отрезки [a,x1 ] , [x1,b] и выберем из них тот, на концах которого функция f(x) имеет значения противоположных знаков. Те же вычисления выполним на выбранном отрезке и получим второе приближение к корню x2 и так до тех пор, пока не получим корень уравнения (1.1) с заданной степенью точности. Алгоритм метода следующий. До начала итерационного процесса задаем точность ε, с которой нужно получить решение, и отрезок [a,b], содержащий корень. Затем: 1. Вычисляем приближение к корню: b−a x = a − f(a) . f(b) − f(a) 2. Проверяем выполнение неравенства f(x) < е и, x1 = a − f(a)
если оно выполняется, то x считаем решением, если же не выполняется, продолжаем вычисления. 3. Проверяем условие f(x) ⋅ f(a) < 0 , и, если оно выполняется, полагаем b = x , в противном случае a = x и повторяем вычисления с п.1. Метод секущих Метод реализуется алгоритмом метода хорд, только a и b взяты с одной стороны от корня и не фиксируются. Геометрическая интерпретация метода состоит в следующем (рис. 1.4). Через точки a0 , b0 проводим прямую (секущую) до пересечения с осью Ох. Получаем точку x2 и из нее восстанавливаем перпендикуляр к оси Ох до пересечения с графиком функции y = f(x) . Получим точку b1 . Через точки 10
a1 = b0 и b1 проводим секущую – получим точку (пересечение секущей с осью Ох) и т. д.
x3
Рис. 1.4. Метод секущих Метод Ньютона (касательных) Метод основан на замене f(x) в точке начального приближения x0 касательной, пересечение которой с осью Оx дает первое приближение x1 , и т.д. Популярность метода связана с тем, что здесь не требуется находить отрезок, на концах которого функция принимает значения противоположных знаков. Вместо интерполяции по двум значениям метод Ньютона использует экстраполяцию с помощью касательной в данной точке. Геометрическая интерпретация метода приведена на рис. 1.5. Приняв в качестве начального приближения к корню x* некоторое значение x0, восстанавливают перпендикуляр из точки x0 к оси Ох. В точке его пересечения с графиком функции y=f(x), для которой отыскивается нуль, проводят касательную к кривой. Точка пересечения касательной с осью Ох дает новое 11
приближение x1 к корню. После этого процесс повторяют для точки x1 и т. д.
Рис.1.5. Метод Ньютона Получим формулу метода Ньютона. Уравнение касательной в точке x0 - это уравнение прямой, проходящей через заданную точку ( x0 , f ( x0 )) и имеющую угловой коэффициент f ′( x0 ) : y − f ( x0 ) = f ′( x0 )( x − x0 ) . В точке x1 пересечения этой касательной с осью ОХ величина y равняется нулю : − f ( x0 ) = f ′( x0 )( x1 − x0 ) . Отсюда получим значение x1 :
f(x0 ) x1 = x0 − . ′ 0) f (x В общем случае очередное приближение x k +1 выражается через предыдущее приближение x k по формуле Ньютона:
12
f(xk ) (1.2) ′ k) f (x К этому же результату можно прийти, используя разложение функции f(x) в ряд Тэйлора в окрестности точки x k : xk +1 = xk −
h2 f ′′( xk ) + ... (1.3) 2 Отбросим члены, содержащие h во второй и более высоких степенях, и выберем h таким, чтобы функция f(x) в точке x k +1 = x k + h равнялась нулю. Тогда (1.3) принимает вид: 0 = f ( x k ) + ( x k +1 − x k ) ⋅ f ′( x k ) или f ( xk ) x k +1 − x k = − , f ′( x k ) откуда следует формула Ньютона (1.2). Т.к. в ряде Тэйлора были отброшены члены высших порядков, то в полученной точке x k +1 функция f(x) не будет в точности раняться нулю и нужно повторить вычисления, взяв вместо x k полученное приближение x k +1 . Порядок сходимости метода Ньютона равен 2. Выигрыш во времени вычислений за счет быстрой (квадратичной) сходимости несколько уменьшается из-за необходимости вычисления помимо f(x k ) производной f ′(xk ) . Достоинством этого метода является также то, что он может быть распространен на решение систем НАТУ. f ( xk + h) = f ( x k ) + h ⋅ f ′( xk ) +
Модификации метода Ньютона Первая модификация заключается в том, что вместо вычисления точного значения производной f / (x k ) каждой итерации находится ее приближенное значение 13
на
df(xk ) f(xk + Дx) − f(xk ) Дf(xk ) ≈ = f / (xk ) = , dx Дx Дx где Дx – достаточно малая величина, например, 0.01. Следовательно, итерационная формула имеет вид Дx f(xk ) xk +1 = xk − . f(xk + Дx) − f(xk ) Вторая модификация заключается в том, что пересчет производной происходит через 3–4 итерации, а не на каждой. В начале каждой серии из 3–4 итераций вычисляется значение производной f / (x0 ) в точке имеющегося последнего приближения к корню. На следующих итерациях данной серии вычисления ведутся по формуле f(xk ) x k +1 = x k − . f / (x0 ) Заменим уравнением
Метод простой итерации равносильным уравнение f(x) = 0
ему
(1.4) x = ϕ(x) . Выбрав начальное приближение x0 ∈ [a,b] и подставив его в
правую часть уравнения (1.4), получим x1 = ϕ(x0 ) . Затем это значение x1 снова подставим в правую часть уравнения (1.4) и найдем x2 = ϕ(x1 ) . Повторяя этот процесс, получаем числовую последовательность x k = ϕ(xk-1 ) . При этом возможны два случая: 1) последовательность x0 , x1 , ... , xk сходится, т.е. имеет предел и тогда этот предел будет корнем уравнения f(x) = 0 ; 2) последовательность x0 , x1 , ... , xk расходится, т.е. не имеет предела или стремится к бесконечности. 14
Геометрическая интерпретация метода показана на рис. 1.6.
Рис. 1.6. Метод простой итерации Метод сходится, если выполняется условие ϕ′(x) < 1 . Чем меньше ϕ′(x) , тем быстрее сходимость итерационного процесса. Практически метод простых итераций осуществляется так. 1. Преобразовать уравнение f(x) = 0 к виду (1.4) таким образом, чтобы ϕ′(x) < 1 . 2. Принять за начальное приближение любое число из отрезка [a,b]. 3. Вычислять последовательность приближений по формуле x k = ϕ(x k-1 ) , k=1,2 ,... до тех пор, пока для двух последовательных приближений не будет выполнено неравенство xk − xk −1 ≤ е . Пример. Найти методом простой итерации на отрезке [0,1] корень уравнения 5 x 3 − 20 x + 3 = 0 . Решение. К виду x = ϕ(x) это уравнение преобразовать несколькими способами, например: 1. x = x + (5 x 3 − 20 x + 3) , т.е. ϕ1 ( x) = 5 x 3 − 19 x + 3 . 15
можно
5x3 + 3 5x 3 + 3 , т.е. ϕ 2 ( x) = . 20 20 20 x − 3 20 x − 3 3. x = 3 , т.е. ϕ3 ( x) = 3 . 5 5 Проверим выполнение условия сходимости для [0,1]: 2. x =
1) max ϕ1′ ( x) = max 15 x 2 − 19 > 1 - условие не выполняется. 2)
15 x 2 3x 2 3 max ϕ′2 ( x) = max = max = <1 20 4 4
- условие
выполняется, поэтому именно этот вариант следует использовать для организации итерационного процесса. Метод Эйткена – Стеффенсона Уравнение (1.1) сначала нужно преобразовать к виду (1.4). Метод обеспечивает решение по такому алгоритму: 1. Задаем начальное приближение x k = x0 . 2.Находим первое приближения.
x1 = ϕ(x0 )
и
второе
x2 = ϕ(x1 )
3. Вычисляем x k+1 = (x0 x 2 -x12 )/(x0 − 2 x1 + x 2 ) . 4. Проверяем условия xk +1 − xk > е , x0 − 2 x1 + x 2 ≠ 0 . Если эти условия соблюдаются, переходим к п.1, т.е. задаем x k и x0 новое значение x k+1 , в противном случае останавливаем счет и принимаем x=x k+1 . Метод Эйткена-Стеффенсона при сложных f(x) имеет ускоренную сходимость (по сравнению с методом простых итераций). Однако при простых функциях f(x) время счета практически не уменьшается, так как число дополнительных операций в этом методе существенно больше, чем в методе простых итераций. 16
Метод обратной квадратичной интерполяцииэкстраполяции Заключается в замене f(x) полиномом Лагранжа второй степени (число узлов m=3). При этом можно получить аналитическое выражение для приближенного значения корня. Действительно, заменив x на y и y на x, полином Лагранжа второй степени можно представить в виде x(y) = b0 + b1(y − y 0 ) + b2(y-y0 )(y − y1 ) . Для y=0 находим x = b0 − b1 y0 + b2 y 0 y1 . (1.5) В соответствии с методом Эйткена и с учетом взаимной x − x0 , замены переменных x и y имеем b0 = x0 , b1 = 1 y1 − y 0 x −x q −b q 2= 2 1 , b2= 2 1 . Подставив b0 , b1 , b2 в (1.5), y 2 − y0 y 2 − y1 получим x − x0 x = x 0 − y 0( 1 + y1 − y 0 (x − x0 )/(y1 − y 0 ) − (x 2 − x0 )/(y 2 − y 0 ) + 1 ⋅ y1 ) . y 2 − y1
На следующей итерации, если выполняется x − x1 > ε, задаем x1 = x , если не выполняется, считаем x корнем. Геометрическая интерпретация метода показана на рис. 1.7.
Метод поразрядного приближения Алгоритм для поиска всех корней отрезка [a,b] этим методом имеет вид: 1. Задаем шаг С=h, x=a, k=0 и находим W=sign f(x) – знак функции. 2. Задаем значение x=x+С и проверяем условие (x-С) ≥ b. 17
3. Если оно выполняется, заканчиваем счет, иначе - на п.4. 4. Вычисляем f(x) и проверяем условие f ( x ) ⋅W/C > 0 . Если оно выполняется, идем на п.2, иначе на п.5. 5. Задаем C = −C/R , где R – показатель разрядности (уменьшения шага C), и проверяем выполнение условия C > е/R , где ε – заданная погрешность вычисления корня. Если это условие выполняется, идем на п.2, иначе на п.6. 6. Задаем k=k+1 и выводим на печать значение k-го корня x k = x . Затем полагаем C=h, W= -W и идем на п.2.
Рис. 1.7. Метод обратной квадратичной интерполяцииэкстраполяции 18
1.2. Индивидуальные задания Цель работы – найти все корни уравнения f(x) = 0 на отрезке [-10, 10]. Варианты уравнений приведены в табл. 1.1. На первом этапе следует отделить корни. Для этого нужно вычислить значения функции y = f(x) на отрезке [-10,10] с шагом H = 0,5 и зафиксировать отрезки [a j ,b j ] , на концах которых функция меняет свой знак. Для каждого варианта нужно построить график функции и таблицу ее значений на отрезке [-10,10] с шагом 0,5. После отделения корней следует уточнить корни одним из следующих методов с точностью ε = 0,001; 1) половинного деления, 2) секущих, 3) хорд, 4) Ньютона, 5) простой итерации, 6) модифицированный метод Ньютона, 7) Эйткена - Стеффенсона, 8) квадратичной интерполяции-экстраполяции, 9) поразрядного уточнения. На каждой итерации в одну строку печатать k , xk , f(x k ) . Критерием окончания итерационного процесса может быть: f ( xk ) < ε ; 1)
xk − xk −1 < ε при xk < 1 ; x k − xk −1 < ε при xk ≥ 1 . xk В зависимости от варианта выполнить одно из дополнительных заданий. 2)
19
1. Построить столбчатую диаграмму для первого корня ε N = N (ε) , где N – число выполненных итераций; ε k +1 = k ; 10 ε 0 = 0.1 ; k=0,1,2,3,4. 2. Построить столбчатую диаграмму N = N(x0 ) , где x0 – b−a , i = 0,1,2 ,3 , т.е. x0 начальное приближение, x0 = a + i 3 принимает на отрезке [a,b] четыре значения. 3. Для первого корня построить график зависимости f(k) , k =1,2 ,...,N . 4. Для первого корня построить график зависимости D(k) = xk − xk −1 , k=1,2,...,N . 5. Построить на одном поле график функций N = N (ε) для своего метода и метода половинного деления. 7. Среди всех корней на отрезке [-10,10] найти второй по величине. Варианты индивидуальных заданий приведены в табл. 1.2. Таблица 1.1 Вариант 1
Уравнение 2 x − 8x + 8x − 1 = 0
2
x 4 − 4 x 3 − 8x 2 + 1 = 0
3
(x − 1 )2 lg (x + 11 ) = 1
4 5
x 2 − sin 5 x = 0 1 arctgx − x 3 = 0 3
6
e − x = 0 ,5 +
7
2 x 3 − 9 x 2 − 60 x + 1 = 0
4
3
2
x
20
8
3 sin x + 0,35 x − 3,8 = 0
9
1 x − + 2 sin 3,6 x = 0 3 1 1 1 tgx − tg 3 x + tg 5 x − = 0 3 5 3
10 11 12 13
x 4 − 3 sin 3 x = 0 x − 4 sin x = 1
e x + ln x − 10 x = 0
14
x2 cos x − e 2 + x − 1 = 0
15
1 − x + sin x − ln 1 + x = 0
16
3 x 4 + 8 x 3 + 6 x 2 − 10 = 0
17
3 x 4 + 4 x 3 − 12 x 2 − 5 = 0 x log3 x + 1 = 1
18
−
19 20
arctg(x − 1 ) + 2 x = 0 p 2 sin (x + ) = 0 ,5 x 2 − 1 3
21
3 x 4 + 4 x 3 − 12 x 2 + 1 = 0
22
x 4 − x 3 − 2 x 2 + 3x − 3 = 0
23
1 − x − tgx = 0
24
x+ cos (x 0 ,52 + 2 ) = 0
25
x 4+x 3 − 10 x 2 − 34 x = 25
21
Таблица 1.2 Вариант Метод Критерий Дополнитель ное задание
1 1 1 1
2 2 2 2
Вариант 15 Метод 6 Критерий 1 Дополнительное 3 задание
3 3 1 3
16 7 2 4
4 4 2 4
5 5 1 5
17 8 1 5
6 6 2 6
7 7 1 1
18 9 2 6
22
8 8 2 2
19 1 1 2
9 10 9 1 1 2 3 4
20 2 2 3
11 2 1 5
21 3 1 4
22 4 2 5
12 3 2 6
23 5 1 6
13 4 1 1
24 6 2 1
14 5 2 2
25 7 1 2
Лабораторная работа №2 РЕШЕНИЕ СИСТЕМ НЕЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ И ТРАНСЦЕНДЕНТНЫХ УРАВНЕНИЙ (НАТУ) 2.1. Теоретические сведения Постановка задачи Решением системы НАТУ ⎧ f1(x1,x2 , ... ,xn ) = 0 ⎪ f (x ,x , ... ,x ) = 0 ⎪ 2 1 2 n (2.1) ⎨ ... ⎪ ⎪⎩ f n(x1,x2 , ... ,xn ) = 0 , где xi – неизвестные; f i – заданные функции n переменных,
называется совокупность чисел x1* ,x*2 , ... ,x*n , которые, будучи подставлены на место неизвестных x1 , x2 , ... ,xn , обращают каждое уравнение в тождество. Удобно записать эту систему в векторных обозначениях: F(x) = 0 , где x – вектор с координатами x1 , x2 , ... ,xn , а F – вектор-функция с координатами f1 , f 2 , ... ,f n . Случай n=1 соответствует одному НАТУ и рассмотрен в предыдущем разделе. Если F ( x) ≡ Ax − B , то получим систему линейных алгебраических уравнений. Приведем геометрическую интерпретацию системы (2.1) для n=2, когда эта система имеет вид: ⎧ f1(x1,x 2 ) = 0 (2.2) ⎨ ⎩ f 2(x1,x 2 ) = 0 Нанесем на плоскости X1OX2 множество точек, для которых f1(x1,x2 ) = 0 , т.е. построим соответствующую этому уравнению кривую. Аналогично построим кривую, 23
соответствующую
второму
уравнению.
Координаты
( x1* ,x*2 ) точки пересечения этих двух кривых удовлетворяют как первому, так и второму уравнениям системы (2.2), т.е. являются ее решением. На рис.2.1 это построение выполнено для системы ⎧⎪ x 2 − x = 0 1 2 , ⎨ x1 ⎪⎩e − x2 = 0 которую, обозначив x1 через x и x2 через y, можно записать в более привычном виде: ⎧⎪ y = x 2 ⎪⎧x 2 − y = 0 или ⎨ x ⎨ ⎪⎩e − y = 0 ⎪⎩ y = e x
а) б) Рис.2.1.Система имеет одно решение (а), не имеет решений (б) В некоторых редких случаях систему НАТУ методом подстановки можно свести к одному уравнению, которое затем решить одним из рассмотренных методов, однако обычно такой подход неприемлем. Напомним, что для одного нелинейного уравнения задача решалась в два этапа: отделение корней и их уточнение. Для 24
систем НАТУ не существует каких-либо приемов грубого отделения корня. В некоторых случаях в результате составления таблиц данных функций или построения графиков с последующим определением координат точек пересечения можно получить приближенное значение корня. В большинстве практических случаев, когда решается серия систем, эта трудность отделения корней легко преодолима, так как решение предыдущей системы из этой серии является хорошим начальным приближением к решению очередной системы. Для уточнения корней системы НАТУ в отличие от СЛАУ применяются только итерационные, а не прямые методы. Чаще всего для решения систем НАТУ применяют метод Ньютона и его модификации. Метод Ньютона Представим все n уравнений системы в виде рядов Тейлора в окрестности точки M ( x1,...,xn ) : f i ( x1 + Δx1 ,..., x n + Δx n ) = f i ( x1 ,..., xn ) +
⎛ слагаемые ⎞ ⎟ ⎜ n ∂f (2.3) ⎟ ⎜ более i +∑ Δx j + ⎜ ⎟ высокого j =1∂x j ⎟ ⎜ ⎜ порядка ⎟ ⎠ ⎝ Нужно отыскать такую совокупность приращений Δx j , чтобы по известной точке M определить точку N ( x1 + Δx1 ,..., xn + Δxn ) , совпадающую с корнем. В этой точке, очевидно, левые части соотношения (2.3) должны обращаться в нуль. Учитывая это, а также отбросив члены более высоких порядков, получим систему линейных алгебраических уравнений (СЛАУ) относительно Δxi , 25
⎧ n ∂f1 Δxi = − f1 ( x1 ,..., x n ) ⎪∑ ⎪⎪ i =1 ∂xi ... ⎨ ⎪ n ∂f n Δxi = − f n ( x1 ,..., xn ) ⎪∑ ⎪⎩i =1 ∂xi которую можно записать в виде ∂f1 ⎤ ⎡ ∂f1 ∂f1 ... ⎢ ∂x ∂x2 ∂xn ⎥ ⎡ Δx1 ⎤ ⎡ − f1 ⎤ ⎥ ⎢ 1 ⎢ ∂f 2 ∂f 2 ... ∂f 2 ⎥ ⎢Δx2 ⎥ ⎢− f 2 ⎥ ⎥ ⎥=⎢ ⎢ ∂x1 ∂x2 ∂xn ⎥ ⎢ ⎢ ⎢ ⎥ ... ⎥ ⎥ ... ⎢ ... ⎢ ⎥ ⎢ ⎥ ⎥ Δx ⎢ − fn ⎦ f f f ∂ ∂ ∂ n ⎣ ⎣ ⎦ n n n ⎥ ⎢ ... ⎢⎣ ∂x1 ∂x2 ∂xn ⎥⎦
(2.4)
или ( F ′) ( k ) ⋅ Δx ( k +1) = − F ( k ) . (2.5) ∂f Значения производных i и функций f i здесь вычисляются ∂x j в известной точке M. Матрица в левой части (2.4) называется матрицей Якоби, или якобианом. Решив последнюю систему, мы, однако, не получим точных значений приращений Δxi , которые привели бы к точному значению корня исходной системы, так как отброшены члены более высоких порядков. Выбрав некоторое начальное приближение к корню –
(
)
точку M 0 x1(0 ),...,xn ( 0 ) , на первой итерации формируем СЛАУ (2.4). Решив ее относительно Δxi , получим первое
(1) ( 0) приближение xi = xi + Δxi . Если все Δxi достаточно малы,
26
итерационный процесс прекращается, а иначе на основании значений xi(1) выполняется вторая итерация и т.д.
Пример. Решить методом Ньютона систему уравнений ⎧⎪e − 3 x1 − 2 x = 0 2 ⎨ 3 ⎪⎩2 x1 − x2 − 5 = 0 Решение. Очевидно,
f1(x1,x2 ) = e −3 x1 − 2 x 2 ,
f 2(x1,x2 ) = 2 x13 − x2 − 5. Для формирования матрицы Якоби получим частные производные: ∂f ∂f1 = −3e − 3 x1 , 1 = −2 , ∂x 2 ∂x1 ∂f 2 ∂f 2 = 6 x12 , = −1 . ∂x1 ∂x1 Таким образом, СЛАУ, которую нужно решать на каждой итерации метода Ньютона, имеет структуру: ⎡− 3e − 3 x1 − 2⎤ ⎡ Δx1 ⎤ ⎡ − e − 3 x1 + 2 x2 ⎤ (2.6) ⎥. ⎢ ⎥⎢ ⎥=⎢ 3 2 − 1⎥⎦ ⎣Δx 2 ⎦ ⎢⎣− 2 x1 + x2 + 5⎥⎦ ⎢⎣ 6 x1 Перед первой итерацией следует выбрать некоторое
начальное приближение ( x1(0) , x2(0) ) к решению и подставить его в систему (2.6) вместо x1 и x2 . Решив ее, получим
поправки Δx1(1) и Δx2(1) , а затем- новое приближение к решению по формулам: x1(1) = x1(0) + Δx1(1) , x2(1) = x2(0) + Δx2(1) . 27
Полученные
числа
( x1(1) , x2(1) ) ,
которые
являются
результатом первой итерации, используются на второй итерации для получения очередного приближения к решению- ( x1(2 ) , x 2(2 ) ) и т.д. Систему (2.5) можно записать в другом виде, учитывая,
( k +1) − xi( k ) : что Δxi = xi
( F ′) ( k ) ⋅ ( xi(k +1) − xi(k ) ) = − F (k ) или
( F ′) ( k ) ⋅ xi(k +1) = − F (k ) + ( F ′) ( k ) ⋅ xi( k ) .
(2.7)
В этом случае СЛАУ решается не относительно приращений ( k +1) к Δxi , а сразу относительно новых приближений xi решению. Если вычисление Якобиана является очень трудоемким с точки зрения машинного времени, то можно применить модифицированный метод Ньютона. Он заключается в том, что якобиан пересчитывается не на каждой итерации, а через K итераций ( K = 2,…,5 ). На первой из K итераций вычисляется Якобиан F ′ x (0 ) , где x (0 ) – последнее имеющееся приближение к решению. На последующих K итерациях матрица системы не обновляется: F ′( x (0) ⋅ Δx ( k +1) = − F ( x ( k ) ) . Преимуществом этой модификации является также то, что, решая серию СЛАУ с постоянной матрицей LU-методом, можно один раз разложить ее на треугольные сомножители и на каждой итерации выполняется только прямой и обратный ход с треугольными матрицами. Эта модификация метода Ньютона, естественно, увеличивает общее число итераций, но каждая из них менее трудоемка.
( )
28
Метод простой итерации
Для применения этого метода систему НАТУ с помощью эквивалентных преобразований необходимо привести вначале к виду: ⎧ x1 = ϕ1 ( x1 ,..., xn ) ⎪ ... ⎨ ⎪ x = ϕ ( x ,..., x ) n 1 n ⎩ n
Затем следует задать начальное приближение x1(0 ),...,xn(0) и выполнить итерацию по формулам ⎧ x (1) = ϕ ( x (0) ,..., x (0) ) 1 1 n ⎪⎪ 1 ... ⎨ ⎪ x (1) = ϕ ( x (0) ,..., x (0) ) n 1 n ⎪⎩ n (1) ( 0) Если max xi − xi < ε , то процесс заканчивается, иначе i
полученный вектор x (1) используется как исходный на второй итерации и т.д. В общем случае итерации выполняются по формулам:
xi( k +1) = ϕi ( x1(k ),...,xn(k ) ),
i = 1,..., n .
Преимуществом этого метода по сравнению с методом Ньютона является то, что здесь не требуется вычислять частные производные и решать СЛАУ. Однако низкая скорость сходимости (линейная) метода простой итерации является его серьезным недостатком и предпочтение обычно отдается методу Ньютона.
29
Метод Зейделя
Метод Зейделя отличается от метода простой итерации
тем, что вычисленное новое значение компоненты xi(k +1) тут же используется для вычисления нового значения очередной
(k +1) . В этом методе итерации выполняются по компоненты xi+ 1 формулам: x1( k +1) = ϕ1 ( x1(k ),x2(k ) , ...,xn(k ) );
x2( k +1) = ϕ2 ( x1(k +1),x2(k ), ...,xn(k ) ); ... xi( k +1) = ϕ i ( x1(k +1) ,..., xi(−k 1+1) , xi(k ) , xi(+k 1) , ...,x n(k ) ); ...
xn(k +1) = ϕ n ( x1(k +1),..., xn(k−+11) , x n(k ) );
Как и в методе Ньютона, успех во многом зависит от выбора начальных значений неизвестных: они должны быть достаточно близки к точному решению. В противном случае итерационный процесс может расходиться. Множество точек n–мерного пространства, для которых итерационный процесс, использующий их в качестве начальных, сходится, называется областью сходимости метода. С увеличением числа уравнений системы область сходимости обычно уменьшается, поэтому при решении больших систем важным является опыт инженера при выборе начальной точки. Решение проблемы выбора начального приближения с помощью метода трансформации системы
Метод позволяет довольно часто решить проблему выбора начального приближения. Наряду с системой F ( x ) = 0 рассмотрим систему G (x ) = 0 , решение которой известно. 30
Деформируя ее с помощью конечного числа N шагов, превратим в F ( x ) = 0 : K , К=1,...,N G (k ) = G (k-1 ) + F − G (k −1) N
[
Решение
системы
]
G (0 ) ≡ G ( x) = 0
берем
в
качестве
начального приближения при решении системы G (1) = 0 . Решение системы G (1) = 0 , в свою очередь- в качестве
начального приближения при решении системы G (2 ) = 0 и
т.д. Предпоследний раз, имея решение системы G ( N −1) = 0 , берем его в качестве начального приближения при решении
системы G ( N ) ≡ F ( x) = 0 .
2.1. Индивидуальные задания
Цель работы – решить систему уравнений ⎧ y = f1 (x,y ) ⎧ F1 (x,y ) = 0 или ⎨ ⎨ ⎩ y = f 2 (x,y ) ⎩ F2 (x,y ) = 0 одним из методов: 1) простой итерации, 2) Зейделя, 3) Ньютона, 4) модифицированный Ньютона без пересчета Якобиана, 5) модифицированный Ньютона с пересчетом Якобиана через две итерации. Варианты систем уравнений приведены в табл.2.1. В разрабатываемой программе предусмотреть печать графиков функций y = f1 ( x ) и y = f 2 ( x ) на одном поле и таблицу их значений. На каждой итерации печатать ее номер k и промежуточные результаты: x k , y k , F1 ( x k ,y k ) , F2 ( xk ,y k ) . 31
Кроме того, следует выполнить одно из дополнительных заданий: 1. Построить столбчатую диаграмму величины N = N (ε) , где ε ε i +1 = i , ε 0 = 0.1 ; i=0,1,2,…,8; N – требуемое число 5 итераций. 2. Построить столбчатую диаграмму величины N = N ( x0 ) при фиксированном ε=0.001. Величина x 0 принимает пять значений. 3. Построить график функций F1 (k ) и F2 (k ) при k=1,2,...,N. 4. Построить график функций x = x(k ) и y = y (k ) при k=1,2,...,N. D1 (k ) = xk − x k −1 5. Построить график функции и
D2 (k ) = y k − y k −1 на одном поле при k=1,2,...,N.
Таблица 2.1 Вариант 1 2
3
Система уравнений
⎧⎪ y=e x ⎨ ⎪⎩ y=x 2 ⎧⎪ y-10 ⋅ e x=0 ⎨ 3 ⎪⎩ y-x =0 ⎧⎪ y 2 -y+x=0 ⎨ 2 ⎪⎩ x -y =0
Вариант 14
Система уравнений ⎧ y-2 x =0 ⎨ ⎩arctgx+y=0
15
⎧ x+ sin x-y=0 ⎨ ⎩ x -10 y=0
16
⎧⎪arctgx-y=0 ⎨ -x ⎪⎩e -y=0
32
4
5
⎧⎪ x 2+y+5=0 ⎨ 2 ⎪⎩- x +y =0 ⎧ x+ sin y=0 ⎨ ⎩ x+100 y=0
17
⎧⎪ln x -y=0 ⎨ 3 ⎪⎩ x +y=0
18
⎧⎪lg x -y=0 ⎨ 3 ⎪⎩ x +10 y=0 ⎧⎪ x 2+x+4-2 y=0 ⎨ ⎪⎩ xy=1 ⎧⎪2 x + sin x-y=0 ⎨ ⎪⎩ x - 2 y=0
6
⎧ y- sin x=0 ⎨ ⎩ y-50 x=0
19
7
⎧⎪ y-2e 4 x+3=0 ⎨ ⎪⎩ y=2 x 3 ⎧cos x-y=0 ⎨ ⎩ x -y=0
20
8
21
9
⎧⎪(x-1)2 -4-y=0 ⎨ ⎪⎩ y=-3 x 2
22
10
⎧⎪e x+10 x-y=0 ⎨ -x ⎪⎩e +2 y=0 ⎧⎪ x +4-y=0 ⎨ ⎪⎩-x 2+8-y=0 ⎧⎪3 x-2-y=0 ⎨ 4 2 ⎪⎩ x +x -8-y=0 ⎧⎪arctgx-y=0 ⎨ 2 ⎪⎩ x-y =0
23
11
12
13
24
25
⎧ x ⋅ sin x-y=0 ⎨ ⎩ y-10 x=0 ⎧⎪ x 2 e -2 y=0 ⎨ ⎪⎩- x -y+3=0 ⎧tgx-y=0 ⎨ ⎩2 x -3 y=0 ⎧⎪ x 3 -2 y=0 ⎨ ⎪⎩ x- y =0 ⎧⎪ lg x -y=0 ⎨ 2 ⎪⎩ x -y+1=0
Варианты индивидуальных заданий приведены в табл. 2.2. 33
Таблица 2.2 Вариант 1 2 3 4 5 6 7 8 9 10 11 12 13 Метод 1 2 3 4 5 1 2 3 4 5 3 4 5 Дополни- 1 2 3 4 5 2 3 4 5 1 1 2 3 тельное задание
Вариант 14 15 16 17 18 19 20 21 22 23 24 25 Метод 3 4 5 3 4 5 1 2 3 4 5 3 Дополни- 2 3 4 5 1 2 3 4 1 2 1 2 тельное задание
34
Лабораторная работа № 3 ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ 3.1.
Теоретическое сведения
Пусть на отрезке [a,b] задана функция y = f ( x ) . Разобьем отрезок [a,b] с помощью точек xi (i = 0,..., n) на n элементарных отрезков Δxi = [xi −1,xi ] , i = 1,...,n . На каждом из этих отрезков возьмем произвольную точку ξ i ( xi −1 ≤ ξ i ≤ xi ) . Предел интегральной суммы при увеличении числа точек разбиения называется определенным интегралом от функции f ( x ) на отрезке [a,b] : b
∫ f ( x)dx =
a
n
lim
max Δxi → 0
∑ f(оi )Δxi
i =1
Геометрический смысл определенного интеграла заключается в том, что он численно равен площади криволинейной трапеции, ограниченной кривой y = f ( x ) , осью Ox и прямыми x = a, x = b . Подынтегральная функция f (x ) может быть задана одним из трех следующих способов: 1. Задается явная формула для f (x ) . 2. f (x ) явно не задается, но может быть вычислено ее x ∈ [a,b] значение для любого по некоторой подпрограмме. 3. Задана таблица значений f (x ) на отрезке [a,b] для некоторого фиксированного набора точек xi . В первом случае интеграл вычисляется с использованием b
формулы
Ньютона – Лейбница
∫ f (x )dx = F (b ) − F (a ) ,
a
где
F(x)-первообразная. При задании функции f (x ) вторым и 35
третьим способом применяются методы численного интегрирования. Они основаны на аппроксимации f ( x ) некоторой другой функцией p( x ) (чаще всего полиномом), интеграл от которой вычисляется сравнительно просто: b
∫
f ( x )dx ≈
a
∫
p ( x )dx =
Разность
n
∑ c i f (x i ) .
i =1
a
Это приближенное формулой.
b
равенство называется квадратурной b
n
a
i=1
E= ∫ f ( x )dx- ∑ ci f ( xi )
называется
погрешностью квадратурной формулы. Обычно отрезок [a,b] разбивают на L частичных отрезков с помощью точек xi и представляют интеграл в виде суммы интегралов по этим отрезкам: b
L
xi
L
∫ f (x )dx = ∑ ∫ f (x )dx = ∑ I i
a
i =1 xi −1
i =1
Такие формулы называются составными. Формулы прямоугольников и трапеций Формула прямоугольников - простейшая квадратурная формула. Она использует непосредственную замену интеграла интегральной суммой. Разобьем отрезок [a,b] на L частичных отрезка с помощью точек xi (i = 0 ,...,L) . Аппроксимируем функцию f (x ) на каждом частичном отрезке полиномом нулевой степени (константой). В качестве этой константы можно взять значение функции в левой или правой или средней точке отрезка (рис.3.1).
36
а) б) в) Рис.3.1. Метод прямоугольников с узлом в левой (а), правой (б), средней (в) точках частичного отрезка 1 Обозначим hi = xi − xi −1 ; x 1 = xi − hi . Три варианта i− 2 2
формулы прямоугольников для частичных отрезков имеют вид: • I i = f ( xi −1 )hi - формула прямоугольников с узлом в левой точке; • I i = f ( xi )hi - формула прямоугольников с узлом в правой точке; • I i = f ( x 1 )hi - формула прямоугольников с узлом в i−
2
средней точке. Суммируя эти значения интегралов на частичных отрезках, получим соответствующие составные формулы прямоугольников: ⎞ L L L ⎛ I = ∑ f ( xi −1 )hi ; I = ∑ f (xi )hi ; I = ∑ f ⎜ x 1 ⎟hi , ⎜ ⎟ i =1 i =1 i =1 ⎝ i − 2 ⎠ Следующим простейшим полиномом является линейная функция. Если выбрать ее совпадающей с f ( x ) на концах 37
частичного отрезка [xi −1,xi ], то получим трапецию. Площадь ее принимается в качестве приближения к значению определенного интеграла и вычисляется по формуле трапеций (рис.3.2): f ( xi −1 ) + f ( xi ) Ii = hi . 2
Рис.3.2. Метод трапеций Составная формула трапеций имеет вид 1 n I = ∑ [ f ( xi −1 ) + f ( xi )]hi . 2 i =1 Для случая равномерного шага h = hi
I=
⎡ f (x ) + f (xn ) n ⎤ h n + ∑ f ( xi )⎥ . ∑ [ f (xi −1 ) + f (xi )] = h ⎢ 0 2 i =1 2 i =1 ⎣ ⎦
Погрешность формул прямоугольников и трапеций Рассмотрим формулу прямоугольников на частичном отрезке с узлом в левой (правой) точке. Обозначим M 1,i = max f ′( x ) . Оценка погрешности этой формулы xi −1 ≤ x ≤ xi
имеет вид: 38
x
Ei ≤ M 1,i ∫ ( x − xi −1 )dx = xi −1
M 1,i hi 2 2
.
Величина Ei будет мала, если мало M 1, i (функция близка к константе) или длина hi отрезка достаточно мала. Погрешность составной формулы получаем, суммируя погрешности по всем частичным отрезкам: M n E ≤ 1 ∑ hi2 , где M 1 = max f ′(x ) . 2 i =1 a ≤ x ≤b Если длины всех частичных отрезков равны, т.е. b−a M , то E ≤ 1 (b − a )h . Таким образом, составная hi = h = 2 n формула прямоугольников с узлом в левой или правой точке является методом первого порядка. Погрешность составной формулы прямоугольников с узлом в средней точке имеет вид:
h 2 (b − a ) M 2 , где M 2 = max f ′′( x ) . 24 x∈[a,b ] Отсюда следует, что формула средней точки имеет более высокий (второй) порядок точности, ее погрешность на всем E≤
( )
отрезке есть величина O h2 . Погрешность формулы трапеций на частичном отрезке: M 2, i 3 E≤ hi , где M 2 ,i = max f ′′( x ) . 12 x∈[xi −1,xi ] Погрешность составной формулы трапеций: n M h3 M E ≤ ∑ 2 = 2 (b − a )h 2 = O h 2 . 12 i =1 12
( )
39
Формула Симпсона В качестве аппроксимирующего полинома можно использовать полином второй степени. По трем точкам xi −1,xi ,xi +1 построим интерполяционный полином Лагранжа
L2 (x ) :
(x − xi )(x − xi +1 ) (x − xi −1 )(x − xi +1 ) yi −1 + y + (xi −1 − xi )(xi −1 − xi +1 ) (xi − xi −1 )(xi − xi +1 ) i (x − xi −1 )(x − xi ) y + (xi +1 − xi −1 )(xi +1 − xi ) i +1 L2 ( x ) =
Площадь криволинейной трапеции заменим площадью, ограниченной графиком L2 ( x ) . В этом случае xi +1
xi +1
xi −1
xi −1
∫ f (x )dx ≈ ∫ L2 (x )dx =
h ( yi −1 + 4 yi + yi +1 ) . 3
Полученная формула называется формулой Симпсона, или формулой парабол. Составная формула Симпсона b
h 3
∫ f (x )dx ≈ [ y 0 + 4( y1 + y 3 + ... + y n −1 ) + 2( y 2 + y 4 + ... + y n −2 ) + y n ] .
a
Погрешность составной формулы Симпсона: M4 (b − a )h 4 , E≤ 2880 т.е этот метод имеет четвертый порядок точности. Формулы Ньютона - Котеса Рассмотренные ранее формулы прямоугольников, трапеций, Симпсона являются частными случаями более общих формул Ньютона-Котеса. Они получаются в f (x ) результате замены подынтегральной функции 40
интерполяционным многочленом Лагранжа Ln (x ) степени n, причем отрезок интегрирования разбивается на n равных b
b
a
a
частей: ∫ f ( x )dx ≈ ∫ Ln (x )dx . На практике часто используют формулы, когда отрезок [a,b] разбивается на L подынтервалов [xi −1,xi ], i = 1,L b−a длиной H = и на каждом из них применяют формулу L Ньютона-Котеса: xi
n +1
x i −1
m =1
I i = ∫ f ( x )dx = rh ∑ Pm y m , H –расстояние между узлами интерполяции на n частичном отрезке; r –множитель при h; y m = f ( xi −1 + h(m − 1)) – значение подынтегральной функции в узле с номером m. Для получения интеграла на всем отрезке [a,b]
где h =
L
полученные результаты суммируются: I np = ∑ I i . В табл. 3.1 i =1
даны коэффициенты формул при n=1,...,8. Таблица 3.1 n
r
1
1 2
Pk ,
k = 1,2,3,...,n + 1
P1 = 1, P2 = 1 (формула трапеций)
41
Eогр. h3 ( 2 ) f (x) 12 x k ≤ x ≤ x k + mh
−
2
1 3
P1 = 1, P2 = 4 , P3 = 1 (формула Симпсона)
h5 ( 4 ) f (x) 90
3
3 8
P1 = 1, P2 = 3, P3 = 3, P4 = 1 (формула трех восьмых)
3h 6 ( 4 ) f (x) 80
4
2 45
P1 = 7 ,P2 = 32 ,P3 = 12, P4 = 32 ,P5 = 7
8h 7 ( 6 ) f (x) 945
5
5 288
P1 = 19 ,P2 = 75,P3 = 50 , P4 = 50,P5 = 75,P6 = 19
275h 7 ( 6 ) f (x) 12096
6
1 140
P1 = 41,P2 = 216 ,P3 = 27 , P4 = 272 ,P5 = 27 ,P6 = 216 , P7 = 41
9h 9 ( 8 ) f (x) 1400
7
P1 = 751,P2 = 3577 ,P3 = 1323, 7 8183h 9 ( 8 ) 17280 P4 = 2989 ,P5 = 2989 , P6 = 1323, 518400 f (x) P7 = 3577 ,P8 = 751
8
8 P1 = 989 ,P2 = 5888,P3 = −928, 28350 P4 = 10496 ,P5 = −4540 ,
2368h11 (10 ) f (x) 467775
P6 = 10496 ,P7 = −928, P8 = 5888,P9 = 989 Оценка погрешности методом Рунге Для обеспечения заданной точности расчета нужно уметь апостериорно, т.е. после проведения расчета, оценивать погрешность. Такую оценку можно получить с помощью метода Рунге. Рассмотрим его вначале для метода трапеций: xi f + fi I= ∫ f ( x )dx ≈ i −1 h = Ih 2 x i −1
Согласно полученным ранее результатам: 42
E h=I − I h ≈ ch 3 , где с – неизвестная не зависящая от h константа. 3
h ch 3 ⎛h⎞ Для шага : E h =I − I h ≈ 2c⎜ ⎟ = . 2 4 ⎝2⎠ 2
2
Вычитая два последних равенства, получим 3 I h − I h = ch 3 , 4 2
3
I h − Ih
ch = 2 4 3
= Eh , 2
что позволяет контролировать погрешность. Метод Рунге применим и для оценки погрешности других квадратурных формул. Пусть некоторая квадратурная формула имеет на частичном отрезке порядок точности m, т.е.
⎛h⎞ E h=I − I h ≈ ch . Тогда E h =I − I h ≈ 2c⎜ ⎟ ⎝2⎠ m
2
m
и имеет место
2
соотношение:
I h − Ih E h =I − I h ≈ 2
2
2
2 m −1
−1
,
Таким образом, сравнивая I h и I h можно получить оценку 2
точности полученной величины I h . Комбинируя величины 2
I h и I h можно получить более точное значение интеграла: 2
(
)
I = I + O hm+k , *
где 43
2 m −1 I h − I h I* =
2
2 m −1
−1
.
(3.1)
Автоматический выбор шага интегрирования Автоматический выбор шага интегрирования заключается в том, что интегрирование ведется с крупным шагом на участках плавного изменения функции f (x ) и с мелким шагом на участках быстрого изменения f (x ) . Рассмотрим составную квадратурную формулу L
I = ∑ Ik , k =1
где I k – значение интеграла на частичном отрезке, причем на каждом из них используется одна и та же формула. Если ε– суммарная ошибка на отрезке [a,b] , то допустимая ε погрешность на каждом частичном отрезке равна . L Если на данном частичном отрезке выполняется неравенство I h − Ih 2
2 m −1
−1
<
е , L
(3.2)
то уточняем полученное значение по формуле (3.1) и переходим к очередному отрезку. Если неравенство (3.2) не выполняется, то шаг нужно уменьшить в два раза и повторять вычисления до тех пор, пока не выполнится неравенство (3.2). Такие алгоритмы называются адаптивными, так как они адаптируются (приспосабливаются) к характеру изменения функции. 44
3.2. Индивидуальные задания Цель работы – изучить приемы вычисления определенных интегралов
b
∫ f(x)dx . Варианты подынтегральных функций
a
y = f(x) и отрезок интегрирования [a,b] приведены в табл.3.2. Хотя на практике первообразная функция y = f ( x ) чаще всего неизвестна, в данной работе она указана в той же таблице для проверки правильности работы программы. С ее помощью в начале программы вычисляется точное значение интеграла по формуле Ньютона- Лейбница: b
I точ = ∫ f(x)dx = F(b) − F(a) . a
Приближенное значение составной формуле
интеграла
вычисляется
по
L
I пр = ∑ I i . i =1
Варианты методов интегрирования: 1. Прямоугольников с узлом слева. 2. Прямоугольников с узлом справа. 3. Прямоугольников с узлом в средней точке. 4. Ньютона - Котесса с n=1. 5. ’’ n=2. 6. ’’ n=3. 7. ’’ n=4. 8. ’’ n=5. 9. ’’ n=6. 10. ’’ n=7. 11. ’’ n=8. Значение интеграла Iпр следует найти с точностью ε=0.001 посредством двойного пересчета, взяв начальное значение L=2. Критерий окончания процесса: 45
I пр, L1 − I пр, L2 < ε ,
L2 = 2L1 Таблица 3.2
В а р. 1 2
Подынтегральная функция
[2;3] [1;2]
− 0.0625⎛⎜ x 2 + 4 ⎞⎟ /x + x/ x 2 + 4 ⎝ ⎠
(4.25x + 1)/ ⎛⎜⎝ x
[2;5]
x 2 − 1/ 2 x 2 + 0.5 arccos (1/x )
2
3
2
2
x2 + 9 + 9/ x2 + 9
⎠
x 2 − 1 ⎞⎟ ⎠
3
[(
)
4 1/ 2 x 2 + 2 x + 3 ∗
∗ 2 x + 2 x + 3 ⎤⎥ ⎦
[-1;1]
2
(x 2 + 4)3
5
x3
6
x/ 3 x 2 + x + 1 ∗
[(
∗ 3x + x + 1⎤⎥ ⎦
8
1/ ⎡⎢ x 5 x 2 + x ⎤⎥ ⎣ ⎦ 2x − x2
9 1/ 3 7 x + 2 10
x / 125 − x 3
x ⋅ sin (0.8 x )
11 12 1/ sin 3 2 x
2(4 x + 2)/ ⎛⎜ 20 2 x 2 + 2 x + 3 ⎞⎟ ⎝ ⎠
(x 2 + 4)5 / 7(x 2 + 85 )
[3;5]
)
2
7
Первообразная
(x 2 + 9)3 ⎛ ⎞ 1 / ⎜⎜ x (x + 4 ) ⎟⎟ x3 / ⎝
3
Отрезок
[0;2]
− (2 x + 4 )/ 11 3 x 2 + x + 1
[1;3]
− 2 5 x 2 + x /x
[0;2]
(x − 1)
[0;1]
3(7 x + 2 )/ 143 7 x + 2
[1;4]
2 x − x 2 + 0.5 arcsin (x − 1)
2 arcsin
[-2;2]
(x/ 5)3 / 3
sin (0.8 x )/ 0.64 − x cos (0.8 x )/ 0.8
(
)
⎡ р 2р ⎤ − cos (2 x )/ 4 sin 2 2 x + 0 .25 ln (tgx ) ⎢ ⎥ ⎣ 10 5 ⎦
,
46
13 14 15
1/ (1 + sin (0.4 x ))
⎡ р⎤ ⎢0 , 2 ⎥ ⎣ ⎦
arctg ( x/ 3)
[-2;5]
(ln x )3
17
cos (2.5 x )/ [1 + cos (2.5 x )]2 ⎡ р р ⎤ ⎢ ⎥ ⎣10 4 ⎦
19 20 21
22 23 24 25
[0.5;2]
,
[
]
)
[
]
[
]
1/ sin (0.1x )cos 2 ( 0.1x)
1/ sin 2 (2.5 x ) cos 2 (2.5 x )
1/ 4 cos 2 (0.3 x ) + 9 ∗
x(ln x )3 − 3 x(ln x )2 + 6 x ln x − 6 x 0.2tg (1.25 x ) − 0.0667 tg 31.25 x
(
⎡ р р ⎤ 1.7888544 ⋅ arctg tg (0.25 x )/ 5 ⎢− 2 , 2 ⎥ ⎣ ⎦
1/ 1 + 4 cos 2 (0.25 x )
[
(
x ⋅ arctg (x/ 3) + 1.5 ln 9 + x 2
⎡ р р ⎤ sin (2 x )/ 4 cos 2 2 x + 0.25 ln∗ ⎢− 5 , 5 ⎥ ⎣ ⎦ ∗ tg ( x + 0.25р )
1/ cos 3 2 x
16
18
− 2 .5tg (0 .25 p − 0 .2 x )
,
⎡р р ⎤ ⎢ ⎥ ⎣4 2⎦ ⎡ р р⎤ ⎢ 16 , 8 ⎥ ⎣ ⎦
)
10 [ln (tg (0 .05 x )) + 1/ cos (0 .1x )] − 0 .8ctg (5 x )
[1;2]
0 .5555 arctg [1.5tg (0 .3 x )]
[0;2]
0.5 x − ln[sin (0.5 x ) + cos(0.5 x )]
e x cos 2 x
[0;π]
e x (5 + 10 cos 2 x + 2 sin 2 x )/ 10
(x ln x )2
[1;e]
x 3 9 ln 2 x − 6 ln x + 2 / 27
e 0 .5 x sin 5 x
[0;1]
e 0.5 x (0.5 sin 5 x − 5 cos 5 x )/ 25.25
]
∗ sin 2 (0.3 x ) tg (0.5 x )/ [tg (0.5 x ) + 1]
(
47
)
Во всех вариантах построить график и таблицу значений функции y = f(x) на отрезке [a,b] . В зависимости от варианта требуется также выполнить одно из таких дополнительных заданий: ε ε i +1 = i , 1. Построить график L* (ε) для 5 i = 0,1,...,8; ε 0 = 0.1 , L* – последнее число подынтервалов. I − I пр 2. Построить график E(L) = точ для ε = 10 −5 . I пр 3. Построить график I пр (L) для ε = 10 −5 . D(Li +1 ) , Li +1 = 2 Li ; D = I пр − I точ . 4. Построить график D(Li ) Сравнить с теоретически ожидаемым уменьшением погрешности. Варианты индивидуальных заданий указаны в таблице 3.3. Таблица 3.3 Вариант Метод Дополнитель ное задание Вариант Метод Дополни тельное задание
14 7 2
1 2 3 4 5 6 5 6 7 8 9 10 1 2 3 4 1 2
15 8 3
16 9 4
17 10 1
18 11 2
48
19 4 1
7 11 3
20 5 2
8 9 10 1 2 3 4 1 2
21 6 3
22 7 4
11 4 3
12 5 4
13 6 1
23 8 1
24 9 2
25 10 3
Лабораторная работа № 4 ЧИСЛЕННОЕ ДИФФЕРЕНЦИРОВАНИЕ 4.1. Теоретические сведения Аппроксимация производных с помощью отношения конечных разностей Производной функции y = f(x) в точке x называется предел Δy y ′ = lim , где Δy = f ( x + Δx) − f ( x ) . Δx → 0 Δx Приближенное значение производной можно взять равным отношению конечных разностей Δy . (4.1) y′ ≈ Δx Пусть функция y = f(x) задана таблично на множестве значений аргумента (сетке) x0 ,x1,...,xn c постоянным шагом b−a h : xi = x0 + i ⋅ h ; i=0,1,...,n; h = . Обозначим yi = f ( xi ) , n yi′ = f ′( xi ) , yi′′ = f ′′( xi ) . Очевидно, что для вычисления производной в точке, например x1 , можно использовать одну из формул y − y0 y1′ = 1 (4.2) h y − y1 y1′ = 2 (4.3) h
y − y0 y1′ = 2 2h 49
(4.4)
где применены соответственно левые, правые и центральные разности. Формулу для вычисления вторых производных можно получить, используя разность первых производных y 2 − y1 y1 − y 0 − ′ ′ y − 2 y1 + y1 y 2 − y1 h h ′ ′ = . (4.5) y1 = = 0 h h h2 Погрешность формул (4.2) и (4.3) равна O(h ) , т.е. они имеют первый порядок точности относительно h, а
( )
погрешность формул (4.4) и (4.5) равна O h 2 , т.е. они имеют второй порядок точности. Для нахождения производных любого порядка существуют формулы численного дифференцирования любого порядка точности. Один из универсальных способов построения формул численного дифференцирования состоит в том, что по значениям функции в некоторых узлах x0 ,x1,...,xn строят интерполяционный многочлен Лагранжа и Ln(x) приближенно полагают (4.6) f (m ) ( x ) ≈ L(nm ) ( x ) , 0 ≤ m ≤ n . В ряде случаев наряду с приближенным равенством (4.6) удается получить точное равенство, содержащее остаточный
член, выражающийся через производную f (n +1) . Приведем несколько распространенных формул для первой (m = 1 ) и второй (m = 2 ) производных в узлах, расположенных с постоянным шагом h > 0 : m = 1, n=2 (три узла) 2 1 (− 3 f 0 + 4 f1 − f 2 ) + h f ′′′(x ) , 2h 3 2 1 ( f 2 − f 0 ) − h f ′′′(x ) , f1′ = 2h 6
f 0′ =
50
(4.7)
f 2′ =
2 1 ( f 0 − 4 f1 + 3 f 2 ) + h f ′′′(x ) ; 2h 3
m=2, n=2 (три узла) 1 ( f 0 − 2 f1 + f 2 ) − hf ′′′(x ) , f 0′′ = h2
h 2 (4 ) ( f 0 − 2 f1 + f 2 ) − f (x ) , f1′′ = 12 h2 1 ( f 0 − 2 f1 + f 2 ) − hf ′′(x ) ; f 2′′ = h2 m=1, n=3 (четыре узла) 1
3 1 (− 11 f 0 + 18 f1 − 9 f 2 + 2 f 3 ) − h f (4) (x ) , 6h 4 3 1 (− 2 f 0 − 3 f1 + 6 f 2 − f 3 ) + h f (4) (x ) , f1′ = 6h 12
(4.8)
f 0′ =
f 2′ =
3 1 ( f 0 − 6 f1 + 3 f 2 + 2 f 3 ) − h f ( 4 ) ( x ) , 6h 12
f 3′ =
1 h 3 (4 ) (− 2 f 0 + 9 f1 − 18 f 2 + 11 f 3 ) + f (x ) . 6h 4
(4.9)
Частные производные Рассмотрим функцию двух переменных u = f ( x,y ) , заданную в табличном виде: ui,j = f xi ,y j , где xi = x0 + ih1 (i = 0,1,...,N x ) , y j = y0 + jh2 j = 0,1,...,N y . В табл. 4.1
(
(
)
)
представлены данные, которые используются для вычисления производных в точке xi ,y j .
(
)
51
Таблица 4.1 x y
xi −2
x i −1
y j −2
u i −2,j −2
u i −1,j −2
y j −1
u i −2 ,j −1
u i −1,j −1
u i−2, j
u i −1,j
y j +1
u i −2,j +1
u i −1,j +1
y j +2
u i −2,j + 2
u i −1,j + 2
yj
xi
x i +1
xi + 2
u i,j −2
u i +1,j −2
u i + 2,j −2
u i,j −1
u i +1,j −1
u i + 2 ,j −1
u i +1,j
u i + 2,j
u i,j +1
u i +1,j +1
u i + 2,j +1
u i,j + 2
u i +1,j + 2
u i + 2,j + 2
u i,j
∂u f ( x + h1,y ) − f ( x,y ) ≈ , ∂x h1
Так как
∂u f ( x,y + h2 ) − f ( x,y ) ≈ , ∂y h2 то можно получить следующие простейшие соотношения для частных производных в узле xi ,y j с помощью отношений
(
)
конечных разностей: ui, j +1 − uij u i +1, j − u ij ⎛ ∂u ⎞ ⎛ ∂u ⎞ , ⎜⎜ ⎟⎟ ≈ ⎜ ⎟ ≈ h2 h1 ⎝ ∂x ⎠ ij ⎝ ∂y ⎠ ij
(4.10)
Приведем окончательные формулы для некоторых аппроксимаций частных производных. Слева указывается комбинация используемых узлов (шаблон), которые помечены кружками. Значения производных вычисляются в узле xi ,y j , отмеченном крестиком (напомним, что на
(
)
52
шаблонах и в таблице по горизонтали изменяются переменная x и индекс i, по вертикали – y и j):
Ο×Ο Ο × Ο
ui +1,j − ui −1,j ⎛ ∂u ⎞ ⎜ ⎟ = 2h1 ⎝ ∂x ⎠ ij
(4.11)
ui,j +1 − ui,j −1 ⎛ ∂u ⎞ ⎜⎜ ⎟⎟ ≈ 2h2 ⎝ ∂y ⎠ ij
(4.12)
Ο⊗Ο
⎛ ∂ 2u ⎞ u − 2u ij + u i −1,j ⎜ ⎟ ≈ i +1,j ⎜ ∂x 2 ⎟ h12 ⎝ ⎠ ij
(4.13)
Ο ⊗ Ο
⎛ ∂ 2u ⎞ u − 2u i,j + u i,j −1 ⎜ ⎟ = i,j +1 ⎜ ∂y 2 ⎟ h22 ⎝ ⎠ ij
(4.14)
O O
× O O O O
× O O
⎛ ∂ 2u ⎞ u −u ⋅u −u ⎜ ⎟ ≈ i+1,j+1 i+1,j−1 i−1,j+1 i−1,j−1 (4.15) ⎜ ∂x∂y ⎟ 4h1h2 ⎝ ⎠ij
u i +1,j +1 − ui −1,j +1 + u i +1,j −1 − u i −1,j −1 ⎛ ∂u ⎞ (4.16) ⎜ ⎟ ≈ 4h1 ⎝ ∂x ⎠ ij
53
O O
× O O
ui +1,j +1 − ui +1,j −1 + ui −1,j +1 − ui −1,j −1 ⎛ ∂u ⎞ ⎜⎜ ⎟⎟ ≈ (4.17) 4h2 ⎝ ∂y ⎠ ij
ПП ⊗ ПП
⎛ ∂2u ⎞ −u + 16ui +1,j − 30uij + 16ui −1,j − ui −2,j ⎜ ⎟ ≈ i +2,j ⎜ ∂x2 ⎟ 12h12 ⎝ ⎠ij
(4.18)
Ο Ο
⎛ ∂ 2u ⎞ − u i,j + 2 + 16ui,j +1 − 30u i,j + 16ui,j −1 − ui,j − 2 ⎟ ≈ ⊗ ⎜ (4.19) 2 ⎜ ∂y 2 ⎟ 12 h . ⎠ ij 2 Ο ⎝
Ο
Ο Ο Ο Ο ⊗ Ο Ο Ο Ο
⎛ ∂ 2u ⎞ ⎜ ⎟ ≈ 1 ui +1,j +1 − 2ui,j +1 + ui −1,j +1 + ui +1,j − 2 ⎜ ∂x 2 ⎟ ⎝ ⎠ ij 3h1
(
− 2ui,j + ui −1,j + ui +1,j-1 − 2ui,j −1 + ui −1,j −1 Ο Ο Ο Ο ⊗ Ο Ο Ο Ο
)
(4.20)
⎛ ∂ 2u ⎞ ⎜ ⎟ ≈ 1 ui +1,j +1 − 2ui +1,j + ui +1,j −1 + ui,j +1 − 2 ⎜ ∂y 2 ⎟ ⎝ ⎠ ij 3h2
(
− 2ui,j + ui,j −1 + ui −1,j +1 − 2ui −1,j + ui −1,j −1
)
(4.21)
4.2. Индивидуальные задания Необходимо вычислить значение производной тремя способами: • по упрощенной формуле (4.10); • по одной из формул (4.2)–(4.21); • по формуле, полученной аналитически.
54
Обозначим через D∗ , Dпр , Dан значения производной, вычисленные соответственно по формулам (4.10), (4.2) − (4.21) и аналитически. Для функции одной переменной построить таблицу для n=10. x f (x )
D*
Dпр Dан
Dан − D* ⋅ 100 Dан
Dан − Dпр ⋅ 100 Dан
Построить график функции y = f ( x ) . Построить также графики D∗ , Dпр , Dан на одном поле. Для функций двух переменных напечатать таблицы в виде y x
при Nx=10, Ny=5 для таких данных: Dан − Dпр D − D* ⋅ 100 ; U = f ( x,y ) ; D∗ , D пр , D ан , ан ⋅ 100 Dан Dан а также построить соответствующие поверхности. Выполнить одно из следующих дополнительных заданий: D − D* ⋅ 100 . 1. Построить график функции ан Dан Dан − Dпр 2. Построить график функции ⋅ 100 . Dан
55
3. Построить график функции
D* − Dпр Dпр
⋅ 100 .
4. В тех же узлах найти Dпр с уменьшенным в четыре раза шагом. 5. То же, но для D* . Dан − Dпр 6. То же, но для ⋅ 100 . Dан D − D* ⋅ 100 . 7. То же, но для ан Dан Функции и варианты приведены в табл. 4.2, 4.3. Вариант 1
Функция x 2 + cos(2x )
Таблица 4.2 a b 1 6
2
e x + cosx
0
5
3
x 2 + sinx
-2
3
4 5 6 7 8
x + sinx x + cosx sinx + cos(2x) cosx + sin(2x) sinx + 0.1cos(2x ) + y 3
0 -5 1 2 0
2.5 0 3.5 4.5 2.5
9
cosx + 0.1sin(2x ) + y 3
0
2
10
e x − sin(5x ) + cos(10y )
0
0.5
11
x + sin(4x ) + y 4
1
2
12
x − cos(3x ) + 3y 2
2
4
13
(1 + x )e −2x + sin3y
-1
1.5
56
14 15 16 17
cos(2x ) + siny x cos + cosy 10 sin(1 − x ) + cos(1 − y )
(3x2 − 1)e−x
2
1 0
3.5 10
1 -2
5 3
18
y + e − xsinx
-1
4
19
x 4 + 3x + 1
-1
1
20
5x 3 + 7x 2
-1
1
21
x 4 + 5x 3 − 100 + sin4y
0
5
22
0
5
23
x 2 − x − cos(5x ) + cos2y x x3 − + y 4
-2
3
24
x 7 + 3x 2 − 2x + 1
1
3.5
25
x 8 − x 6 + 3x 5 x 2 + x
-1
1 Таблица 4.3
Вариант Формула Доп. задание
1 2 3 4 5 6 7 8 9 10 4.8 4.7 4.9 4.17 4.7 4.8 4.9 4.10 4.11 4.12 2 3 1 4 5 6 7 4 5 6
Вариант Формула Доп. задание
11 12 13 14 15 16 17 18 19 20 4.13 4.14 4.15 4.16 4.19 4.20 4.7 4.8 4.9 4.10 7 4 5 6 7 4 1 2 3 4
Вариант Формула Доп. задание
21 22 23 24 25 4.11 4.12 4.7 4.8 4.9 5 6 1 2 3
Литература 1. Турчак Л.И. Основы численных методов. –М.: Наука, 1987. 57
2. Ортега Дж., Пул У. Введение в численные методы решения дифференциальных уравнений. –М.: Наука, 1986. 3. Волков Е.А. Численные методы: Учеб. пособие для вузов. – М.: Наука, 1987. 4. Шуп Т. Решение инженерных задач на ЭВМ. –М.: Мир, 1982. Содержание
Лабораторная работа №1. Решение нелинейных алгебраических и трансцендентных уравнений……………....3 Лабораторная работа №2. Решение систем нелинейных алгебраических и трансцендентных уравнений..…………....23 Лабораторная работа №3. Численное интегрирование.….....35 Лабораторная работа №4. Численное дифференцирование..49 Список литературы................…………..................................57
58