Лабораторные работы 1 - 10 / Лаб раб 2
.docСанкт-Петербургский государственный электротехнический университет «ЛЭТИ»
Кафедра МО ЭВМ
Вычислительная математика
Отчет
по выполнению лабораторной работы N2
Преподаватель:
Студент группы 4351: Усенко А.В.
Санкт-Петербург, 2006
Постановка задачи
Необходимо исследовать обусловленность задачи нахождения корня уравнения для линейной функции . Значения функции вычисляется приближенно с точностью Delta, варьируемой в пределах от 0.1 до 0.000001. Корень уравнения вычисляется с заданной точностью Eps, варьируемой от 0.1 до 0.000001. Вычисления провести для различных наборов параметров Delta, Eps, c. Параметр d принять равным 7.
Анализ задачи
Так как корень уравнения равен 7, то границы интервала поиска корня [a;b] возьмем a=0, b=10. Тангенс угла наклона с будем варьировать только в положительной полуоси, т.к. результаты вычислений для противоположных значений тангенса будут одинаковы с точностью до знака.
Теоретическое абсолютное число обусловленности . Практически же абсолютное число обусловленности можно вычислить так: .
Исходный текст программы
/*
File: Lab_2.cpp
Laboratornaya rabota N2
Izuchenie ponatija obuslovlennosti vichislitelnoy zadachi
Author: Usenko A.V.
Ver: 1.0
*/
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include "methods.h"
#include <conio.h>
double delta,c,d;
void main()
{
int k;
long int s;
float a1,b1,c1,d1,eps1,delta1;
double a,b,eps,x;
double F(double);
printf("\n");
// c-koef inputing
printf("Enter c: ");
scanf("%f",&c1);
c = c1;
// d-koef inputing
printf("Enter d: ");
scanf("%f",&d1);
d = d1;
// a-border inputing
printf("Enter a: ");
scanf("%f",&a1);
a = a1;
// b-border inputing
printf("Enter b: ");
scanf("%f",&b1);
b = b1;
// eps inputing
printf("Enter eps: ");
scanf("%f",&eps1);
eps = eps1;
// delta inputing
printf("Enter delta: ");
scanf("%f",&delta1);
delta = delta1;
// root calculating
x = BISECT(a,b,eps,k);
// result outputing
printf("x=%f k=%d F(x)=%f\n",x,k,F(x));
getch();
return;
}
double F(double x)
{
extern double c,d,delta;
double s;
long int S;
s = c*(x - d);
if( s/delta < 0 )
S = s/delta - .5;
else
S = s/delta + .5;
s = S*delta;
s = Round( s,delta );
return(s);
}
Результаты вычислений
В следующей таблице представлены результаты вычисления корня при различных комбинациях параметров Eps, Delta, c. Также представлены сравнения теоретических и экспериментальных значений абсолютного числа обусловленности.
c |
delta |
eps |
F(x) |
x |
k |
теор |
экспер |
Обусловл |
0,01 |
0,1 |
0,1 |
0,0 |
10,0 |
0 |
100 |
>>100 |
- |
0,1 |
0,001 |
0,0 |
10,000 |
0 |
>>100 |
- |
||
0,1 |
0,000001 |
0,0 |
10,000000 |
0 |
>>100 |
- |
||
0,001 |
0,1 |
0,000 |
7,0 |
5 |
~1 |
+ |
||
0,001 |
0,001 |
0,000 |
7,031 |
5 |
>>100 |
- |
||
0,001 |
0,000001 |
0,000 |
7,031250 |
5 |
>>100 |
- |
||
0,000001 |
0,1 |
0,000313 |
7,0 |
6 |
0 |
+ |
||
0,000001 |
0,001 |
0,000007 |
7,001 |
13 |
142,8571 |
- |
||
0,000001 |
0,000001 |
0,000000 |
6,999969 |
15 |
>100 |
- |
||
0,1 |
0,1 |
0,1 |
0,0 |
7,5 |
1 |
10 |
>>10 |
- |
0,1 |
0,001 |
0,0 |
7,500 |
1 |
>>10 |
- |
||
0,1 |
0,000001 |
0,0 |
7,500000 |
1 |
>>10 |
- |
||
0,001 |
0,1 |
0,003 |
7,0 |
6 |
~0 |
+ |
||
0,001 |
0,001 |
0,000 |
7,002 |
9 |
>>10 |
- |
||
0,001 |
0,000001 |
0,000 |
7,001953 |
9 |
>>10 |
- |
||
0,000001 |
0,1 |
0,003125 |
7,0 |
6 |
~0 |
+ |
||
0,000001 |
0,001 |
0,000073 |
7,001 |
13 |
13,69863 |
- |
||
0,000001 |
0,000001 |
0,000000 |
6,999998 |
19 |
>10 |
- |
||
1 |
0,1 |
0,1 |
0,0 |
7,0 |
5 |
1 |
~1 |
+ |
0,1 |
0,001 |
0,0 |
7,031 |
5 |
>>1 |
- |
||
0,1 |
0,000001 |
0,0 |
7,031250 |
5 |
>>1 |
- |
||
0,001 |
0,1 |
0,031 |
7,0 |
6 |
0 |
+ |
||
0,001 |
0,001 |
0,000 |
7,000 |
11 |
~1 |
+ |
||
0,001 |
0,000001 |
0,000 |
6,999512 |
11 |
>>1 |
- |
||
0,000001 |
0,1 |
0,031250 |
7,0 |
6 |
0 |
+ |
||
0,000001 |
0,001 |
0,000732 |
7,001 |
13 |
1,36612 |
- |
||
0,000001 |
0,000001 |
0,000000 |
7,000000 |
21 |
~1 |
+ |
||
10 |
0,1 |
0,1 |
0,3 |
7,0 |
6 |
0,1 |
0 |
+ |
0,1 |
0,001 |
0,0 |
7,002 |
9 |
>>0,1 |
- |
||
0,1 |
0,000001 |
0,0 |
7,001953 |
9 |
>>0,1 |
- |
||
0,001 |
0,1 |
0,312 |
7,0 |
6 |
0 |
+ |
||
0,001 |
0,001 |
0,007 |
7,001 |
13 |
0,142857 |
- |
||
0,001 |
0,000001 |
0,000 |
6,999969 |
15 |
>0,1 |
- |
||
0,000001 |
0,1 |
0,312500 |
7,0 |
6 |
0 |
+ |
||
0,000001 |
0,001 |
0,007324 |
7,001 |
13 |
0,136537 |
- |
||
0,000001 |
0,000001 |
-0,000007 |
6,999999 |
23 |
0,142857 |
- |
Вывод
Как видно из приведенной таблицы, наихудшая обусловленность задачи проявлялась при выборе минимального тангенса наклона, т.е. максимального приближения графика функции к оси абсцисс. Для достижения обусловленности задачи при таком тангенсе погрешность входных данных Delta должна быть меньше погрешности выходных данных Eps больше, чем в 102 раз. При бОльших значениях тангенса задача является обусловленной уже при погрешностях одного порядка.