Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа 2

.doc
Скачиваний:
26
Добавлен:
01.05.2014
Размер:
333.82 Кб
Скачать

Федеральное агенство по образованию РФ

СПбГЭТУ «ЛЭТИ»

Кафедра МО-ЭВМ

Факультет КТИ

ОТЧЕТ

по лабораторной работе № 2

Исследование обусловленности вычислительной задачи.

Дисциплина: вычислительная мпатематика

Студент группы 4351

Кузьменко А.

Преподаватель:

Щеголева Н.Л.

Санкт-Петербург

2006

Лабораторная работа № 2

Исследование обусловленности вычислительной задачи.

1. Постановка задачи.

Исследовать обусловленность задачи нахождения корня уравнения f(x)=0 для линейной функции f(x)=c(x-d). Значения функции f(x) следует вычислять приближенно с точностью Delta (точность входных данных), а корень уравнения следует находить методом бисекции с задаваемой точностью Eps.

2. Теоретические сведения.

Обусловленность вычислительной задачи – это чувствительность точности ее решения к погрешностям входных данных Количественная мера степени обусловленности задачи - число обусловленности . Задача хорошо обусловлена, если ( y* )  *( x* ), где ( y* ) – требуемая точность выходных данных, а ( x* ) – точность входных данных.

Если рассматривать задачу вычисления корня уравнения y=f(x), то роль числа обусловленности будет играть величина = |f`(x0)|, где x0 - корень уравнения.

Метод бисекции состоит в построении последовательности вложенных друг в друга отрезков, на концах которых функция имеет разные знаки. Каждый последующий отрезок получается делением пополам предыдущего. Этот процесс позволяет найти нуль функции f(x) с любой заданной точностью.

3. Текст программы.

double BISECT(double Left,double Right,double Eps,int &N)

{

double E = fabs(Eps)*2.0;

double FLeft = F(Left);

double FRight = F(Right);

double X = (Left+Right)/2.0;

double Y;

if (FLeft*FRight>0.0) {puts("Неверно задан интервал \n");exit(1);}

if (Eps<=0.0) {puts("Неверно задана точность\n");exit(1);}

N=0;

if (FLeft==0.0) return Left;

if (FRight==0.0) return Right;

while ((Right-Left)>=E)

{

X = 0.5*(Right + Left);

Y = F(X);

if (Y == 0.0) return (X);

if (Y*FLeft < 0.0)

Right=X;

else

{ Left=X; FLeft=Y; }

N++;

};

return(X);

}

double Round (double X,double Delta)

{

if(Delta<=1E-9){puts("Неверно задана точность округления\n");exit(1);}

if (X>0.0) return (Delta*(long((X/Delta)+0.5)));

else return (Delta*(long((X/Delta)-0.5)));

}

#include <math.h>

#include <stdio.h>

#include <stdlib.h>

#include "methods.h"

#include <conio.h>

#include <iostream.h>

double delta,c,d;

void main()

{

int k;

long int s;

float a1,b1,c1,d1,eps1,delta1;

double a,b,eps,x;

printf("введите eps:");

scanf("%f",&eps1);

eps = eps1;

printf("введите c:");

scanf("%f",&c1);

c = c1;

printf("введите d:");

scanf("%f",&d1);

d = d1;

printf("введите a:");

scanf("%f",&a1);

a = a1;

printf("введите b:");

scanf("%f",&b1);

b = b1;

printf("введите delta:");

scanf("%f",&delta1);

delta = delta1;

if ((1/c)<=(eps/delta))

{printf ("Задача хорошо обусловлена \n");}

else {printf ("Задача плохо обусловлена\n");}

x = BISECT(a,b,eps,k);

printf("x=%f k=%d\n",x,k);

getch();

}

double F(double x)

{

extern double c,d,delta;

double s;

s = c*(x - d);

s = Round( s,delta );

return(s);

}

4. Вычислительный эксперимент.

В нижеприведенных таблицах приведены исходные данные и результаты вычислительного эксперимента. В каждой из них представлены:

- исходные данные: коэффициент c, точность вычисления значения функции delta и требуемая точность вычисления корня функции eps. Значения остальных входных параметров постоянны во всех экспериментах и равны: d=5, a=1, b=7;

- результаты: вычисленный корень уравнения x, количество итераций метода бисекции k;

- величины для оценки обусловленности задачи: верхняя граница допустимого числа обусловленности для достижения требуемой точности результата _max=eps/delta и число обусловленности =1/c. Сравнивая эти два числа, можно сделать вывод о том, хорошо или плохо обусловлена задача, что также отражается в таблицах.

В первой таблице величины eps и delta постоянны, а тангенс угла наклона графика функции c изменяется, при этом часть задач обусловлена хорошо, а часть – плохо.

с

eps

delta

x

k

_max

>=

1000

0,1

0,1

4,9375

5

1

хорошо

0,001

100

0,1

0,1

4,9375

5

1

хорошо

0,01

10

0,1

0,1

4,9375

5

1

хорошо

0,1

0,5

0,1

0,1

4,9375

4

1

плохо

2

0,3

0,1

0,1

5,125

3

1

плохо

3,333333

0,1

0,1

0,1

4,75

2

1

плохо

10

0,05

0,1

0,1

5,5

1

1

плохо

20

0,01

0,1

0,1

1

0

1

плохо

100

Очевидна обратно-пропорциональная зависимость числа обусловленности от тангенса угла наклона графика функции:

c

0,1

10

0,3

3,3333333

0,5

2

0,7

1,4285714

1

1

2

0,5

4

0,25

6

0,1666667

Во второй таблице неизменны значения с и eps, а delta изменяется.

с

eps

delta

x

k

_max

>=

1

0,001

10

1

0

0,0001

плохо

1

1

0,001

1

4,75

2

0,001

плохо

1

1

0,001

0,1

5,03125

5

0,01

плохо

1

1

0,001

0,01

4,996094

8

0,1

плохо

1

1

0,001

0,001

5,000488

11

1

хорошо

1

1

0,001

0,0001

5,000488

12

10

хорошо

1

1

0,001

0,00001

5,000488

12

100

хорошо

1

1

0,001

0,000001

5,000488

12

1000

хорошо

1

При этом зависимость верхней границы числа обусловленности от точности входных данных также обратно пропорциональна:

delta

_max

0,05

2

0,1

1

0,3

0,333333

0,6

0,166667

0,9

0,111111

2

0,05

3

0,033333

5

0,02

В третьей таблице изменяется значение eps, а с и delta постоянны.

с

eps

delta

x

k

_max

>=

10

1

0,01

5,5

1

100

хорошо

0,1

10

0,1

0,01

4,9375

5

10

хорошо

0,1

10

0,01

0,01

4,996094

9

1

хорошо

0,1

10

0,001

0,01

5,000488

11

0,1

хорошо

0,1

10

0,0001

0,01

5,000488

11

0,01

плохо

0,1

10

0,00001

0,01

5,000488

11

0,001

плохо

0,1

10

0,000001

0,01

5,000488

11

0,0001

плохо

0,1

10

0,0000001

0,01

5,000488

11

0,00001

плохо

0,1

Значения eps и _max связаны прямо пропорциональной зависимостью:

eps

_max

1

10

2

20

3

30

4

40

5

50

6

60

7

70

8

80

В следующей таблице при изменяющихся точностях входных и выходных данных _max и остаются постоянными.

с

eps

delta

x

k

_max

>=

10

1

1

5,5

2

1

хорошо

0,1

10

0,1

0,1

4,9375

5

1

хорошо

0,1

10

0,01

0,01

4,996094

9

1

хорошо

0,1

10

0,001

0,001

5,000488

12

1

хорошо

0,1

10

0,0001

0,0001

4,999939

15

1

хорошо

0,1

10

0,00001

0,00001

4,999996

19

1

хорошо

0,1

10

0,000001

0,000001

5

22

1

хорошо

0,1

10

0,0000001

0,0000001

5

25

1

хорошо

0,1

При возрастании требуемой точности корня уравнения возрастает и количество итераций метода бисекции, образуя следующую зависимость:

В следующей таблице требуемая точность eps остается постоянной, но изменяются с и delta, что приводит к изменению соотношения между и _max. Все задачи этой таблицы обусловлены хорошо.

с

eps

delta

x

k

_max

>=

10

0,01

0,1

4,996094

8

0,1

хорошо

0,1

100

0,01

0,1

4,996094

9

0,1

хорошо

0,01

100

0,01

0,01

4,996094

9

1

хорошо

0,01

1000

0,01

0,01

4,996094

9

1

хорошо

0,001

100

0,01

0,0001

4,996094

9

100

хорошо

0,01

1000

0,01

0,0001

4,996094

9

100

хорошо

0,001

100

0,01

0,0000001

4,996094

9

100000

хорошо

0,01

5. Выводы.

Основываясь на теоретических данных и результатах вычислительного эксперимента, можно утверждать, что верхняя граница числа обусловленности задачи определяется требуемой точностью результата и точностью входных данных, которую возможно обеспечить. Если число обусловленности превышает эту границу, то результат может не обладать требуемой точностью. Если же не превышает, то есть задача обусловлена хорошо, то точность результата обязательно будет соответствовать требуемой точности.

При этом если задача обусловлена хорошо, то соотношение между верхней границей и самим числом обусловленности не влияет на точность результата, на него в этом случае влияет только задаваемая точность. Однако если задача обусловлена плохо, то чем больше число обусловленности превышает верхнюю границу, тем больше точность результата отличается от требуемой точности, а число итераций метода бисекции может сократиться до 0 раз.

При известном виде функции можно определить число обусловленности задачи и, учитывая его и точность исходных данных, рассчитать точность результата, которую можно гарантировать при нахождении корня уравнения.