background image

Metody numeryczne

Laboratorium

Temat ćwiczenia: Teoria błędów

Grupa 5

sekcja 1, podsekcja 1

Pietrzyk Marcin

Wieczorek Krzysztof

background image

Pierwsze trzy zadania opierały się na obliczeniach dotyczących trójkąta prostokątnego o 

przyprostokątnych a i b, przeciwprostokątnej c, polu P oraz wysokości h opuszczonej na 
przeciwprostokątną.

Danymi we wszystkich trzech zadaniach były długości przyprostokątnych a i b oraz ich 

błędy Δa oraz Δb.

W zadaniach poszukiwaliśmy kolejno:

1) Wartości pola trójkąta,
2) Długości przeciwprostokątnej,
3) Wartości wysokości opuszczonej na przeciwprostokątną
oraz błędów wszystkich powyższych wielkości obliczonych metodą różniczki zupełnej oraz 
przedziałów wartości i wyrażonych w postaci ich kresów górnych oraz dolnych.

Wyniki do zadania 1:

DANE

WARTOŚCI OBLICZONE

P

ΔP, M.P.W.

ΔP, M.R.Z.

a

b

Δa

Δb

K. dolny K. górny K. dolny K. górny

4

2

0.1

0.1

4

3,705

4,305

3,7

4,3

10

25

0.01

0.01

125

124,825

125,175

124,825

125,175

100

14

1

1

700

643,5

757,5

643

757

3

55

0.1

1

82,5

78,3

86,8

54,85

110,15

101

170

4

5

8585

8002,5

9187,5

7958

9212

44

123

0.5

4

2706

2588,25

2825,75

2449

2963

4

10

1

2

20

12

30

8

32

Wyniki do zadania 2:

DANE

WARTOŚCI OBLICZONE

c

Δc, M.P.W.

Δc, M.R.Z.

a

b

Δa

Δb

K. dolny K. górny K. dolny K. górny

4

2

0.1

0.1

4,47214

4,3382

4,60652

4,33797

4,6063

10

25

0.01

0.01

26,9258

26,9128

26,9388

26,9128

26,9388

100

14

1

1

100,975

99,8499

102,108

99,8463

102,104

3

55

0.1

1

55,0818

54,0778

56,0857

54,0778

56,0857

101

170

4

5

197,74

191,4

204,083

191,398

204,081

44

123

0.5

4

130,633

126,701

134,571

126,698

134,568

4

10

1

2

10,7703

8,544

13

8,54199

12,9987

background image

Wyniki do zadania 3:

DANE

WARTOŚCI OBLICZONE

h

Δh, M.P.W.

Δh, M.R.Z.

a

b

Δa

Δb

K. dolny K. górny K. dolny K. górny

4

2

0.1

0.1

1,78885

1,70808

1,86909

1,70836

1,86935

10

25

0.01

0.01

9,28477

9,27625

9,29328

9,27625

9,29328

100

14

1

1

13,8648

12,8893

14,8373

12,8908

14,8388

3

55

0.1

1

2,99555

2,89583

3,09526

2,89583

3,09526

101

170

4

5

86,8313

83,6206

90,0368

83,6233

90,0393

44

123

0.5

4

41,429

40,8559

41,9965 40,85588 41,9992

4

10

1

2

3,71391

2,80899

4,61538

2,81104

4,61677

background image

W zadaniu 4 dany był stożek o wysokości h, promieniu podstawy R oraz objętości V. 

Danymi w zadaniu były wartości R, h oraz błąd objętości stożka ΔV. Poszukiwaliśmy wartości 
błędów promienia ΔR oraz wysokości Δh przy pomocy różniczki zupełnej. Rozpatrywaliśmy 
następujące przypadki:
1) ze względu na dokładność liczby Π:

a) 3,14,
b) wartość dokładniejsza,

2) ze względu na relacje wartości promienia R i wysokości h:

a) R~h,
b) R>>h,
c) R<<h.

W rozwiązaniu tego problemu korzystaliśmy z zasady równego wpływu.

Wyniki do zadania 4:

a) Pi niedokładne

DANE

WARTOŚCI OBLICZONE

R

h

dV

dR

dH

dPI

5

4

0.01

3,571429*10

-5

2,857143*10

-5

9,999999*10

-5

0.1

3,571429*10

-4

2,857143*10

-4

1,000000*10

-3

70

5

0.01

2,040816*10

-6

1,457726*10

-7

4,081633*10

-7

0.1

2,040816*10

-5

1,457726*10

-6

4,081633*10

-6

3

47

0.01

5,065856*10

-6

7,936508*10

-5

2,364066*10

-5

0.1

5,065856*10

-5

7,936508*10

-4

2,364066*10

-4

b) Pi dokładne

DANE

WARTOŚCI OBLICZONE

R

h

dV

dR

dH

5

4

0.01

7.957747*10

-5

1,909859*10

-4

0.1

7.957747*10

-4

1,909859*10

-3

50

3

0.01

4,547284*10

-6

9,744180*10

-7

0.1

4,547284*10

-5

9,744180*10

-6

3

47

0.01

1,128758*10

-5

5,305164*10

-4

0.1

1,128758*10

-4

5,305165*10

-3

background image

Wnioski:

Celem ćwiczenia było zapoznanie się z podstawami teorii błędów. Podczas wykonywania

ćwiczenia sprawdziliśmy, jakie różnice są pomiędzy dwoma metodami przenoszenia niepewności

oraz zajęliśmy się zagadnieniem problemu odwrotnego. 

Obie   metody   –   metoda   różniczki   zupełnej   i   metoda   przedziałów   wartości   dają   bardzo

zbliżone do siebie wartości – poza jednym przypadkiem. Gdy błędy wpływające na wartość błędu

obliczanego   różniły   się   znacznie,   metoda   przedziałów   wykazywała   tendencję   do   dawania

dokładniejszego   przedziału.   Różnica   w   wielkości   przedziału   w   jednym   z   takich   przypadków

wyniosła 6. (MRZ dawała przedział szeroki na 24, MPW dawała przedział szeroki na 18). Co

oznacza, że przedział z MRZ był o 33.3% szerszy od przedziału z MPW. To dość znaczna różnica.

Kolejnym zadaniem było zbadanie problemu błędu odwrotnego. Obliczyliśmy maksymalne

wartości błędów wpływających na wartość błędu objętości dla maksymalnie dokładnego pi oraz

niedokładnego. Porównując otrzymane wyniki okazuje się, że gdy używamy dokładnego pi, to

możliwe błędy innych wartości mogą być większe. Jest to szczególnie interesujące dla inżynierów,

pokazuje bowiem, że używanie jak najdokładniejszych stałych może w niektórych przypadkach

pozwalać na użycie mniej dokładnych mierników, a wynik utrzymany będzie w normie.

Kody napisane zostały przez nas w języku C/C++ i są dostępne na następnej stronie.

background image

Treści programów:

Program rozwiązujący zadania 1, 2 i 3:

#include <iostream>
#include <cmath>
#include <stdlib.h>
using namespace std;
int main()
{
 float a, b, c, h, P, d_a, d_b, d_c, d_P, d_h, a_dol, b_dol, a_gor, b_gor, P_dol, P_gor, c_dol, c_gor, 
h_dol, h_gor;

 cout << "Podaj a: " << endl;
 cin >> a;
 cout << "Podaj b: " << endl;
 cin >> b;
 cout << "Podaj d_a: " << endl;
 cin >> d_a;
 cout << "Podaj d_b: " << endl;
 cin >> d_b;
 
//ZADANIE 1  

 P=a*b/2.0;
 cout<<"P = "<<P<<endl;
 a_dol = a-d_a;
 a_gor = a+d_a;
 b_dol = b-d_b;
 b_gor = b+d_b;
 
 P_dol=a_dol*b_dol/2.0;
 P_gor=a_gor*b_gor/2.0;
 
 cout<<"Kresy P z m. p. w. : "<<P_dol<<" ; "<<P_gor<<endl;
 
 d_P=a*d_a/2 + b*d_b/2;
 cout<<"Kresy P z m. r. z. : "<<P-d_P<<" ; "<<P+d_P<<endl;
 cout << endl<<endl;

//ZADANIE 2 

c=sqrt(a*a+b*b);  
cout <<"c = "<< c <<endl;

c_dol=sqrt(a_dol*a_dol+b_dol*b_dol); 
c_gor=sqrt(a_gor*a_gor+b_gor*b_gor);
cout <<"Kresy c z m. p. w. : " << c_dol << " ; " << c_gor << endl;

d_c=((a*d_a)+(b*d_b))/c;
cout <<"Kresy c z m. r. z. : " << c-d_c << " ; " << c+d_c << endl;
cout << endl<<endl;

background image

//ZADANIE 3 

h=2*P/c;
cout <<"h = "<< h <<endl;

h_dol= (a_dol*b_dol)/sqrt(a_dol*a_dol+b_dol*b_dol);
h_gor= (a_gor*b_gor)/sqrt(a_gor*a_gor+b_gor*b_gor);    
    
cout << "Kresy h z m. p. w. : "<<h_dol<<" ; "<<h_gor<<endl;

d_h=((b*b*b*d_a)+(a*a*a*d_b))/pow((a*a+b*b), (float)1.5);
cout <<"Kresy h z m. r. z. : " << h-d_h << " ; " << h+d_h << endl;
cout << endl<<endl;
    
    system("pause");
    return 0;
}

background image

Program rozwiązujący zadanie 4:

#include <iostream>
#include <cmath>
#include <stdlib.h>
using namespace std;
int main()
{

float dV, dR, dh, dPI, R, h;
cout.precision(10);

cout << "Podaj R: " << endl;
cin >> R;
cout << "Podaj h: " << endl;
cin >> h;
cout << "Podaj deltaV: " << endl;
cin >> dV;

cout << endl << endl << "Zakladajac pi=3,14 (niedokladne)" << endl << endl;
dR=dV/(3*3,14*R*h);
dh=dV/(3,14*R*R);
dPI=dV/(R*R*h);
cout << "dR=" << dR << endl << "dh=" << dh << endl << "dPI=" << dPI << endl << endl;

cout << "Zakladajac dokladniejsze pi" << endl << endl;
dR=dV/(2*M_PI*R*h);
dh=(3*dV)/(2*M_PI*R*R);
cout << "dR=" << dR << endl << "dh=" << dh << endl << endl << endl;

    
    system("pause");
    return 0;
}