Лабораторная работа 6 / lab 6.doc
Федеральное агенство по образованию РФ
СПбГЭТУ «ЛЭТИ»
Кафедра МО-ЭВМ
Факультет КТИ
ОТЧЕТ
по лабораторной работе № 6
Метод простых итераций.
Дисциплина: вычислительная мпатематика
Студент группы 4351
Кузьменко А.
Преподаватель:
Щеголева Н.Л.
Санкт-Петербург
2006
Лабораторная работа № 6
Метод простых итераций.
1. Постановка задачи.
Найти корень уравнения для функции с заданной точностью Eps методом простых итераций, исследовать скорость сходимости и обусловленность метода.
2. Теоретические сведения.
Метод простых итераций решения уравнения состоит в замене исходного уравнения эквивалентным ему уравнением и построении последовательности , сходящейся при n ® ¥ к точному решению.
Если функция определена и дифференцируема на отрезке [a, b] и все ее значения то, если существует q, такое, что , то процесс итерации сходится при , и предельное значение — единственный корень уравнения на отрезке [a, b]
Рассмотрим один шаг итерационного процесса. Исходя из найденного на предыдущем шаге значения , вычисляется . Если , то принимается xn = y и выполняется очередная итерация. Если же , то вычисления заканчиваются, и за приближенное значение корня принимается величина xn = y. Погрешность результата вычислений зависит от знака производной при погрешность определения корня составляет , а при погрешность не превышает e.
Для применения метода простых итераций определяющее значение имеет выбор функции в уравнении , эквивалентном исходному. Функцию необходимо подбирать так, чтобы . Это обусловливается тем, что если на отрезке (a, b), то последовательные приближения будут колебаться около корня c, если же , то последовательные приближения будут сходиться к корню c монотонно. Следует также помнить, что скорость сходимости последовательности {xn} к корню c функции тем выше, чем меньше число q.
3. Анализ задачи.
Составим уравнение эквивалентное исходному . Исходное уравнение имеет 5 корней:
Составить функцию , удовлетворяющую условиям сходимости метода итераций для всех корней одновременно довольно проблематично.
Пусть. График функции выглядит следующим образом (также приведен график y=x):
Условиям сходимости для корня x1 удовлетворяет интервал [-3.22, -2.56], а для корня x4 — интервал [0,34, 2.54], в окрестностях остальных корней .
Если , то график выглядит следующим образом:
И возможно найти корни x2 и x5 (интервалы сходимости соответственно — [-2.55, -0.15] и [2.55, 3.22] ).
Для того, чтобы найти корень x3 построим функцию . Ее график имеет вид:
Интервал сходимости — [-1.34, 1.77].
Всем интервалам сходимости, приведенные выше, соответствует , для уменьшения q необходимо ограничивать интервалы.
4. Текст программ.
Приведен текст программы для
double ITER(double X0,double Eps,int &N)
{
if(Eps<=0.0){puts("Неверное задание точности\n");getch();exit (1);}
double X1=F(X0);
double X2=F(X1);
N = 2;
while( (X1 - X2)*(X1 - X2) > fabs((2*X1-X0-X2)*Eps) )
{
X0 = X1;
X1 = X2;
X2 = F(X1);
N++;
}
return(X2);
}
#include "methods.h"
double delta;
void main()
{
int k;
long int s;
float eps1,delta1,a1;
double eps,x0,x;
printf("введите delta:");
scanf("%f",&delta1);
delta = delta1;
printf("введите eps:");
scanf("%f",&eps1);
eps = eps1;
printf("введите x0:");
scanf("%f",&a1);
x0 = a1;
x = ITER (x0,eps,k);
printf("x=%f k=%d\n",x,k);
getch();
}
double F(double x)
{
extern double delta;
double s;
if (x==0) {printf ("деление на 0!"); getch(); exit(1);}
{ s = x + 0.04*( (pow(x,4))-(13*(x*x))Я(1/x) );
s = Round( s,delta );
return(s);
}
}
double F1(double x)
{
extern double delta;
double s;
if (x==0) {printf ("деление на 0!"); getch(); exit(1);}
{ s = 1 + 0.04*( 4*pow(x,3)-26*x+1/(x*x) );
s = Round (s,delta);
return(s);
}
}
5. Вычислительный эксперимент.
С помощью описанных ранее функций φ(x) и составленных на их основе программ, найдем значения корней исходного уравнения (с разной точностью).
Исходные данные: x01=-2.6, x02=-2.5, x03=1.7, x04=0.4, x05=3.2, delta=0.000001.
| eps | x1 | k1 | x4 | k4 | x2 | k2 | x5 | k5 | x3 | k3 |
| 0,1 | -2,990491 | 3 | 1,946682 | 2 | -2,04655 | 3 | 3,018182 | 2 | 0,027997 | 2 |
| 0,01 | -2,990491 | 3 | 1,969991 | 3 | -2,029841 | 4 | 3,009072 | 3 | 0,027997 | 2 |
| 0,001 | -2,988378 | 4 | 1,974081 | 4 | -2,025262 | 6 | 3,009072 | 3 | 0,027786 | 3 |
| 0,0001 | -2,988718 | 5 | 1,974987 | 6 | -2,025089 | 7 | 3,010933 | 6 | 0,027786 | 3 |
| 0,00001 | -2,988665 | 6 | 1,975014 | 7 | -2,025044 | 9 | 3,010902 | 7 | 0,027786 | 3 |
| 0,000001 | -2,988672 | 8 | 1,97502 | 9 | -2,025042 | 10 | 3,010907 | 9 | 0,027786 | 3 |
Для исследования сходимости метода рассмотрим процесс нахождения корня x4 . Возьмем различные интервалы сходимости, так, чтобы проследить зависимость скорости сходимости от числа q=max |φ(x)|.
| [a,b] | q | [a,b] | q | [a,b] | q |
| [0.34, 2.54] | 1 | [0.48, 2.38] | 0.7 | [0.71, 2.18] | 0.4 |
| 0.9 | [0.55, 2.32] | 0.6 | [0.82, 2.09] | 0.3 | |
| [0.43, 2.44] | 0.8 | [0.62, 2.25] | 0.5 | [0.95, 1.98] | 0.2 |
Тогда, при выборе x0 из указанных интервалов, получим различное количество итераций (delta=eps=0.000001):
| 0,34 | 9 | 2,54 | 10 | Видно, что чем меньше число q, тем быстрее сходится итерационный процесс. |
| 0,38 | 9 | 2,49 | 9 | |
| 0,43 | 9 | 2,44 | 9 | |
| 0,48 | 9 | 2,38 | 9 | |
| 0,55 | 9 | 2,32 | 9 | |
| 0,62 | 8 | 2,25 | 8 | |
| 0,71 | 8 | 2,18 | 8 | |
| 0,82 | 8 | 2,09 | 8 | |
| 0,95 | 8 | 1,98 | 6 |
Исследуем скорость сходимости на примере интервала [0.82, 2.09], где q=0,3. Размер каждого следующего интервала между приближениями через предыдущий можно оценить по формуле: .
Пусть delta=eps=0.000001, x0=2.09, тогда:
| n | xn | (xn - xn-1)теор | (xn - xn-1)практ | Видим, что оценка верна и (xn - xn-1)теор < (xn - xn-1)практ |
| 0 | 2,09 | |||
| 1 | 2,002661 | 0,857142857 | 0,087339 | |
| 2 | 1,980562 | 0,037431 | 0,022099 | |
| 3 | 1,97608 | 0,009471 | 0,004482 | |
| 4 | 1,975221 | 0,001920857 | 0,000859 | |
| 5 | 1,975059 | 0,000368143 | 0,000162 | |
| 6 | 1,975028 | 6,94286E-05 | 3,1E-05 | |
| 7 | 1,975022 |
