Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Санкт-Петербургский государственный электротехнический университет «ЛЭТИ»
Кафедра МО ЭВМ
Вычислительная математика
Отчет
по выполнению лабораторной работы N3
Преподаватель: Щеголева Н.Л.
Студент группы 4351: Усенко А.В.
Санкт-Петербург, 2006
Постановка задачи
Необходимо исследовать обусловленность задачи нахождения корня уравнения для нелинейной функции (Вариант 16). Значения функции вычисляется с помощью метода бисекции, приближенно, с точностью Delta, варьируемой в пределах от 0.1 до 0.000001. Корень уравнения вычисляется с заданной точностью Eps, варьируемой от 0.1 до 0.000001. Вычисления провести для различных наборов параметров Delta, Eps. Построить графики зависимости количества итераций от Eps.
Анализ задачи
По графику функции можно произвести отделение корня.
График функции:
Возьмем начальные границы интервала [0;1].
Теоретическое абсолютное число обусловленности . Погрешность вычисления корня определяется по формуле: . Если практическая погрешность вычисления корня больше или равна теоретический, то задача хорошо обусловлена, иначе плохо обусловлена.
Исходный текст программы
/*
Файл: Lr_3.cpp
Автор: Усенко А.В.
Ред. 1.0 28.09.06
*/
#include <iostream.h>
#include <math.h>
#include <conio.h>
#include <fstream.h>
#include "methods.h"
// Global variables
double F(double); // Function
ifstream f_in; // Input data file
ofstream f_out; // Output data file
char in_path[11]="input.txt", // Input file name
out_path[11]="output.txt"; // Output file name
double delta=0.1, // function calculating error
eps=0.1; // output data error
double a=0,b=1; // interval borders
void main()
{
clrscr();
double func_val, // value of function
x; // value of root
int n; // number of iterations
// files opening
f_in.open(in_path);
if (f_in.fail())
{
cout<<"Impossible to open input file!"<<endl;
exit(1);
}
f_out.open(out_path);
if (f_out.fail())
{
cout<<"Impossible to open output file!"<<endl;
exit(1);
}
f_out.setf(ios::fixed);
f_out.setf(ios::showpoint);
/* Calculating & table printing */
delta=0.1;
for (int j=1; j<=6; j++)
{
f_out.precision(j);
f_out<<"Delta = "<<delta<<endl;
eps=0.1;
f_out<<"Eps\t\t"<<"X\t\t"<<"N\n";
for (int i=1; i<=6; i++)
{
f_out.precision(i);
x=BISECT(a,b,eps,n);
f_out<<eps<<"\t"; if (i<6) {f_out<<"\t";};
f_out<<x<<"\t"; if (i<6) {f_out<<"\t";};
f_out<<n<<endl;
eps = eps/10;
}
f_out<<endl<<endl;
delta = delta/10;
}
f_in.close();
f_out.close();
cout<<"Program finished. Press <Enter>...";
getch();
return;
}
// Function definition
double F(double x)
{
extern double delta;
double s;
s = asin(2*x/(1+x*x))-exp(-x*x);
return Round(s,delta);
}
Результаты вычислений
В следующей таблице представлены результаты вычисления корня при различных комбинациях параметров Eps, Delta. На графиках изображена зависимость количества итераций от Eps и Delta. Также представлены сравнения теоретических и экспериментальных значений абсолютного числа обусловленности.
Delta |
Eps |
x |
F(x) |
N |
Eps (теор) |
Обусловл |
0,1 |
0,1 |
0,4 |
-0,2 |
3 |
0,05265298 |
+ |
0,01 |
0,44 |
0,0 |
3 |
0,05286111 |
- |
|
0,001 |
0,438 |
0,0 |
3 |
0,05285084 |
- |
|
0,0001 |
0,4375 |
0,0 |
3 |
0,05284827 |
- |
|
0,00001 |
0,43750 |
0,0 |
3 |
0,05284827 |
- |
|
0,000001 |
0,437500 |
0,0 |
3 |
0,05284827 |
- |
|
0,01 |
0,1 |
0,4 |
-0,15 |
3 |
0,00526530 |
+ |
0,01 |
0,44 |
0,00 |
3 |
0,00528611 |
+ |
|
0,001 |
0,438 |
0,00 |
3 |
0,00528508 |
- |
|
0,0001 |
0,4375 |
0,00 |
3 |
0,00528483 |
- |
|
0,00001 |
0,43750 |
0,00 |
3 |
0,00528483 |
- |
|
0,000001 |
0,437500 |
0,00 |
3 |
0,00528483 |
- |
|
0,001 |
0,1 |
0,4 |
-0,151 |
3 |
0,00052653 |
+ |
0,01 |
0,45 |
0,037 |
6 |
0,00052913 |
+ |
|
0,001 |
0,439 |
0,004 |
9 |
0,00052856 |
+ |
|
0,0001 |
0,4380 |
0,000 |
10 |
0,00052851 |
- |
|
0,00001 |
0,43799 |
0,000 |
10 |
0,00052851 |
- |
|
0,000001 |
0,437988 |
0,000 |
10 |
0,00052851 |
- |
|
0,0001 |
0,1 |
0,4 |
-0,1513 |
3 |
0,00005265 |
+ |
0,01 |
0,45 |
0,0365 |
6 |
0,00005291 |
+ |
|
0,001 |
0,439 |
0,0037 |
9 |
0,00005286 |
+ |
|
0,0001 |
0,4380 |
-0,0001 |
13 |
0,00005285 |
+ |
|
0,00001 |
0,43799 |
0,0000 |
13 |
0,00005285 |
- |
|
0,000001 |
0,437988 |
0,0000 |
13 |
0,00005285 |
- |
|
0,00001 |
0,1 |
0,4 |
-0,15127 |
3 |
0,00000527 |
+ |
0,01 |
0,45 |
0,03651 |
6 |
0,00000529 |
+ |
|
0,001 |
0,439 |
0,00371 |
9 |
0,00000529 |
+ |
|
0,0001 |
0,4379 |
-0,00010 |
13 |
0,00000529 |
+ |
|
0,00001 |
0,43791 |
0,00001 |
16 |
0,00000529 |
+ |
|
0,000001 |
0,437908 |
0,00000 |
17 |
0,00000529 |
- |
|
0,000001 |
0,1 |
0,4 |
-0,151274 |
3 |
0,00000053 |
+ |
0,01 |
0,45 |
0,036514 |
6 |
0,00000053 |
+ |
|
0,001 |
0,439 |
0,003713 |
9 |
0,00000053 |
+ |
|
0,0001 |
0,4379 |
-0,000097 |
13 |
0,00000053 |
+ |
|
0,00001 |
0,43791 |
0,000013 |
16 |
0,00000053 |
+ |
|
0,000001 |
0,437906 |
-0,000001 |
19 |
0,00000053 |
+ |
Вывод
Как видно из приведенной таблицы, задача хорошо обусловлена в случаях, когда требуемая погрешность результата меньше или равна погрешности входных данных. График зависимости количества итераций от необходимой точности показывает очевидное соотношение: чем выше требуемая точность, тем больше требуется итераций. Также необходимое количество итераций повышается с увеличением точности входных данных.