Министерство образования и науки РФ
Санкт-Петербургский государственный электротехнический университет
“ЛЭТИ”
кафедра МОЭВМ
Лабораторная работа №5 по дисциплине вычислительная математика
на тему:
«Метод Ньютона».
г. Санкт-Петербург
-
Год
I. Цель работы:
Найти корень уравнения для функции методом Ньютона с заданной точностью Eps, исследовать скорость сходимости и обусловленности метода.
II. Общие сведения:
В случае, когда известно хорошее начальное приближение решения уравнения , эффективным методом повышения точности является метод Ньютона. Он состоит в построении итерационной последовательности сходящейся к корню уравнения .
Метод Ньютона допускает простую геометрическую интерпретацию (рис. 2). Если через точку с координатами провести касательную, то абсцисса точки пересечения этой касательной с осью Ох будет очередным приближением xn+1 корня уравнения .
Для оценки погрешности n-го приближения корня предлагается пользоваться неравенством
где М2-наибольшее значение модуля второй производной на отрезке [a,b]; m1-наименьшее значение модуля первой производной на отрезке [a,b]. Таким образом, если то Это означает, что при хорошем начальном приближении корня после каждой итерации число верных десятичных знаков в очередном приближении удваивается, т.е. процесс сходится очень быстро (имеет место квадратическая сходимость). Из указанного следует, что при необходимости нахождения корня с точностью итерационный процесс можно прекращать, когда
(3.1)
Рассмотрим один шаг итераций. Если на (n-1)-м шаге очередное приближение xn-1 не удовлетворяет условию окончания процесса, то вычисляются величины и следующие приближение корня При выполнении условия (3.1) величина xn принимается за приближенное значение корня с, вычисленное с точностью .
III. Порядок выполнения работы:
-
Графически или аналитически отделить корень уравнения (т.е. найти отрезки [Left, Right], на которых функция удовлетворяет условиям сходимости метода Ньютона).
-
Составить подпрограмму - функцию вычисления функции , f’(x) предусмотрев округление значений функции с заданной точностью Delta.
-
Составить головную программу, вычисляющую корень уравнения и содержащую обращение к подпрограммам , , (x), Round, NEWTON и индикацию результатов.
-
Выбрать начальное приближение корня x0 из [Left, Right] так, чтобы >0.
-
Провести вычисления по программе. Исследовать скорость сходимости метода и чувствительность метода к ошибкам в исходных данных.
IV. Выполнение работы:
-
Отделим графическим методом корни уравнения , т.е. найдем отрезки
= ,
тогда Eps ≤ Delta / |1/(3x2-3+2e-x) |.
Теперь графически определим отрезок [Left, Right].
Где .
Проанализировав результаты, мы получаем отрезок [1, 2]. На этом отрезке мы можем брать любое начальное приближение x, т. к. ∙>0 всюду на отрезке [1, 2].
2)Составим подпрограмму вычисления функции и производной этой функции f’(x) = 3x2 – 3 + 2e(-x).
double F(double x)
{
extern double c,d,delta;
double s;
long int S;
s = x*x*x-3*x-2*exp(-x);
if( s/delta < 0 )
S = s/delta - .5;
else
S = s/delta + .5;
s = S*delta;
s = Round( s,delta );
return(s);
}
double F1(double x)
{
extern double delta;
double s;
long int S;
s = 3*x*x-3+2*exp(-x);
if( s/delta < 0 )
S = s/delta - .5;
else
S = s/delta + .5;
s = S*delta;
s = Round( s,delta );
cout<<" {f'(x)="<<s<<"}"<<endl;
return(s);
}
3)Составляем головную программу, вычисляющую корень уравнения с заданной точностью Eps и содержащую обращение к подпрограмме f(x), программам-функциям NEWTON, Round и представление результатов.
void main()
{
clrscr();
int k;
long int s;
float x11,eps1,delta1;
double x1,eps,x;
double F(double);
printf("Input eps: ");
scanf("%f",&eps1);
eps = eps1;
printf("Input x1: ");
scanf("%f",&x11);
x1 = x11;
printf("Input delta: ");
scanf("%f",&delta1);
delta = delta1;
x = NEWTON(x1,eps,k);
printf("x=%f k=%d\n",x,k);
getch();
}
4) Проведем вычисления по программе, варьируя значения параметров Eps (точность вычисления корня) и Delta (точность задания исходных данных).
eps |
delta |
a |
b |
x1 |
x* |
k |
f(x*) |
|
|
0,000001 |
0,1 |
1 |
2 |
1,5 |
1,792345 |
2 |
0,047736173 |
0,143459 |
|
0,00001 |
0,1 |
1 |
2 |
1,5 |
1,792345 |
2 |
0,047736173 |
0,143459 |
|
0,0001 |
0,1 |
1 |
2 |
1,5 |
1,792345 |
2 |
0,047736173 |
0,143459 |
|
0,001 |
0,1 |
1 |
2 |
1,5 |
1,792345 |
2 |
0,047736173 |
0,143459 |
|
0,01 |
0,1 |
1 |
2 |
1,5 |
1,792345 |
2 |
0,047736173 |
0,143459 |
|
0,1 |
0,1 |
1 |
2 |
1,5 |
1,792345 |
2 |
0,047736173 |
0,143459 |
|
0,000001 |
0,01 |
1 |
2 |
1,5 |
1,785154 |
3 |
-0,002120657 |
0,145014 |
|
0,00001 |
0,01 |
1 |
2 |
1,5 |
1,785154 |
3 |
-0,002120657 |
0,145014 |
|
0,0001 |
0,01 |
1 |
2 |
1,5 |
1,785154 |
3 |
-0,002120657 |
0,145014 |
|
0,001 |
0,01 |
1 |
2 |
1,5 |
1,785154 |
3 |
-0,002120657 |
0,145014 |
|
0,01 |
0,01 |
1 |
2 |
1,5 |
1,785154 |
3 |
-0,002120657 |
0,145014 |
|
0,1 |
0,01 |
1 |
2 |
1,5 |
1,790901 |
2 |
0,03768143 |
0,143769 |
|
0,000001 |
0,001 |
1 |
2 |
1,5 |
1,785470 |
3 |
5,89554E-05 |
0,144945 |
|
0,00001 |
0,001 |
1 |
2 |
1,5 |
1,785470 |
3 |
5,89554E-05 |
0,144945 |
|
0,0001 |
0,001 |
1 |
2 |
1,5 |
1,785470 |
3 |
5,89554E-05 |
0,144945 |
|
0,001 |
0,001 |
1 |
2 |
1,5 |
1,785470 |
3 |
5,89554E-05 |
0,144945 |
|
0,01 |
0,001 |
1 |
2 |
1,5 |
1,785470 |
3 |
5,89554E-05 |
0,144945 |
|
0,1 |
0,001 |
1 |
2 |
1,5 |
1,790933 |
2 |
0,037904014 |
0,143762 |
|
0,000001 |
0,0001 |
1 |
2 |
1,5 |
1,785461 |
4 |
-3,13644E-06 |
0,144947 |
|
0,00001 |
0,0001 |
1 |
2 |
1,5 |
1,785461 |
4 |
-3,13644E-06 |
0,144947 |
|
0,0001 |
0,0001 |
1 |
2 |
1,5 |
1,785461 |
4 |
-3,13644E-06 |
0,144947 |
|
0,001 |
0,0001 |
1 |
2 |
1,5 |
1,785461 |
4 |
-3,13644E-06 |
0,144947 |
|
0,01 |
0,0001 |
1 |
2 |
1,5 |
1,785490 |
3 |
0,00019694 |
0,144941 |
|
0,1 |
0,0001 |
1 |
2 |
1,5 |
1,790882 |
2 |
0,037549275 |
0,143773 |
|
0,000001 |
0,00001 |
1 |
2 |
1,5 |
1,785462 |
4 |
3,76262E-06 |
0,144947 |
|
0,00001 |
0,00001 |
1 |
2 |
1,5 |
1,785462 |
4 |
3,76262E-06 |
0,144947 |
|
0,0001 |
0,00001 |
1 |
2 |
1,5 |
1,785462 |
4 |
3,76262E-06 |
0,144947 |
|
0,001 |
0,00001 |
1 |
2 |
1,5 |
1,785462 |
4 |
3,76262E-06 |
0,144947 |
|
0,01 |
0,00001 |
1 |
2 |
1,5 |
1,785483 |
3 |
0,000148645 |
0,144943 |
|
0,1 |
0,00001 |
1 |
2 |
1,5 |
1,790886 |
2 |
0,037577097 |
0,143772 |
|
0,000001 |
0,000001 |
1 |
2 |
1,5 |
1,785462 |
4 |
3,76262E-06 |
0,144947 |
|
0,00001 |
0,000001 |
1 |
2 |
1,5 |
1,785462 |
4 |
3,76262E-06 |
0,144947 |
|
0,0001 |
0,000001 |
1 |
2 |
1,5 |
1,785462 |
4 |
3,76262E-06 |
0,144947 |
|
0,001 |
0,000001 |
1 |
2 |
1,5 |
1,785462 |
4 |
3,76262E-06 |
0,144947 |
|
0,01 |
0,000001 |
1 |
2 |
1,5 |
1,785483 |
3 |
0,000148645 |
0,144943 |
|
0,1 |
0,000001 |
1 |
2 |
1,5 |
1,790886 |
2 |
0,037577097 |
0,143772 |
eps |
delta |
a |
b |
x1 |
x* |
k |
f(x*) |
|
|
0,000001 |
0,1 |
0 |
90 |
86 |
1,785440 |
12 |
-0,000148014 |
0,371503 |
|
0,00001 |
0,1 |
0 |
90 |
86 |
1,785440 |
12 |
-0,000148014 |
0,371503 |
|
0,0001 |
0,1 |
0 |
90 |
86 |
1,785440 |
12 |
-0,000148014 |
0,371503 |
|
0,001 |
0,1 |
0 |
90 |
86 |
1,785440 |
12 |
-0,000148014 |
0,371503 |
|
0,01 |
0,1 |
0 |
90 |
86 |
1,785440 |
12 |
-0,000148014 |
0,371503 |
|
0,1 |
0,1 |
0 |
90 |
86 |
1,785440 |
12 |
-0,000148014 |
0,371503 |
|
0,000001 |
0,01 |
0 |
90 |
86 |
1,786826 |
13 |
0,00942374 |
0,370994 |
|
0,00001 |
0,01 |
0 |
90 |
86 |
1,786826 |
13 |
0,00942374 |
0,370994 |
|
0,0001 |
0,01 |
0 |
90 |
86 |
1,786826 |
13 |
0,00942374 |
0,370994 |
|
0,001 |
0,01 |
0 |
90 |
86 |
1,786826 |
13 |
0,00942374 |
0,370994 |
|
0,01 |
0,01 |
0 |
90 |
86 |
1,785826 |
13 |
0,002515709 |
0,371361 |
|
0,1 |
0,01 |
0 |
90 |
86 |
1,787271 |
12 |
0,012501153 |
0,370831 |
|
0,000001 |
0,001 |
0 |
90 |
86 |
1,785465 |
13 |
2,44599E-05 |
0,371494 |
|
0,00001 |
0,001 |
0 |
90 |
86 |
1,785465 |
13 |
2,44599E-05 |
0,371494 |
|
0,0001 |
0,001 |
0 |
90 |
86 |
1,785465 |
13 |
2,44599E-05 |
0,371494 |
|
0,001 |
0,001 |
0 |
90 |
86 |
1,785465 |
13 |
2,44599E-05 |
0,371494 |
|
0,01 |
0,001 |
0 |
90 |
86 |
1,785465 |
13 |
2,44599E-05 |
0,371494 |
|
0,1 |
0,001 |
0 |
90 |
86 |
1,786623 |
12 |
0,00802057 |
0,371069 |
|
0,000001 |
0,0001 |
0 |
90 |
86 |
72,462218 |
4 |
380265,2739 |
0,004664 |
|
0,00001 |
0,0001 |
0 |
90 |
86 |
72,462218 |
4 |
380265,2739 |
0,004664 |
|
0,0001 |
0,0001 |
0 |
90 |
86 |
72,462218 |
4 |
380265,2739 |
0,004664 |
|
0,001 |
0,0001 |
0 |
90 |
86 |
72,462218 |
4 |
380265,2739 |
0,004664 |
|
0,01 |
0,0001 |
0 |
90 |
86 |
72,462218 |
4 |
380265,2739 |
0,004664 |
|
0,1 |
0,0001 |
0 |
90 |
86 |
75,762224 |
3 |
434641,4079 |
0,004459 |
|
0,000001 |
0,00001 |
0 |
90 |
86 |
84,415770 |
36 |
601295,4058 |
0,003996 |
|
0,00001 |
0,00001 |
0 |
90 |
86 |
84,415770 |
36 |
601295,4058 |
0,003996 |
|
0,0001 |
0,00001 |
0 |
90 |
86 |
84,415770 |
36 |
601295,4058 |
0,003996 |
|
0,001 |
0,00001 |
0 |
90 |
86 |
84,415770 |
35 |
601295,4058 |
0,003996 |
|
0,01 |
0,00001 |
0 |
90 |
86 |
84,415770 |
35 |
601295,4058 |
0,003996 |
|
0,1 |
0,00001 |
0 |
90 |
86 |
86,222318 |
25 |
640742,8875 |
0,003911 |
|
0,000001 |
0,000001 |
0 |
90 |
86 |
25,841938 |
82 |
17179,86922 |
0,013418 |
|
0,00001 |
0,000001 |
0 |
90 |
86 |
25,841938 |
82 |
17179,86922 |
0,013418 |
|
0,0001 |
0,000001 |
0 |
90 |
86 |
25,841938 |
81 |
17179,86922 |
0,013418 |
|
0,001 |
0,000001 |
0 |
90 |
86 |
25,841938 |
81 |
17179,86922 |
0,013418 |
|
0,01 |
0,000001 |
0 |
90 |
86 |
25,841938 |
81 |
17179,86922 |
0,013418 |
|
0,1 |
0,000001 |
0 |
90 |
86 |
25,822004 |
2 |
17140,0237 |
0,013429 |
Точное значение:
x* = 1,7854615
f(x*) = 0.00000031
5) Из полученных результатов видно, что, чем более высокая точность выходных данных нам необходима, тем больше нам необходимо сделать итераций. Кроме того, из таблицы видно, что с ростом ошибок в исходных данных, уменьшается точность выходных данных. Таким образом, теоретические результаты совпадают с экспериментальными данными.